06第六章 程序编码.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:107 大小:344KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

06第六章 程序编码.ppt

06第六章程序编码.ppt

预览

免费试读已结束,剩余 97 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第六章程序编码编码的目的:是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(源代码)做为软件工程过程的一个阶段,程序编码是设计的继续。程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性。为了保证程序编码的质量,程序员必须深刻地理解、熟练地掌握并正确地运用程序设计语言的特性。此外,还要求源程序具有良好的结构性和良好的程序设计风格。6.2结构化程序设计6.1.1结构化程序设计的主要原则语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致。严格控制GOTO语句,仅在下列情形才可使用:①用一个非结构化的程序设计语言去实现一个结构化的构造。②若不使用GOTO语句就会使程序功能模糊。③在某种可以改善而不是损害程序可读性的情况下。例1打印A,B,C三数中最小者的程序程序1if(A<B)goto120;if(B<C)goto110;100write(C);goto140;110write(B);goto140;120if(A<C)goto130;goto100;130write(A);140end程序2if(A<B)and(A<C)thenwrite(A)elseif(AB)and(B<C)thenwrite(B)elsewrite(C)endifendif例2用二分法求方程f(x)=0在区间[a..b]中的根的程序f0=f(a);f1=f(b);//程序1if(f0*f1<=0){x0=a;x1=b;for(i=1;i<=n;i++){xm=(x0+x1)/2;fm=f(xm);if(abs(fm)<eps||abs(x1-x0)<eps)gotofinish;if(f0*fm>0){x0=xm;f0=fm;}elsex1=xm;}finish:printf(“\nTherootofthisequationis%d\n”,xm);}单入口,两出口正常出口是循环达到n次,非正常出口是循环中途控制转出到标号finish所在位置可读性好f0=f(a);f1=f(b);//程序2if(f0*f1<=0){x0=a;x1=b;for(i=1;i<=n;i++){//正常出口xm=(x0+x1)/2;fm=f(xm);if(abs(fm)<eps||abs(x1-x0)<eps)break;//非正常出口if(f0*fm>0){x0=xm;f0=fm;}elsex1=xm;}}f0=f(a);f1=f(b);//程序3if(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)<eps||abs(x1-x0)<eps)finished=1;if(finished==0)if(f0*fm>0){x0=xm;f0=fm;}elsex1=xm;}}引入布尔变量finished,改for型循环为while型,将单入口多出口结构改为单入口单出口结构。6.1.2自顶向下,逐步求精用逐步细化方法设计一个程序,其功能为“从一组数中找出最大的数”第二步:分解主要问题第三步:确定数据结构第四步:用PDL描述自顶向下,逐步求精方法的优点程序自顶向下,逐步细化,分解成一个树形结构。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查有利于设计的分工和组织工作。6.3程序设计风格6.3.1源程序文档化符号名的命名名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。NEW.BALANCE.ACCOUNTS.PAYABLE(PASCAL)NBALAP(FORTRAN)N(BASIC)程序的注释序言性注释有关本模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。功能性注释如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:/*ADDMONTHLY-SALESTOANNUAL-TOTAL*/TOTAL=AMOUNT+TOTAL要点描述一段程序,而不是每一个语句;用缩进和空行,使程序与注释容易区别;注释要