算法与流程图
基础算法是解决问题的有限明确步骤序列;流程图以起端终端、输入输出、处理、判断与流程线五类符号把算法画成图,伪代码则以接近日常语言的方式写出,两者可互相转换。
- 算法是解决问题的有限明确步骤,具输入、输出、明确、有限、可行五项特性。
- 流程图五类符号:圆角框起终、平行四边形输入输出、矩形处理、菱形判断、箭嘴流程线。
- 顺序、判断、循环由同一套符号组合表达;判断出口必须标明是与否。
文体小知识:科技知识说明文——讲解算法的意义与特性,重点训练流程图符号的辨认与流程图、伪代码之间的互相转换。
§课文原文 Passage
1算法是解决特定问题的一连串明确步骤:按次序执行每一步,便能由已知的输入得出所需的输出。食谱、组装说明书其实都是算法的日常版本。在电脑科学中,算法先于程式:想清楚步骤,再用任何程式语言表达,这个次序不能倒过来。
2严谨的算法具备五项特性:有零个或以上的输入;至少产生一个输出;每个步骤含义明确,不会模棱两可;步骤数目有限,经过有限次执行后必定结束;每一步都切实可行,能够付诸执行。缺一便不算合格的算法。
3流程图是算法的图形表示,采用约定的符号:圆角框表示起端与终端;平行四边形表示输入与输出;矩形表示处理,例如赋值与计算;菱形表示判断,按条件成立与否选择不同路径;带箭嘴的流程线连接各符号,指明执行次序。
4把算法画成流程图有两大好处:一是逻辑一目了然,判断与循环的位置清楚可见,方便检查错误;二是便于沟通,不懂任何程式语言的人也能看懂流程,故设计文件与考试题目常用流程图表达算法。
5伪代码是算法的文字表示,以接近日常语言加上简单关键词写出步骤,例如 INPUT、OUTPUT、IF、WHILE,毋须理会任何程式语言的严格语法。同一算法可以画成流程图,也可以写成伪代码,两者结构一一对应,互相转换是文凭试的常考题。
1重点摘要 Summary
算法是解决问题的有限明确步骤序列;流程图以起端终端、输入输出、处理、判断与流程线五类符号把算法画成图,伪代码则以接近日常语言的方式写出,两者可互相转换。
2生字卡 Vocabulary
解决特定问题的有限、明确步骤序列,按序执行即可由输入得出输出。
以约定符号表示算法的图:包括起端终端、输入输出、处理、判断与流程线。
以接近日常语言的关键词写出算法步骤的文字方式,毋须遵从特定程式语言语法。
流程图中圆角框形状的符号,标示算法的开始与结束。
平行四边形符号,表示资料输入算法或结果输出给用户。
矩形符号,表示赋值、计算等处理步骤。
菱形符号,按条件是否成立,选择不同的后续路径,出口一般标明是或否。
带箭嘴的线段,连接流程图各符号并指明执行次序与方向。
储存资料的具名位置,其值可在执行过程中改变,例如总和与计数器。
记录已发生次数的变量,常用于控制循环次数,例如已输入的分数个数。
3逐步讲解 Steps
- 第一步:甚么是算法算法是解决特定问题的一连串明确步骤,按次序执行便能由输入得出输出。它不限于电脑:一份食谱列出备料与烹调步骤,一份组装说明书列出安装次序,都是算法的日常版本。在资讯科技中,算法先于程式:先用算法想清楚解题步骤,再选用任何程式语言把它写成程式;语言会过时,解题思路却通用。举个例子:计算三位同学分数的平均,步骤是输入三个分数、求总和、除以三、输出结果,这就是一个简单算法。
- 第二步:算法的五项特性严谨的算法具备五项特性。输入:有零个或以上由外界提供的资料;输出:至少产生一个结果,否则算法没有意义;明确性:每一步含义唯一,不含糊、不模棱两可;有限性:步骤有限,必定在有限时间内结束,不会永远做下去;可行性:每一步都实际做得到。举个例子:写下「把总和除以全班人数」若没有先说明人数如何得知,步骤便不够明确;而「重复输入分数直至永远」违反有限性,都不是合格算法。
- 第三步:流程图的五类符号流程图以五类约定符号表达算法。圆角框是起端与终端符号,分别标示开始与结束,一图各有其一;平行四边形是输入输出符号,代表资料进入或结果输出;矩形是处理符号,承载赋值与计算,例如把总和加一分数;菱形是判断符号,内写条件,按成立与否分出是与否两条出口;流程线带箭嘴,把符号连成通路,指明次序与方向。举个例子:答题最常见的失分位是把判断写成矩形,或流程线漏画箭嘴,务必辨清形状与用途的对应。
- 第四步:顺序算法的流程图最基本的算法只有顺序结构:由起端出发,逐一经过输入、处理、输出,到终端结束。以计算长方形面积为例:起端后先以输入符号读入长与宽,再用处理符号把面积设为长乘宽,然后以输出符号印出面积,最后到达终端;四个符号以流程线依次相连,中间没有分岔。举个例子:凡是能按固定次序一次做完的题目,例如摄氏转华氏、单据计总,流程图都是一条直线,考生只要按输入、处理、输出的次序排列符号即可。
- 第五步:含判断的流程图现实问题常要按情况选路,这时用判断符号。以判断成绩是否及格为例:输入分数后,菱形内写条件「分数大于或等于五十」,条件成立走「是」出口输出及格,不成立走「否」出口输出不及格,两条路最后汇合到终端。判断符号的两条出口必须清楚标明是与否,不可含糊。举个例子:求两数中较大值,也是一个判断:甲大于乙时输出甲,否则输出乙;画图时先写条件,再分别完成两条支路,最后合流,结构便不会乱。
- 第六步:循环与累加的画法需要重复执行的算法用判断符号构成循环:条件未达成时,流程线走回前面重做,达成才离开。以计全班平均分为例:先输入人数,把总和与计数器设为零;每次输入一个分数加入总和,计数器加一;菱形判断计数器是否少于人数,少于便返回输入分数那一步,不少则离开循环,以总和除以人数求平均并输出。举个例子:三人分数为六十、七十、八十,总和二百一十,平均七十;画图时切记先设初值再累加,否则结果无从计起。
- 第七步:流程图与伪代码的互换伪代码以文字写同一算法,常用关键词与符号有固定对应:输入输出符号对应 INPUT 与 OUTPUT;处理符号对应赋值叙述,例如总和设为零;判断符号对应 IF 或 WHILE 条件;循环以 WHILE 条件开始、ENDWHILE 结束。转换时逐个符号对照,保持次序与条件完全一致。举个例子:计平均分的流程图可写成——输入人数;总和与计数器设为零;当计数器少于人数,重复输入分数、累加、计数器加一;离开循环后输出总和除以人数,步骤与图形一一对应。
4图解 Diagrams
5例题示范 Example
转换题:某流程图表示计算全班平均分的算法,结构如下——起端;输入人数 N;把总和 T 与计数器 C 设为零;输入一个分数 S;把 S 加进 T;把 C 加一;判断 C 是否少于 N,是则返回输入分数一步,否则计算 A 等于 T 除以 N;输出 A;终端。试把此流程图改写为伪代码。
- 对照符号与关键词:输入输出符号对应 INPUT 与 OUTPUT;矩形处理对应赋值;菱形判断对应 WHILE 条件。
- 写出开首:先 INPUT N 读入人数,再把 T 与 C 设为零——累加之前必须初始化,否则结果无从计起。
- 写出循环:WHILE C 少于 N 时重复执行三步——输入 S、把 S 加进 T、把 C 加一;条件不成立便离开循环,C 每轮加一保证循环有限。
- 写出结尾:离开循环后,以 A 等于 T 除以 N 求平均,OUTPUT A,算法结束。
- 答案:伪代码:INPUT N;T 设为 0;C 设为 0;WHILE C < N 重复:INPUT S;T 设为 T + S;C 设为 C + 1;ENDWHILE;A 设为 T / N;OUTPUT A。要点:变量先初始化;循环条件与流程图菱形一致;每轮计数器加一,保证算法有限;平均在离开循环后才计算。
6常见错误 Mistakes
75 题快测 Quick check
Q1流程图中,菱形符号代表甚么?
Q2把一个分数加入总和,应使用哪类符号?
Q3全班六人分数总和为四百零二,平均分是多少?
Q4算法的有限性指甚么?
Q5伪代码中,WHILE 与 ENDWHILE 对应流程图的哪个部分?
8重点回顾 Recap
- 算法是解决问题的有限明确步骤,具输入、输出、明确、有限、可行五项特性。
- 流程图五类符号:圆角框起终、平行四边形输入输出、矩形处理、菱形判断、箭嘴流程线。
- 顺序、判断、循环由同一套符号组合表达;判断出口必须标明是与否。
- 累加之前先初始化:总和与计数器设为零,循环变量每轮更新。
- 伪代码与流程图一一对应:INPUT/OUTPUT 对输入输出符号,WHILE 对判断循环。