当前位置:首页 > 软件工程第三章习题及参考答案
8. 答:(1)从该伪码程序转变成的程序流程图示于图3.22中。
(2)由该伪码转变成的盒图如图3.23所示。
9.答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图3.5所示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。
(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图3.24所示盒图描绘了等价的结构化程序。
(3)不使用flag把该程序改造为等价的结构化程序的方法如图3.25所示。
10. 答:(1)根据这个伪码程序画出的程序流程图如图3.26所示。
(2)这个程序是非结构化的。因为在图3.26中“印出缓冲区的内容”这个处理框有两个入口;此外,循环结构有两个出口:I≤T为假和MATCH=N为真时都结束循环。
(3)仅用3种控制结构的等价的结构化程序的伪码如下: INPUTN
INPUTKEYWORD(S)FORTOPIC
I=0 MATCH=0
DOWHILE(I≤T)and(MATCH IFWORD=KEYWORD THENMATCH=MATCH+1 STOREINBUFFER END END IFN=0 THENPRINT″NOMATCH″ ELSECALLSUBROUTINETOPRINTBUFFER INFORMATION END 图3.27所示盒图描绘了上面给出的结构化程序。 (4)该程序逻辑中有两个错误。 第一个错误是WHILE循环条件I≤T:根据这个条件,当I=T时应该执行一遍循环体。循环体的第一条语句是I=I+1,即把I的值加1使之变成T+1,但是,该检索系统总共只有T个词条(ENTRY),下标I变成T+1将出现“越界”错。因此,应该把循环条件改为I 第二个错误是印出“无匹配”的条件N=0:该程序使用变量MATCH存放匹配次数,因此,印出“无匹配”的条件应该是MATCH=0。 注意,即使把该程序改造成了结构化的程序(见第3小题的答案),也仍然应该像上述的那样改正这两个错误。
共分享92篇相关文档