DSE ICT|程式設計 備課指引(導師用)|陣列索引、函數重用、線性與二分搜索、除錯三步
- 2026-11-02
學生寫得出 for 迴圈,但一問「陣列第 3 個元素是邊個」就由 1 開始數。這一堂用 5 個分數做同一份數據,把索引、函數與搜索次數綁在同一條可數的線上。
本堂目標 學生能夠:① 用由 0 開始的索引取出陣列元素,並講出越界會發生甚麼事;② 把重複程式碼改寫成一個有參數的函數,並講出傳值與傳參考的分別;③ 在 5 個元素的陣列上講出線性搜索最壞要 5 次比較、二分搜索最壞只要 3 次,並用三步法找出程式的錯。
01 先備知識(開課前 3 分鐘快檢)
以下任何一項未過關,本堂就會卡住,先補該項:
| 技能 | 快檢題 | 過關標準 |
|---|---|---|
| 變數 | 一個變數可以同時存幾個值 | 一個,除非用陣列 |
| 迴圈 | for i 由 0 跑到 4 會執行幾次 | 5 次 |
| 比較運算 | 大於與大於等於的分別 | 是否包含相等 |
02 課堂流程(60 分鐘)
| 時間 | 環節 | 導師做什麼 | 學生做什麼 |
|---|---|---|---|
| 0–5 分鐘 | 開場快問 | 黑板寫 42 55 38 61 49,問第 4 個數是邊個 | 舉手答,講出自己點數 |
| 5–15 分鐘 | 先備快檢 | 派三條快檢題(變數、迴圈次數、比較運算) | 書面作答,即場對答案 |
| 15–37 分鐘 | 三幕講解 | 照腳本講陣列與索引、函數與參數、搜索與除錯 | 每幕後用一句話講出「呢個數字點嚟」 |
| 37–49 分鐘 | 題型示範 | 示範四條題,每條先寫「數據→步驟→答案」三段 | 跟抄並自行重寫一次 |
| 49–55 分鐘 | 獨立練習 | 巡行,只問「呢題問索引定問次數」 | 做三題並自行對答案 |
| 55–60 分鐘 | 離場檢查 | 收回答案,即場數錯幾題 | 書面作答,不准問同學 |
03 講解腳本(照著說就可以)
第一幕:第一幕:陣列、索引與越界
「陣列是一排有編號的格,編號由 0 開始。黑板五個分數 42、55、38、61、49,索引就是 0 到 4:索引 0 是 42,索引 3 是 61。學生最常錯的是由 1 開始數,於是問『第 4 個』就答 49,其實索引 3 才對應第四個。講清楚三個數字:元素總數 5、最大索引 4、越界就是用了索引 5 或以上。第二層是陣列的用途:同一份數據要做總和、平均、最大最小,用陣列加一個迴圈就搞定,總和 245、平均 49.0、最大 61 在索引 3、最小 38。第三層是邊界條件:寫迴圈時 i 由 0 去到 n-1,寫成 i<=n 就會讀到不存在的格,程式可能直接崩或者讀到垃圾值——這一點要學生自己講一次。」
「如果程式用索引 5 去讀五個元素的陣列,會發生咩事?為咩?」
第二幕:第二幕:函數、參數與重用
「函數係一段有名嘅程式,可以反覆叫。未用函數之前,同一個平均計算可能要抄 12 行;寫成函數之後,主程式只剩 5 行:準備數據、叫函數、印結果。要學生明白兩件事:第一,參數係送入去的資料,回傳值係送出嚟的答案;第二,函數入面改嘅區域變數唔會影響出面,除非你傳嘅係整個陣列(傳參考)。用數字講好處:由 12 行減到 5 行,即省 7 行;要改公式只需要改一個地方,唔會漏改。第三層係命名與職責:一個函數只做一件事,叫 average(marks) 就唔應該同時印表,否則測試唔到。」
「點解改公式嘅時候,用函數會比複製貼上安全?」
第三幕:第三幕:搜索、次數與除錯三步
「搜索要講次數,唔係只講『搵到』。5 個元素,線性搜索由頭掃到尾,最壞要 5 次比較;二分搜索每次砍一半,最壞 3 次就夠,因為 2 的 3 次方是 8,已經大過 5。但二分搜索有前設:數據要先排序,未排序就亂用一定錯。第三層係除錯三步:一、重現錯誤並寫低輸入;二、在關鍵位置印中間值,睇邊一步開始唔對;三、改一處、再跑一次,唔好一次改五樣。用最大值的例子:如果程式答 49,就在迴圈印 i 同 marks[i],會見到比較條件寫成小於,於是永遠留住最後一個值。」
「二分搜索快咁多,係唔係所有情況都應該用?」
04 必教題型與步驟
| 題型 | 例子 | 步驟 | 答案 |
|---|---|---|---|
| 索引追蹤題 | marks = [42,55,38,61,49],問 marks[3] 的值。 | ① 由 0 開始數;② 數到第 4 個;③ 寫出值;④ 講明不是由 1 開始。 | 例:61(索引 3)。 |
| 總和平均題 | 同上陣列,求總和與平均。 | ① 迴圈累加;② 除以元素數;③ 平均保留一位小數;④ 對照合理範圍。 | 例:總和 245、平均 49.0。 |
| 搜索次數題 | 5 個已排序元素,線性與二分搜索最壞各幾次比較? | ① 線性=元素數;② 二分=ceil(log2 n);③ 講明二分要先排序;④ 寫單位「次比較」。 | 例:線性 5 次、二分 3 次。 |
| 除錯題 | 程式求最大值卻回傳 49,找出錯誤。 | ① 重現並寫低輸入;② 印中間值;③ 指出比較符號錯;④ 改一處再跑。 | 例:條件用了小於,應改為大於。 |
合理性檢查(一定要教):合理性檢查:索引 5 才是第五個元素,答 marks[5] 就是越界。總和 245 要對得上逐個加,平均 49.0 一定落在最小 38 與最大 61 之間,若算出的平均大過 61 就是除錯數。二分搜索 3 次要對得上 2 的次方關係,答 1 次就係把 n 當成 1。函數改寫後行數由 12 減到 5 是省 7 行,唔可以寫成「省一半」而無計算。除錯只改一處,一次改多處就無法判斷邊個修改有效。
05 獨立練習三題
| 題目 | 答案 | 想觀察什麼 |
|---|---|---|
| 寫出讀取陣列最後一個元素的索引式。 | marks[4],即長度減一。 | 看有沒有寫成 marks[5]。 |
| 把三段重複的平均計算改寫成函數,講出參數與回傳值。 | 參數是陣列,回傳值是平均數;主程式只叫一次。 | 看有沒有把印表動作放入函數。 |
| 5 個元素中找 61,線性搜索要幾次比較? | 4 次,因為 61 在索引 3,由頭數起第 4 個。 | 看有沒有答成 1 次。 |
06 學生常見錯誤與糾正句
| 錯誤 | 學生通常這樣寫 | 導師這樣說 |
|---|---|---|
| 索引由 1 開始 | 答 marks[4] 是第五個元素。 | 「索引係由 0 起,所以第五個係索引 4,唔係 5。用 5 就係越界。」 |
| 搜索次數當答案 | 答「二分搜索搵到就得,唔關次數事」。 | 「考題要嘅係比較次數。5 個元素,二分最壞 3 次,因為每次砍一半。」 |
| 二分搜索未排序 | 在未排序陣列上用二分搜索。 | 「二分搜索前設係已排序。未排序就要先 sort,唔係就會漏搵。」 |
| 函數副作用 | 函數同時計算又印表又改全域變數。 | 「一個函數做一件事,測試先有意義。印表留返主程式做。」 |
07 家課建議(直接指到練習卷題號)
08 離場檢查(最後 5 分鐘)
| 題目 | 答案 | 判定 |
|---|---|---|
| 五個元素的陣列,最大索引係幾多? | 4 | 答不出=重講第一幕 |
| 函數的兩個核心部分是甚麼? | 參數與回傳值 | 答不出=重講第二幕 |
| 二分搜索的前設是甚麼? | 數據已排序 | 答不出=重講第三幕 |
09 導師常問
這一章適合哪個年級?
中五 ICT 程式設計單元;中四學過迴圈之後亦可作延伸。
需要指定用哪種語言嗎?
概念通用;示例用偽碼,學生用 Python 或 Java 都可以對照。
一定要教二分搜索嗎?
DSE 會比較線性與二分搜索的效率,兩者的次數都要講得出口。
本頁為 TutorZone 導師備課指引,內容由 TutorZone 團隊編寫;題目與流程為原創,並非任何學校或出版社的教材。


