用流程图表示算法【转】
一、传统流程图
流程图是用一些图框来表示各种操作。用图形表示算法,直观形象,易于理解。美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程符号(如图1),已为世界各国程序工作者普遍采用。

图1.1.流程图符号
图1 中菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立决定执行最后的操作。它有一个入口,两个出口,如图2。

图1.2.条件判断
连接点(小圆圈)是用于将画在不同地方的流程线连接起来。如图3 中有两个以①为标志的连接点,它表示这两个点是连接在一起的,实际上它们是一个点,只是画不下来才分开画。用连接点可以避免流程线交叉或过长,使流程图清晰。
一个流程图包括以下几个部分:
(1) 表示相应操作的框
(2) 带箭头的流程线
(3) 框内外必要的文字说明
需要提醒的是,流程线不要忘记画箭头,因为它是反映流程先后的,如不画出箭头就难以判定各框执行的顺序。
用流程图表示算法直观形象,比较清楚地显示了各个框之间的逻辑关系。但是,这种流程图占用篇幅较多,尤其当算法比较复杂时,画流程图既费时又不方便,在结构化程序设计方法推广之后,许多书刊已经用N-S结构化流程图代替这种传统的流程图,但是每一个程序员都应当熟练掌握传统流程图,会看会画。
二、三种基本结构
传统的流程图用流程线指出各框的执行顺序,对流程线没有严格的限制。因此,使用者可以不受限制地使流程转来转去,使流程图变的毫无规律,使人难以理解算法的逻辑。为了提高算法的质量,使算法的设计和阅读方便,必须限制箭头的滥用。即不允许无规律地使流程随意转向,只能顺序的进行下去。但是,算法上难免会包含一些分支和循环,而不可能全部由一个个顺序框组成。为了解决这个问题,人们规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构,如果能做到这一点,算法的质量就能得到保证和提高。
1. 顺序结构
如图2.1所示,虚线框内是一个顺序结构。其中 A 和 B 两个框是顺序执行的。即:在执行完 A 框所指定的操作后,必然接着执行 B 框所指定的操作。顺序结构是最简单的一种基本结构。

图2.1.顺序结构
2. 选择结构
如图2.2所示,虚线框内是一个选择结构。此结构中必包含一个判断框。根据给定的条件 p 是否成立而执行 A 框或者 B 框。无论条件 p 是否成立,只能执行 A 框或者 B 框之一。无论走哪一条路径,在执行完 A 或者 B 之后,都经过 b 点,然后脱离本选择结构。A 或 B 两个框中可以有一个是空的,即不执行任何操作。

图2.2.选择结构
3. 循环结构
(1) 当型(while型)循环结构
如图2.3(a) 所示,当型循环结构的作用是:当给定的条件 p1 成立时,执行 A 框操作,然后再判断条件 p1 是否成立,如果仍然成立,在执行 A 框,如此反复进行,直到某一次条件 p1 不成立为止,此时不再执行 A 框,直接从 b 点脱离循环结构。
(2) 直到型(until型)循环结构
如图2.3(b) 所示,直到型循环结构的作用是:先执行 A 框,然后判断给定的判断条件 p2 是否成立,如果不成立,则再执行 A ,然后再对条件 p2 作判断,如果仍不成立,又执行 A …… 直到给定的条件 p2成立为止,此时不再执行 A,从 b 点脱离循环。

图2.3.循环结构
三、N-S流程图
既然用基本结构的顺序组合可以表示任何复杂的算法结构,那么,基本结构之间的流程线就显得多余了。1973年,美国学者 I.Nassi 和 B.Shneiderman 提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含从其他从属于它的框。或者说,由一些基本的框组成一个大框。这种流程图又叫 N-S 结构化流程图( N 和 S 是两位美国学者的英文姓氏首字母)。
N-S流程图使用以下的流程图符号。
1. 顺序结构

图3.1.选择结构
2. 选择结构

图3.2.选择结构
3. 循环结构

图3.3.当型循环结构

图3.4.直到型循环结构

浙公网安备 33010602011771号