跳到正文
IGCSE·Tuition
计算机科学 · 课程

追踪计数控制循环(count-controlled loop)

FOR 循环看起来很简单,直到你要准确说出第三轮到底输出了什么。

本页内容
  1. FOR 循环如何运作?
  2. 例题详解
  3. 要留意的错误
  4. 自我检测
  5. 接下来学什么

计数控制循环会把循环体重复固定的次数,次数在循环开始前就已决定。在 Cambridge 风格的伪代码中,它就是以 NEXT 结束的 FOR 循环。题目通常要求你追踪它,也就是写下每一轮每个变量的值。

这一课是重复与数组模块的开头。这项技能会在求和、查找和之后每一道数组题中反复出现。

FOR 循环如何运作?

FOR Count ← 1 TO 5 这一行做了三件事:先把 Count 设为 1,执行循环体,然后给 Count 加 1,再执行循环体。当 Count 为 5 的那一轮结束后循环停止,因为结束值也包括在内。

每次追踪都用这套步骤:

  1. 找出循环之前已存在的变量,把它们的起始值写在第一行。
  2. 每一轮写一行,循环变量放在最前面。
  3. 按循环体中各行出现的顺序更新每个变量。
  4. 在 OUTPUT 那一行执行的位置写下输出,而不是写在最后。

例题详解

追踪下面的算法。

Total ← 0
FOR Count ← 1 TO 5
   Total ← Total + Count * 2
NEXT Count
OUTPUT Total

Total 从 0 开始。每一轮加上 Count * 2,乘法先于加法。

CountCount * 2该轮结束后的 Total
122
246
3612
4820
51030

循环运行了五次,输出是 30。检查:2 + 4 + 6 + 8 + 10 = 30。

循环也可以用负的步长向下数。

FOR k ← 10 TO 1 STEP -3
   OUTPUT k
NEXT k

取值为 10、7、4 和 1。下一个值是 -2,已低于结束值 1,所以循环停止。它运行四次。

要留意的错误

常见的失误是以为结束值不包括在内。

错误答案: “FOR Count ← 1 TO 5 运行四次,所以 Total 是 20。”

学生数的是 1 和 5 之间的间隔,而不是 1、2、3、4、5 这几个值。

纠正的方法是把循环变量的值一个个列出来再数。另一个好习惯是先写出追踪表的各行,再做计算。表格能让漏掉的一行一目了然。

自我检测

1. FOR i ← 3 TO 7 运行几次?i 的最后一个值是多少?

显示答案

取值为 3、4、5、6、7,所以运行 5 次,最后一个值是 7。检查:7 - 3 + 1 = 5。

2. 输出是什么?

Result ← 1
FOR n ← 1 TO 4
   Result ← Result * n
NEXT n
OUTPUT Result
显示答案

Result 开始时是 1,然后 1 × 1 = 1,1 × 2 = 2,2 × 3 = 6,6 × 4 = 24。输出是 24。

3. 一个循环以 Sum ← 0 开始,执行 FOR j ← 2 TO 8 STEP 2,循环体为 Sum ← Sum + j。最后 Sum 是多少?

显示答案

j 的取值是 2、4、6 和 8。总和是 2 + 4 + 6 + 8 = 20。

接下来学什么

接着看由条件而不是次数来决定停止的循环:追踪条件控制循环。你可以用伪代码追踪训练器逐步练习小循环,或在 Python 推理沙盒中试同样的想法。

如果你的分数总是丢在追踪这一步,一对一线上计算机科学补习的老师可以和你一起检查你自己的追踪表,找出跑偏的那一行。

常见问题

FOR i ← 1 TO 5 会运行几次?

五次。循环变量依次取 1、2、3、4、5,结束值也包括在内。快速检查的方法是:结束值减起始值再加一,即 5 - 1 + 1 = 5。只数数字之间的间隔,是学生答成四次的常见原因。

循环结束后,循环变量的值是多少?

不要依赖它。有些语言里它会保存结束值之后的第一个值,但伪代码题目通常不会问。只追踪循环内部的值;除非题目清楚说明,否则不要使用 NEXT 之后的循环变量。

考试需要懂 STEP 吗?

STEP 是 Cambridge 风格 FOR 循环的一部分,所以要能读懂。没有 STEP 时每次加一;STEP 为负数时向下数。请到 Cambridge 官网查看你考试年份的课程大纲,确认预期的写法。

更新于:

下一步

如果短循环的追踪表没问题,但一出现两个变量就开始跑偏,老师可以和你一起追踪你自己的作答,指出是从哪一行开始偏的。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生