學生睇得明程式,但一叫佢講「跑到第五次之後變幾多」就停手。這一堂要他們用追蹤表,把迴圈逐次寫出來,再由表上找錯。
本堂目標 學生能夠:① 用追蹤表逐步寫出 for 迴圈每次的變數值;② 判斷 while 迴圈會跑幾次、何時終止;③ 用「輸入、處理、輸出」三段定位三類常見錯誤。
01 先備知識(開課前 3 分鐘快檢)
以下任何一項未過關,本堂就會卡住,先補該項:
| 技能 |
快檢題 |
過關標準 |
| 變數 |
x = 3 之後 x = 5,x 是幾多 |
5,舊值被蓋 |
| 平方 |
4 的平方 |
16 |
| 比較運算 |
n < 100 何時為假 |
n 大於或等於 100 時 |
02 課堂流程(60 分鐘)
| 時間 |
環節 |
導師做什麼 |
學生做什麼 |
| 0–8 分 |
追蹤表格式 |
欄位:次數、i、變數、判斷 |
畫出空表 |
| 8–24 分 |
for 迴圈追蹤 |
range(1,6) 由 1 到 5,逐次加平方 |
得出總和 55 |
| 24–36 分 |
while 迴圈 |
由 3 開始倍增,寫終止條件 |
6 次後得 192 |
| 36–48 分 |
除錯三段 |
輸入、處理、輸出各放一個錯 |
逐段檢查 |
| 48–56 分 |
改錯實作 |
把錯的迴圈改成正確 |
跑一次口頭執行 |
| 56–60 分 |
離場檢查 |
三題收回即批 |
獨立完成 |
03 講解腳本(照著說就可以)
第一幕:for 迴圈:追蹤表比腦算可靠
t = 0,for i in range(1, 6): t = t + i*i。range(1,6) 只到 5,所以跑 5 次:1+4+9+16+25 = 55。追蹤表每次寫三個值:i、i*i、t。
常見問法:「跑到第三次之後 t 是幾多?」查表第三行=14,不需要心裡模擬整個程式。
要學生複述:range(1,6) 不包括 6,跑 5 次。
第二幕:while 迴圈:先問「幾時停」
n = 3,while n < 100: n = n * 2。每次先判斷再乘:3→6→12→24→48→96→192。96 仍然小於 100,所以再乘一次得 192,之後判斷為假才停,共 6 次。
最常見誤解:以為 96 就停。條件是「小於 100」,96 仍然符合,要跑到 192。
要學生複述:while 是每次進入前先判斷,不是跑完才判斷。
第三幕:除錯:先分三段,再逐段印出來
輸入段錯:讀錯型別(字串當數字加)。處理段錯:範圍錯(range(1,6) 當成 1 到 6)、累加變數未初始化。輸出段錯:印了中間值而非結果。
三步做法:① 講出預期輸出;② 在迴圈內印出變數;③ 對比追蹤表找第一個不符的次數,錯一定在那一行。
要學生複述:找第一個與追蹤表不符的次數,錯就在那一行。
04 必教題型與步驟
| 題型 |
例子 |
步驟 |
答案 |
| 追蹤題 |
for 迴圈第 3 次後 t 的值 |
畫表逐次代入 |
14(1+4+9) |
| 次數題 |
n=3 倍增到超過 100 要幾次 |
每次先判斷 |
6 次,結果 192 |
| 除錯題 |
程式輸出比預期少一次 |
查 range 上界 |
range 不含上界 |
| 改寫題 |
把 while 改成 for |
定次數用 for |
for k in range(6) |
合理性檢查(一定要教):平方和 1 至 5 應為 55;若得 91 就是加到 6 的平方。倍增 6 次後是 192,若答 96 就是漏了最後一次判斷。
05 獨立練習三題
| 題目 |
答案 |
想觀察什麼 |
| 1 至 5 的平方和 |
55 |
有無包 6 |
| 3 倍增到不小於 100 的最後值 |
192 |
有無在 96 停手 |
| 1 至 20 有幾個 3 的倍數 |
6 個 |
有無數漏 18 |
06 學生常見錯誤與糾正句
| 錯誤 |
學生通常這樣寫 |
導師這樣說 |
| range 上界當包括 |
以為 range(1,6) 加到 6 |
「range 個尾唔包,跑到 5 就停。」 |
| while 提早停 |
96 就當完成 |
「96 仍然細過 100,要再乘一次。」 |
| 累加器未歸零 |
t 由上一題的舊值開始 |
「每次新計之前,t 要重新設做 0。」 |
| 只印結果不印中間值 |
除錯時直接改數字 |
「先印中間值,睇邊一次開始唔對。」 |
07 家課建議(直接指到練習卷題號)
08 離場檢查(最後 5 分鐘)
| 題目 |
答案 |
判定 |
| 1 至 5 平方和 |
55 |
三題全對=可進陣列 |
| 3 倍增的執行次數 |
6 次 |
錯一題=下堂重講 while 判斷次序 |
| range(1,6) 跑幾次 |
5 次 |
錯兩題以上=回到第一幕 |
09 導師常問
一定要用 Python 嗎?
DSE 卷面用偽代碼,但用 Python 練追蹤最快,概念一樣。
追蹤表要寫幾多行?
寫到能回答問題為止,通常 5 至 6 行已夠。
無限迴圈怎答?
指出缺少更新變數或條件永遠為真,並寫出修正那一行。
立即免費搵導師導師登記 →
本頁為 TutorZone 導師備課指引,內容由 TutorZone 團隊編寫;題目與流程為原創,並非任何學校或出版社的教材。