版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,程序编码,结构化编程风格程序效率程序复杂性度量,程序编码是软件工程过程的一个步骤,是设计的延续。编程语言的特性和编程风格会严重影响软件的质量和可服务性。为了确保程序编码的质量,程序员必须深刻理解和熟练掌握程序语言的特性,并正确应用。另外,源程序的结构性好,编程风格好。结构化编程,结构化编程主要强调(1)编写程序时使用一些基本控制结构,结合嵌套形成程序的控制结构。尽量避免使用GOTO语句。(2)在编程过程中,尽量应用自上而下式和渐进精细化的原理,从粗到细致。结构化编程的主要原理是使用有限的基本控制结构(如语言的顺序、选择、迭代等)表示程序逻辑。可选控制结构只允许一个入口和一个出口。程序语句构成
2、了易于识别的块,每个块只有一个入口和一个出口。复杂的结构必须作为组合成基本控制结构的嵌套实现。不在语言中的控制结构可以使用等效的程序段模拟,但程序段在整个系统中必须一致。严格控制GOTO语句,仅在使用非结构化编程语言实现结构化结构时可用。如果不使用GOTO语句,程序功能将变得模糊。在某些情况下,可以在不损害程序可读性的情况下提高程序可读性。示例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;
3、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.在b的根上找到f (x)0方程的二分法的过程,封闭部分a.假设b的函数f (x)有唯一的0,则F0=f(a);f1=f(b);/程序1 if(F0 * f1 0)x0=XM;F0=fm;Else x1=xm;finish:printf(“n the root of this equation is % dn”,XM);单个入口,2出口正常出口是n次循环,非正常出口是到标签清除位置的循环中间控制移动,易于
4、阅读。F0=f(a);f1=f(b);/程序2 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(x1x 0)EPS)break;/异常出口if(F0 * fm0)x0=XM;F0=fm;Else x1=xm;F0=f(a);f1=f(b);/程序3 if(F0 * f1=0)x0=a;x1=b;I=1;finished=0;While (i=n由AIAI编写;下1ai;这样把一个句子分成两个句子,会产生意想不到的问题。7 .简单优化编译程序。8.如果可能,请使用库函数
5、。9 .避免不必要的转移。同时,如果可以保持程序的可读性,就不必使用GO TO语句。例如if(x y)GOTO 30 if(y z)GOTO 50 smallz GOTO 70 30 if(x z)GOTO 60 smallz GOTO 70 50 smally GOTO 70 60 smallx 70 continue,s10.仅使用三种可能的基本控制结构编写程序。除了顺序结构外,还使用IF-THEN-ELSE实现选择结构。要实现循环结构,请使用DO-UNTIL或DO-WHILE。11。不要使用空的ELSE语句和IF THEN IF语句。这种结构容易引起读者的误解。例如,if(chara)t
6、hen if(charz)then PRINT“This is a letter”,ELSE PRINT“This is not a letter”会引起异议性问题。12 .避免使用太复杂的条件测试。13.最小化使用“傅晶”条件的条件语句。例如,如果程序将IF NOT(char 0)OR(char 9)THEN更改为IF (CHAR0) AND (CHAR9) THEN,请不要让读者环绕。14 .用尽可能容易理解的伪代码描述程序的流程,然后翻译成应该使用的语言。15.数据结构应该有助于程序的简化。16.为了使模块功能尽可能统一,模块之间的组合清晰可见。17.利用信息隐藏确保每个模块的独立性。1
7、8.从数据构建程序。19.不要修补不好的程序,重写。不要盲目追求代码的重复使用,要重组。20.对于太大的程序,需要逐块写入、测试,然后重新集成。21.对递归定义的数据结构尽可能使用递归过程。输入和输出以及输入和输出信息与用户的使用直接相关。输入和输出方法和格式应尽可能方便地使用。应避免由于设计不当而给用户带来的问题。因此,在软件要求分析阶段和设计阶段,必须基本确定输入和输出样式。有时,系统是否同意取决于输入和输出样式。无论是批处理的输入和输出方式还是交互式输入和输出方式,在设计和程序编码时都必须考虑以下原则:1.检查所有输入数据并标识无效输入,以确保每个数据的有效性。2.确认输入要素的各种重要
8、组合的合理性,并在必要时报告输入状态信息。3.尽可能简化输入的步骤和操作,并保持简单的输入格式。4 .输入数据时,必须允许自由格式输入。必须允许默认值。6.输入数据批时,Oracle建议用户使用结束输入标志,而不是指定输入数据的数量。7.交互输入时,在屏幕上使用提示明确指示交叉输入请求,以指明可选项目的种类和值范围。您还必须在数据录入流程和输入结束时在屏幕上提供状态信息。8 .如果编程语言对输入和输出格式有严格的要求,那么必须保持输入格式和输入语句的要求一致。9.注释所有输出并设计输出报告格式。输入和输出样式受许多其他因素的影响。输入和输出设备(例如端子的类型、图形设备、数字转换设备等)、用户
9、的熟练程度、通信环境等。程序复杂性度量,程序复杂性主要表示模块中的程序复杂性。这直接关系到软件开发成本的多少和开发周期的长度,以及软件内部潜在错误的数量。降低程序复杂性可以提高软件的简易性和可理解性,降低软件开发成本,缩短开发周期,减少软件内部隐藏的错误。复杂性度量必须满足的假设,衡量程序复杂性的要求:可用于计算所有程序的复杂性;对于长度动态增加的程序或原则上不能错误放置的程序等不合理的程序,将渡边杏用于计算复杂性。程序中的命令栏数、额外存储容量和计算时间的增加不会降低程序的复杂性。代码行测量方法、源代码行数测量基于两个前提,即随着程序规模的增加,程序复杂性不成比例地增加。控制程序规模的方法最
10、好采用分割和管理方法。将一个大程序分解成几个简单易懂的程序段。该方法的基本考虑是计算一个程序模块的源代码行数,并使用源代码行数作为程序复杂性的度量。将每行代码的错误率设置为每100行源代码可能的错误数。Thayer指出,程序错误率的估计范围为0.047。也就是说,每个源程序100行可能有0.047个错误。还指出,每行代码的错误率和源代码行数之间没有简单的线性关系。,Lipow指出,对于applet,每行代码的错误率为1.31.8。对于大型程序,每行代码的错误率增加到2.73.2,只考虑程序的执行部分,不包括程序的说明部分。Lipow和其他研究人员得出结论,对于语句少于100条的applet,源
11、代码行数与错误率线性相关。随着程序的增加,错误发生率以非线性方式增加。McCabe测量方法也称为McCabe测量、循环复杂性测量,是基于程序控制流的复杂性测量方法。由于基于程序模块的程序图中的道路数,因此先打印程序打印。流程图是降级的流程图。流程图中的每个过程都转换为一个节点,流线胡歌连接其他节点的转向。程序图仅说明程序内部的控制过程,完全不表示数据的特定操作以及分支和循环的特定条件。计算循环复杂度的方法:根据图论,在强连接的直接图g中,通过以下公式给出循环数:V(G)mnp其中V(G)是直接图形G的中心道路数,m是图形G的圆弧数,n是图形G的节点数,p是图形G的强连接分量数。Myers建议对
12、复合决定做出三个决定,例如(A0)(CD)(XA)。要使图形成为强连接图,请添加从图形的入口点到出口点的虚线垂直边,使图形成为强连接图。这样,您可以使用顶面计算回路复杂性。示例中的节点数为n11,圆弧数为M13,P1为v (g) mnp1113。等于程序图中圆弧封闭的区域数。一些说明是循环复杂性取决于程序控制结构的复杂性。随着进程的分支或周期数的增加,复杂性也增加。回路复杂性与程序中应用的路径栏数有关。回路复杂性是可以添加的。例如,如果模块a的复杂性为3,模块b的复杂性为4,则模块a和模块b的复杂性为7。McCabe建议将复杂程度超过10的程序分为几个较小的程序,以减少程序中的错误。沃尔什举例证明了这个建议的正确性。McCabe复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年区块链安全审计物流行业应用
- 烟花爆竹经营单位安全管理人员考试题及答案
- 计算机控制技术教学课件(共9章)ch08控制技术中的计算机系统11
- 《金融科技概论》-教学教案
- 小学语文教师选调进城考试试题(附答案)
- 小学信息技术教师业务考试试题及答案(参考)
- 充电桩生产建设项目可行性研究报告
- 西方经济学简明原理期末考试题库及答案-生产与成本
- 物业工程维修部试题及答案
- 2026年投融资专员招录综合试题题库
- GB/T 25085.6-2026道路车辆汽车电缆第6部分:交流600 V或直流900 V和交流1 000 V或直流1 500 V单芯铝导体电缆的尺寸和要求
- 2025年(第三届)电力行业智能巡检技术大会:变电室内简易机器人技术探索与实践
- 2025年数控车工职业技能鉴定考试(高级技师一级)历年题库及答案
- 2025年医保知识考试题库及答案:医保信息化建设应用试题及答案
- CFG桩复合地基承载力及变形计算表
- 合同审核检查表风险点提醒及审查流程模板
- 2025北京市交通发展年度报告
- 信用卡部培训大纲
- 代建公司代建管理制度
- 滚针美容治疗技术解析
- 2025黑龙江七台河辰能生物质发电有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论