这个课题讲的是如何让程序重复执行步骤,以及如何存放一列值,让循环逐个处理。**重复(repetition)**指循环。**数组(array)**是用一个名字存放的一排值,通过下标来访问。
它接在算法设计之后,属于计算机科学学习指南,之后是验证、核实与测试。求和、查找和计数都使用你在这里学到的模式。
开始之前需要懂什么?
你需要能读懂 Total ← Total + 5 这样的赋值,以及带条件的 IF 语句,还要知道什么是变量。如果这些还不稳,先用伪代码追踪训练器逐步运行几行代码。
一个引导例子
这个循环把 1 到 4 相加。
Total ← 0
FOR i ← 1 TO 4
Total ← Total + i
NEXT i
OUTPUT Total
| i | 之后的 Total |
|---|---|
| 1 | 1 |
| 2 | 3 |
| 3 | 6 |
| 4 | 10 |
输出是 10。把结束值改成 5,结果就变成 15。本模块的每一课都在这幅图上增加一个想法:循环如何停止、会在哪里出错,以及如何处理数组。
应该按什么顺序学习各课?
- 追踪计数控制循环:次数固定的 FOR 循环。在这里学会追踪表。
- 追踪条件控制循环:WHILE 与 REPEAT,由测试决定何时停止。
- 修复差一错误:找出多运行或少运行一轮的循环。
- 在给定列表中找最大值:用保存的最佳值扫描数组的标准模式。
- 使用数组下标,不把它与值混淆:把位置和内容分开。
然后做综合练习,并把失误记到错题记录。想检查自己的代码,可以用 Python 推理沙盒运行简短的练习。
学生在这个课题中容易掉进哪些陷阱?
- 数间隔而不是数值。 FOR 1 TO 5 运行五次,不是四次。
- 把 UNTIL 读成“当……时”。 REPEAT 在 UNTIL 条件为真时停止。
- 改输出而不改循环。 把答案加一只是掩盖错误。
- 最大值从 0 开始。 当所有值都是负数时就会出错。
- 加了下标而不是值。
i和Data[i]不同。 - 忘记边界。
ARRAY[1:5]没有位置 0,也没有位置 6。
如何使用练习
每题先在纸上作答,读答案之前先写好追踪表。逐行检查过程,而不是只看最后的结果。然后用练习末尾的指引清单回到对应的课。
你的考试使用哪种写法取决于考试年份,请在 Cambridge 官网的课程大纲页面确认。如果你的追踪表总在某一轮跑偏,可以请一对一线上计算机科学补习的老师看你怎么追踪,找出开始出错的那一行。