第八章编码和语言选择

第八章编码和语言选择

ID:38512508

大小:261.50 KB

页数:60页

时间:2019-06-14

第八章编码和语言选择_第1页
第八章编码和语言选择_第2页
第八章编码和语言选择_第3页
第八章编码和语言选择_第4页
第八章编码和语言选择_第5页
资源描述:

《第八章编码和语言选择》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章编码和语言选择通常把编码和测试统称为实现。编码(Coding):把软件设计翻译成计算机可以理解的形式——用某种程序设计语言书写的程序编码阶段涉及的问题语言选择编码风格编程准则程序效率1目的用选定的程序设计语言将模块的过程性描述翻译为用该语言书写的源程序编码模块的过程性描述源程序(不可执行的)(可执行的)8.1编码概述2编码的过程熟悉所选语言的功能和程序开发环境仔细阅读设计文档详细设计弄清要编码的模块的外部接口与内部过程对编码产生的源程序的要求正确可靠简明清晰有较高的执行效率3效率与清晰是一对矛盾的要求要优先考虑程序的清晰性和可理解性对编码的有关说明编码要求清晰第一(对大多数

2、模块)效率第一(对个别模块)用单入/单出保证控制流的直线性用限制GOTO保证控制流的局部性用GOTO与其它技巧消除重复编码4设计是编码的先导,要复审设计编码要熟悉所用的语言要恰倒好处利用编程语言的特点测试阶段也要编写一些测试程序对编码的有关说明58.2结构化程序设计关于GOTO语句的争论结构化程序设计的原则程序设计自顶向下,逐步求精68.2.1关于GOTO语句的争论1956年FORTRAN语言诞生,GOTO语句出现.1963年PeterNaur指出无节制使用GOTO语句使程序非常混乱.1966年Jacopini证明了任何单入单出的没有死循环的程序都能由三种基本的控制结构构造出来.

3、1968年Dijkstra建议取消GOTO语句,引起了激烈的争论.经过争论人们认识到,这场争论实质上是要创立一种新的程序设计思想,方法和风格.70年代初Wirth在设计PASCAL语言时对GOTO语句的处理可被当作对GOTO语句的结论,在PASCAL中支持三种基本结构,但仍保留了GOTO语句.78.2.2结构化程序设计的原则使用顺序、选择、重复等有限的基本控制结构表示程序逻辑.选用的控制结构只准有一个入口和一个出口.程序语句组成易识别的块(BLOCK),没块单入单出.复杂结构应用基本结构组合嵌套来实现.语言中没有的的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中前

4、后一致.严格控制GOTO语句的使用,仅在下列情形才可使用:(1)用一个非结构化的语言去实现一个结构化的构造;(2)在某种可改善而不是损害程序可读性的情况下.8[例1]一个打印A,B,C中最小数的FORTRAN程序if(A.LT.B)goto120if(B.LT.C)goto110100write(6,*)Cgoto140110write(6,*)Bgoto140120if(A.LT.C)goto130goto100130write(6,*)A140continue程序可读性很差9改进的形式:if(A.LT.B.AND.A.LT.C)thenwrite(6,*)Aelseif(A.

5、GE.B.AND.B.LT.C)thenwrite(6,*)Belsewrite(6,*)Cendifendif这种程序结构清晰,可读性好.10[例2]设在[a,b]上F(X)有唯一的一个零点,用二分法求方程F(X)=0在[a,b]中的根F0=F(a);F1=F(b);If(F0*F1<=0){x0=a;x1=b;for(i=1;i<=n;i++){xm=(x0+x1)/2;Fm=F(xm);if(abs(Fm)

6、

7、abs(x1-x0)0){x0=xm;F0=Fm;}elsex1=xm;}finish:printf(“

8、Therootis%d”,xm);}循环有两个出口,有GOTO语句,不满足结构化要求.11一个改进的程序:F0=F(a);F1=F(b);If(F0*F1<=0){x0=a;x1=b;i=1;finished=0;while(i<=n&&finished==0){xm=(x0+x1)/2;Fm=F(xm);if(abs(Fm)

9、

10、abs(x1-x0)0){x0=xm;F0=Fm;}elsex1=xm;}finish:printf(“Therootis%d”,xm);}程序中各种结构

11、均单入单出,无GOTO语句,是结构化的程序.但由于用一个布尔变量控制循环,可读性变差.128.2.3程序设计自顶向下,逐步求精[例]用筛选发求100以内的素数.(从2到100中去掉2,3,4,…,9,10的倍数,剩下的就是100以内的素数)为解决此问题,可先写出一个程序框架.Main(){建立2到100的数组A[],其中A[i]=i;建立2到10的素数组B[],其中存放2到10以内的素数;若A[i]=i是B[]中任意一数的倍数,则剔除A[i];输出A[]中所有没被剔除的数;}13

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

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

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