跳到正文
IGCSE·Tuition
计算机科学 · 常见难点

我没法不靠完整代码来解释算法

你能把程序写出来,可一旦题目要求解释,你就卡住,或者把代码一行一行照抄。

本页内容
  1. 为什么这么难?
  2. 四部分框架
  3. 例题
  4. 薄弱与有力的对比
  5. 要避免的错误
  6. 怎么练习
  7. 自测
  8. 接下来

解释算法,就是说明它的目的、处理的对象、每一步做了什么以及为什么。 代码只是写出算法的一种方式。解释讲的是思路,要让看不到代码的人也能明白。

这是一项贯穿问题解决与解释和算法设计的推理技能。不依赖编程语言来解释算法这一课直接练习这一点。

为什么这么难?

写代码时,每一行都有固定含义,其余交给计算机。解释时你得自己选词,于是出现两个陷阱:一是把代码逐行翻译成中文,二是说些模糊的话,比如“它检查所有东西”。

两者都是因为解释没有框架。用一个简单的框架就能解决。

四部分框架

  1. 目的: 一句话说明算法要找出或完成什么。
  2. 输入与输出: 输入什么,输出什么。
  3. 用文字写步骤: 两到四句,按顺序,每句说明数据发生了什么。
  4. 原因或检验: 为什么可行,或用示例数值做跟踪。

例题

这个算法在一组分数中找出最高分。示例列表:14、9、21、17。

目的。 找出列表中最大的分数。

输入与输出。 输入是至少含一个元素的整数列表。输出是列表中最大的值。

用文字写步骤。 算法先把第一个分数当作目前见过的最大值。接着依次查看其余每个分数。每当某个分数比目前最大值大,这个分数就成为新的最大值。看完最后一个分数后,保存的值就是答案。

用示例列表跟踪。

查看的分数看完这个分数后的目前最大值
14(第一个)14
914(9 不更大)
2121(21 更大)
1721(17 不更大)

输出是 21。

原因。 保存的值始终是已查看分数中最大的,所以到最后它就是整个列表中最大的。

薄弱与有力的对比

薄弱的解释:“有一个循环。用 if 语句比较。然后输出变量。”

这只是点出代码的特征,对分数只字未提,也没有解释为什么结果是最大值。读者仍然不知道算法实现了什么。

有力的解释:“先把第一个分数当作目前最大值,再依次检查其余每个分数。如果某个分数更大,就替换保存的最大值。最后保存的值就是最高分,因为每当出现更大的分数它都会被更新。”

它按顺序说明了数据发生了什么,并给出了原因。

要避免的错误

错误:描述代码特征,而不是描述行为。 循环、变量、if 语句这些词适合用在写代码的答案里。解释题想要的是数据发生了什么。

更正: 对每一句话问一句:“这里分数发生了什么?”如果这句话可以放在任何程序上,就太模糊了。补上数据和动作。

怎么练习

  1. 选一个你已经写过的算法。
  2. 盖住代码,凭记忆写出四部分框架。
  3. 用一个小列表做跟踪,确认你写的话是真的。
  4. 换一个示例列表,检查解释是否依然成立。

伪代码跟踪训练器在小型原创算法上演示逐步执行,Python 推理沙盒让你快速测试想法,使你的解释描述的是真正可行的东西。

自测

1. 为一个统计列表中不少于 50 分的人数的算法,写一句目的。

Show answer“统计列表中 50 分或以上的分数有多少个。”好的答案点出数据(分数)、条件(不少于 50)和结果(一个计数)。

2. 哪一句是更有力的步骤:“它在循环里转圈”,还是“它依次查看每个分数,并与目前最大值比较”?

Show answer第二句。它说明了每一步数据发生了什么。“在循环里转圈”只是点出代码特征,没有说它做了什么。

3. 用示例列表 14、9、21、17,查看完第三个分数后,保存的最大值是多少?

Show answer21。第一个分数把它设为 14,第二个(9)让它保持 14,第三个(21)更大,所以保存的值变为 21。

接下来

练习描述如何改正,而不只是展示代码和把跟踪与最终输出联系起来。算法设计方面,读用状态表跟踪一个序列。

当你准备好让人听你解释并帮你打磨措辞时,一对一线上计算机科学补习从 RM80 起的付费试听课开始。

常见问题

一个好的算法解释应该包含什么?

目的、输入、输出、用平实语言写的主要步骤,以及每一步存在的原因。再配一个带示例数值的简短跟踪,证明你的解释是真的。解释不需要代码语法。

把代码念出来算有效的解释吗?

通常不算。逐行重复只是在说代码是什么,没有说它实现了什么。好的解释说的是这一步对数据做了什么、为什么,让从未见过代码的读者也能看懂。

解释要写多长?

按分数或题目指示所暗示的长度,不要更长。先用一句话给出主要思路,再写两三个准确的步骤。与算法无关的多余细节得不到分数。

跟踪表能算作解释吗?

它能支持解释,但不能取代。跟踪表展示示例数值下发生了什么,而题目通常还要你用文字说明思路。用跟踪来支撑一句话,例如指出最大值在哪里发生了变化。

更新于:

下一步

如果你的代码能运行但解释总是卡住,一对一老师可以听你大声解释一个新算法,帮你为每一步找到合适的那句话。

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

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

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

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