软件工程 第6章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i++
X
X=S[0][i] F 提示输入错误 Y
输出S[0][i]和S[1][i]
结束
程序流程图的随意性和灵活性使它存 在一些缺点:
(1)并不是逐步求精的好工具:诱使程序 员过早地考虑程序的具体控制流程,而忽略了程 序的全局结构;
(2)用箭头代表控制流,这样使得程序员 不受任何约束,可以完全不顾结构程序设计的精 神,随意转移控制;
在过程设计阶段,要决定各个模块的实现算 法,并精确地表达这些算法。表达过程规格 说明的工具叫做详细设计工具,它可以分为 以下三类: 图形工具 表格工具 语言工具
6.3.1 程序流程图
•也称为程序框图,是历史最悠久、使用最广泛, 独立于任何一种程序设计语言。 •优点:对控制流程的描绘较直观,便于掌握。
1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。
零件号 10001 10002 10003 10004 10005 10006 库存量 1000 1250 886 69 2020 3450
开始
输入零件库存 S[ ][ ]数组 i=0
输入零件号X X!=S[0][i]
N-S图的基本符号
N-S图的嵌套定义形式
练 习
请利用N-S描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用N-S图描述该模块的算法。
输入错误!
继续查询?
Y
N
跳出循环
6.3.3 PAD图
问题分析图(Problem Analysis Diagram) 采用二维树形结构图表示程序的控制流。
A B (a)顺序结构
A
P
B
(b)选择结构
PAD图的基本符号
WHILE P
S
(c) WHILE型循环结构
P1 A1 P2
A2 P=
… Pn
An
输出 s[i]
PAD图的主要优点如下:
(1) 使用表示结构化控制结构的PAD符号所设 计出来的程序必然是结构化程序。
(2) PAD图所描绘的程序结构十分清晰,图中 竖线的总条数就是程序的层次数。
(3) 用PAD图二维树形结构表现程序逻辑易读、 易懂。程序从图中最左竖线上端的结点开始 执行,自上而下,从左向右顺序执行,遍历 所有结点。
零件号 10001 10002 10003 10004 10005 10006 库存量 1000 1250 886 69 2020 3450
建立零件库 (s数组), i=0 输入零件号 x
do while(x!=s[0][i])
i++
x==is+[+0][i])
Y
N
s[0][i] 输出 s[1][i]
(3)程序流程图在表示数据结构方面存在 不足。
6.3.2 盒图(N-S图)
不允许违背结构程序设计精神的图形工 具。它有下述特点: (1) 功能域(即,一个特定控制结构的作 用域)明确,可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。 (3) 很容易确定局部和全程数据的作用 域。 (4) 很容易表现嵌套关系,也可以表示 模块的层次结构。
第一个任务 第二个任务 第三个任务
(a) 顺序结构
F
条件 T
ELSE THEN 部分 部分
(b) 选择结构
Case 条件 值1 值2 …
Case1 Case2 部分 部分
值n
Casen 部分
(c) 多分支结构
循环条件
DO_UNT IL
部分
ALeabharlann Baidu
DO_WHILE
部分
循环条件
(d) 循环结构
(e) 调用子程序 A
(4) 容易将PAD图转换成高级语言源程序,这 种转换可用软件工具自动完成,有利于提高 软件可靠性和软件生产率。
(5) 既可用于表示程序逻辑,也可用于描绘数 据结构。
(6) 支持逐步求精方法的使用。开始时设计者 可以定义一个抽象的程序,使用def符号逐 步增加细节,直至完成详细设计。
图6.6 使用PAD图提供的定义功能 来逐步求精的例子
起止端点
数据
处理
准备或预处理
预先定义的处理
条件判断
循环上界限
循环下界限
文档
流线
虚线
省略符
并行方式
注释
程序流程图中常用的符号
1、循环符号的使用
循环名 进入循环条件
循环体
S=0 i=1,100 S=S+i
循环名
i
循环体
S=0,i=1
S=S+i
i=i+1 F
i >100 T
2、多出口判断流程符号的使用
6.3.4 判定表
建立判定表的步骤
左上部:过程执行期间的所有条件(或所有判 断)。
左下部:与一个具体过程(或模块)有关的所有 处理。
右上部:各种可能的条件组合。 右下部:每一种条件组合所对应的应做的工作。
举 例
下面以行李托运费的算法为例:
假设某航空公司规定,乘客可以免费托运重量 不超过30kg的行李。当行李重量超过30kg时, 对头等舱的国内乘客超重部分每公斤收费4元, 对其他舱的国内乘客超重部分每公斤收费6元, 对外国乘客超重部分每公斤收费比国内乘客多 一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。用判定表可以清楚地表示与上述 每种条件组合相对应的计算行李费的算法,如 表6.1所示。
A=B
A<B
A:B
A>B
X=? =1 =2 =3 =4 =5
X=?
x=1 x=2 x=3 x=4
练 习
请利用程序流程图描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
6.3 过程设计的工具
6.3.1 程序流程图 6.3.2 盒图 6.3.3 PAD图 6.3.4 判定表 6.3.5 判定树 6.3.6 过程设计语言
过程设计工具
过程设计的任务:在使用程序设计语言编制 程序以前,需要对所采用算法的逻辑关系进 行分析,设计出全部必要的过程细节,并给 予清晰的表达。
(e) 多分支结构
UNTIL P
S
(d) UNTIL型循环结构
(f)语句标号 (g)定义
举 例
begin s[17]~s[22]=0
while num(1-1000)
while i(17-22)
end
输入 age
=17 s[17]++ =18 s[18]++ age =19 s[19]++ =20 s[20]++ =21 s[21]++ =22 s[22]++
X
X=S[0][i] F 提示输入错误 Y
输出S[0][i]和S[1][i]
结束
程序流程图的随意性和灵活性使它存 在一些缺点:
(1)并不是逐步求精的好工具:诱使程序 员过早地考虑程序的具体控制流程,而忽略了程 序的全局结构;
(2)用箭头代表控制流,这样使得程序员 不受任何约束,可以完全不顾结构程序设计的精 神,随意转移控制;
在过程设计阶段,要决定各个模块的实现算 法,并精确地表达这些算法。表达过程规格 说明的工具叫做详细设计工具,它可以分为 以下三类: 图形工具 表格工具 语言工具
6.3.1 程序流程图
•也称为程序框图,是历史最悠久、使用最广泛, 独立于任何一种程序设计语言。 •优点:对控制流程的描绘较直观,便于掌握。
1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。
零件号 10001 10002 10003 10004 10005 10006 库存量 1000 1250 886 69 2020 3450
开始
输入零件库存 S[ ][ ]数组 i=0
输入零件号X X!=S[0][i]
N-S图的基本符号
N-S图的嵌套定义形式
练 习
请利用N-S描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用N-S图描述该模块的算法。
输入错误!
继续查询?
Y
N
跳出循环
6.3.3 PAD图
问题分析图(Problem Analysis Diagram) 采用二维树形结构图表示程序的控制流。
A B (a)顺序结构
A
P
B
(b)选择结构
PAD图的基本符号
WHILE P
S
(c) WHILE型循环结构
P1 A1 P2
A2 P=
… Pn
An
输出 s[i]
PAD图的主要优点如下:
(1) 使用表示结构化控制结构的PAD符号所设 计出来的程序必然是结构化程序。
(2) PAD图所描绘的程序结构十分清晰,图中 竖线的总条数就是程序的层次数。
(3) 用PAD图二维树形结构表现程序逻辑易读、 易懂。程序从图中最左竖线上端的结点开始 执行,自上而下,从左向右顺序执行,遍历 所有结点。
零件号 10001 10002 10003 10004 10005 10006 库存量 1000 1250 886 69 2020 3450
建立零件库 (s数组), i=0 输入零件号 x
do while(x!=s[0][i])
i++
x==is+[+0][i])
Y
N
s[0][i] 输出 s[1][i]
(3)程序流程图在表示数据结构方面存在 不足。
6.3.2 盒图(N-S图)
不允许违背结构程序设计精神的图形工 具。它有下述特点: (1) 功能域(即,一个特定控制结构的作 用域)明确,可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。 (3) 很容易确定局部和全程数据的作用 域。 (4) 很容易表现嵌套关系,也可以表示 模块的层次结构。
第一个任务 第二个任务 第三个任务
(a) 顺序结构
F
条件 T
ELSE THEN 部分 部分
(b) 选择结构
Case 条件 值1 值2 …
Case1 Case2 部分 部分
值n
Casen 部分
(c) 多分支结构
循环条件
DO_UNT IL
部分
ALeabharlann Baidu
DO_WHILE
部分
循环条件
(d) 循环结构
(e) 调用子程序 A
(4) 容易将PAD图转换成高级语言源程序,这 种转换可用软件工具自动完成,有利于提高 软件可靠性和软件生产率。
(5) 既可用于表示程序逻辑,也可用于描绘数 据结构。
(6) 支持逐步求精方法的使用。开始时设计者 可以定义一个抽象的程序,使用def符号逐 步增加细节,直至完成详细设计。
图6.6 使用PAD图提供的定义功能 来逐步求精的例子
起止端点
数据
处理
准备或预处理
预先定义的处理
条件判断
循环上界限
循环下界限
文档
流线
虚线
省略符
并行方式
注释
程序流程图中常用的符号
1、循环符号的使用
循环名 进入循环条件
循环体
S=0 i=1,100 S=S+i
循环名
i
循环体
S=0,i=1
S=S+i
i=i+1 F
i >100 T
2、多出口判断流程符号的使用
6.3.4 判定表
建立判定表的步骤
左上部:过程执行期间的所有条件(或所有判 断)。
左下部:与一个具体过程(或模块)有关的所有 处理。
右上部:各种可能的条件组合。 右下部:每一种条件组合所对应的应做的工作。
举 例
下面以行李托运费的算法为例:
假设某航空公司规定,乘客可以免费托运重量 不超过30kg的行李。当行李重量超过30kg时, 对头等舱的国内乘客超重部分每公斤收费4元, 对其他舱的国内乘客超重部分每公斤收费6元, 对外国乘客超重部分每公斤收费比国内乘客多 一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。用判定表可以清楚地表示与上述 每种条件组合相对应的计算行李费的算法,如 表6.1所示。
A=B
A<B
A:B
A>B
X=? =1 =2 =3 =4 =5
X=?
x=1 x=2 x=3 x=4
练 习
请利用程序流程图描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
6.3 过程设计的工具
6.3.1 程序流程图 6.3.2 盒图 6.3.3 PAD图 6.3.4 判定表 6.3.5 判定树 6.3.6 过程设计语言
过程设计工具
过程设计的任务:在使用程序设计语言编制 程序以前,需要对所采用算法的逻辑关系进 行分析,设计出全部必要的过程细节,并给 予清晰的表达。
(e) 多分支结构
UNTIL P
S
(d) UNTIL型循环结构
(f)语句标号 (g)定义
举 例
begin s[17]~s[22]=0
while num(1-1000)
while i(17-22)
end
输入 age
=17 s[17]++ =18 s[18]++ age =19 s[19]++ =20 s[20]++ =21 s[21]++ =22 s[22]++