算法这个词听起来像是令人畏惧的计算机科学术语,但它实际上只是一份食谱——解决一个问题的一组精确、有序的步骤。这个词听起来令人生畏;这个想法却不是。任何按照食谱做过蛋糕,或给别人一步步指路去某个家的人,其实已经写过一个算法了。计算机科学中困难的部分通常不是代码本身——而是学会用足够精确的步骤来思考,让一个完全没有常识的东西也能准确地遵循它们。
GCSE核心
为什么“精确”是整个游戏的关键
告诉一个人类朋友“检查一下这个数是不是偶数”,他会立刻明白你的意思。对计算机说同样的话,却需要一个精确、毫无歧义的测试——通常是,把这个数除以2,余数是否为0?给人类的食谱可以说“烤到金黄色为止”,靠的是判断力;而算法必须精确指定“金黄色”是什么意思,并且这种方式能被机械地反复验证,不留任何解释的余地。
算法是一组精确的步骤——拿一个数,测试一个条件,然后根据答案精确地遵循两条路径中的一条。没有猜测,没有判断。
流程图与伪代码:在编码之前先做计划
在编写真正的代码之前,程序员通常先草拟算法——可以是流程图(用方框和箭头直观地展示逻辑),也可以是伪代码(用平实英语写成、结构类似代码的步骤)。两者存在的理由相同:在一个简单的流程图或几行伪代码中发现逻辑错误——遗漏的情况、顺序错误的步骤——比埋没在真正的语法中要容易得多。规划算法和编写代码实际上是两种不同的技能,把它们混为一谈,是学生觉得早期编程令人困惑的一个常见原因。
考试式问题
一位程序员编写了一个算法来查找列表中的最大数,但当传入一个空列表时该算法会失败。解释为什么会发生这种情况,并描述应如何修改该算法来处理这种情况。 [3分]
显示范例答案与得分点
- 该算法很可能一开始假设列表中的第一个元素就是当前最大值,然后再与其余元素比较——但空列表没有第一个元素可供起始 (1分)
- 计算机会完全按照编写的指令执行,除非明确要求检查这个问题,否则它无法察觉 (1分)
- 该算法应该先检查列表是否为空,并单独处理这种情况(例如返回一条错误信息),然后再尝试进行任何比较 (1分)
考官关注的重点: 具体指出空列表的情况为什么会打破算法的正常假设——「没有可供起始的第一个元素」——而不是只说「它不能用」。
常见错误: 把修复方法仅仅描述为「添加错误处理」,而不说明需要检查什么条件,以及这对这个特定算法为什么重要。
为什么边界情况比典型情况更重要
对典型情况有效的算法通常是较容易的部分。把可靠的算法与脆弱的算法区分开的技能,是思考边界处会发生什么:空列表、本应只有正数却出现负数、寻找根本不存在的东西。计算机会像遵循正确指令一样忠实地遵循错误的指令——除非算法被写成会检查它,否则它没有任何办法注意到出了问题。如果算法、流程图或编程逻辑需要作为一种思维方式来解释,而不是作为需要死记硬背的语法,这正是我们GCSE计算机科学个别指导所做的事情——请在这里查看完整的学习路径。
常见问题
算法和代码是一样的东西吗?
不是——算法是计划;代码是用计算机能执行的某种语言来书写这个计划的一种具体方式。同一个算法(比方说,把一个列表从小到大排序)可以用Python、Java编写,也可以用平实英语的伪代码编写,底层始终是同一个算法。
为什么算法需要处理像空列表这样的边界情况?
因为计算机会完全按照写下的指令执行,没有任何常识可以依靠——如果一个算法假设总会有至少一个元素,而实际收到一个空列表,它通常会崩溃或行为异常,而不会“意识到”出现了不寻常的情况,除非算法被明确写成会检查这一点。
流程图和伪代码有什么区别?
这是在写出真正的代码之前,描述同一个算法的两种不同方式——流程图用方框和箭头直观地展示逻辑,一眼就能看清;而伪代码用简单、结构化、类似代码的步骤把它写出来,更接近最终程序实际的样子。
读者评分与评价
从多个维度为这篇文章打分——您的评价既能帮助其他读者,也能帮助我们不断改进。
这篇文章对您有帮助吗?
告诉我们您的想法——可以是需要更正的地方、尚未解答的问题,或您希望我们接下来讲解的主题。
想直接沟通吗? 在方便的时间预约免费视频通话:简短问题15分钟,其他问题30分钟。时间以您所在的时区显示。

关于作者
Sudershan Soni
Mostak Services 的创始人兼首席导师——拥有硕士学位的数学、科学、计算机科学与 STEM 导师,拥有超过20年的职业经验,通过在线授课为全球从 11+ 和 GCSE 到 A-Level 及更高阶段的学生提供教学。
阅读完整履历