版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5 5章章 编码编码 主要内容主要内容 1、选择程序设计语言、选择程序设计语言 2、程序设计风格、程序设计风格 3、程序复杂性度量、程序复杂性度量 3 编码编码 编码就是把软件设计结果翻译成用某种程序设编码就是把软件设计结果翻译成用某种程序设 计语言书写的程序。计语言书写的程序。 1 1、选择程序设计语言选择程序设计语言 程序设计语言是人和计算机通信的最基本的工程序设计语言是人和计算机通信的最基本的工 具,它的特点必然会影响人的思维和解题方式,会具,它的特点必然会影响人的思维和解题方式,会 影响人和计算机通信的方式和质量,也会影响其他影响人和计算机通信的方式和质量,也会影响其他 人阅读和理
2、解程序的难易程度。因此,编码之前的人阅读和理解程序的难易程度。因此,编码之前的 一项重要工作就是选择一种适当的程序设计语言。一项重要工作就是选择一种适当的程序设计语言。 4 5.1 5.1 选择程序设计语言的主要实用标准选择程序设计语言的主要实用标准 (1) (1) 系统用户的要求。系统用户的要求。 (2) (2) 可以使用的编译程序。可以使用的编译程序。 (3) (3) 可以得到的软件工具。可以得到的软件工具。 (4) (4) 工程规模。工程规模。 (5) (5) 程序员的知识。程序员的知识。 (6) (6) 软件可移植性要求。软件可移植性要求。 (7) (7) 软件的应用领域。软件的应用领
3、域。 功能齐全,能够达到用户的使用要求。功能齐全,能够达到用户的使用要求。 性能及可靠性高,运行安全高效,各项指标优良。性能及可靠性高,运行安全高效,各项指标优良。 结构简单、容易理解和使用。结构简单、容易理解和使用。 易于维护、修改和扩展升级。易于维护、修改和扩展升级。 界面易于操作,使用便捷。界面易于操作,使用便捷。 易移植性及兼容性好。易移植性及兼容性好。 可重用性强,有利于软件更新。可重用性强,有利于软件更新。 公认的好程序具有公认的好程序具有7个特性个特性 6 5.2 5.2 程序设计风格程序设计风格 程序实际上也是一种供人阅读的文章,有程序实际上也是一种供人阅读的文章,有 一个一个
4、文章的风格文章的风格问题。应该使程序具有良问题。应该使程序具有良 好的风格。好的风格。 源程序文档化源程序文档化 数据说明数据说明 语句结构语句结构 输入输出方法输入输出方法 程序效率程序效率 7 源程序文档化源程序文档化 8 符号名的命名符号名的命名 符号名即标识符,包括符号名即标识符,包括模块名、变量名、常量名、模块名、变量名、常量名、 标号名、子程序名、标号名、子程序名、 、数据区名、数据区名以及以及缓冲区名缓冲区名等。等。 这些名字应能反映它所代表的实际东西,这些名字应能反映它所代表的实际东西,应有一定应有一定 实际意义。实际意义。例如,表示次数的量用例如,表示次数的量用TimesTi
5、mes,表示总量,表示总量 的用的用TotalTotal,表示平均值的用,表示平均值的用AverageAverage,表示和的量,表示和的量 用用SumSum等。等。 名字不是越长越好名字不是越长越好,应当选择精炼的意义明确的名,应当选择精炼的意义明确的名 字。字。必要时可使用缩写名字必要时可使用缩写名字,但这时要注意缩写规,但这时要注意缩写规 则要一致,并且要则要一致,并且要给每一个名字加注释给每一个名字加注释。同时,在。同时,在 一个程序中,一个变量只应用于一种用途。一个程序中,一个变量只应用于一种用途。 9 程序的注释程序的注释 夹在程序中的注释是程序员与夹在程序中的注释是程序员与日后日
6、后的程序的程序 读者之间读者之间通信的重要手段通信的重要手段。 注释注释决不是可有可无决不是可有可无的。的。 一些正规的程序文本中,注释行的数量占一些正规的程序文本中,注释行的数量占 到整个源程序的到整个源程序的1/51/5到到1/31/3,甚至更多。,甚至更多。 注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释。 10 序言性注释序言性注释 通常置于每个程序模块的开头部分,通常置于每个程序模块的开头部分,它应当给出程序的整体它应当给出程序的整体 说明说明,对于理解程序本身具有引导作用。,对于理解程序本身具有引导作用。 序言性注释包括:序言性注释包括: 程序标题程序标题; 有关本模
7、块有关本模块功能和目的功能和目的的的说明说明; 主要算法主要算法; 接口说明接口说明:包括调用形式,参数描述,子程序清单;:包括调用形式,参数描述,子程序清单; 有关数据描述有关数据描述:重要的变量及其用途,约束或限制条件,:重要的变量及其用途,约束或限制条件, 以及其它有关信息;以及其它有关信息; 模块位置模块位置:在哪一个源文件中,或隶属于哪一个软件包;:在哪一个源文件中,或隶属于哪一个软件包; 开发简历开发简历:模块设计者,复审者,复审日期,修改日期:模块设计者,复审者,复审日期,修改日期 及有关说明等。及有关说明等。 11 功能性注释功能性注释 功能性注释嵌在源程序体中,用以描述其后的
8、语句或程序功能性注释嵌在源程序体中,用以描述其后的语句或程序 段是在做什么工作,或是执行了下面的语句会怎么样,而段是在做什么工作,或是执行了下面的语句会怎么样,而 不要解释下面怎么做。不要解释下面怎么做。 例如,例如, / /* * ADD AMOUNT TO TOTAL ADD AMOUNT TO TOTAL * */ / TOTAL = AMOUNT TOTAL = AMOUNTTOTALTOTAL 上面注视不清楚,如果注明把月销售额计入年度总额,上面注视不清楚,如果注明把月销售额计入年度总额, 便使读者理解了下面语句的意图:便使读者理解了下面语句的意图: / /* * ADD MONTH
9、LY-SALES TO ANNUAL-TOTAL ADD MONTHLY-SALES TO ANNUAL-TOTAL * */ / TOTAL = AMOUNT TOTAL = AMOUNTTOTALTOTAL 要点要点 描述一段程序,而不是每一个语句;描述一段程序,而不是每一个语句; 用缩进和空行,使程序与注释容易区别;用缩进和空行,使程序与注释容易区别; 注释要正确。注释要正确。 12 视觉组织视觉组织 空格、空行和移行空格、空行和移行 恰当地利用恰当地利用空格空格,可以,可以突出运算的突出运算的 优先性优先性,避免发生运算的错误。例,避免发生运算的错误。例 如如 ,将表达式,将表达式 (
10、 (A A17)17)ANDNOTANDNOT( (B B49)49)ORCORC 写成写成 ( (A A17) 17) AND NOTAND NOT ( (B B49) 49) OR COR C 自然的程序段之间可用自然的程序段之间可用空行空行隔开;隔开; 移行移行也叫做也叫做向右缩格向右缩格。它是指程序。它是指程序 中的各行不必都在左端对齐,都从中的各行不必都在左端对齐,都从 第一格起排列。这样做使程序完全第一格起排列。这样做使程序完全 分不清层次关系。分不清层次关系。 对于对于选择语句选择语句和和循环语句循环语句,把其中,把其中 的程序段语句向右做的程序段语句向右做阶梯式移行阶梯式移行。
11、 使程序的逻辑结构更加清晰。使程序的逻辑结构更加清晰。 13 (2) (2) 数据说明数据说明 在设计阶段已经确定了数据结构的组织及其复杂性。在设计阶段已经确定了数据结构的组织及其复杂性。 在编写程序时,则在编写程序时,则需要注意数据说明的风格需要注意数据说明的风格。 14 数据说明的次序应该标准化。数据说明的次序应该标准化。有次序易查阅,能加速测试、调试和维护有次序易查阅,能加速测试、调试和维护 的过程。的过程。 例如:数据说明例如:数据说明 数据类型说明数据类型说明 常量说明常量说明 简单变量类型说明简单变量类型说明 数组说明数组说明 公用数据块说明公用数据块说明 所有的文件说明所有的文件
12、说明 b b. . 当当多个变量名多个变量名在一个语句中说明时,在一个语句中说明时,应该按字母顺序排列应该按字母顺序排列这些变量。这些变量。 例如,把例如,把 integer size, length, width, cost, price 写成写成 c. c. 如果设计时使用了一个如果设计时使用了一个复杂的数据结构复杂的数据结构,则,则应该用注解说明应该用注解说明用程序设计用程序设计 语言实现这个数据结构的方法和特点。语言实现这个数据结构的方法和特点。 整型量说明整型量说明 实型量说明实型量说明 字符量说明字符量说明 逻辑量说明逻辑量说明 数据说明数据说明 15 (3 3)语句构造)语句构造
13、 构造语句时应该遵循的构造语句时应该遵循的原则原则是,每个是,每个 语句都应该语句都应该简单而直接简单而直接,不能为了提高,不能为了提高 效率而使程序变得过分复杂;也效率而使程序变得过分复杂;也 下述规则有助于使语句简单明了:下述规则有助于使语句简单明了: 不要为了节省空间而把多个语句写在同一行;不要为了节省空间而把多个语句写在同一行; 尽量避免复杂的条件测试;尽量避免复杂的条件测试; 尽量减少对尽量减少对“非非”条件的测试;条件的测试; if ( !( char0 | char 9 ) ) 改成改成 if ( char = 0 I=1; Total.input=total.valid=0;
14、Sum=0; Do while valueI-999 and total.input=minimum and valueI0 Then averagy=sum/total.valid; Else averagy=-999; Endif End averagy 程序的环形复杂度取决于程序控制流的复杂程度, 也即是取决于程序结构的复杂程度。 McCabe研究大量程序后发现,环形复杂度高的程 序往往是最困难、最容易出问题的程序。 模块规模以V(G)10为宜,也就是说,V(G)=10是模 块规模的一个更科学更精确的上限。 环形复杂度用途环形复杂度用途 Halstead方法是另一个著名的方法,它根据 程
15、序中运算符和操作数的总数来度量程序的复 杂程度。 令N1为程序中运算符出现的总次数,N2为操 作数出现的总次数,程序长度N定义为: N=N1+N2 5.3.2 Halstead方法方法(I) HalsteadHalstead给出预测程序长度的公式如下:给出预测程序长度的公式如下:H=n1 H=n1 loglog2 2 n1+n2 log n1+n2 log2 2 n2 n2 不同运算符不同运算符( (包括关键字包括关键字) )的个数的个数n1n1, 不同操作数不同操作数( (变量和常数变量和常数) )的个数的个数n2n2。 预测程序中包含错误的个数的公式如下:预测程序中包含错误的个数的公式如下
16、:E=N logE=N log2 2 (n1+n2)/3000(n1+n2)/3000 5.3.2 Halstead方法方法(II) 5.3.2 Halstead方法(III) SUBROUTINE SORT ( X, N ) DIMENSION X( N ) IF ( N .LT. 2 ) RETURN DO 20 I=2, N DO 10 J=1, I IF ( X(I) .GE. X(J) ) GO TO 10 SAVE = X(I) X(I) = X(J) X(J) = SAVE 10 CONTINUE 20 CONTINUE RETURN END 5.3.2 Halstead方法方法(IV) 运算符运算符 计数计数 运算对象运算对象 计数计数 可执行语句结束可执行语句结束 7 X 6 数组下标数组下标 6 I 5 5 J 4 IF( ) 2 N 2 DO 2 2 2 , 2 SAVE 2 程序结束程序结束 1 1 1 .LT. 1 N N17 N222 .GE. 1 GO TO 10 1 n1=10 n228 5.3.2 Halstead方法方法(V) 对于上面的例子,利用n1,N1,n2,N2, 可以计算得 H = 10 log210+7 log27 = 52.87 N = 28+22 = 50 E=N log2 (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 师生交流促进方案
- 新进厂职工安全培训试题带答案(新)
- 新版车间安全培训试题含答案【研优卷】
- 展览馆防火门安全施工方案
- 劳务合同法律培训
- 餐饮服务员培训课件
- 2019年短视频行业发展趋势报告
- 现制茶饮行业研究报告
- 传承革命精神的青少年夏令营方案
- 浅析保险合同中的格式条款
- 2024人教版道德与法治三年级上册第四单元:家是最温暖的地方大单元整体教学设计
- 房子两年后过户协议书模板
- 毕业研究生登记表(适用于江苏省)
- 北师大版小学数学二年级上册期中试卷含参考答案
- 1.1地球的自转和公转(第一课时)
- 1.1《坚持改革开放》课件3
- 2024年全国中级会计职称之中级会计财务管理考试历年考试题详细参考解析
- 2024年新发传染病或流行病的防控知识试题及答案
- 新能源公司绩效考核方案
- 桁架吊装验收要求
- 古建筑测绘智慧树知到期末考试答案章节答案2024年长安大学
评论
0/150
提交评论