[GSSY流程图], 一种新型的规范性流程图,源于PAD图,且易于在任何文本编辑器上绘画。
GSSY流程图说明:
=================
开始与结束
[程序名称/函数名称]
|
+== 外部输入参数/入口参数说明 √
|
+-- 处理1 √
|
+>> 出口返回 √
顺序处理
|
+-- 处理1
|
+-- 处理2
多路分支处理(select case, switch)
|
+EE 分支判断条件 -+- 结果1 -+-- 结果1处理1
| | |
| | +-- 结果1处理2
| |
| |
| +- 结果2 -+-- 结果2处理1
| |
| |
| +- 结果3 -+-- 结果3处理1
| |
| +-- 结果3处理2
|
|
+-- 处理3
IF处理方式1(if …)
|
+<< 判断条件的肯定描述 -+-Y-+-- 是处理1
| |
| +-- 是处理2
|
+-- 处理3
IF处理方式2(if … else …)
|
+<< 判断条件的肯定描述 -+-Y-+-- 肯定处理1
| | |
| | +-- 肯定处理2
| |
| |
| +-N-+-- 否定处理1
| |
| +-- 否定处理2
|
|
+-- 处理3
IF处理方式3(if … elseif … )
|
+<< 判断条件1的肯定描述 -+-Y-+-- 条件1的处理1
| | |
| | +-- 条件1的处理2
| |
| |
| +<< 判断条件2的肯定描述 -+-Y-+-- 非条件1且条件2的处理1
| | |
| | +-- 非条件1且条件2的处理2
| |
| |
| +-N-+-- 非条件1且非条件2的处理1
| |
| +-- 非条件1且非条件2的处理2
|
|
+-- 处理3
循环处理(while方式1)
|
+## 循环条件的肯定描述 -+-- 循环处理1
| |
| +-- 循环处理2
|
|
+-- 处理3
循环处理(while方式2)
|
+## 循环标志 = True -+-- 循环处理1
| |
| +-- 循环处理2
| |
| +<< 退出循环的条件的肯定描述 -+-Y-+-- 循环标志 = False
|
|
+-- 处理3
循环处理(do while方式)
|
+## TRUE -+-- 循环处理1
| |
| +-- 循环处理2
| |
| +(( 继续循环条件的肯定描述
|
|
+-- 处理3
循环处理(do until方式)
|
+## TRUE -+-- 循环处理1
| |
| +-- 循环处理2
| |
| +)) 退出循环条件的肯定描述
|
|
+-- 处理3
循环处理(for方式)
|
+## 循环n次 -+-- 循环处理1
| |
| +-- 循环处理2
|
|
+-- 处理3
程序模块的出口处理
|
+-- 处理1
|
+<< 判断条件 -+-Y-+-- 处理2
| |
| +-N-+>> 出口返回1
|
|
+-- 处理3
|
+>> 出口返回2
子程序/函数调用
|
+-- 处理1
|
+-- [调用的子程序/函数名称]
|
+-- 处理2
[子程序/函数名称]
(Note:子程序/函数功能或设计思路简要说明)
|
+== 入口参数1
|
+== 入口参数2
|
+-- 处理1
|
+-- 处理2
|
+>> 返回值/出口处理
符号综合说明:
==============
"|" 为 垂直纵向的流程线
"+" 为 交叉点
"-" 为 水平横向的流程线
"+--" 为 顺序执行语句
"+==" 为 入口参数
"+<<" 为 条件判断。相当于 if 语句
"+>>" 为 返回/退出 子程序/函数。相当于 exit sub, exit function, return
"+EE" 为 多路分支。相当于 switch, select case
"+##" 为 循环。 相当于 while, do .. loop, for, scan .. end scan
"+((" 为 继续循环。 相当于 loop, do .. while(), do .. loop()
"+))" 为 退出循环。 相当于 exit for, exit do
"-+-Y-+--" 用在 "+<<" 之后,特定地表示条件成立的语句分支
"-+-N-+--" 用在 "+<<" 之后,特定地表示条件不成立的语句分支
"-+-结果的描述-+--" 用在 "+EE" 之后,特定地表示多路分支条件的各种结果的语句分支
"[函数/子程序的名称]" 用在执行语句的描述中,或者一个流程图的最顶端, 表示一个函数/子程序的调用和开始
"(解释/备注/详细说明/注释)" 可以用在任何位置, 作为注释
综合举例:
=========
说明: 下例中的 简要/详细操作描述的3种表达方式的最终程序是相同的.只是表达方式不同而已.
值得说明的是, 这种表达方式 与 子程序/函数的表达方式除了使用的符号不同外, 所表达的意思也是不同的, 子程序/函数的表达的是一种调用, 子程序/函数内部的语句不属于调用者本身, 而 这种表达方式 内部的语句本来就是属于调用者本身的(或许不能说是调用者).
一共有 A,B,C,D 四个处理顺序执行, 其中处理B由处理1,2 两个详细操作组成, 而处理C由处理3,4 两个详细操作组成.
============================================================
[简要/详细操作描述表达方式1]
|
+-- 处理A的详细操作描述
|
+-- [处理B的简要描述/名称]
|
+-- [处理C的简要描述/名称]
|
+-- 处理D的详细操作描述
|
+>> 结束
[处理B的简要描述/名称]
|
+-- 处理1的详细操作描述
|
+-- 处理2的详细操作描述
|
+>> 返回
[处理C的简要描述/名称]
|
+-- 处理3的详细操作描述
|
+-- 处理4的详细操作描述
|
+>> 返回
============================================================
[简要/详细操作描述表达方式2]
|
+-- 处理A的详细操作描述
|
+-- 处理1的详细操作描述
|
+-- 处理2的详细操作描述
|
+-- 处理3的详细操作描述
|
+-- 处理4的详细操作描述
|
+-- 处理D的详细操作描述
|
+>> 结束
============================================================
[简要/详细操作描述表达方式3]
|
+-- 处理A的详细操作描述
|
+-[处理B的简要描述/名称]-+-- 处理1的详细操作
| |
| +-- 处理2的详细操作
|
|
+-[处理C的简要描述/名称]-+-- 处理3的详细操作
| |
| +-- 处理4的详细操作
|
|
+-- 处理D的详细操作
|
+>> 结束
============================================================
<全文完, GSSY 于 2003年1月构想, UDPX 于 2006年1月完善。>