如何画程序流程图

看PST代码很多天了,里面的读写流程看懂了,又忘了,再看,再忘,归咎于笔记的不完善与可读性差, 今天开始学习流程图.

下面介绍一下标准程序流程图的符号及使用约定

一,引言

程序流程图(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)便于读写程序流程图的特殊符号.

clip_image002

以下给出标准流程图所用的符号及其简要说明,请参看图1.

图1 标准程序流程图符号

1.数据---- 平行四边形表示数据,其中可注明数据名,来源,用途或其它的文字说明.此符号并不限定数据的媒体.

2.处理---- 矩形表示各种处理功能.例如,执行一个或一组特定的操作,从而使信息的值,信息形世或所在位置发生变化,或是确定对某一流向的选择.矩形内可注明处理名或其简工功能.

3.特定处理---- 带有双纵边线的矩形表示已命名的特定处理.该处理为在另外地方已得到详细说明的一个操作或一组操作,便如子例行程序,模块.矩形内可注明特定处理名或其简要功能.

4.准备---- 六边形符号表示准备.它表示修改一条指令或一组指令以影响随后的活动.例如,设置开关,修改变址寄存器,初始化例行程序.

5.判断----- 菱形表示判断或开关.菱形内可注明判断的条件.它只有一个入口,但可以有若干个可供选择的出口,在对符号内定义折条件求值后,有一个且仅有一个出口被激活.求值结果可在表示出口路径的流线附近写出.

clip_image004

6.循环界限---- 循环界限为去上角矩形表示年界限和去下角矩形的下界限构成,分别表示循环的开始和循环的结束. 图2 两种循环表示

一对符号内应注明同一循环标识符.可根据检验终止循环条件在循环的开始还是在循环的末尾,将其条件分别在上界限符内注明(如:当A>B)或在下界限符内注明(如:直到C<D).图2给出了当终止条件成立时进入循环和直到终止条件成立退出循环的两种不同的表示.

7.连接符---- 圆表示连接符,用以表明转向流程图的它处,或从流程图它处转入.它是流线的断点.在图内注明某一标识符,表明该流线将在具有相同标识符的另一连接符处继续下去(参看以下关于连接符使用的约定).

8.端点符---- 扁圆形表示转向外部环境或从外部环境转入的端点符.例如,程序流程的起始或结束,数据的外部使用起点或终点.

clip_image006

9.注解符---- 注解符由纵边线和虚线构成,用以标识注解的内容.虚线须连接到被注解的符号或符号组合上.注解的正文应靠近纵边线.请参看图3给出的注解符使用示例.

图3 注解符的使用

10.流线 ----- 直线表示控制流的流线.关于流线上表示流向的箭头,其使用方法见后面的约定.

11.虚线 ---- 虚线用于表明被注解的范围或连接被注解部分与注解正文,也参看图3.

clip_image008

12.省略符 ---- 若流程图中有些部分无需给出符号的具体形式和数量,可用三点构成的省略符.省略符应夹在流线符号之中或流线符号之间 ,参看图4.

图4 省略符的使用

clip_image010

13.并行方式 ---- 一对平行线表示同步进行两个或两个以上并行方式的操作.并行方式的示例如图5,图中在处理A完成后才能进行处理C,D和E;同样,处理F要等处理B,C,D完成以后进行.但处理C可以处理D开始和(或)结束前开始和(或)结束.

图5 并行方式示例

三,使用约定

关于流程图符号的使用约定,简要地说明以下几点:

1.图的布局

流程图中所用的符号应该均心地分布,连线保持合理的长度,并尽量少使用长线.

2.符号的形状

流程图中多数符号内的空白供标注说明性文字.使用各种符号应注意符号的外形和各符号大小的统一,避免使符号变形或各符号大小比例不一.

3.符号内的说明文字

应使符号内的说明文字尽可能简明.通常按从左向右和从上向下方式书写,并与流向无关.如果说明文字较多,符号内写不完,可使用注解符.若注解符干扰或影响到图形的流程,应将正文写在另外一页上,并注明引用符号.

4.符号标识符

clip_image012

为符号规定标识符是为了便于其它文件引用该符号.便如,程序清单中引用到流程图中的特定符号.符号标识符一般写在符号的左上角,参看图6(a).

图6 符号标识符和符号描述符

5.符号描述符

为便于进一步理解符号的功能,可标注符号描述符.通常描述符写在符号的右上角,如图6(b)所示.

6.详细表示

clip_image014

在处理符号或数据符号中画一横线,表明该符号在同一文件集中的其它地言有更为详细的表示.横线在符号内靠近项端,详细表示的标识符写在符号内横线之上,见图7(a).端点符用作详细表示的开始符号和结束符号,在此符号中应给出加横线符号中的标识符,见图7(b).

图7 加横线符号及其详细表示

7.流线

(1)标准流向与箭头的使用

流线的标准流向是从左到右和从上到下.沿标准流向的流线可不用箭头指示流向,但沿非标准流向的流线应用箭头指示充向.

(2)流线的交叉

应当尽量避免流线的交叉.即使出现流线的交叉,交叉的流线之间也没有任何逻辑关系,并不对流向产生任何影响,如图8(a)所示.

(3)流线的汇集

clip_image016

两条或多条进入线可以汇集成一条输出线,此时各连接点应要互错工以提高清晰度,并用箭头表示流向,如图8(b)所示.

图8 汉线的交叉与流线的汇集

(4)符号流线进出

一般情况下,流线应从符号的左边或项端进入,并从右边或底端离开.其进出点均应对准符号的中心.

(5)连接符

为避免出现流线交叉和使用长线,或某个流程图能在另一页上延续,可用连接符将流线截断.截断始端的连接符称为出口连接符,载断末端的连接符称为入口连接符.两连接符中用同一标识符.

clip_image018

换页截断可用与连接符相连的注解符表示,如图9所示.

图9 出口连接符与入口连接符

8.多出口判断的两种表示方法

(1)直接从判断符号引出多条流线,如图10(a)所示.

clip_image020

(2)从判断符号引聘条流线,再从它引出多条流线,如图10(b)所示.

图10 多出口判断

clip_image022

多出口判断的每个出口都应标有相应的条件值,用以反映它所引出的逻辑路径,如图11所示.

图11 多出口判断出口处标出条件值

clip_image024

四, 示例

clip_image002[4]
### 绘制程序流程图的方法 绘制程序流程图是一种有效的方式,用于清晰地展示程序的执行逻辑和结构。以下是关于如何根据给定逻辑来绘制程序流程图的具体方法: #### 使用标准符号 程序流程图采用一系列标准化的图形符号来代表不同的操作或决策点。常见的符号包括但不限于矩形(表示处理)、菱形(表示判断条件)以及平行四边形(表示输入/输出操作)。这些符号的选择应严格遵循国际标准[^1]。 #### 明确起始与终止节点 每一个完整的程序流程图都应当有唯一的起点和终点。通常情况下,使用椭圆形或者圆角矩形作为开始和结束标志,这有助于读者快速识别整个流程的方向性和范围[^1]。 #### 表达逻辑关系 通过箭头连接各个功能模块之间的流向线,确保每一步骤间的转换路径都被清楚地标明出来。对于分支结构,则需利用菱形框配合相应的布尔表达式来进行判定,并分别指出满足与否后的走向[^1]。 #### 注重可读性设计 为了提高所绘图表的理解难度,在布局方面要讲究层次分明、紧凑有序;同时也要注意保持足够的空间距离以便添加必要的文字注解说明[^1]。 ```python # 示例代码片段仅作示意用途,实际应用时无需编写此类伪代码 def draw_flowchart(logic): start = "Start" end = "End" process_steps = logic.split(",") # 假设逻辑由逗号分隔的不同阶段组成 flowchart_elements = [] for step in process_steps: if "?" in step: condition, outcomes = step.split("?") true_path, false_path = outcomes.split("/") element = f"Diamond with {condition} leading to [{true_path}] and [{false_path}]" elif "->" in step: source, destination = step.split("->") element = f"Arrow from {source} pointing towards {destination}" else: element = f"Rectangle labeled '{step}'" flowchart_elements.append(element) full_chart = "\n".join([start]+flowchart_elements+[end]) return full_chart ``` 以上Python函数只是一个抽象概念上的例子,它展示了如果我们将一段简单的逻辑字符串转化为基础组件列表的过程。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值