演算法与流程图
进阶演算法就是一步步解决问题的清晰步骤,就像食谱。流程图用图形画出来:椭圆起止、矩形做东西、菱形判断、平行四边形输入输出。
- 演算法=有限、清晰、有次序的步骤
- 椭圆起止、矩形处理、菱形判断、平行四边形输入输出
- 菱形必有两条出路;一图一开始
§课文原文 Passage
1演算法是解决问题的一连串清晰步骤,就像一份食谱:先列出材料,再按部就班执行,便能完成菜式。合格的演算法必须清晰、有限且有次序,每一步都明确具体,步骤数量有限,先后次序固定,调换次序便可能出错。流程图则把演算法画出来:椭圆形代表开始与结束,长方形代表处理,菱形代表判断,箭嘴表示流程方向。
2实际写程式之前,先设计演算法并绘画流程图,可以及早发现逻辑错误,减少日后除错的时间。常见例子包括找出全班最高分的同学、计算各科平均分、把考试成绩由高至低排序;这类题目都应先想清楚输入、处理与输出三个环节,再转化为具体步骤,最后才动手编写程式码,出错的机会便大大减低。
3香港日常应用随处可见:港铁路线搜寻器在几秒内建议乘车方案,八达通系统自动计算最平车资,外卖平台为数以千计的订单安排派送路线,背后全部是演算法在运作。学会有条理地分步思考,把大问题拆解成小步骤,正是所有编程与运算思维的共同基础,对其他学科的解难同样有帮助。
1重点摘要 Summary
演算法就是一步步解决问题的清晰步骤,就像食谱。流程图用图形画出来:椭圆起止、矩形做东西、菱形判断、平行四边形输入输出。
2生字卡 Vocabulary
解决问题的一步一步清晰指令:步骤有限、次序明确。
用标准图形和箭嘴把演算法画出来的图。
表示开始 Start 或结束 End。
表示一个动作或计算,例如「总分+10」。
表示一个判断,分「是/否」两条出路。
表示输入资料或输出结果。
表示流程进行方向的符号,每条线都要有箭头。
用程式语言写成的指令;流程图想清楚后,译做程式码交给电脑执行。
3逐步讲解 Steps
- 演算法三个要求合格的演算法必须符合三个要求。第一,清晰:每一步都明确具体,不含糊,任何人照著做也得到同一结果。第二,有限:步骤数量有限,一定会做完,不会无限循环。第三,有次序:先后次序固定,调换次序便可能出错,例如先穿鞋再穿袜便行不通。可以用食谱来理解:一份永远写不完、或者「看心情」加盐的食谱,就不是合格的演算法。答题时三个要求都要写出来,并且各配一个简短例子。
- 日常例子:冲柠檬茶演算法不一定需要电脑,日常生活到处都是。以冲柠檬茶为例:开始之后先烧水;然后判断「有柠檬吗?」如果有,便放入柠檬;如果没有,便先去买柠檬再继续;最后加入茶,完成。这个过程有一步一步的指令,还有一个判断分支,已经是一个演算法。由此可见,演算法只是「解决问题的一连串清晰步骤」,写程式之前的设计、甚至教同学折纸鹤的步骤,都符合这个定义。
- 流程图符号流程图用五种标准符号表达演算法:椭圆代表开始或结束;矩形代表处理,即进行动作或计算;菱形代表判断,分「是」和「否」两条路;平行四边形代表输入或输出;箭头表示流程方向。五种符号各司其职,画图时不可混用,例如判断绝不能画成矩形,输入也不应画成矩形。记忆方法:想「问问题」就用菱形,想「做事情」就用矩形,想「资料进来或出去」就用平行四边形。
- 画图规矩画流程图有几条规矩:一个流程图只能有一个开始;每条箭头都必须标明方向;菱形必须有「是」和「否」两条出路,不可以只有一条。例如判断成绩是否合格,菱形就要分出合格与不合格两条路线,两条路最后都要通向结束,流程图才算完整。常见错误包括:忘记画开始或结束的椭圆、箭头没有方向、判断之后其中一条路悬空。画完之后沿著箭头由开始走到结束检查一次,便能发现这些问题。
- 为什么要先画图写程式之前先画流程图,可以把逻辑想清楚,避免写到一半陷入混乱;程式其实只是把流程图翻译成程式码。例如先画好成绩分级图,写程式时就不会漏掉任何一个分数范围,之后除错也更快,因为可以直接对照流程图检查每一条分支。香港的例子:港铁路线搜寻器在几秒内建议乘车方案,背后正是设计好的演算法在运作。先设计后编程,是所有程式员的工作习惯,也是运算思维的核心。
- 循环在流程图怎样画重复的工作在流程图中用「返回箭头」表达:把流程线由下方画回上方,形成回圈。例如砌 10 层积木:矩形「砌一层」之后,菱形问「砌够 10 层吗?」,答案为否时,箭头折返「砌一层」继续;答案为是时,箭头通往结束。菱形的出路折返向上,就是流程图里循环的标志。画这类图时,记得在菱形旁写清楚判断条件,并且确认循环最终有离开的出口,否则流程便会永远绕圈。
4图解 Diagrams
5例题示范 Example
例题:用文字描述「判断一个分数是否合格(50 分或以上)」的流程图。
- 第一步先画开始的椭圆,然后用平行四边形表示「输入分数」,因为分数是由外面进入程式的资料。
- 接著画菱形,写上判断条件「分数大于或等于 50?」,菱形必须有两条出路,分别标明「是」和「否」。
- 「是」的一边输出「合格」;「否」的一边输出「不合格」,两条分支不可以共用同一个输出。
- 最后两条分支都要用箭头连到结束的椭圆,画完后由开始沿箭头走一次,确认没有悬空的路线。
- 答案:画图次序是:开始(椭圆),输入分数(平行四边形),判断「分数大于或等于 50?」(菱形),「是」输出「合格」、「否」输出「不合格」,最后两条分支都到达结束(椭圆)。要点是菱形必须有「是」和「否」两条出路,而且所有箭头最后都要到达结束,流程图才算完整。
6常见错误 Mistakes
75 题快测 Quick check
Q1流程图里面,菱形代表?A. 开始 B. 判断 C. 输入
Q2「输入分数」应该用哪个图形?
Q3一个演算法可以有多少个「开始」?
Q4「开始」和「结束」应该用哪个图形?
Q5用文字写出「计算 5 个科目总分」演算法的三个主要步骤。
8重点回顾 Recap
- 演算法=有限、清晰、有次序的步骤
- 椭圆起止、矩形处理、菱形判断、平行四边形输入输出
- 菱形必有两条出路;一图一开始
- 先画流程图后写码,逻辑先清楚
- 食谱、游戏指引都是演算法 — 条理思想不用电脑也练到