第5章《结构化实现》习题解答
第2题:研究下面给出的伪码程序,要求:
⑴ 画出它的程序流程图
⑵ 它是结构化的还是非结构化的?说明你的理由
⑶ 若是非结构化的,则:
a.把它改造成仅用三种控制结构的结构化程序
b.写出这个结构化程序的伪码
c.用盒图表示这个结构化程序
⑷ 出并改正程序中的逻辑错误
COMMENT: PROGRAM SEARCHES FOR FIRST N REFERENCES
TO A TOPIC IN AN INFORMATION RETRIEVAL
SYSTEM WITH T TOTAL ENTRIES
程序在系统恢复的信息中搜索前N个关键词,最多搜索T次
INPUT N 输入 N
INPUT KEYWORD(S) FOR TOPIC 输入有关话题的关键字
I=0
MATCH=0
DO WHILE I≤T 循环—最多可做T+1次
I=I+1
IF WORD=KEYWORD
THEN MATCH=MATCH+1
STORE IN BUFFER
END
IF MATCH=N
THEN GOTO OUTPUT 搜索到了N个关键字,就跳出循环
(转到了条件语句内部)
END
END
IF N=0
THEN PRINT ”NO MATCH” 若N=0就打印“没有相匹配”
OUTPUT: ELSE CALL SUBROUTINE TO PRINT BUFFER INFORMATION
END
=
打印“没有匹配”
=
调子程序打印缓冲器信息
≠
N=0?
≠
MATCH=N?
≠
保存MATCH到缓冲器
MATCH=MATCH+1
=
i=i+1
循环 T+1次
MATCH=0 控制搜索成功次数的计数器
i=0 控制搜索总次数的计数器
输入关键字 KYEWORD
输入N
解:⑴ 程序流程图:遇到的字= KYEWORD?
结束
⑵ 此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一个条件语句内部。
⑶ 修改后的伪码如下:
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
修改后的程序框图(盒图)
输入值N和T
输入关键字到变量 KYEWORD
打开文件
I和MATCH赋初值0
DO WHILE I≤T
I=I+1
从文件里读一个字到变量WORD
WORD=KEYWORD
T
F
MATCH=MATCH+1
MATCH=N
T
F
跳出循环
MATCH =0
T
F
打印信息“共有”MATCH“个字”
打印信息“没有匹配的字”
⑷ 程序中的错误:语句“IF WORD=KEYWORD”里的变量“WORD”没有预先赋值。
程序中没有预先输入T的值
“N=0”应该是“MATCH=0”
第4题:回答下列问题:
⑴ 什么是模块测试和集成测试?
输入A,B,C
A>5
>
≤
X=10
X=1
B>10
>
≤
Y=20
Y=2
C>15
>
≤
Z=30
Z=3
打印X,Y,Z
Start
Stop
⑶ 设计下面伪码程序的语句覆盖和条件覆盖测试用例:START
INPUT(A,B,C)
IF A>5
THEN X=10
ELSE X=1
END IF
IF B>10
THEN Y=20
ELSE Y=2
END IF
IF C>15
THEN Z=30
ELSE Z=3
END IF
PRINT(X,Y,Z)
STOP
解:⑴ 模块测试是:对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。
集成测试是:把模块装配在一起形成完整的软件包,在装配的同时进行测试。
⑶ 此程序的语句覆盖用例:①A=5,B=10,C=15;②A=6,B=11,C=16
条件覆盖用例为:同于语句覆盖用例
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论