第七章 习题答案
2.研究下面给出的伪码程序,要求: ⑴ 画出它的程序流程图 。
⑵ 它是结构化的还是非结构化的?说明你的理由。 ⑶ 若是非结构化的,则
(a) 把它改造成仅用三种控制结构的结构化程序 ; (b) 写出这个结构化程序的伪码; (c) 用盒图表示这个结构化程序。 ⑷ 找出并改正程序中的逻辑错误 。
COMMENT: PROGRAM SEARCHES FOR FIRST N REFERENCES
TO A TOPIC IN AN INFORMATION RETRIEVAL SYSTEM WITH T TOTAL ENTRIES INPUT N
INPUT KEYWORD(S) FOR TOPIC I=0 MATCH=0
DO WHILE I≤T
I=I+1
IF WORD=KEYWORD THEN MATCH=MATCH+1
STORE IN BUFFER
END
IF MATCH=N
THEN GOTO OUTPUT
END END
IF N=0
THEN PRINT ”NO MATCH”
OUTPUT: ELSE CALL SUBROUTINE TO PRINT BUFFER
INFORMATION
END
解:⑴ 程序流程图(如图2.1所示)
⑵ 此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一个条件语句内部。
YES 遇到的字= KYEWORD? 循环N+1次 I=I+1 I=0 MATCH=0 I控制搜索总次数的计数器 MATCH控制搜索成功次数的计数器 开 始 输入N 输入关键字WORD NO YES MATCH=MATCH+1 保存MATCH到缓冲
⑶ 修改后的伪码如下:
结束 图2.1
调子程序打印缓冲器信息 MATCH=N? NO N=0 YES 打印“没有匹配” INPUT N,T 输入 N
INPUT KEYWORD(S) FOR TOPIC 输入有关话题的关键字 OPEN FILE 打开文件 I=0 MATCH=0
DO WHILE I≤T 循环—最多可做T次 I=I+1
READ A WORD OF FILE TO WORD 从文件里读一个字到变量WORD IF WORD=KEYWORD THEN MATCH=MATCH+1
IF MATCH=N THEN EXIT 搜索到了N个关键字,就跳出循环 END IF END IF END DO IF MATCH =0
THEN PRINT ”NO MATCH” 若MATCH =0就打印“没有相匹配” ELSE PRINT “共搜索到”;
MATCH;“个匹配的关键字” 否则打印信息 END IF
修改后的程序框图(盒图)
⑷ 程序中的错误:
①语句“IF WORD=KEYWORD”里的变量“WORD”没有预先赋值。 ②程序中没有预先输入T的值 ③ “N=0”应该是“MATCH=0” 4. 回答下列问题:
(1) 什么是模块测试和集成测试?它们各有什么特点?
答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并发的进行。
集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。特点是:可能发生接口问题。
(2)假设有一个由1000行FORTRAN语句构成的程序(经编以后大约有5000条
相关推荐: