演算法设计进阶:伪代码与流程图
进阶伪代码三大结构:顺序、IF-THEN-ELSE、WHILE/FOR;流程图符号:圆角矩形=起终点、平行四边形=输入输出、矩形=处理、菱形=判断(一入两出)。
- 演算法三种表达:文字步骤、伪代码、流程图。
- 伪代码三大结构:顺序、IF-THEN-ELSE 判断、FOR/WHILE 循环。
- 符号:圆角矩形=起终点、平行四边形=输入输出、矩形=处理、菱形=判断。
文体小知识:原理讲解课先讲清楚概念和规则,再用实例演示,令抽象的设计方法变得具体易明。
§课文原文 Passage
1演算法(Algorithm)是解决问题的一连串清晰步骤。中一学过用文字写步骤,中二要学两种更专业的表达方法:伪代码(Pseudocode)和流程图(Flowchart)。它们都不是真正的程式,而是动手写程式之前的设计图。
2伪代码用接近英语的结构描述逻辑,三大结构是:顺序(SEQUENCE,一步一步做)、判断(IF-THEN-ELSE,二选一)和循环(WHILE/FOR,重复做)。例如「如果分数大于或等于 50 显示合格,否则显示不合格」,写成 IF score ≥ 50 THEN OUTPUT 「合格」 ELSE OUTPUT 「不合格」,逻辑一目了然,日后翻译成任何程式语言都容易。
3流程图用标准符号画出步骤:圆角矩形代表起点和终点、平行四边形代表输入和输出、矩形代表处理(计算)、菱形代表判断、箭嘴表示流程方向。菱形判断一定有一入两出(是/否两条出路),这是考试最常考的一点。
4循环在流程图中用「返回箭嘴」表示:例如逐个输入 30 位同学的分数,每输入一个就累加,然后在菱形判断「是否已输入 30 个?」不是就沿箭嘴返回继续输入。先画好流程图再写程式,可以少走很多回头路。
1重点摘要 Summary
伪代码三大结构:顺序、IF-THEN-ELSE、WHILE/FOR;流程图符号:圆角矩形=起终点、平行四边形=输入输出、矩形=处理、菱形=判断(一入两出)。
2生字卡 Vocabulary
解决问题的一连串清晰、有限、可执行的步骤。
用接近英语的结构描述程式逻辑的方法,不是真正可执行的程式。
用标准符号和箭嘴把演算法步骤画出来的图。
圆角矩形,代表流程图的起点(Start)和终点(End)。
流程图中代表输入(INPUT)和输出(OUTPUT)的符号。
矩形,代表计算或处理步骤,例如 sum ← a + b。
菱形,代表判断,一定有一条入路和两条出路(是/否)。
重复执行某段步骤的结构,在流程图中以返回箭嘴表示。
把值放入变数,伪代码常写作 ←,例如 count ← count + 1。
3逐步讲解 Steps
- 演算法三种表达法同一个演算法可以用三种方法表达:文字、伪代码和流程图。例如「计三科平均分」:用文字要写三四句,优点是人人看得懂;用伪代码三行便解决,先输入三科成绩,再令 average 等于三数之和除以三,最后输出 average;用流程图则四五个符号讲清楚。三种方法表达的是同一个演算法,考试时要按题目要求选择表达方式,并且能够在三者之间互相翻译。
- 伪代码基本写法伪代码用接近英语的结构描述逻辑,基本框架是:BEGIN 之后 INPUT a, b,然后 sum ← a + b,OUTPUT sum,最后 END。符号 ← 表示「把右一边的值放入左一边的变数」,次序是先算右边的算式,再把结果存入左边,例如 sum ← a + b 是先计 a + b,才存入 sum。这个符号与数学的等号不同,它带有方向;考试常问「sum ← sum + 1 的意思是什么」,答案是令 sum 的旧值加一之后存回 sum。
- IF-THEN-ELSE 判断判断结构写成 IF 条件 THEN 做法 ELSE 另一做法。例如判断及格:IF mark ≥ 50 THEN OUTPUT「合格」 ELSE OUTPUT「不合格」。要点是两条路必须涵盖所有情况:50 或以上走 THEN,而 49.5、49 甚至 0 全部走 ELSE,不能有分数两边都不属于。写条件时留意边界,例如「50 分或以上合格」,条件便是 mark ≥ 50 而不是 mark > 50,漏了等号便会把刚好 50 分的同学错误判为不合格。
- WHILE 循环WHILE 循环适合「只知道条件、不知道次数」的重复。例如 WHILE count < 30 DO(INPUT score;count ← count + 1):只要 count 仍然少于 30,条件成立,程式便继续输入分数;count 到达 30 时条件不成立,离开循环。关键是循环之内必须有令条件改变的语句,这里是 count ← count + 1;如果漏掉这句,count 永远不变,循环便永远停不下来。考试常问循环执行了多少次,可以用代入数字的方法逐圈追踪。
- FOR 循环已知重复次数时用 FOR 循环:FOR i FROM 1 TO 10 DO OUTPUT i,i 依次取 1 至 10,程式便印出 1 至 10。选择 FOR 还是 WHILE 的原则:已知次数(例如「印出十个数」、「处理 30 位同学」)用 FOR;只知条件(例如「直到答对为止」、「直到总分超过 100」)用 WHILE。两者可以互相改写,但考试要求按题意选择最合适的一种,并且写出循环变数的起点、终点和变化。
- 流程图符号对号入座流程图的五种符号要对号入座:「输入两个数」用平行四边形;「计两数之和」用矩形;「是否大于 0?」用菱形;开始和结束用圆角矩形;所有步骤之间用箭嘴连接,方向由上至下。记忆口诀:问问题用菱形,做动作用矩形,资料进出用平行四边形。常见错误是把输入输出画成矩形,或者判断只画一条出路;画完之后逐一检查每个符号的形状与用途是否相符。
- 循环在流程图中的画法循环在流程图中用「返回箭嘴」表示。以输入 5 个分数并计算总分为例:输入分数(平行四边形)之后,用矩形把分数加到总分;菱形问「计完 5 个吗?」,答案为否时,箭嘴返回输入步骤继续;答案为是时,箭嘴通往输出总分。这个返回箭嘴就是循环的标志。画图前先想清楚循环变数是什么、什么时候加一、什么时候判断,画出来的图才不会出错。
4图解 Diagrams
5例题示范 Example
例题:把「输入两个数,输出较大的一个」写成伪代码,并指出流程图需要哪些符号。
- 先搭框架:BEGIN 之后 INPUT num1, num2,这一步在流程图中用平行四边形表示,因为资料由外面进入。
- 中间写判断:IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2,判断在流程图中用菱形,两条出路分别标明「是」和「否」。
- 最后 END 结束,流程图中用圆角矩形;输出的两句在流程图中也用平行四边形。
- 检查边界情况:当 num1 = num2 时,条件 num1 > num2 不成立,走 ELSE 路线输出 num2,结果仍然正确,因为两数相同时输出任何一个都对。
- 答案:伪代码:BEGIN;INPUT num1, num2;IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2;END。所需符号:圆角矩形(开始和结束)、平行四边形(输入和输出)、菱形(判断)、矩形(处理)、箭嘴(流程方向)。两数相同时走 ELSE 路线,输出结果依然正确。
6常见错误 Mistakes
75 题快测 Quick check
Q1流程图中菱形代表什么?A. 处理 B. 判断 C. 输入
Q2「输入一个数字」在流程图中应该用什么符号?
Q3把「如果温度高于 30 度就开冷气,否则不开」写成 IF-THEN-ELSE 伪代码。
Q4已知一个动作要重复 10 次,应该用 WHILE 还是 FOR?为什么?
Q5循环在流程图中是怎样表示的?
8重点回顾 Recap
- 演算法三种表达:文字步骤、伪代码、流程图。
- 伪代码三大结构:顺序、IF-THEN-ELSE 判断、FOR/WHILE 循环。
- 符号:圆角矩形=起终点、平行四边形=输入输出、矩形=处理、菱形=判断。
- 菱形判断必须一入两出;循环在图中是「返回箭嘴」。
- 次数已知用 FOR;只知条件用 WHILE。