详细设计 结构程序设计 过程设计的工具 面向数据结构的设计方法 程序复杂程度的定量度量
详细设计 • 结构程序设计 • 过程设计的工具 • 面向数据结构的设计方法 • 程序复杂程度的定量度量
课程回顾 P2 S1 S2 P3 S3 P5 P4 S4 S5 需要通过软件解决的″问题” 软件的”解决方案
课程回顾
详细设计的任务 关键任务:确定怎样具体地实现用户需要的软件 系统,即设计出程序的“蓝图”。 要达到的目标 保证软件的可靠性; 使将来编写出的程序可读性好、容易理解、容易测试 容易修改和维护,这是详细设计阶段最重要的目标。 要完成的工作: 确定软件各个组成部分内的算法以及各部分的内部数 据组织 选定某种过程的表达形式来描述各种算法。 一进行详细设计的评审
详细设计的任务 • 关键任务:确定怎样具体地实现用户需要的软件 系统,即设计出程序的“蓝图”。 • 要达到的目标: –保证软件的可靠性; –使将来编写出的程序可读性好、容易理解、容易测试、 容易修改和维护,这是详细设计阶段最重要的目标。 • 要完成的工作: – 确定软件各个组成部分内的算法以及各部分的内部数 据组织 – 选定某种过程的表达形式来描述各种算法。 – 进行详细设计的评审
结构程序设计 结构程序设计的提出背景 (1)最早由 EWDijkstra于1965年提出,建议从高 级语言中取消GOTO语句; (2)1966年Bohm和 Jacopin证明了,只用3种基本 的控制结构就能实现任何单入口单出口的程序。这 3种基本的控制结构是“顺序”、“选择”和“循 环”,它们的流程图分别为如下(a)、(b)、(c); (3)1968年 Dijkstra再次建议从一切高级语言中取 消GOTO语句,只使用3种基本控制结构写程序 (4)1972年IBM公司的Mls进一步提出,程序应 该只有一个入口和一个出口,从而补充了结构程序 设计的规则
•结构程序设计的提出背景 (1)最早由E.W.Dijkstra于1965年提出,建议从高 级语言中取消GO TO语句; (2)1966年Bohm和Jacopini证明了,只用3种基本 的控制结构就能实现任何单入口单出口的程序。这 3种基本的控制结构是“顺序” 、 “选择”和“循 环”,它们的流程图分别为如下(a)、(b) 、(c); (3)1968年Dijkstra再次建议从一切高级语言中取 消GO TO语句,只使用3种基本控制结构写程序。 (4)1972年IBM公司的Mills进一步提出,程序应 该只有一个入口和一个出口,从而补充了结构程序 设计的规则。 结构程序设计
T A B (b) F p A 或 A 3种基本的控制结构
3种基本的控制结构
结构程序设计的经典定义 “如果一个程序的代码块仅仅通过顺序、选择和 循环这3种基本控制结构进行连接,并且每个代码 块只有一个入口和一个出口,则称这个程序是结构 化的。” °结构程序设计的更全面定义 “结构程序设计是尽可能少用GOTO语句的程序 设计方法。最好仅在检测出错误时才使用GOTO语 句,而且应该总是使用前向GOTO语句
•结构程序设计的经典定义 “如果一个程序的代码块仅仅通过顺序、选择和 循环这3种基本控制结构进行连接,并且每个代码 块只有一个入口和一个出口,则称这个程序是结构 化的。” •结构程序设计的更全面定义 “结构程序设计是尽可能少用GO TO语句的程序 设计方法。最好仅在检测出错误时才使用GO TO语 句,而且应该总是使用前向GO TO语句
其他常用的控制结构 (1)为了实际使用方便起见,常常还允许使用 DO-UNTIL 和 DO-CASE两种控制结构,如下图(a)、(b)所示。 DO A CASE F CASE 1 CASE 2 CASE n a (b) (2)有时需要立即从循环(甚至嵌套的循环)中转移出来, 如果允许使用 LEAVE(或 BREAK)结构,则不仅方便而且会 使效率提高很多 注: LEAVE或 BREAK结构实质上是受限制的GOTO语句, 用于转移到循环结构后面的语句
•其他常用的控制结构 (1)为了实际使用方便起见,常常还允许使用DO-UNTIL 和DO-CASE两种控制结构,如下图 (a)、(b)所示。 (2)有时需要立即从循环(甚至嵌套的循环)中转移出来, 如果允许使用LEAVE(或BREAK)结构,则不仅方便而且会 使效率提高很多。 注:LEAVE或BREAK结构实质上是受限制的GO TO 语句, 用于转移到循环结构后面的语句
结构程序设计的分类 (1)经典的结构程序设计:如果只允许使用顺序、 IF-THEN-ELSE型分支和DO- WHILE型循环这3种基 本控制结构 (2)扩展的结构程序设计:如果除了上述3种基本 控制结构之外,还允许使用 DO-CASE型多分支结 构和 DO-UNTII型循环结构; (3)修正的结构程序设计:如果再加上允许使用 LEAVE(或 BREAK)结构
•结构程序设计的分类 (1)经典的结构程序设计:如果只允许使用顺序、 IF-THEN-ELSE型分支和DO-WHILE型循环这3种基 本控制结构; (2)扩展的结构程序设计:如果除了上述3种基本 控制结构之外,还允许使用DO-CASE型多分支结 构和DO-UNTIL型循环结构; (3)修正的结构程序设计:如果再加上允许使用 LEAVE(或BREAK)结构
过程设计的工具 用过程工具来表达各 个模块的实现算法 分为图形工具、表格 1、程序流程图 工具和语言工具三类 起止端点数据输入输出处理准备或预处理预定义处理 或既定处理 00→ 条件判斷循环上界循环下界文件或文档外接内接 流线 虚线省略线并行方式注解或注释 程序流程图的标准符号
1、程序流程图 程序流程图的标准符号 用过程工具来表达各 个模块的实现算法, 分为图形工具、表格 工具和语言工具三类 过程设计的工具
循环名 进入循环条件 循环名 数据A 注解1 循环体 循环体 处理1 /数据B/[注解2 循环名 循环终止条件 循环名 处理2 (a) while型循环(b) until型循环 循环的标准符号 注解的使用
循环的标准符号 注解的使用