一、考察内容
判断是否是结构化设计,并且设计等价结构化程序。
- 是否是结构化的?(为什么是非结构化的?)
- 将给出的程序改写成等价的结构化程序
- 会使用过程设计工具表达结构化程序
- 简化结构化设计
二、注意要点
针对上述几个提问方式记录注意要点:
1.是否是结构化的?(为什么是非结构化的?)
一般所说的结构化即按照狭义的结构程序的定义衡量,符合定义要求的程序。
所以要观察的是以下几个方面:
- 仅仅通过顺序、选择和循环三种基本控制结构进行连接
- 每个代码块只有一个入口和一个出口
一般情况下,题目给出的程序是非结构化的,问题往往发生于有多个入口或出口
2.将给出的程序改写成等价的结构化程序
- 对于多个出口的情况,使用flag,将原来两个出口(或多个)的情况改成一个出口控制flag,一个出口检测flag和原判断条件。
- 将原来的判断条件放下一起,变成循环,如果原来q,p两个判断条件,变成q&p的循环成立条件,不成立则输出。(循环是一个新的代码块,在内部)
- 使用Ashcroft-Manna方法,将原来的多重判断结构变为switch case,并增加do case do until,以及辅助变量i用于判断
3.会使用过程设计工具表达结构化程序
参考过程设计工具之间的改写
4.简化结构化设计
即尽量将原来合并到一起的路径分开成两条路径。从流程图上看是复杂了,但是实际是简化。