过程设计 - wolai 笔记

1.过程设计任务

  • 确定模块算法
  • 确定模块使用数据结构
  • 确定模块接口(系统外部接口、用户界面、内部模块间接口细节、输入数据和输出数据)

2.结构化程序设计

结构化程序设计技术是过程设计一关键技术。

2.1定义

(1)经典定义

程序代码通过顺序、选择、循环三种控制结构连接,单入口单出口。暗指不要使用goto语句。

(2)扩展定义

可限制使用GOTO语句、DO_UNTILDO_CASE

(3)修正定义

LEAVE(跳过本层循环)和BREAK(跳出循环),可从循环中转移出来。

3.结构化程序设计工具

3.1程序流程图

历史最悠久、使用最广泛的过程设计工具。

(1)顺序型

几个连续的加工依次序排列

(2)选择型

由某个判定的取值决定选择两个加工中一个。

(3)当型循环型

当循环控制条件成立时,重复执行特定的加工。

(4)直到型循环型

重复执行特定的加工,直到循环控制条件成立时。

(5)多种情况选择型

列出多种加工情况根据控制变量的取值,选择执行其一

程序设计流程图标准化图符

优点

对控制流程描绘直观,便于初学者掌握。

缺点

  • 不是逐步求精好工具,过早考虑控制流程,非整体结构;
  • 用箭头代表控制流,程序员随意转移控制;
  • 不易表示数据结构和调用关系。

示例

计算n阶乘的程序流程图

3.2 N-S

基本图符

示例

计算n阶乘的N-S

特点

  • 功能域(一特定控制结构的作用域)明确;
  • 不可能任意转移控制;
  • 容易确定局部和全程数据的作用域;
  • 容易表现嵌套关系,也可表示模块的层次结构。

3.3 PAD

基本图符

示例

计算n阶乘的PAD

优点

  • 使用PAD图设计的程序必然是结构化程序;
  • PAD图描绘的程序结构十分清晰;
  • PAD图表现程序逻辑,易读、易懂、易记;
  • 容易将PAD图转换成高级语言源程序;
  • 支持自顶向下逐步求精。

逐步求精

3.4 判定表

能清晰表示复杂的条件组合与应做动作间对应关系。

组成:四部分

  • 左上部列出所有条件;
  • 左下部所有可能做的动作;
  • 右上部表示各种条件组合的一矩阵;
  • 右下部是和每种条件组合相对应的动作。

示例

行李托运算法的判定表

3.5 判定树

判定表变种,表示复杂条件组合与应做动作间对应关系。

优点

形式简单,易看出含义,易于掌握和使用。

缺点

简洁性不如判定表,相同数据元素重复写多遍,越接近叶端重复次数越多。

3.6 过程设计语言PDL

伪码,用正文形式表示数据和处理过程设计工具。
PDL具有严格关键字外部语法,定义控制结构和数据结构;
PDL表示实际操作和条件的内部语法灵活自由,适应各种工程项目需要。

4.程序复杂度

介绍使用比较广泛的McCabe方法。

4.1根据过程设计结果画出相应流图

流图描述程序控制流,基本图形符号如下图所示。
由流程图映射成流图
复合条件下流图映射

4.2计算流图的环形复杂度

三种方法
  • V(G)=区域数
  • V(G)=E-N+2,E为流图中边数,N为流图中节点数
  • V(G)=P+1,P为判定点数,一个进去多个出来

4.3示例

  • V(G)=4 (区域数)
  • V(G)=11(边数)-9(结点数)+2=4
  • V(G)=3(判定结点数)+1=4


Comment