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 团队编写;题目与流程为原创,并非任何学校或出版社的教材。


