本模块讲程序对存储数据做的三件事:查找某个值、把值按顺序排好,以及读写文件。考试很少要你发明巧妙的方法,而是要你严格按照给出的算法执行,说出输出结果,并找出它在哪里出错。
具体范围和你所考年份要求的写法,请查看 Cambridge IGCSE Computer Science 课程大纲页面。整体框架见计算机科学学习指南,后续考试年份可能有何不同,请看 2029 年变化页面。
需要先具备哪些基础?
你需要懂变量、选择结构和循环。重复结构与数组模块涵盖这里用到的循环和数组技能,验证、核实与测试则引入了最后一课要延伸的测试数据思维。
引导例子:一次追踪,三个概念
下面是对一个虚构列表的小型搜索。数组 Items 在位置 1 到 3 存放 "pen"、"ruler"、"glue",目标是 "glue"。
Found ← FALSE
Index ← 1
WHILE Index <= 3 AND Found = FALSE
IF Items[Index] = Target THEN
Found ← TRUE
ELSE
Index ← Index + 1
ENDIF
ENDWHILE
| 检查 | Index | Items[Index] | Found |
|---|---|---|---|
| 循环前 | 1 | FALSE | |
| 第 1 轮 | 1 | pen | FALSE,所以 Index 变为 2 |
| 第 2 轮 | 2 | ruler | FALSE,所以 Index 变为 3 |
| 第 3 轮 | 3 | glue | TRUE |
循环结束时 Index = 3,所以答案是位置 3,共比较三次。请注意这张表显示了什么:数据、一个会移动的变量,以及停止条件。本模块的每一课都用到这三部分。
应该按什么顺序学习?
- 追踪原创数据上的线性搜索:学追踪表最清楚的方式,包括目标不存在时会怎样。
- 解释一轮排序(在考纲范围内):跟着一轮相邻比较与交换走一遍。
- 读取记录而不弄乱字段边界:把一行存储的数据正确拆成字段。
- 在受限例子中处理文件结尾:用在正确时机停止的循环读完整个文件。
- 用空数据和重复数据检查算法:在棘手的情况下测试你自己的算法。
然后做综合练习。有两个工具可以帮忙:受限伪代码追踪训练器用来逐步查看变量,安全 Python 推理沙盒用来验证简短的 Python 版本。
学生最常掉进哪些陷阱?
- 找到之后还在改下标。 找到目标后继续计数的搜索,会报告错误的位置。
- 交换时丢了一个值。 没有临时变量,一个值会覆盖另一个。
- 把文件里的数字当成文本。 字符 9 和 72 作为文本比较的结果,与作为数字比较不同。
- 只测试顺利的情况。 空列表或重复的值,可能让一个在整齐数据上正常的算法出错。
如何使用练习?
先在纸上画出追踪表,再打开任何答案。每个变量各占一列,一次只更新一行。把每一次失误记入错题记录与重测队列,几天后再做一次那道题。
如果你在课堂上每一步都跟得上,自己追踪时却总会跑偏,我们的老师可以通过一对一线上计算机科学补习帮你处理。