软件工程试验_第1页
软件工程试验_第2页
软件工程试验_第3页
软件工程试验_第4页
软件工程试验_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 美国某大学共有200名教师,校方与教师工会刚签定了一项协议。按照协议,所有年工资超过$26,000(含$26,000)的教师工资将保持不变,年工资少于$26,000的教师将增工资,所增加的工资按下述方法计算:给每个由此教师赡养的人(包括教师 本人)每年补助$100,此外,教师有一年工龄每年再多补助 $50,但是,增加后的年工资总额不得多于 $26,000。教师的工资档案存储在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇佣日期等信息。需要写一个计算程序计算并印岀每名教师的原有工资和调整后的新工资。要求:画岀此系统的数据流图;写出需求说明;设计上述的工资调整程序(要求用判断树描述

2、),设计时请分别采用下述两种算法,并比较这两种算法的优缺点;a. 搜索工资档案数据,找岀年工资少于$26,000的人,计算新工资,工资对照表;b. 把工资档案数据按工资从做低到最高次序排序,当工资数额超过超过限额,储存性工资,印岀结果。你所画岀的数据流图适应于哪种算法?解:系统的数据流图调整指令操作员工资调整系统校核是否超过 $26,000,储存新工资,印出新旧$26,000时即停止排序,计算新工资,校核是否工资低于$26,000原有工资与新工资对照表教师的*操作员D教师工资档案需求说明:程序框图:取教师档案,找出年工资少于$26,000的人的信息存入数据表A,包括如下数据项:n-工资少于$2

3、6,000的人数表A字段表A字段表A字段表A字段表A字段1:姓名2:原工资3:赡养人数4:被雇佣日期5:新工资“调整第i个教师的工资”子程序:w=A(i,2)m=A(i,3)丨用A(i,4)计算此教师的工龄存入变量kIw=w+100*m+50*klk> iw=w+100*mw=26000w> 26000 .=1调整第i个教师的工资A(i,5)=wWHILE i w n=i+1打印表A的第1、2、5字段 *讨论:这两框的位置能否调换?用表A修改教师彳档案数 据库彳相应记录算法说明:1此算法是先找岀工资少于 $26,000的人,再进行工资调整,属算法 a2算法a适于数据库的记录不太多的

4、情况,在数据库中查找较费时。但是,调整系统的主要部分少一个判断,结构清晰一些。3算法b适于数据库的记录较多的情况,利用数据库的排序功能可很快地将教师的档案数据按工资大小排好序,调整程序只对前若干个记录进行操作。这个算法对于修改数据库回更便捷些。4总的说来,算法b比算法a的效率要高。2. 研究下列伪码程序:LOOP: Set I to (START+FINISH)/2If TABLE(I) = ITEM goto FOUNDIf TABLE(I) < ITEM Set START to (I+1)If TABLE(I) > ITEM Set FINISH to (I - 1)If (

5、FINISH - START) > 1 goto LOOPIf TABLE(START) = ITEM goto FOUNDIf TABLE(FINISH) = ITEM goto FOUNDSet FLAG to 0Goto DONEFOUND: Set FLAG to 1DONE: Exit要求:画岀程序流程图; 程序是结构化的吗?说明理由; 若程序是非结构化的,请设计一个等价的结构化程序并且画岀程序流程图;此程序的功能是什么?它完成预定功能有什么隐含的前提条件吗?解:解: 程序不是结构化的,明显标志是程序中有多个“goto ”语句解:修改该程序为一个结构化程序:do while (

6、FINISH - START) > 1set I to (START+FINISH)/2if TABLE(I) < ITEM thenset START to (1+1)else if TABLE(I) > ITEM thenset FINISH to (I -1)endifenddoif TABLE(I) = ITEM or TABLE(START) = ITEM or TABLE(FINISH) = ITEM then set FLAG to 1elseset FLAG to 0endifExit其框图如下解:此程序的功能是:用“逐步搜索”法在一个一维表(TABLE)中搜

7、索指定的值(ITEM)前提是:TABLE中的值是按从小到大存放着程序中,变量 START的初始值应该是 TABLE表中表头的值,最小;变量FINISH的初始值应该是 TABLE表中表尾的值,最大原程序是从两头逐步向中间移动,用两头的中间处的值与ITEM进行比较,若中间处的值比 ITEM大,则表的尾部向表头移一步;若中间处的值比 ITEM 小,则表的头部向表尾移一步。直到找到了与 ITEM相同的 值为止。若找到了,则置 FLAG=1 ;未找到,则置 FLAG=O。3. 用Ashcroft-Manna技术可以将非结构化的程序转换为结构化程序,下图是一个转换的例子请用伪代码程序实现上图给出的结构化设

8、计,不允许使用GOTO语句,可以使用 DO CASE语句。进一步简化上图给出的结构化设计。解: 原程序框图中“ d”条件的一个出口指向操作框“D”,同时“ e”条件的一个出口也指向操作框“D”,这就势必会语言程序中出现“ GOTO ”语句。所以原程序框图是非结构化的。从例子看,Ashcroft-Manna技术的基本做法是:原程序中有几个简单判断语句,就在框图中设置几个分支的CASE语句,每个CASE分支对应一条判断语句。将框图转换成程序只需在 DO CASE语句前加一条语句“ DO_UNTIL 1=4 ”,并把判断“1=4”改成该循环的结束语句即可。CASE语句,只要将公共的转移点分开即可。其

9、实要将这个非结构化的框图改成结构化的,完全可以不用4. 设计一程序,要求用率选法求100以内的素数,筛选法就是从2到100中去掉2,3,9, 10的倍数,剩下的就是100以内的素数,已知该程序的功能框架如下:main()建立2到100的数组A,其中Ai=i ;建立2到100的素数表B,其中存放2到10以内的素数;若Ai=i是B中任一数的倍数,则踢除 Ai;输出A中所有没有被剔除的数;实验要求:(1) 将上述框架中的每一个加工语句进一步细化成一个循环语句,并直接用程序设计语言表示岀来;(2) 画岀程序流程图;(3) 说明“自顶向下,逐步求精“方法的优点(1): main ( )/* 建立2到10

10、0的数组 A,其中Ai = i*/1for (i = 2 ; i <= 100 ; i+ ) Ai = i ;/*建立2到10的素数表B,其中存放2到10以内的素数*/2B1 =2;B2 = 3;B3 = 5;B4 = 7;/* 若Ai = i是B中任一数的倍数,则剔除 Ai*/3for (j = 1 ; j <= 4; j+ )检查A所有的数能否被Bj整除并将能被整除的数从 A中剔除; 3.1/*输出A中所有没有被剔除的数 */4for (i = 2 ; i <= 100; i+ )若Ai没有被剔除,则输出之; -4.1继续对3.1和4.1细化下去,直到最后每一个语句都能直

11、接用程序设计语言来表示为止。main ( )for (i = 2 ; i <= 100 ; i+) Ai = i ;B1 =2 ;B2 = 3;B3 = 5;B4 = 7;/*若Ai = i是B中任一数的倍数,则剔除 Ai*/for(j = 1 ; j <= 4; j+ )/* 检查A所有的数能否被Bj整除并将能被整除的数从A中剔除*/for (i = 2 ; i <= 100; i+ )if(Ai /Bj*Bj = Ai ) Ai = 0;/*输出A中所有没有被剔除的数*/for (i = 2 ; i <= 100; i+ )/* 若Ai没有被剔除,则输出之*/if

12、(Ai != 0)printf(“A%d = %d/n”,i,Ai);(3)自顶向下,逐步求精方法的优点: 自顶向下,逐步求精方法符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率; 用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,因此程序容易阅读和理解; 程序自顶向下,逐步细化,分解成一个树形结构(如图 4.2所示)。在同一层的结点上做的细化工作相互独立。在任 何一步发生错误,一般只影响它下层的结点,同一层其它结点不受影响。在以后的测试中,也可以先独立地一个结点一个结 点地做,最后再集成。 程序清晰和模块化,使得在修改和重新设计一个软件

13、时,可复用的代码量最大; 每一步工作仅在上层结点的基础上做不多的设计扩展,便于检查; 有利于设计的分工和组织工作。(3)数据结构的合理化5输入三个正整数,判断他们是否构成三角形,如果构成进一步判断三角形的性质:等边,等腰或者一般。(1)画出流程图(2)写出程序代码(3)用黑盒白盒法分别测试并给出测试用例;是三 果r形 输这一 ft出一角输是三岀是谨垮号5-®嚐三呢输杲边弟I輸出知等边三角形”t-catb7c and b*c* «nJHhakMia+l>c and b+«>4 -and e>i>b冷輸出“等踱三角孫”1 今L输出“樹足舟珍彳输岀杯不是三角形“a=c辅出“尊边三箱那”(2)PDL语言描述如下:GET(a,b,c)IF (a+b>c and b+c>a and c+a>b)IF (a=b)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论