7. 6.1 结构化程序设计
二 . 结构化程序设计 (S P)
的三种基本控制结构
1966 年, C . B o hm 和 G . J a c o p ini 证明:只
用三种基本控制结构就能实现任何单入口单出口的
程序。
结构化程序设计的三种基本控制结构 exp F
A T F
exp T
A B A
B
顺序结构 分支结构 循环结构
13. 6.1 结构化程序设计
四 . 如何把非结构化的程序
转化成结构化的程序
2. 布尔标识法:
WHILE p DO p F
BEGIN T
… F q T
IF q THEN GOTO L1;
A; A
B
B
END; L1
L1: … 非结构化程序
14. 6.1 结构化程序设计
四 . 如何把非结构化的程序
转化成结构化的程序
b:=True
bool := true;
WHILE (p and bool) DO
BEGIN p&b F
… T
IF q THEN bool := false F q T
ELSE BEGIN
A; A b:=False
B
END B
END;
L1
… 结构
15. 6.1 结构化程序设计
四 . 如何把非结构化的程序
转化成结构化的程序
b:=True
p F p&b F
T T
F q T F q T
A b:=False
A
B B
L1
L1
18. 6.2 人机界面设计
人机界面概述
人机界面( Huma n- C o mp ute r
Inte rfa c e ,简称 HC I )又称人 - 机
接口或用户界面,它是用户与计算机
系统交换信息的媒介,更是用户使用
计算机系统的综合操作环境。
设计用户界面不仅需要计算机科学的
理论和知识,而且需要认知心理学以
及人 - 机工程学、语言学等学科的知
识。
22. 6.2 人机界面设计
人机界面概述
人机界面的风格 — — 四代。
第一代界面 — — 命令和询问方式。
通信完全以正文形式并通过用户命令和用户对
系统询问的响应来完成。例如:
D > run p ro g 1. e xe /d e b ug =' o n' /o ut=p l /in=t1
/a llo c =1000k
RUN A L L O C A TIO N TO B E Q UE UE D ? > > ye s
A UTO MA TIC C HE C K PO INTING INTE RVA L ?
>>5
23. 6.2 人机界面设计
人机界面概述
第二代界面 — — 简单的菜单式,例如:
c ho o s e p ro g ra m o p tio n tha t is d e s ire d :
1=inp ut d a ta ma nua lly
2=inp ut d a ta fro m e xis ting d a ta file
3=p e rfo rm s imp lifie d a na lys is
4=p e rfo rm d e ta ile d a na lys is
5=p ro d uc e ta b ula r o utp ut
6=p ro d uc e g ra p hic a l o utp ut
7=o the r o p tio ns c la s s e s
s e le c t o p tio n? _
这种方式与命令行方式相比不易出错,但使用起
来仍然乏味。
24. 6.2 人机界面设计
人机界面概述
第三代界面 — — 面向窗口的点选界面
( p o int a nd p ic k inte rfa c e )
亦称为 WIMP 界面,
即:窗口( wind o ws )、 四位一体,
图标( ic o ns )、 形成桌面
( d e s kto p )
菜单( me nus )、
指示器( p o inting d e vic e )
37. 6.3 过程设计工
具
三 . 盒图( N - S 图)
N - S 图的基本符号
循环条件
任务 F 条 T F 条件 T
1 2
任务 else件 then then do-while
部分 部分 部分 部分
任务 3
if-then-else 结构 if-then 结构 do-while 结构
顺序结构
case 条件
do-until
值1 值2 值n 部分
子程序
case1 case2 casen 循环条件
P
调用子程序 部分 部分 部分 do-until 结构
case 结构
38. 6.3 过程设计工
具
三 . 盒图( N - S 图)
例
a
b
k:
T x1 F
x2
f
x4 1 2 3
T F
i g k
Do-While x3
d e
Do-Until x5 h c
Do-Until x6
j
39. 6.3 过程设计工
具
四 . 问题分析图( Problem
Analysis Diagram 图)
PAD 图
日立公司, 1973 年发明
采用二维树形结构来表示程序的控制流。
它即克服了传统的流程图不能清晰表现程序
结构的缺点,又不像 N- S 图那样受到把全
部程序约束在一个方框内的限制,这就是其
优势所在。
40. 6.3 过程设计工
具
四 . 问题分析图( Problem
Analysis Diagram 图)
P1 P1 def
C P1
P2 P2 L1
L2 P2 P11
顺序结构 选择结构 X=
( if C the n P 1 e ls e P 2)
Ln Pn
WHILE C P
Case 分支
While 型循环结构 与分层结构
( 用 def 细化处理框 )
UNTIL C P 连接
( 语句标号 )
Until 型循环结构
41. 6.3 过程设计工
四. 问题分析图
具
( Problem Analysis
Diagram 图)
开始 始 f
a Until x5 i
b
Until x6 x4
x1 g
j k
结束 束 h
While x3 c
1
k def
x2 2 d
3 e
57. Rules
Rule 五 .1 判 定 4 5
2 3 表 6 7 8 9
Condition rows
国内乘客 T T T T F F F F
头等舱 T F T F T F T F
残疾乘客 F F T T F F T T
行李重量 W ≤30 T F F F F F F F F
免费 ×
(W-30) ×2 ×
Action rows
(W-30) ×3 ×
(W-30) ×4 × ×
(W-30) ×6 × ×
(W-30) ×8 ×
(W-30) ×12 ×
用判定表表示计算行李费的算法
74. 6.4 面向数据结构设计方
法
一 . Jac ks o n 图
Jackson 图描述数据结构
A A A
B C D B° C° D° B*
顺序结构 选择 结构 重复 结构
A 由 B 、 C 、 D 3 个元素顺序 根据条件, A 由 B 出现 N 次 (N≥0) 组成
组成 A 是 B 或 C 或 D 中的某一个
每个元素只出现一次,出现的
次序依次为 B 、 C 、 D
小圈表示选择结构,星号表示重复结构。
75. 6.4 面向数据结构设计方
法
一 . Jac ks o n 图
Jackson 图有下述优点:
1. 便于表示层次结构,而且是对结构进
行自顶向下分解的有力工具;
2. 形象直观可读性好;
3. 既能表示数据结构也能表示程序结构
( 因为结构程序设计也只使用上述 3 种基
本控制结构 ) 。
82. 6.4 面向数据结构设计方法
三 . Jac ks o n 方法
1 . 五个基本步骤
总之,描绘程序结构的 J a c ks o n 图应该综合输入数
据结构和输出数据结构的层次关系而导出来。
步骤 4 :列出所有操作和条件 ( 包括分支条件和循环结
束条件 ) ,并分配到程序结构图的适当位置。
步骤 5 :用伪码表示程序 。
伪码和 J a c ks o n 图是完全对应的。
83. 6.4 面向数据结构设计方法
三 . Jac ks o n 方法
1 . 五个基本步骤
3 种基本结构对应的伪码
A A seq
B
C
B C D D
A end
顺序
84. 6.4 面向数据结构设计方法
三 . Jackson 方法
1. 五个基本步骤
A A select cond1
B
S(i) A or cond2
C
B° C° D° A or cond3
D
选择 A end
85. 6.4 面向数据结构设计方法
三 . Jackson 方法
1. 五个基本步骤
A iter until cond
A B
A end
I(i)
B*
A iter while cond
重复 B
A end
87. 6.4 面向数据结构设计方法
三 . Jac ks o n 方法
2. 实例分析
输入、输出的数据结构及对应关系分别为:
输出表
正文文件
格
I
字符串 空格总
*
表格体
数
I I
字 符 *
串信息 *
S
空 格 °
非空格 °
字符串 空格数
输入数据结构 输出数据结构
88. 6.4 面向数据结构设计方
法
三 . Jac ks o n 方法
2. 实例分析 统计空格
输出表格
程序体 印总数
表格体 空格总数 I
I 处理字符串 *
串信息 *
字符串 空格数 印字符串 分析字符串 印空格数
I
分析字符 *
3 导出程序 S
J a c kS o n 结构图 处理非空格
处理空格 °
°
89. 6.4 面向数据结构设计方
法
三 . Jac ks o n 方法 统计空
2. 实例分析 格
3 导出程序 程序体 印总数
J a c kS o n 结构图 I
处理字符串
正文文件 *
I
印字符 印空格
字符串 * 分析字符串
串 数
I I
字 符 *
分析字符 *
S
S
空 格 °
非空格 °
处理非空格
处理空格 °
°
111. 6.5 程序复杂度定量度量
一 . Mc C ab e 方法
例: 1,2 结点数:
1 N= 5
边数:
2 5 E= 6
3 3,4
5
判定结点数:
4 6 6 P= 2
程序 7 区域数: 3
流程图 流图 环型复杂度:
112. 6.5 程序复杂度定量度量
二 . Mc C ab e 方 法
将复合条件分解成若干简单
条件。 a
复合条件:在条件中包含了
一个或多个布尔运算符 ( 逻 False
True
辑
OR , AND , NAND , NO
R) 。 a or b b True
If
False X
Then X
Else Y
Y
End If