/tutor-prep-s4-ict-debugging-version-control/
/tutor-prep-s4-ict-debugging-version-control/
一般查詢: info@TutorZone.com.hk
辦公時間: 星期一至六 - 上午 9 時至下午 6 時
WhatsApp 星期一至日 - 24 小時
人手接聽: +852 6828 1809
即時客服: +852 9061 3106

中四 ICT|程式除錯與版本控制(三類錯誤/二分法追 bug/commit 與回退)備課指引(導師用)|45 分鐘流程、講解腳本、常見錯誤

中四 ICT|程式除錯與版本控制(三類錯誤/二分法追 bug/commit 與回退)備課指引(導師用)|45 分鐘流程、講解腳本、常見錯誤

  • 2026-11-15

學生一見到程式出錯就由第一行開始加 print,被問要試幾多次就答唔出。這一堂把除錯變成三類錯誤加二分法,順便講清楚版本控制為何是保命符。

本堂目標 本堂完結時學生能夠:(1)講出語法、執行時、邏輯三類錯誤分別在幾時被發現、由邊個工具報、點樣才捉得到;(2)用二分法在 600 行找一個 bug,並用 2 的次方證明最多 10 次就鎖定(512 唔夠、1024 夠);(3)由 120 個單元測試通過 114 個算出 95%,講出改完程式一定要重跑全部測試;(4)講出 commit、分支、合併衝突、回退的分工,並由 diff 加 40 行減 15 行算出淨加 25 行。

01 先備知識(開課前 3 分鐘快檢)

以下任何一項未過關,本堂就會卡住,先補該項:

技能 快檢題 過關標準
2 的次方 2 的幾次方會超過 600 答 10 次(1024)
百分比 120 個測試通過 114 個,通過率幾多 答 95%
加減 diff 加 40 行、減 15 行,淨變化幾多 答 淨加 25 行
除法 12 個 commit,一日 3 個,要幾多日 答 4 日

02 課堂流程(45 分鐘)

時間 環節 導師做什麼 學生做什麼
0–6 分鐘 起點快檢 問 2 的次方過 600、114 除 120、40 同 15 的淨變化、12 除 3,答案寫白板右邊 口頭答,算式寫在紙上
6–16 分鐘 第一幕:三類錯誤,三種追法 白板三欄寫語法/執行時/邏輯,每欄寫「幾時發現」同「邊個報」 學生講出邏輯錯誤跑得完但答案錯
16–26 分鐘 第二幕:二分法,600 行 10 次 示範在中間加一個 print 或中斷點,每次把懷疑範圍減半;寫出 512 唔夠、1024 夠 學生算出 10 次
26–36 分鐘 第三幕:測試與版本控制 120 個測試通過 114 個即 95%;commit 一日 3 個、12 個要 4 日;diff 淨加 25 行 學生講出回退要揀邊個 commit
36–42 分鐘 題型示範與換數字練習 換成 900 行、150 個測試通過 138 個,示範四種問法 學生跟做一題並寫出單位(次、%、行)
42–45 分鐘 離場檢查 三題口頭,錯的記下是哪一幕 三題全對

03 講解腳本(照著說就可以)

第一幕:第一幕:三類錯誤,發現的時機完全唔同

「錯誤分三類,追法唔同。第一類語法錯誤:漏括號、少冒號、變數名打錯,直譯器或編譯器即刻報,程式連跑都跑唔起,錯誤訊息連行號都畀埋你。第二類執行時錯誤:程式跑到一半死,例如除以零、索引超出範圍、開一個唔存在的檔,錯誤只在跑的過程中出現,冇對應輸入就永遠見唔到。第三類邏輯錯誤:程式跑得完、冇任何錯誤訊息,但答案錯,例如把平均寫成總和除 n 減 1,這一類只有一個捉法,就是拿預期輸出同實際輸出對比。所以學生講「冇報錯」,只等於「冇語法錯誤」,唔等於程式正確。」

「一個程式跑得完但計錯數,屬於邊一類錯誤?你會用咩方法證明佢錯?」

第二幕:第二幕:二分法把 600 行變成 10 次

「邏輯錯誤要在 600 行裡面找,逐行 print 是最慢的方法:600 行就要試 600 次。二分法每次把懷疑範圍減半:先在第 300 行 print 出關鍵變數,如果數值已經錯,問題就在 1 至 300 行,否則在 301 至 600;第二次再切一半,如此類推。要幾多次?2 的 9 次方是 512,細過 600,唔夠;2 的 10 次方是 1024,夠,所以最多 10 次就鎖定到單一行。中斷點同逐步執行是同一件事的工具版本:停在某行、看住變數、一行一行行過去,唔需要改程式碼,所以唔會好似 print 咁留下一堆要清理的語句,但在考場寫紙上答題,講的仍然是二分法這個思路。」

「900 行要幾多次二分才鎖定?為咩唔是在中間 print 一次就夠?」

第三幕:第三幕:回歸測試同版本控制是同一件事的兩面

「除錯完要證明冇整壞其他部分,這叫回歸測試。120 個單元測試通過 114 個,通過率是 114 除 120,得 0.95 即 95%,剩 6 個要修;每次改完都重跑全部,因為改一行可能弄壞十行。版本控制就是這個「重跑」同「回退」的基建:commit 是一個有意義的存檔點,一日做 3 個,12 個改動就要 4 日;分支讓你在唔影響主線的情況下試新功能,合併時兩邊改同一行就會有衝突,要人手揀邊個版本;回退是把工作檔拉回之前某個 commit 的狀態,前提是每個 commit 夠細,否則一退就連好的改動一齊消失。diff 就是兩個版本之間的差異:加 40 行、減 15 行,淨變化是加 25 行,唔是 40 加 15。」

「如果一個 commit 同時改咗五樣嘢,發現其中一樣有 bug,回退會有咩代價?」

04 必教題型與步驟

題型 例子 步驟 答案
判斷錯誤類型 程式跑得完但答案錯 三問:有冇錯誤訊息、幾時出現、答案對唔對 邏輯錯誤:跑得完、冇訊息、答案錯
設計除錯步驟 600 行,只知輸入同預期輸出 先比對預期與實際差幾多,再用二分法切範圍,最後用 2 的次方算次數 最多 10 次(1024 大過 600,512 唔夠)
算測試通過率 120 個單元測試通過 114 個 通過數除總數,再乘 100 得百分比;剩餘用減法 95%,剩 6 個未通過
講版本控制操作 12 個 commit、一日 3 個、要回退兩個版本 commit 數除每日數得日數;回退要講明回到邊個 commit 4 日;回退等於把工作檔拉到指定 commit 的狀態
合理性檢查(一定要教):四個覆核:(1)語法錯誤一定有錯誤訊息同行號,冇訊息的錯一定唔是語法錯;(2)二分次數要用 2 的次方驗:512 細過 600 所以 9 次唔夠,1024 夠所以 10 次;(3)通過率一定細過或等於 100%,114 除 120 是 0.95;(4)diff 的淨變化是加減之後的數,40 加 15 是 55,但淨變化是 25。

05 獨立練習三題

題目 答案 想觀察什麼
120 個單元測試通過 114 個,通過率幾多? 95% 看學生有冇用 6 做分子
600 行用二分法找一個 bug,最多幾多次? 10 次 要用 2 的次方驗:512 唔夠、1024 夠
diff 顯示加 40 行、減 15 行,淨變化幾多? 淨加 25 行 唔是把 40 同 15 相加

06 學生常見錯誤與糾正句

錯誤 學生通常這樣寫 導師這樣說
把邏輯錯誤當成語法錯誤 答「冇紅色錯誤訊息,所以程式冇錯,係輸入錯」 語法錯誤程式連跑都跑唔起;邏輯錯誤跑得完但答案錯,只有對比預期輸出才捉到。混淆兩者,學生就會停在「編譯得過就交」這一關。
用逐行 print 代替二分法 由第一行開始每行加一個 print,600 行試 600 次 二分法每次把範圍減半,600 行最多 10 次;逐行要 600 次,考場根本唔夠時間。
改完 bug 唔重跑測試 修好一個功能就當完成,冇再跑單元測試 回歸測試的作用是確認改一行冇整壞第二度。唔重跑就等於把新 bug 直接交出去,而且通常更難追。
commit 一次過塞入全部改動 把三個唔相關的修改放進同一個 commit commit 要小而單一目的,出事才回退得準。一個 commit 包含十個改動,回退就等於連好的改動一齊殺。

07 家課建議(直接指到練習卷題號)

08 離場檢查(最後 5 分鐘)

題目 答案 判定
程式跑得完但答案錯,屬於邊類錯誤? 邏輯錯誤,要用預期輸出對比 錯:重教第一幕,三類錯誤的發現時機
600 行二分法最多幾多次鎖定? 10 次(2 的 10 次方 1024) 錯:重教第二幕,用 2 的次方驗
一個 commit 改五樣嘢,出事回退有咩問題? 會連其他好的改動一齊退,所以 commit 要小而單一目的 錯:重教第三幕,commit 粒度

09 導師常問

這一章同中三的 Python 迴圈、函數有咩關係?

中三寫得出版程式,這一章教你程式錯的時候點找。迴圈寫錯一次會重複錯一萬次,正是最需要用二分法同測試去收窄的地方。

45 分鐘夠唔夠講三類錯誤加版本控制?

夠,但第一幕只可以佔 10 分鐘。三欄表格加一句「幾時發現」就講完,時間要留給第二幕的二分法計算,因為那是要寫數字的題型。

120、114、600 這些數字是真實專案數據嗎?

唔是,全部是教學數字,設計成可以整除同口算。真實專案的測試數量同除錯時間差別很大,重點是方法同判斷方向。

立即免費搵導師導師登記 →

本頁為 TutorZone 導師備課指引,內容由 TutorZone 團隊編寫;題目與流程為原創,並非任何學校或出版社的教材。

本頁內容版權屬 TutorZone 所有 · www.tutorzone.com.hk · 僅供個人學習及教學使用

招募導師及興趣班教練|學術、樂器、體育、藝術、STEM,免費登記,招生與配對交給平台。 了解詳情 →