第5章习题修改ok答案.docx
- 文档编号:25091788
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:26
- 大小:94.10KB
第5章习题修改ok答案.docx
《第5章习题修改ok答案.docx》由会员分享,可在线阅读,更多相关《第5章习题修改ok答案.docx(26页珍藏版)》请在冰豆网上搜索。
第5章习题修改ok答案
1.简述详细设计的任务。
包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它根据
软件特点需要完成的设计、模块测试用例设计、设计文档编写、设计评审。
2.简述详细设计的原则。
①模块的逻辑描述应清晰易读、正确可靠;
②设计的处理过程应该简明易懂;
③选择恰当的描述工具来描述模块算法。
3.简述结构化程序设计基本要求和特点。
要点:
a.采用自顶向下、逐步求精的程序设计方法
b.使用三种基本程序控制结构构造程序
1).用顺序方式对过程分解,确定各部分的执行顺序。
2).用选择方式对过程分解,确定某个部分的执行条件。
3).用循环方式对过程分解,确定某个部分重复的开始和结束的条件。
c.主程序员组的组织形式。
特点:
①自顶向下、逐步求精;
②具有单入、单出的控制结构(取消GOTO语句)
4.简述用户界面设计的基本原则
(1)可靠性
用户界面应当提供可靠的、能有效减少用户出错的、容错性好的环境。
一旦用户出错,
应当能检测出错误、提供出错信息,给用户改正错误的机会。
(2)简单性
简单性能提高工作效率。
用户界面的简单性包括输入、输出的简单性;系统界面风格的
一致性;命令关键词的含义、命令的格式、提示信息、输入输出格式等的一致性。
(3)易学习性和易使用性
用户界面应提供多种学习和使用方式,应能灵活地适用于所有的用户。
(4)立即反馈性
用户界面对用户的所有输入都应立即做出反馈。
当用户有误操作时,程序应尽可能明确
地告诉用户做错了什么,并向用户提出改正错误建议。
三、下图是使用Basic语言编写的一个打印A,B,C三数中最小者的程序的流
程图。
其中出现了6个GOTO语句,一个向前,5个向后,程序可读性很差。
if(A
if(B 100printC; goto140; 110printB; goto140; 120if(A goto100; 130printA; 140 试利用基本控制结构,将程序中的GOTO语句消去。 (10分) 三、答案: 使用if-then-else结构化构造,则上述程序段可改成如下形式。 if(A printA elseif(A>=BandB printB else printC; 4.请使用流程图、PAD图各PDL语言描述下列程序的算法。 (1)在数据A (1)-A(10)中求最大数和次大数。 (2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。 答: (1) 1)流程图: 2)PAD图 3)PDL语言 定义n1=n2=0 输入A (1).......A(10) n1=n2=A (1) whilei>10 ifA(i)>=n1 n2=n1 n1=A(i) endwhile 四、选择一种将三个数从小到大排序的算法,分别用 (1)流程图, (2)N-S图,(3) PAD图描述其详细过程。 设数为a,b,c,其详细过程如下: (1)流程图 (2)N-S图 (3)PAD图 40.请使用PAD图和PDL语言描述在数组A (1)~A(10)中找最大数的算法。 解: PDL语言: N=1 WHILEN<=10DO IFA(N)<=A(N+1)MAX=A(N+1); ELSEMAX=A(N)ENDIF; N=N+1; ENDWHILE; PAD图: [解析]人工查找时,是从第一个元素开始查找,用当前元素与下一个元素比较,将 较大者作为当前元素又与下一元素比较,如此循环,直到数组末尾。 2、将下面给出的伪码转换为N-S图和PAD图。 voidroot(floatroot1,floatroot2){ i=1;j=0; while(i<=10){ 输入一元二次方程的系数a,b,c; p=b*b–4*a*c; if(p<0)输出“方程i无实数根”; elseif(p>0)求出根并输出; if(p==0){ 求出重根并输出; j=j+1; } i=i+1; } 输出重根的方程的个数j; i=1;j=0; } while(i<=10)【解答】 输入a,b,c;计算p=b 2-4ac; (1)N-S图 p<0? TF 输出“方程i” p>0? FT 无实根求出根并输出 p==0? FT 求出重根并输出;j=j+1; i=i+1; 输出重根的方程个数i (2)PAD图 i=1;j=0; 2 输入a,b,c;计算p=b –4ac; 求出根并输出p>0? p<0? while(i<=10) 输出方程i无实根 求出重根并输出;j=j+1;p=0? 输出重根的方程个数ii=i+1; 9.下图给出的程序流程图代表一个非结构化的程序,请问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在 (2)题的设计中你使用附加的标志变量flag吗? 若没用,请再设计一个使用flag 的程序;若用了,再设计一个不用flag的程序。 START IFpTHEN WHILEqDO f ENDDO ELSE BLOCK g n ENDBLOCK ENDIF STOP 开始 p gq循环WHILEp nf q循环 停止 答: (1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。 图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构 化的程序。 (2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序, 图4-3描绘了等价的结构化程序的盒图。 flag=TRUE flag=TRUE p pANDflag FT g flag=FALSEg q FT flag=FALSE(NOTq)OR(NOTflag) (a)解法1(b)解法2 图4-3与该图等价的结构化程序(用flag) (3)不使用flag把该程序改造为等价的结构化程序的方法如图4-4所示。 p FT g (NOTq)OR(NOTflag) 图4-4与该图等价的结构化程序(不用flag) 5.某厂对部分职工重新分配工作的政策是: 年龄在伙岁以下者,初中文化程度脱产学习。 高中文化程度当电工;年龄在20岁到40岁之 间者,中学中学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。 年龄在40 岁以上者,中学文化程度当材料员,大学文化程序当技术员。 请用结构化语言、判定表或判 定树描述上述问题的加工逻辑。 (1)结构化语言: 根据职工年龄和文化程序: REPEAT If年龄<=20 If初中文化Then脱产学习endif elseif高中文化Then电工endif endif If20<年龄<40 If中学文化 If男性Then钳工 Else 车工 Endif elseif大学文化Then技术员endif endif endif If年龄>=40 If中学文化Then材料员 elseif大学文化Then技术员endif endif endif Until没有剩余未分配员工 判定表 1234567891011 年龄CCDDDDDEEE 文化GHHGGHIGHI 性别----MMFF-------- 脱产学习√ 电工√ 钳工√√ 车工√√ 技术员√√ 材料员√√ 条件取值表 条件名取值符号取值数 <=20C 年龄>20,<40DM1=3 >=40E 中学G 文化程度高中HM2=3 大学I 性别 男M 女F M3=2 8.画出下列伪码程序的流图,计算它的环形复杂度。 你觉得这个程序的逻辑有什么问题吗? CEXAMPLE LOOP: DOWHILEX>0 A=B+1 IFA>10 THENX=A ELSEY=Z ENDIF IFY<5 THENPRINTX,Y ELSEIFY=2 THENGOTOLOOP ELSEC=3 ENDIF ENDIF G=H+R ENDDO IFF>0 THENPRINTG ELSEPRINTK ENDIF STOP 答: (1)该伪码的流程图如图4-8所示: 开始 N Z>0? Y A=B+1 Y N A>10? Y=ZX=A NY Y<5? Y Y=2? PrintX,Y N C=3 G<=H+R N Y F>0? PrintKPrintG 结束 图4-8程序流程图 根据该程序流程图,可得该程序流图如图4-9所示: 1 2 3 45 6 8 7 9 10 11 1213 14 图4-9程序流图 环形复杂度V(G)=流图中的区域数 =流图中判定结点数目+1=5+1=6 (2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没 有任何有可能该变Z的语句。 因此,该段代码中的WHILE循环部分代码要么不会执行,要 么可能出现死循环。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 修改 ok 答案