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 |
型別轉換
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 開始。
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 程式會輸出什麼?
參考答案
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."。
練習 4:測試資料
一個程式接受 13 到 19 歲的年齡。請列出正常、邊界與錯誤測試資料各兩個。
參考答案
正常:15、17。邊界:13、19(應接受),12、20(應拒絕)。錯誤:"fifteen"、−5。