跳到正文
IGCSE·Tuition

计算机科学 · 主题

IGCSE 计算机科学:算法设计

当题目只给一张空白,要你设计算法时,它可能比课堂上任何一次追踪都难。

本页内容
  1. 开始前需要知道什么?
  2. 一个引导示例
  3. 应该按什么顺序学习各课?
  4. 学生在这个课题中常踩哪些坑?
  5. 如何使用练习题

算法设计,是把一段文字描述的任务变成一组清楚的步骤,让别人照着做每次都能得到正确答案。它不是背解法,而是拆解任务、说清输入与输出、并在信任步骤之前先测试。

本模块接在自动化与新兴系统之后,排在重复结构与数组之前,属于计算机科学学习指南的一部分。你在这里练习的追踪,会用在之后每一道算法题中。

开始前需要知道什么?

你需要知道什么是变量(variable),赋值语句如 Total ← Total + 5 如何改变它,以及怎样读简单的 IF 语句。如果还不确定,可以先在伪代码追踪训练器里逐步运行一个小算法,观察每个变量的变化。

你不需要会 Python。本模块使用剑桥风格的伪代码,只有在 Python 能帮你看到同一逻辑的另一种写法时才会出现。

一个引导示例

老师输入五个测验分数,每个满分 20。如果平均分至少为 10,程序输出 PASS,否则输出 FAIL。

先拆成几部分:收集五个分数,求和,除以五,与 10 比较,输出一个词。分数为 12、15、9、18、16 时,总分是 70,平均分是 14,输出是 PASS。

Total ← 0
FOR Count ← 1 TO 5
   INPUT Mark
   Total ← Total + Mark
NEXT Count
Average ← Total / 5
IF Average >= 10 THEN
   OUTPUT "PASS"
ELSE
   OUTPUT "FAIL"
ENDIF

本模块的每一课都在这幅图上增加一个习惯:拆分、写规格、追踪、测试边界、解释。

应该按什么顺序学习各课?

  1. 把任务分解为子问题:学会拆分任务,让每一部分小到可以测试。
  2. 定义输入、输出和限制条件:准确说明什么进来、什么出去、什么被允许。
  3. 用状态表追踪一个序列:逐行跟踪变量,以便检查任何算法。
  4. 设计带边界情况的选择结构:写 IF 结构,并测试决策改变的那些值。
  5. 不依赖编程语言来解释算法:用普通步骤和伪代码描述逻辑。

然后做综合练习,把错题记在错题记录里。熟悉两种写法之后,可以用安全 Python 沙盒把伪代码追踪与一段短程序做对照。

学生在这个课题中常踩哪些坑?

  • 子问题只是把整个任务重说一遍。 “算出结果”无法测试。继续拆,直到每一部分只有一个明确的任务。
  • 跳过初始值。 从第一次更新之后才开始的追踪,会掩盖初始化错误。
  • 误用大于等于。 符号 > 和 >= 恰好只在一个值上给出不同答案。
  • 只测试典型数据。 大多数错误出现在边缘,比如 0、界限本身,以及两侧相邻的值。
  • 描述代码而不是逻辑。 依赖某种语言内置函数的解释,无法证明你理解了算法。

如何使用练习题

在纸上完成。先写好追踪表,再看答案,并先预测最终输出。对照的是解题过程,而不只是最后一行,然后记下每个错误属于哪一课。

如果你希望老师看看你如何设计并检查自己的算法,我们的一对一在线计算机科学补习正是围绕追踪和调试你自己的作答来进行的。

常见问题

设计算法一定要写真正的代码吗?

一开始不需要。设计发生在写代码之前:你要决定步骤、输入、输出和测试。剑桥风格的伪代码或普通语句描述的步骤就足够。请到 Cambridge 官网查看 0478 当前课程大纲,确认你所考年份的答题格式。

伪代码和流程图有什么区别?

两者描述的是同一组步骤。流程图用图形和箭头,伪代码用 IF、FOR、WHILE 之类的结构化文字。按题目要求选择即可。无论哪种形式,逻辑、步骤顺序和测试都应一致。

我怎么知道自己的算法是对的?

用测试数据手动追踪,包括边界值和空的或极端的情况。如果追踪表得出的结果与你事先预测的一致,就有了证据。如果不一致,追踪表会显示该修哪一步。

2029 年的课程也一样吗?

不要想当然。Cambridge 将 0478 列为 2026 至 2028 年,另有单独的 0265 页面。请向考试中心确认你的考试年份,再阅读该年份的课程大纲,然后才选择记法。

资料来源

  1. Cambridge IGCSE Computer Science 0478 课程大纲页面

更新于:

下一步

如果你能看懂别人给的算法,却在自己设计时卡住,一对一的老师可以看你如何拆解任务,并在卡住的那一步帮你。

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

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