软件工程 第8-1章 编码 CUMT 2.ppt
文本预览下载声明
王荣存 博士rcwang@ 8-1.1 编码概念 做为软件工程过程的一个阶段,程序编码是设计的继续。 程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性。 为了保证程序编码的质量,程序员必须深刻地理解、熟练地掌握并正确地运用程序设计语言的特性。此外,还要求源程序具有良好的结构性和良好的程序设计风格。 1.编码的目标 编码产生的源程序,应该正确可靠,简明清晰,而且要具有较高的效率。 前两点是一致的,因为源代码越是清楚和简明,就越便于验证源代码和模块规格说明的一致性,越容易对它进行测试和维护 清晰和效率却常常会有矛盾,清晰性好的程序一般效率较低,而要求效率高的程序往往清晰度不太好。对于大多数模块,编码时应该把简明清晰放在第一位。 例 打印A, B, C三数中最小者的程序 程序1 if ( A B ) goto 120; if ( B C ) goto 110; 100 write ( C ); goto 140; 110 write ( B ); goto 140; 120 if ( A C ) goto 130; goto 100; 130 write ( A ); 140 end 程序2 if ( A B ) and ( A C ) then write ( A ) else if ( A ? B ) and ( B C ) then write ( B ) else write ( C ) endif endif 【结构化的程序设计】 ⑴严格控制GOTO语句 ⑵使用语言中有限的基本控制结构表示程序逻辑 顺序、选择、重复; 选用的控制结构只准许有一个入口和一个出口; 例2:二分法求方程 f (x)=0 在区间[a,b]中的根(假设在闭区间[a,b]上函数 f (x) 有唯一的一个零) 程序1 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) eps || abs (x1-x0) eps) goto finish; if ( f0 * fm 0 ) { x0 = xm; f0 = fm;} else x1 = xm; } finish:printf (xm); } 程序2 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) eps || abs (x1-x0) eps) break; if ( f0 * fm 0 ) { x0 = xm; f0 = fm;} else x1 = xm; } printf (xm); } 程序3 f0 = f (a); f1 = f (b); if ( f0 * f1 = 0 ) { x0 = a; x1 = b;i = 1;finished = 0; while ( i = n 0 == finished){ xm = ( x0+x1 ) / 2; fm = f (xm); if ( abs (fm) eps || abs (x1-x0) eps) finished = 1; if ( 0 == finished) { if ( f0 * fm 0 ) { x0 = xm; f0 = fm;} else x1 = xm; } } printf (); } 2.自顶向下,逐步求精的原则 在详细设计和编码阶段,应当采取自顶向下,逐步求精的方法。 把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成
显示全部