详细设计的工具——PAD图

目录

一、PAD图的概念

二、PAD图的基本符号

三、PAD图的优点

四、PAD图的应用


一、PAD图的概念

PAD图(Problem Analysis Diagram),由日本日立公司1973年发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。它既克服了传统的流程图不能清晰表现程序结构的缺点,又不像N-S图那样受到把全部程序约束在一个方框内的限制,这就是其优势所在。

二、PAD图的基本符号

(a) 顺序;(b) 选择;(c) CASE多分支;(d) WHILE型循环; (e) UNTIL型循环;(f) 语句标号;(g) 定义 图5.6 盒图(N-S图)

三、PAD图的优点

  PAD图的优点表现在如下六个方面。      

(1)使用PAD符号所设计出来的程序必然是结构化程序。      

(2)PAD图所描绘的程序结构十分清晰。图5.6中最左面的竖线是程序的主线,即第一层结构。(3)随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。

(4)用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。

(5)既可用于表示程序逻辑,也可用于描绘数据结构。

(6)PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。如图5.7所示是一个使用def符号逐步细化的示例。

(a) 初始的PAD图;(b) 使用def符号细化处理框P2 图5.7 使用def符号逐步细化

四、PAD图的应用

 1.请根据下列伪码画出对应的PAD图。

GET(a[1],a[2],...a[10]);
max=a[1];
max2=a[2];
FOR i=2 TO 10
IF a[i]>max
max2=max;
max=a[i];
ELSE
IF a[i]>max2
max2=a[i]
ENDIF
ENDIF
ENDFOR
PUT(max,max2)
END

  2.请根据下列伪码画出对应的PAD图。

定义变量:i=7,S=0
DO WHILE i<=1000
IF(i被7整除)
THEN
S=S+i
输出:i
ENDIF
i=i+1
ENDDO
输出:S

 3.将下列N-S图转换为PAD图

 4.将下列N-S图转换为PAD图

 

### 软件工程中的NSPAD #### 计算n阶乘的程序表示方法 为了更好地理解如何使用N-S(盒)和PAD来表达算法,这里将以计算n阶乘为例进行说明。 ##### N-S表示法 N-S是一种结构化编程工具,通过矩形框展示程序的不同部分。对于计算n阶乘的任务,可以按照如下方式构建N-S: 1. 开始/结束:用一个带有圆角的矩形表示整个过程的起点和终点。 2. 输入变量`n`:用于接收用户输入的数据。 3. 初始化累乘器`result=1`:设置初始值以便后续运算。 4. 循环体:创建一个循环直到计数器等于给定数值为止,在每次迭代过程中更新累乘器并增加计数器。 5. 输出结果:显示最终得到的结果即为所求阶乘值。 ```plaintext ┌───────────────┐ │ Start │ └───────────────┘ | v ┌───────────────┐ │ Input n │ └───────────────┘ | v ┌───────────────┐ │ result = 1 │ └───────────────┘ | v ┌───────────────┐ │ For i from 1 │ │ to n │ │ result *= i │ └───────────────┘ | v ┌───────────────┐ │ Print result │ └───────────────┘ | v ┌───────────────┐ │ Stop │ └───────────────┘ ``` 此为简化版示意[^1]。 ##### PAD表示法 PAD则采用树状结构来描述控制流路径。针对同样的问题——计算n! ,其对应的PAD形如下所示: - **根节点**代表整体操作序列; - 下方分支依次对应着各个具体步骤; - 当遇到条件判断语句时,则会分裂成两条或多条可能执行路线; - 对于重复动作如for循环,则会在相应位置形成闭合回路直至满足终止条件。 ```plaintext +-------------------+ | | | Start | | | +--------+----------+ | V +--------v---------+ | | | Input n | | | +--------+---------+ | V +--------v---------+ | | | Initialize res=1 | | | +--------+---------+ | V +--------v---------+ | | | Loop: | | for i=1 to n | | Multiply res*i | | Next | | | +--------+---------+ | V +--------v---------+ | | | Output Result=res| | | +--+---------+ | V +--------v---------+ | | | Stop | | | +-------------------+ ``` 上述表展示了利用PAD描绘解决相同问题的方法[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

得闲喝茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值