演算法设计进阶:伪代码与流程图

进阶

伪代码三大结构:顺序、IF-THEN-ELSE、WHILE/FOR;流程图符号:圆角矩形=起终点、平行四边形=输入输出、矩形=处理、菱形=判断(一入两出)。

适合:中二资讯及通讯科技 · 单元:演算法与程式 · 建议学习路径第 4/12 课

学完呢课,你会识:
  • 演算法三种表达:文字步骤、伪代码、流程图。
  • 伪代码三大结构:顺序、IF-THEN-ELSE 判断、FOR/WHILE 循环。
  • 符号:圆角矩形=起终点、平行四边形=输入输出、矩形=处理、菱形=判断。
文体:原理讲解课有声朗读

文体小知识:原理讲解课先讲清楚概念和规则,再用实例演示,令抽象的设计方法变得具体易明。

资讯及通讯科技Information & Communication Technology

§课文原文 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

A
Algorithm演算法

解决问题的一连串清晰、有限、可执行的步骤。

P
Pseudocode伪代码

用接近英语的结构描述程式逻辑的方法,不是真正可执行的程式。

F
Flowchart流程图

用标准符号和箭嘴把演算法步骤画出来的图。

T
Terminal (rounded rectangle)起终点符号

圆角矩形,代表流程图的起点(Start)和终点(End)。

P
Parallelogram平行四边形

流程图中代表输入(INPUT)和输出(OUTPUT)的符号。

P
Process box处理框

矩形,代表计算或处理步骤,例如 sum ← a + b。

D
Decision diamond判断菱形

菱形,代表判断,一定有一条入路和两条出路(是/否)。

L
Loop循环

重复执行某段步骤的结构,在流程图中以返回箭嘴表示。

V
Variable assignment变数指定

把值放入变数,伪代码常写作 ←,例如 count ← count + 1。

3逐步讲解 Steps

  1. 演算法三种表达法同一个演算法可以用三种方法表达:文字、伪代码和流程图。例如「计三科平均分」:用文字要写三四句,优点是人人看得懂;用伪代码三行便解决,先输入三科成绩,再令 average 等于三数之和除以三,最后输出 average;用流程图则四五个符号讲清楚。三种方法表达的是同一个演算法,考试时要按题目要求选择表达方式,并且能够在三者之间互相翻译。
  2. 伪代码基本写法伪代码用接近英语的结构描述逻辑,基本框架是:BEGIN 之后 INPUT a, b,然后 sum ← a + b,OUTPUT sum,最后 END。符号 ← 表示「把右一边的值放入左一边的变数」,次序是先算右边的算式,再把结果存入左边,例如 sum ← a + b 是先计 a + b,才存入 sum。这个符号与数学的等号不同,它带有方向;考试常问「sum ← sum + 1 的意思是什么」,答案是令 sum 的旧值加一之后存回 sum。
  3. 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 分的同学错误判为不合格。
  4. WHILE 循环WHILE 循环适合「只知道条件、不知道次数」的重复。例如 WHILE count < 30 DO(INPUT score;count ← count + 1):只要 count 仍然少于 30,条件成立,程式便继续输入分数;count 到达 30 时条件不成立,离开循环。关键是循环之内必须有令条件改变的语句,这里是 count ← count + 1;如果漏掉这句,count 永远不变,循环便永远停不下来。考试常问循环执行了多少次,可以用代入数字的方法逐圈追踪。
  5. FOR 循环已知重复次数时用 FOR 循环:FOR i FROM 1 TO 10 DO OUTPUT i,i 依次取 1 至 10,程式便印出 1 至 10。选择 FOR 还是 WHILE 的原则:已知次数(例如「印出十个数」、「处理 30 位同学」)用 FOR;只知条件(例如「直到答对为止」、「直到总分超过 100」)用 WHILE。两者可以互相改写,但考试要求按题意选择最合适的一种,并且写出循环变数的起点、终点和变化。
  6. 流程图符号对号入座流程图的五种符号要对号入座:「输入两个数」用平行四边形;「计两数之和」用矩形;「是否大于 0?」用菱形;开始和结束用圆角矩形;所有步骤之间用箭嘴连接,方向由上至下。记忆口诀:问问题用菱形,做动作用矩形,资料进出用平行四边形。常见错误是把输入输出画成矩形,或者判断只画一条出路;画完之后逐一检查每个符号的形状与用途是否相符。
  7. 循环在流程图中的画法循环在流程图中用「返回箭嘴」表示。以输入 5 个分数并计算总分为例:输入分数(平行四边形)之后,用矩形把分数加到总分;菱形问「计完 5 个吗?」,答案为否时,箭嘴返回输入步骤继续;答案为是时,箭嘴通往输出总分。这个返回箭嘴就是循环的标志。画图前先想清楚循环变数是什么、什么时候加一、什么时候判断,画出来的图才不会出错。

4图解 Diagrams

伪代码 vs 流程图:同一逻辑两种写法伪代码 pseudocodeINPUT scoreIF score >= 50 THENOUTPUT "合格"ELSEOUTPUT "要加油"流程图 flowchart开始≥50?显示结果是否伪代码=用普通字写程式逻辑(唔使理语法);流程图=画出嚟睇流程写程式前先写伪代码/画图——谂清楚逻辑先至落手,事倍功半
图 1:伪代码与流程图

5例题示范 Example

例题:把「输入两个数,输出较大的一个」写成伪代码,并指出流程图需要哪些符号。

  1. 先搭框架:BEGIN 之后 INPUT num1, num2,这一步在流程图中用平行四边形表示,因为资料由外面进入。
  2. 中间写判断:IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2,判断在流程图中用菱形,两条出路分别标明「是」和「否」。
  3. 最后 END 结束,流程图中用圆角矩形;输出的两句在流程图中也用平行四边形。
  4. 检查边界情况:当 num1 = num2 时,条件 num1 > num2 不成立,走 ELSE 路线输出 num2,结果仍然正确,因为两数相同时输出任何一个都对。
  5. 答案:伪代码:BEGIN;INPUT num1, num2;IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2;END。所需符号:圆角矩形(开始和结束)、平行四边形(输入和输出)、菱形(判断)、矩形(处理)、箭嘴(流程方向)。两数相同时走 ELSE 路线,输出结果依然正确。

6常见错误 Mistakes

✗ 「菱形判断只有一条出路。」
✓ 判断一定有两条出路(是/否),漏画一边流程就断了。
✗ 「伪代码要完全跟从 Python 语法,错一个符号都不行。」
✓ 伪代码不是真程式,没有严格语法;重点是逻辑清晰、容易翻译成程式。
✗ 「输入步骤用矩形就可以。」
✓ 标准符号中输入/输出用平行四边形;矩形只表示计算处理。
✗ 「WHILE 和 FOR 一样,混用也无所谓。」
✓ 次数已知用 FOR(例如做 10 次);只知条件、不知次数用 WHILE(例如直到答对为止)。
✗ 「演算法步骤可以含糊一点,例如『算一算』。」
✓ 演算法每步必须清晰、有限、可执行;含糊的步骤电脑根本无法跟从。

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。

同级其他科

同一科其他级别