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

把追踪表和最终输出联系起来

追踪表已经填完整了,可最后写下的答案还是取错了变量。

本页内容
  1. 怎样把表格和输出联系起来?
  2. 例题
  3. 要提防的错误
  4. 自我检测
  5. 接下来学什么

追踪表(trace table)记录算法运行时每个变量的值。要把它和输出联系起来,请找出 OUTPUT 语句所指名的变量,并从程序运行到该语句时的那一行读取它的值。然后解释循环为什么在那里结束。

这一课属于解题说明单元。它建立在说明变量的用途之上,因为你要知道哪个变量才是答案;追踪的方法则来自算法设计。

怎样把表格和输出联系起来?

  1. 建表: 每个变量一列,每次更新一行。
  2. 标出循环测试失败的那一行。 循环在第一次为假的测试处结束。
  3. 查看 OUTPUT 语句。 记下它指名的变量。
  4. 读取该变量的最终值, 取自最后一次改变它的那一行。
  5. 写一句话, 说明是哪个变量、值是多少,以及循环为什么停止。

例题

Total ← 0
Number ← 10
WHILE Number > 0 DO
   Total ← Total + Number
   Number ← Number - 3
ENDWHILE
OUTPUT Total
轮次Number > 0 ?之后的 Total之后的 Number
开始010
110 > 0 真107
27 > 0 真174
34 > 0 真211
41 > 0 真22−2
测试−2 > 0 假22−2

说明。 循环把 10、7、4 和 1 加到 Total,得到 10 + 7 + 4 + 1 = 22。第 4 轮之后,Number 是 −2,所以测试 −2 > 0 为假,循环结束。−2 从未被加上。语句 OUTPUT Total 输出 22。

再核对一次。 被加的数是 10、7、4、1(在仍大于 0 时,每个比前一个小 3)。它们的和是 22。

要提防的错误

常见的失误是读错了列或行:

输出是 −2,因为那是表里的最后一个值。

−2 是 Number 的最后一个值,但 OUTPUT 语句指名的是 Total。这个失误的另一种形式,是少追踪一轮得到 21 或 20,或者错把 −2 加进去。

改正:先看语句。它写的是 OUTPUT Total,所以读 Total 那一列。它的最后一个值是 22。

自我检测

1. 追踪这段代码,写出输出,并用一句话说明。

A ← 2
B ← 1
REPEAT
   B ← B * A
   A ← A + 1
UNTIL A > 4
OUTPUT B
显示答案

开始 A = 2,B = 1。第 1 轮:B = 1 × 2 = 2,A = 3,测试 3 > 4 为假。第 2 轮:B = 2 × 3 = 6,A = 4,测试 4 > 4 为假。第 3 轮:B = 6 × 4 = 24,A = 5,测试 5 > 4 为真,循环停止。输出是 24,因为 B 最后一次更新在第 3 轮,OUTPUT B 输出的就是这个值。

2. 在例题中,输出来自表中哪一行?为什么不是“测试”那一行?

显示答案

第 4 轮是最后一次改变 Total 的那一行,得到 22。“测试”那一行只是检查条件,循环体并未运行,所以 Total 仍是 22。两行的 Total 列都是 22,但这个值是在第 4 轮产生的。

3. 把例题中 Number 的初始值改成 9。输出是什么?

显示答案

Number 依次是 9、6、3,然后是 0。Total 依次是 9、15、18。第 3 轮之后 Number 是 0,0 > 0 为假,循环停止。输出是 18(9 + 6 + 3 = 18)。

接下来学什么

本单元最后一项技能,是把出错的程序缩小到最小的形式:准备最小可重现的学习例子。受限伪代码追踪训练器可以让你对照逐步追踪来检查自己的表格。

如果你的表格是对的,却在解释输出时丢分,我们的老师可以在线上一对一计算机科学补习中和你练习最后那句话。

常见问题

追踪表里哪个值才是输出?

输出是 OUTPUT 语句所指名的变量,在该语句运行时的值。它通常是该变量那一列的最后一个值,但不一定是整张表的最后一个值,因为其他变量可能还在变化。

为什么循环的最后那个值没有被加进去?

WHILE 循环在每一轮之前先测试条件。条件变为假时,循环体被跳过。使条件变假的那个值从未在循环内被处理,所以不会加到总和里。

除了表格,还需要写句子吗?

题目说“解释”时需要。表格显示数值,句子把它们联系起来。要写出输出的是哪个变量、取自哪一行,以及循环为什么结束,例如“Number 变成 −2 时循环停止”。

资料来源

  1. Cambridge IGCSE Computer Science 0478 syllabus page

更新于:

下一步

如果你的追踪表整齐,输出那一行却总是出错,一对一的老师可以和你练习最后这一步,直到从表中读出答案变成习惯。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

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

是家长或监护人?在这里咨询

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