软件工程 第6章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

零件号
库存量
10001 10002 10003 10004 10005 10006
1000 1250 886 69 2020 3450
建立零件库 (s数组), i=0 输入零件号 x
do while(x!=s[0][i])
i++ Y x==i++ s[0][i]) N
s[0][i] 输出 s[1][i] Y
6.3.4 判定表
建立判定表的步骤

左上部:过程执行期间的所有条件(或所有判 断 )。 左下部:与一个具体过程(或模块)有关的所有 处理。 右上部:各种可能的条件组合。 右下部:每一种条件组合所对应的应做的工作 。
Baidu Nhomakorabea



下面以行李托运费的算法为例:
假设某航空公司规定,乘客可以免费托运重量 不超过30kg的行李。当行李重量超过30kg时, 对头等舱的国内乘客超重部分每公斤收费4元, 对其他舱的国内乘客超重部分每公斤收费6元, 对外国乘客超重部分每公斤收费比国内乘客多 一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。用判定表可以清楚地表示与上述 每种条件组合相对应的计算行李费的算法,如 表6.1所示。
6.3 过程设计的工具
6.3.1 程序流程图 6.3.2 盒图 6.3.3 PAD图 6.3.4 判定表 6.3.5 判定树
6.3.6 过程设计语言
过程设计工具


过程设计的任务:在使用程序设计语言编制 程序以前,需要对所采用算法的逻辑关系进 行分析,设计出全部必要的过程细节,并给 予清晰的表达。 在过程设计阶段,要决定各个模块的实现算 法,并精确地表达这些算法。表达过程规格 说明的工具叫做详细设计工具,它可以分为 以下三类: 图形工具 表格工具 语言工具
循环体
S=0 i=1,100 S=S+i
S=0,i=1 S=S+i i=i+1 i >100 T
循环名 循环体
i
F
2、多出口判断流程符号的使用
A=B A<B X=? x=1 x=2 x=3 x=4 =4 =5
A:B A>B
X=? =1 =2 =3


请利用程序流程图描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
输入错误! N
继续查询?
跳出循环
6.3.3 PAD图

问题分析图(Problem Analysis Diagram) 采用二维树形结构图表示程序的控制流。
A
A
P
B
(a)顺序结构
B
(b)选择结构
PAD图的基本符号
WHILE P S
UNTIL P
S
(c) WHILE型循环结构 P1 P2 P= … Pn A1 A2
(d) UNTIL型循环结构
(f)语句标号
An
(g)定义
(e) 多分支结构


begin
s[17]~s[22]=0 while num(1-1000) 输入 age =17 =18 s[17]++ s[18]++ s[19]++ s[20]++ s[21]++
age
=19 =20 =21 =22
s[22]++
X=S[0][i]
F
提示输入错误
Y 输出S[0][i]和S[1][i] 结束
输入零件号X X!=S[0][i]
i++
X
程序流程图的随意性和灵活性使它存 在一些缺点:
( 1 )并不是逐步求精的好工具:诱使程序 员过早地考虑程序的具体控制流程,而忽略了程 序的全局结构; ( 2 )用箭头代表控制流,这样使得程序员 不受任何约束,可以完全不顾结构程序设计的精 神,随意转移控制; ( 3 )程序流程图在表示数据结构方面存在 不足。
第一个任务 第二个任务 第三个任务 (a) 顺序结构 循环条件 DO_WHILE 部分
F ELSE 部分
条件 THEN 部分
T 值1
Case 条件 值2 … 值n Casen 部分 Case1 Case2 部分 部分 (c) 多分支结构
(b) 选择结构
DO_UNTIL 部分 循环条件
A
(d) 循环结构
6.3.2 盒图(N-S图)
不允许违背结构程序设计精神的图形工 具。它有下述特点: (1) 功能域(即,一个特定控制结构的作 用域)明确,可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。 (3) 很容易确定局部和全程数据的作用 域。 (4) 很容易表现嵌套关系,也可以表示 模块的层次结构。
(e) 调用子程序 A
N-S图的基本符号
N-S图的嵌套定义形式


请利用N-S描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用N-S图描述该模块的算法。
(4) 容易将PAD图转换成高级语言源程序,这 种转换可用软件工具自动完成,有利于提高 软件可靠性和软件生产率。 (5) 既可用于表示程序逻辑,也可用于描绘数 据结构。 (6) 支持逐步求精方法的使用。开始时设计者 可以定义一个抽象的程序,使用def符号逐 步增加细节,直至完成详细设计。
图6.6 使用PAD图提供的定义功能 来逐步求精的例子
设该模块为查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。
零件号
库存量
10001 10002 10003 10004 10005 10006
1000 1250 886 69 2020 3450
开始
输入零件库存 S[ ][ ]数组 i=0
while i(17-22) end
输出 s[i]
PAD图的主要优点如下:
(1) 使用表示结构化控制结构的PAD符号所设 计出来的程序必然是结构化程序。 (2) PAD图所描绘的程序结构十分清晰,图中 竖线的总条数就是程序的层次数。 (3) 用PAD图二维树形结构表现程序逻辑易读、 易懂。程序从图中最左竖线上端的结点开始 执行,自上而下,从左向右顺序执行,遍历 所有结点。
6.3.1 程序流程图 •也称为程序框图,是历史最悠久、使用最广泛, 独立于任何一种程序设计语言。 •优点:对控制流程的描绘较直观,便于掌握。
起止端点 数据 处理 准备或预处理 预先定义的处理
条件判断
循环上界限
循环下界限
文档
流线
虚线
省略符
并行方式
注释
程序流程图中常用的符号
1、循环符号的使用
循环名 进入循环条件
相关文档
最新文档