程序编码例题分析

程序编码例题分析

ID:44645215

大小:248.98 KB

页数:6页

时间:2019-10-24

程序编码例题分析_第1页
程序编码例题分析_第2页
程序编码例题分析_第3页
程序编码例题分析_第4页
程序编码例题分析_第5页
资源描述:

《程序编码例题分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、三、例题分析第四章程序编码例题分析第四章程序编码例题分析【例1】下图是使用Basic语言编写的一个打印A,B,C三数中最小者的程序的流程图。其中出现了6个GOTO语句,-个向前,5个向后,程序可读性很羌。if(A

2、测试于判断语句,对每一个最终的打印处理,保留一个分支进入它。这样可以消除众多的GOTO语句,其至可以消除嵌套的判断语句结构。这种程序结构清晰,可读性好。【例2】设在闭区间[a..b]上函数F(X)冇唯一的一个零点,如下图所示。下面给出一个用C语言写出的程序段,用二分法求方程F(X)=0在区间[a..b]中的根。程序段中XO、X1是当前求根区间[X0..X1]的下上界,Xm是该区间的中点,eps是一个给定的很小正数,用于迭代收敛的判断。在程序中采取了用goto语句和标号finish控制在循环中途转出循环。K程序HF0=F(a);Fl=F(b

3、);if(F0*Fl<=0){X0=a;XI=b;for(i=1;i<=n;i++){Xm=(X0+Xl)/2;Fm=F(Xm);if(abs(Fm)0){XO=Xm;FO=Fm;}XI=x;}这类循环结构出现了两个循环出口。一个是for循环的正常出口:当循环控制变量i超出了循环终值n时退出循环;另一个是for循环的非正常出口:当某种条件满足时,从循环中间某处转出循坏,执行循环后面的语句。它不满足结构化的要求。试利用结构化程序设计要求的儿种基本控制结构,消除

4、其中的goto语句,使得每一个部分都是单入口单出口。答案:利用一个布尔变最finished(该变最的初值为false),当循环屮求到了要求的结果时,将此变量的值改变为true,表示循环应结朿,while循环测试到finished为true,就自动退出循环,执行后续的语句。K程丿芋HF0=F(a);Fl=F(b);if(FO*F1<=0){X0=a;XI=b;i=1;finished=0;/*设置控制循环结束的布尔变量*/while(i<=n&&finished==0){/*单入口单出口*/Xm=(X0+Xl)/2;Fm=F(Xm);if(

5、abs(Fm)0){X0=Xm;F0=Fm;}elseXI=X;}}}分析:此程序段中各种结构均为单入口与单出口,且没有goto语句,可以说它是一个结构化的程序。它的结构很简单,只有一重循环,但山于引入一个布尔变量來控制循环结束,可读性比较差。在只冇一重循环的情形,差的程度还不很明显,在多重循环的情形,引入多个布尔变量,可读性就很差了。理解程序的时间差几倍到几I•倍不止。因此,对于这种单入口多出口的循环,R.S.Pressman

6、明确说明,用goto语句可得到较好的清晰性。在C中提供了一个可直接转向循环Z后的语句break,使用它可获得较好的效果。K程序HF0=F(a);Fl=F(b);/*区间两端点的函数值可if(F0*Fl<=0){/*区间中没有根,不做*/X0=a;XI=b;/*设置当前求根区间的两个端点*/for(i=l;i<=n;i++){/*戢多允许迭代n次*/Xm=(XO+X1)/2;Fm=F(Xm);/*求中点及中点的函数值*/if(abs(Fni)0)

7、/*没有求到,缩小求根区间*/{X0=Xm;FO=Fm;}/*向右缩小区间*/elseX1=X;/*向左缩小区间*/}}这段程序不是结构化的程序,利用了C语言中的一个语句break,它的功能是将控制转移到它所在循环的后面第一个后续语句处。由于将转移语句与转出条件的判断直接联系在一}这类循环结构出现了两个循环出口。一个是for循环的正常出口:当循环控制变量i超出了循环终值n时退出循环;另一个是for循环的非正常出口:当某种条件满足时,从循环中间某处转出循坏,执行循环后面的语句。它不满足结构化的要求。试利用结构化程序设计要求的儿种基本控制结构

8、,消除其中的goto语句,使得每一个部分都是单入口单出口。答案:利用一个布尔变最finished(该变最的初值为false),当循环屮求到了要求的结果时,将此变量的值改变为true,表示循环应

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。