结构程序设计
定义
如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
下图中(a)为顺序结构,(b)为 IF-THEN-ELSE选择(分支)结构,(c)为 DO-WHILE 型循环结构。
图(a)为 DO - UNTIL型循环结构,(b)多分支结构。
人机界面设计
人机界面设计是接口设计的重要组成部分。对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。(可参考概要设计)。
设计问题
设计人机界面过程中会遇到的4 个问题:系统响应时间、用户帮助设施、出错信息处理、命令交互。
系统响应时间
作出控制动作到系统响应的时间。具有长度和易变性。
用户帮助设施
包括集成的帮助设施(设计在软件里面)和附加的帮助设施(联机用户手册)。前者优于后者。
出错信息处理
出错信息和警告信息。
命令交互
通常即可从菜单栏选择,又可以通过键盘命令调用。
设计过程
是一个迭代的过程。
人机界面设计指南
包括一般交互指南、信息显示指南、数据输入指南。
过程设计工具
工具名 | 主要优点 | 主要缺点 |
---|---|---|
程序流程图 | 简单直观 | 不考虑全局;不易表示数据结构 |
盒图(N-S图) | 考虑全局;作用域明确 | 不易绘制和修改 |
PAD图 | 清晰表现逻辑结构、数据结构;有直接转换工具 | ~ |
判定表 | 清晰表现动作关系 | 含义复杂;不够简洁 |
判定树 | 形式简单 | 简洁性比判定表还要差 |
过程设计语言 | 便于保持文档和程序一致性;便于数据结构说明 | 不直观 |
程序流程图
又称为程序框图,历史最悠久、使用最广泛的方法。
优点:
对控制流程的描绘很直观,便于初学者掌握。
缺点:
1、不够逐步求精,程序员只考虑程序的控制流程,而不考虑全局结构。
2、用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。
3、不易表示数据结构。
盒图(N-S 图)
优点 :
1.功能域(作用域)明确
2.无 GOTO
3.容易确定局部或全局数据的作用域
4.容易表示嵌套关系,体现层次结构
缺点 :
1.修改困难,特别在手工画时
2.分支或嵌套多时不好画
PAD图
PAD是问题分析图(problem analysis diagram)的英文缩写,用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。
优点:
■使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。
■描绘的程序结构十分清晰。
■程序逻辑易读、易懂、易记。
■容易将PAD图转换成高级语言源程序,可用软件工具自动完成。
■即可表示程序逻辑,也可描绘数据结构。
■支持自顶向下、逐步求精方法的使用。
判定表
当算法中包含多重嵌套的条件选择时,判定表(树)能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。 其他方法都不可以。
一张判定表由4部分组成:
优点:
能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
缺点:
1.含义无法一眼看出,需要有一个简短的学习过程。
2.当数据元素的值多于两个时,判定表的简洁程度也将下降。
判定树
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。
优点:
它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。
缺点:
简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多。
画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。
例题
利用判定表:
利用判定树:
过程设计语言(PDL)
也称为伪码,它是用正文形式表示数据和处理过程的设计工具。
PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;同时,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。它使用一种语言的词汇,同时却使用另一种语言的语法。
伪代码的基本控制结构:
■简单陈述句结构:避免复合语句。
■判定结构:IF_THEN_ELSE或CASE_OF结构。
■选择结构:WHILE_DO或REPEAT_UNTIL结构。
特点:
■关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。
■自然语言的自由语法,它描述处理特点。
■数据说明的手段。应该既包括简单的数据结构,又包括复杂的数据结构。
■模块定义和调用的技术,应该提供各种接口描述模式。
优点:
可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。
可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。
已经有自动处理程序存在,而且可以自动由PDL生成程序代码。
缺点:
不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。