当前位置:首页 > 软件工程第三章习题及参考答案
10. 研究下面给出的伪码程序,要求: (1)画出它的程序流程图;
(2)它是结构化的还是非结构化的?说明你的理由; (3)若是非结构化的,则
(a)把它改造成仅用三种控制结构的结构化程序; (b)写出这个结构化设计的伪码; (c)用盒图表示这个结构化程序。 (4)找出并改正程序逻辑中的错误。
参考答案
1.答:解决任何问题之前都必须首先理解问题,对问题理解得越深入,解决起来也就越容易。为了获得对顺序主文件更新问题的直观、具体的认识,首先设想一个典型的主文件(称为旧的主文件)、一个事务文件和更新后得到的新的主文件及异常情况报告,如图3.8所示。
为了简单起见,在图3.8中忽略了主文件和事务文件中所包含的订户地址信息。 从图3.8可以看出,更新顺序主文件系统有下述2个输入文件: ① 旧的主文件(由包含订户姓名、地址信息的记录组成); ② 事务文件。
系统还有3个输出文件: ① 新的主文件; ② 异常报告;
③ 摘要和工作结束信息。
图3.9描绘了设想的顺序主文件更新系统的概貌。
然后用逐步求精方法设计图3.9中关键的黑盒子“更新主文件”的实现算法。逐步求精方法实质上是“自顶向下”的设计方法,它通过不断分层细化解决问题的算法来设计软件。它不像“各个击破”技术那样把整个问题分解为若干个重要程序相同的子问题。
在用逐步求精方法设计软件的过程中,软件的某个特定方面的重要性在一次又一次的求精中是变化的。最初,某个问题可能无关紧要,但后来同样的问题会变得相当重要。换句话说,可以把逐步求精方法看作是建立某个阶段内需要解决的各种问题的优先级的一种技术。它能确保每个问题都在恰当的时间得到解决,而且在任何时刻都不需要同时解决7个以上问题。使用逐步求精方法设计软件的难点在于,在当前的求精步骤中确定哪些是必须处理的重要事项,哪些事项应该推迟到后面的求精步骤中去处理。
作为对“更新主文件”的第一步求精,我们把它分解为3个处理框,分别称为“输入”、“处理”和“输出”,如图3.10所示。
在这个设计步骤中假设,当“处理”需要一个记录时,我们能够在那个时候输入正确的记录。同样,我们也能够在当时把正确的记录写入到正确的文件中。也就是说,在把逐步求精方法法运用到解决更新主文件这个问题时,我们是把输入和输出这两方面的问题暂时分离出去,集中精力设计“处理”的算法。
共分享92篇相关文档