一、引言 程序流程图(Progran flowchart)作为一种算法表达工具,早已为工国计算机工作者和广大计算机用户十分熟悉和普通使用.然而它的一个明显缺点在于缺乏统一的规范化符号表示和严格的使用规则.最近,国家标准局批准的国家标准(GB1525-89)<<信息处理–数据流程图,程序流程图,系统流程图,程序网络图和系统资源图的文件编制符号及约定>>为我们推荐了一套标准化符号和使用约定.由于该标准是与国际标准化组织公布的标准ISO5807–85 Information processing–Documentation symbols and comventions for data,program and system flowcharts,program network charts and system resources charts是一致的,这里将其中程序流程图部分摘录出来,并做了一些解释,供读者参考. 根据这一标准画出的程序流程图我们称为标准流程图.
二、符号 程序流程图表示了程序的操作顺序.它应包括: (1)指明实际处理操作的处理符号,包括根据逻辑条件确定要执行的路径的符号. (2)指明控制流的流线符号. (3)便于读写程序流程图的特殊符号. 以下给出标准流程图所用的符号及其简要说明,请参看图1.
1.数据---- 平行四边形表示数据,其中可注明数据名,来源,用途或其它的文字说明.此符号并不限定数据的媒体. 2.处理---- 矩形表示各种处理功能.例如,执行一个或一组特定的操作,从而使信息的值,信息形世或所在位置发生变化,或是确定对某一流向的选择.矩形内可注明处理名或其简工功能. 3.特定处理---- 带有双纵边线的矩形表示已命名的特定处理.该处理为在另外地方已得到详细说明的一个操作或一组操作,便如子例行程序,模块.矩形内可注明特定处理名或其简要功能. 4.准备---- 六边形符号表示准备.它表示修改一条指令或一组指令以影响随后的活动.例如,设置开关,修改变址寄存器,初始化例行程序. 5.判断----- 菱形表示判断或开关.菱形内可注明判断的条件.它只有一个入口,但可以有若干个可供选择的出口,在对符号内定义折条件求值后,有一个且仅有一个出口被激活.求值结果可在表示出口路径的流线附近写出. 6.循环界限---- 循环界限为去上角矩形表示年界限和去下角矩形的下界限构成,分别表示循环的开始和循环的结束.
一对符号内应注明同一循环标识符.可根据检验终止循环条件在循环的开始还是在循环的末尾,将其条件分别在上界限符内注明(如:当A>B)或在下界限符内注明(如:直到C<D).图2给出了当终止条件成立时进入循环和直到终止条件成立退出循环的两种不同的表示.
7.连接符---- 圆表示连接符,用以表明转向流程图的它处,或从流程图它处转入.它是流线的断点.在图内注明某一标识符,表明该流线将在具有相同标识符的另一连接符处继续下去(参看以下关于连接符使用的约定). 8.端点符---- 扁圆形表示转向外部环境或从外部环境转入的端点符.例如,程序流程的起始或结束,数据的外部使用起点或终点. 9.注解符---- 注解符由纵边线和虚线构成,用以标识注解的内容.虚线须连接到被注解的符号或符号组合上.注解的正文应靠近纵边线.请参看图3给出的注解符使用示例.
10.流线 ----- 直线表示控制流的流线.关于流线上表示流向的箭头,其使用方法见后面的约定. 11.虚线 ---- 虚线用于表明被注解的范围或连接被注解部分与注解正文,也参看图3. 12.省略符 ---- 若流程图中有些部分无需给出符号的具体形式和数量,可用三点构成的省略符.省略符应夹在流线符号之中或流线符号之间 ,参看图4.
13.并行方式 ---- 一对平行线表示同步进行两个或两个以上并行方式的操作.并行方式的示例如图5,图中在处理A完成后才能进行处理C,D和E;同样,处理F要等处理B,C,D完成以后进行.但处理C可以处理D开始和(或)结束前开始和(或)结束.
三、使用约定
关于流程图符号的使用约定,简要地说明以下几点: 1.图的布局 流程图中所用的符号应该均心地分布,连线保持合理的长度,并尽量少使用长线. 2.符号的形状 流程图中多数符号内的空白供标注说明性文字.使用各种符号应注意符号的外形和各符号大小的统一,避免使符号变形或各符号大小比例不一. 3.符号内的说明文字 应使符号内的说明文字尽可能简明.通常按从左向右和从上向下方式书写,并与流向无关.如果说明文字较多,符号内写不完,可使用注解符.若注解符干扰或影响到图形的流程,应将正文写在另外一页上,并注明引用符号. 4.符号标识符 为符号规定标识符是为了便于其它文件引用该符号.便如,程序清单中引用到流程图中的特定符号.符号标识符一般写在符号的左上角,参看图6(a).
5.符号描述符 为便于进一步理解符号的功能,可标注符号描述符.通常描述符写在符号的右上角,如图6(b)所示. 6.详细表示 在处理符号或数据符号中画一横线,表明该符号在同一文件集中的其它地言有更为详细的表示.横线在符号内靠近项端,详细表示的标识符写在符号内横线之上,见图7(a).端点符用作详细表示的开始符号和结束符号,在此符号中应给出加横线符号中的标识符,见图7(b).
7.流线 (1)标准流向与箭头的使用 流线的标准流向是从左到右和从上到下.沿标准流向的流线可不用箭头指示流向,但沿非标准流向的流线应用箭头指示充向. (2)流线的交叉 应当尽量避免流线的交叉.即使出现流线的交叉,交叉的流线之间也没有任何逻辑关系,并不对流向产生任何影响,如图8(a)所示. (3)流线的汇集 两条或多条进入线可以汇集成一条输出线,此时各连接点应要互错工以提高清晰度,并用箭头表示流向,如图8(b)所示.
(4)符号流线进出 一般情况下,流线应从符号的左边或项端进入,并从右边或底端离开.其进出点均应对准符号的中心. (5)连接符 为避免出现流线交叉和使用长线,或某个流程图能在另一页上延续,可用连接符将流线截断.截断始端的连接符称为出口连接符,载断末端的连接符称为入口连接符.两连接符中用同一标识符. 换页截断可用与连接符相连的注解符表示,如图9所示.
8.多出口判断的两种表示方法 (1)直接从判断符号引出多条流线,如图10(a)所示. (2)从判断符号引聘条流线,再从它引出多条流线,如图10(b)所示.
多出口判断的每个出口都应标有相应的条件值,用以反映它所引出的逻辑路径,如图11所示.
四、 示例