流程图、盒图、PAD图、判定树、判定表
1.1、流程图
基本成分:流程图是对过程、算法、流程的一种图形表示,方框表示处理步骤菱形框表示选择,有箭头表示程序的控制流,流程图的基本符号如下:
1.2、基本的控制结构
流程图能表达程序的顺序、选择、循环控制结构,有5种基本的控制结构:
(a)顺序型、(b)选择型、(c)多情况Case选择型、(d)先判断(While)循环型、(e)后判断(Until)循环型
1. 3、流程图优点:
(1)采用规范的符号。
(2)画法简单,易于学习掌握。
(3)描绘直观、结构清晰、逻辑性强。
(4)便于描述,容易理解。
1.4、流程图缺点:
(1)使设计者过早地考虑程序的控制流程,而不去考虑程序的全局结构。
(2)不利于逐步求精。
(3)用有向箭头代表控制流,可以完全不顾结构程序设计的思想,随意转移控
(4)不易表示系统中数据结构。
(5)系统复杂时修改麻烦。
2.1、盒图:
每一处理步骤用一个盒子表示,盒子可以嵌套,只能从上面进入门下面出来,此外别无其他出入口,限制了随意控制转移,保证了程序的良好结构。
特点:过程作用域明确,没有箭头,不能进行转移控制。
2.2、盒图的基本控制结构:(6种)
(a)顺序型、(b)选择型、(c)多情况选择型、(d)先判断循环型、(e)后判断循环型、(f)调用子程序
2.3 、盒图优点:
(1)功能域明确,可以从盒图上一眼就看出来。
(2)没有箭头,无法随意转移控制。
(3)很容易确定局部和全局数据的作用域。
(4)很容易表示嵌套关系,也可以表示模块的层次结构。
(5)强制设计人员按结构程序设计方法描述方案的思路。
(6)图形直观,容易理解设计意图。
2.4 、盒图缺点:
(1)当分支嵌套层次较多时,在一页纸上很难画下。
(2)画图麻烦,修改更麻烦。
3.1、问题分析图(PAD图)
用二维树型结构的图来表示程序的控制流及逻辑结构。
3.2、基本控制结构:(5种)
在PAD中,一条竖线代表一个层次,最左边的竖线是第一层控制结构,随着层次的增多,图形不断地向右展开。
5种基本结构:(a)顺序性、(b)选择型、(c)多情况选择型、(d)“当”循环型、(e)“直到”循环型。
如下所示:
3.3、PAD图的优点:
(1)使用PAD符号所设计出来的程序必然是结构化程序。
(2)PAD描绘的程序结构十分清晰,PAD图中竖线的总条数就是程序的层次数。
(3)用PAD表示程序逻辑,易读、易懂、易记。
(4)PAD是二维树形结构的图形,程序从图中最左竖线上端的节点开始执行,自上而下,从左向右,遍历所有节点。
(5)容易将PAD转换成高级语言源程序,这种转化可用软件工具自动完成,从而省去人工编码,有利于提高软件可靠性和软件生产率。
(6)可用于表示程序逻辑,也可用于描绘数据结构。
(7)PAD的符号支持自顶向下、逐步求精方法的使用,开始时设计者可以定义一个抽象的程序,随着设计工作的深入,逐步增加细节,直到完成详细设计。
4.1、判定表和判定树
当算法中包含多重嵌套的条件选择时,用流程图、盒图、PAD或者过程设计语言等详细设计工具都不易清楚地表述,但判定表却能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
4.2 、基本结构:
判定表由4个部分组成:左上部列出所有条件;左下部是所有可能的动作;右上部是表示各种条件组合的一个矩阵;右下部是和每种条件组合相对应的动作。判定表的右半部每一列实质上是一条规则,规定了与特定的条件组合相对应的操作。
当条件组合多时,判定表的陈述不够清晰,简洁程度急速下降,因而推出判定表的改良版-判定树。判定树能清晰地表示复杂的条件组合与应做的动作之间的对应关系,优点在于:形式简单到不需任何说明,易掌握和使用,是一种常用的系统分析和设计工具。
5.1、例题:
案例1:写出下列程序的流程图和盒图:
STAR
IF p THEN
While q Do
f
END DO
ELSE
Block
g
n
END Block
END IF
STOP
解:
流程图:
盒图:
案例2:比较a,b,c的大小,用流程图和盒图表示。
流程图:
盒图:
案例3:
某工厂生产两种产品A和B。凡工人每月的实际生产量超过计划指标者均有奖励。奖励政策为:
对于产品A的生产者,超产数N小于或等于100件时,每超产1件奖励2元;N大于100件小于等于150件时,大于100件的部分每件奖励2.5元,其余的每件奖励金额不变;N大于150件时,超过150件的部分每件奖励3元,其余按超产150件以内的方案处理。
对于产品B的生产者,超产数N小于或等于50件时,每超产1件奖励3元;N大于50件小于等于100件时,大于50件的部分每件奖励4元,其余的每件奖励金额不变;N大于100件时,超过100件的部分每件奖励5元,其余按超产100件以内的方案处理。
画出判定表:
判定树: