软件工程导论第6章

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

F
p T g
F q T 停止
作业及解答(第6章)
开始
(1)通常所说的结构化程序, 是按照狭义的结构程序的 定义衡量,符合定义规定 的程序。图示的程序的循 环控制结构有两个出口, 显然不符合狭义的结构程 序的定义,因此是非结构 化的程序。
F p T g
F q T 停止
(3)不使用flag把该程序改造为等价的结构化程序:
例:打印A、B、C三数中最小者的程序
if (A.LT.B) goto 120 if (B.LT.C) goto 110 write(6,*) C goto 140 write(6,*) B goto 140 if (A.LT.C) goto 130 goto 100 write(6,*) A continue
保留了GOTO语句在特殊情况下使用: • 用一个非结构化的程序设计语言去实现一 个结构化的构造。 • 在某种可以改善而不是损害程序可读性的 情况下。 • 最好仅在检测出错误时才使用GO TO语句, 而且应该总是使用前向GO TO语句。
6.2 人机界面设计
人机界面设计是接口设计的一个重要的组成部分。 人机界面的设计质量,直接影响用户对软件产品 的评价,从而影响软件产品的竞争力和寿命。
F
f
程序流程图
N-S图
While q
f
p g n PAD图
6.3.4 判定表
当算法中包含多重嵌套的条件选择时,判定表能 够清晰地表示复杂的条件组合与应做的动作之间的 对应关系。
60
判定表

左上部:列出所有条件, 左下部:所有可能做的动作, 右上部:表示各种条件组合的一个矩阵, 右下部:和每种条件组合相对应的动作。
def格式:
def
例:
开始
a b
f Until x5 x4 x1 g h
=1
i
Until x6
j
结束
While x3
c
x2
=2 =3
d
e
例:
开始
a b f Until x5 x4 x1 g k h
=1 While x 3
i
Until x6
结束
j
c
k
def 定义
x2
=2 =3
d
e
A B C
F
P
T
B
A
else–部分 then –部分
(2)多分支选择型(CASE型)
P
=1
=2
....
=n
A1 A2
.... An
(3) WHILE重复型
UNTIL重复型
(先测试循环)
(后测试循环)
DO-WHILE P
S
(循环体)
S
(循环体)
DO-UNTIL P
循环条件
移出标记
A: F
X6
B
T
22
6.3.1 程序流程图(程序框图) ISO 认可的规定符号:
优点:直观、容易掌握,且历史“久”, 使用广 泛。 缺点:本质上不具备逐步求精的特点,使程序 员过早地考虑程序的控制流程,而不去 考虑程序的全局结构;转移控制太方便; 不易表示数据结构。 趋势:使用越来越少。
图6.3 程序流程图中使用的符号。
70年代初N.Wirth在Pascal语言中设置支持“顺序 结构”、“IF-THEN-ELSE选择结构”、“DO-WHILE 重复结构”或“DO-UNTIL重复结构”三种基本控制 结构语句。
25
3种基本控制结构
(1) 顺序型
A B
(2) 选择型
F P A B T
(2) 多情况选择型(case)
19
6.2.1 设计问题
在设计人机界面的过程中,有下述4个问题: 1、系统响应时间 2、用户帮助设施 3、出错信息处理 4、命令交互
20
6.2.2 设计过程
用户界面设计是一个迭代的过程,也就是说, 通常先创建设计模型,再用原型实现这个设计模 型,并由用户试用和评估,然后根据用户意见进 行修改。
21
T T F T F
T F F F
T T T F
T F T F
F T F F
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
1
详细设计阶段的根本目标:确定应该怎样具体地 实现所要求的系统。 为软件结构图中的每一个模块确定使用的算法和 块内数据结构,并用某种选定的表达工具给出清晰 的描述。
例:计算机票折扣率
条件 旅游时间 四种条件组合 7-9,12月
1-6,10,11月
≤20
20%
订 票 量
折 扣 量
≤20
5%
> 20
15%
> 20
30%
动作
条件组合对应的动作
例: 航空行李托运费的算法 按规定:重量不超过30公斤的行李可免费 托运。重量超过30公斤时,对超运
部分,头等舱国内乘客收4元/公斤;
其它舱位国内乘客收6元/公斤;外 国乘客收费为国内乘客的2倍;残 疾乘客的收费为正常乘客的1/2。
共有2×2×2+1=9种组合
组合
1 2 3 4 5 6 7 8 9
条件
动作
国内乘客 头等舱 残疾乘客 行李重量 W 30 免费 (W-30) 2 (W-30) 3 (W-30) 4 (W-30) 6 (W-30) 8 (W-30) 12
【* P141:6下图的程序流程图代表一个非结构化程序, 请问: (见学习辅导) (1)为什么说它是非结构话的? (2)设计一个等价的结构化程序。】
• (1)答:给出的设计不是结构化的,因为有多 个处理框(如A,B,E)有两条流入线。 • Do case I=1执行A, I=2执行B, I=3执行E, I=4退出
A
(调用结构)
C D
例:图4.43
a b x1 f x4 k:
F T
x2
1 2 3
T
F
i
Do-Until x5
g h
Do-Until x6
k
Do-While x3
d
e
c
j
盒图(N-S图)的特点: (1) 功能域(即,一个特定控制结构的作用域)明确, 可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。
PAD图的主要优点: (1) 使用表示结构化控制结构的PAD符号所设计出 来的程序必然是结构化程序。 (2) PAD图所描绘的程序结构十分清晰。图中最左 面的竖线是程序的主线,即第一层结构。随着 程序层次的增加,PAD图逐渐向右延伸,每增 加一个层次,图形向右扩展一条竖线。PAD图 中竖线的总条数就是程序的层次数。 (3) 用PAD图表现程序逻辑,易读、易懂、易记。 PAD图是二维树形结构的图形,程序从图中最 左竖线上端的结点开始执行,自上而下,从左 向右顺序执行,遍历所有结点。
c=a+b c=a-b
F
c
【例2、某模块有三个输入a、b和c, 一个输出s,当a=1时,s=b+2c,当 a=2时,s=2b-c,当a=3时,s=b。画 出该模块的N-S图。】
a
b c
a
1 2 3
s=b+2c
s=2b-c
s
s=b
6.3.3 PAD图(问题分析图)
1973年由日本日立公司发明。它用二维树形结 构的图来表示程序的控制流,将这种图翻译成 程序代码比较容易。
6.3 过程设计的工具
1.图形工具:利用图形工具可以把过程的细节用 图形描述出来。如程序流程图, N-S图,PAD。 2.表格工具:用一张表来描述过程的细节,在这 张表中列出了各种可能的操作和相应的条件。 如判定表,判定树。 3.语言工具:用某种高级语言(叫做伪码)来描 述过程的细节。 如PDL。
T
c=a+b
(a>0)and(b<2)
F
c=a-b
c
6.3.2 盒图(N-S图)
Nassi和Shneiderman 1973年提出,是一种符 合结构化程序设计原则的图形描述工具,用方框 图代替传统的流程图。
31
图6.4 盒图的基本符号
32
3种基本控制结构: (1) 顺序型 (2) 选择型
(If – then – else)
52
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的PAD。
a
b
c=a+b
(a>0)and (b<2)
c=a-b
c
【例2、某模块有三个输入a、b和c, 一个输出s,当a=1时,s=b+2c,当 a=2时,s=2b-c,当a=3时,s=b。画 出该模块的PAD。】
T T
P=1 F P=2 F P=n F
…Baidu Nhomakorabea
A1 A2
T
An
(3) 先判定型循环
后判定型循环
(do-while)
F
(do-until)
P T S
S P F
T
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的程序流程图。
a b
a b c
a
=1 =2 =3
s=b+2c s=2b-c s=b
s
* P141:3画出下列伪码程序的程序流程图、盒图和PAD图。
START IF P THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCK END IF STOP
作业及解答(第6章)
q
T
2
6.1 结构程序设计
定义: 如果一个程序的代码块仅仅通过顺序、选择和循 环这3种基本控制结构进行连接,并且每个代码块 只有一个入口和一个出口,则称这个程序是结构化 的。
3
6.1
3种基本的控制结构
4
* P141:6下图的程序流程图代表一个非结构化程序, (1)为什么说它是非结构话的? (2)设计一个等价的结构化程序。
100 110
120
130 140
Eq:等于 ne:不等于 gt:大于 lt:小于 ge:大于等于 le:小于等于
例:打印A、B、C三数中最小者的程序 if (A.LT.B .AND. A.LT.C)then write(6,*) A else if (A.GE.B .AND. B.LT.C) then write(6,*) B else write(6,*) C endif endif
一、关于GOTO语句的争论 • 1963年开始,是否取消GOTO语句? 赞成取消方:认为GOTO语句对程序清晰性有 很多破坏作用,大量没节制地使用GOTO语句, 会使程序结构变得非常混乱; 不赞成方:认为GOTO语句概念简单,使用方 便,某些情况下,保留GOTO语句反能使写出 的程序更加简洁,并且可直接得到硬件指令 的支持。
43
图6.5 PAD图的基本符号
44
3种基本控制结构: (1)顺序型 (2)选择型
A
B C
P
T F
A
B
(2) 多分支选择型(CASE型)
=1 =2
A1
A2
. . .
P
=n
An
(3)WHILE重复型
UNTIL重复型
(先测试循环)
WHILE P
(后测试循环)
UNTIL P
S
S
等价的PASCAL语言: 等价的PASCAL语言: WHILE P DO S REPEAT S UNTIL P
51
(4) 容易将PAD图转换成高级语言源程序,这种转 换可用软件工具自动完成,从而可省去人工编码的 工作,有利于提高软件可靠性和软件生产率。 (5) 即可用于表示程序逻辑,也可用于描绘数据结 构。 (6) PAD图的符号支持自顶向下、逐步求精方法的 使用。开始时设计者可以定义一个抽象的程序,随 着设计工作的深入而使用def符号逐步增加细节, 直至完成详细设计。
flag是编程中一种常用的标志变量。 例:如果要在一堆元素中选择一个关键字值最小 的,逐个判断,这个时候我们可以用flag作为一 个标志变量。当你判断每一个元素的时候,先将 flag = 1;发现其并不是最小的,那么将它置为0。
(2)使用附加的标志变量flag,至少有两种方法 可以把该程序改造为等价的结构化程序:
(3) 很容易确定局部和全程数据的作用域。
(4) 很容易表现嵌套关系,也可以表示模块的层次 结构。 注、使程序员用结构化的方式思考和解决问题。
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的N-S图。
a b
T
(a>0)and(b<2)
开始 F A F C d T D 停止 非结构化设计 F c T B e T E
(1)答:因为D处理框 有两条流入线,不 是单入口。所以不 是结构化的。
开始 F A F C c T B T D D F
d
e
T E
停止
简化后的结构化程序
作业及解答(第6章)
开始
【141:4 下图给出的程序流程图代 表一个非结构化的程序,请问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中你使用 附加的标志变量flag吗?若没用, 请再设计一个使用flag的程序; 若用了,再设计一个不用flag的 程序】
相关文档
最新文档