跳轉至

建立 2026-11-12 更新 2026-11-12 SL HL

B2.1 程式設計基礎

程式設計基礎(Programming fundamentals)涵蓋寫程式最基本的元素:變數與常數、資料型別、運算子、輸入輸出、字串操作,以及程式除錯與測試的方法。這些觀念在 Python 與 Java 中完全相同,只是語法不同。

變數、常數與資料型別

變數(variable) 是有名稱的記憶體位置,值可以改變;常數(constant) 設定後不應改變,習慣用全大寫命名。

型別 說明 Python Java
整數 沒有小數 int int、long
浮點數 有小數 float double、float
布林 True/False bool boolean
字元 單一字元 (用長度 1 的 str) char
字串 一串字元 str String
MAX_SCORE = 7          # 常數(慣例全大寫)
name = "Amy"           # str
score = 6              # int
average = 5.75         # float
passed = score >= 4    # bool
final int MAX_SCORE = 7;     // final 表示常數
String name = "Amy";
int score = 6;
double average = 5.75;
boolean passed = score >= 4;

型別轉換

input() 讀到的都是字串,要做數學運算必須先轉型:int("42")、float("3.5")、str(42)。Java 用 Integer.parseInt("42")。把 "abc" 轉成整數會產生執行期錯誤。

常用運算子

類別 運算子 說明
算術 + - * / / 在 Python 永遠得到浮點數;Java 兩個 int 相除會捨去小數
整數除法 Python //、Java 兩個 int 用 / 7 // 2 = 3
餘數 %(IB 虛擬碼為 mod) 7 % 2 = 1,常用來判斷奇偶
比較 == != < > <= >= 結果為布林
邏輯 Python and or not;Java && \|\| ! 組合條件

字串怎麼操作?

字串的每個字元都有 索引(index),從 0 開始。

s = "Computer"
print(len(s))         # 8
print(s[0], s[-1])    # C r
print(s[0:4])         # Comp(切片,不含索引 4)
print(s.upper())      # COMPUTER
print("put" in s)     # True
print(s.find("put"))  # 3
String s = "Computer";
System.out.println(s.length());        // 8
System.out.println(s.charAt(0));       // C
System.out.println(s.substring(0, 4)); // Comp
System.out.println(s.toUpperCase());   // COMPUTER
System.out.println(s.contains("put")); // true
System.out.println(s.indexOf("put"));  // 3

Java 比較字串要用 equals

Java 的 == 比較的是兩個字串物件是否為同一個參照,要比較內容請用 s1.equals(s2)。

程式錯誤有哪三種?

錯誤 發生時機 例子
語法錯誤(syntax error) 編譯或執行前,程式不符合語法 少了冒號、括號不成對
執行期錯誤(runtime error) 執行時程式崩潰 除以零、索引超出範圍、型別轉換失敗
邏輯錯誤(logic error) 程式能跑,但結果錯誤 平均值忘了除以個數、用了 < 而非 <=

邏輯錯誤最難找,需要靠 追蹤表、印出中間值(print debugging) 或 IDE 的 除錯器(debugger) 設中斷點逐行執行。

如何設計測試資料?

測試時要涵蓋三種資料,以「分數必須是 1 到 7」為例:

  • 正常資料(normal):預期範圍內的典型值,例如 5。
  • 邊界資料(boundary/extreme):範圍的兩端與剛好超出的值,例如 1、7、0、8。
  • 錯誤資料(invalid/erroneous):不該被接受的資料,例如 −3、"abc"、空白。

推薦影音

程式設計基礎:敘述與函式

簡述:Crash Course 說明變數、賦值、條件與迴圈這些所有程式語言共通的基本元素,適合不分 Python 或 Java 的學生。

Python 100 秒速覽

簡述:Fireship 快速介紹 Python 的特色、動態型別與基本語法,適合複習或剛接觸 Python 時建立整體印象。

Java 100 秒速覽

簡述:同系列的 Java 版本,說明 JVM、靜態型別與類別結構,適合 Java 學生快速掌握語言特色。

Python 完整入門課程(freeCodeCamp)

簡述:四個多小時的完整 Python 課程,涵蓋本頁所有語法並有多個小專案,適合需要從零開始系統學習的學生。

練習題

練習 1:預測輸出

以下 Python 程式會輸出什麼?

a = 17
b = 5
print(a // b, a % b, a / b)
參考答案

3 2 3.4。整數除法 17 // 5 = 3,餘數 17 % 5 = 2,一般除法 17 / 5 = 3.4。

練習 2:辨認錯誤類型

判斷錯誤類型:(a) print("hello";(b) scores[10],但串列只有 5 個元素;(c) 計算圓面積寫成 area = 3.14 * r * 2。

參考答案

(a) 語法錯誤,括號不成對;(b) 執行期錯誤,索引超出範圍;(c) 邏輯錯誤,應為 r * r 或 r ** 2。

練習 3:字串處理

寫一個函式,傳入學生全名(例如 "Amy Chen"),回傳縮寫 "A.C."。

參考答案
def initials(full_name):
    parts = full_name.split()
    return "".join(p[0].upper() + "." for p in parts)

print(initials("Amy Chen"))   # A.C.
練習 4:測試資料

一個程式接受 13 到 19 歲的年齡。請列出正常、邊界與錯誤測試資料各兩個。

參考答案

正常:15、17。邊界:13、19(應接受),12、20(應拒絕)。錯誤:"fifteen"、−5。