第十三章程序相关设计语言和编码_第1页
第十三章程序相关设计语言和编码_第2页
第十三章程序相关设计语言和编码_第3页
第十三章程序相关设计语言和编码_第4页
第十三章程序相关设计语言和编码_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十三章程序相关设计语言和编码软件工程编码阶段的任务是将详细设计翻译成计算机可以“理解”并且最终可运行的代码。编码的过程就是把详细设计翻译成可执行代码的过程,也是人借助编程语言与计算机通信的过程。相对于软件生命周期的其他阶段,编码耗费较少。程序设计语言的分类大体上,程序设计语言分为以下几类:(1)机器语言(2)汇编语言(3)高级语言由于高级语言种类繁多,我们可以从应用特点、语言内在特点和对客观系统的描述三个不同的角度来对高级语言进行分类。程序设计语言1.机器语言(MachineLanguage) 机器语言,是一种用二进制代码表示的低级语言,是计算机直接使用的指令代码。机器语言没有通用性、不能移植、因机器而异,因为处理机不同指令系统就不同。用机器语言编写程序,都采用二进制代码形式,且所有的地址分配都以绝对地址的形式处理,存储空间的安排、寄存器、变址的使用也都由程序员自己计划。2.汇编语言(AssembleLanguage) 汇编语言,是一种使用助记符表示的低级语言。某一种汇编语言也是专门为某种特定的计算机系统而设计的。用汇编语言写成的程序,需经汇编程序翻译成机器语言程序才能执行。 汇编语言中的每条符号指令都与相应的机器指令有对应关系,同时又增加了一些诸如宏、符号地址等功能。虽然这种语言的命令比机器语言好记,但它并没有改变机器语言功能弱、指令少、繁琐、易出错、不能移植等的缺点。3.高级语言(HighlevelLanguage) 高级语言是面向用户的、基本上独立于计算机种类和结构的语言。高级语言最大的优点是:形式上接近于算术语言和自然语言,概念上又接近于人们通常使用的概念。高级语言的一个命令可以代替几条、几十条甚至几百条汇编语言的指令,因此,高级语言易学易用,通用性强且应用广泛。4.第四代语言(FourthGenerationlanguage,简称4GL) 第四代语言(4GL)的出现,将语言的抽象层次又提高到一个新的高度。第四代语言虽然也用不同的文法表示程序结构和数据结构,但第四代语言是在更高一级抽象的层次上表示这些结构。用第四代语言编码时只需说明“做什么”,而不需描述算法细节。(1)基础语言(例:FORTRAN,BASIC,COBOL和ALGOL)(2)结构化语言(例:ALGOL,PL/1,PASCAL,C,Ada)(3)专用语言(例:APL,LISP,PROLOG,BLISS,FORTH)1、从应用特点的角度来分(1)系统实现语言(例:C语言)(2)静态高级语言(例:FORTRAN、COBOL)(3)块结构高级语言(例:PASCAL,ALGOL)(4)动态高级语言2、从语言内在特点的角度来分(2)面向对象语言对象+消息(1)面向过程语言数据结构+算法3、从描述客观系统的角度来分例:Delphi、VisualBasic、JAVA、C++。二、程序设计语言的特点

1.名字说明

2.类型说明

3.初始化

4.程序对象的局部性

5.程序模块

6.循环控制结构

7.分支控制给构

8.异常处理

9.独立编译

三、程序设计语言的选择

程序设计语言的选择常从以下几个方面考虑: (1)项目的应用领域

(2)算法与计算的复杂性

(3)数据结构的复杂性

(4)效率

(5)可移植性

(6)程序设计人员的水平

(7)构造系统的模式编码风格

编码风格实际上是一种编码原则。从20世纪70年代以来,编码的目标从强调效率转变到强调清晰。与此相应,编码风格也从追求“聪明”和“技巧”,变为提倡“简明”和“直接”。人们逐渐认识到,良好的编码风格能在一定程度上弥补程序设计语言存在的缺点。反之,如果不注意编码风格,即使使用了结构化的现代语言,也很难写出高质量的程序。一、代码文档化:指编码时适当选择标识符的名字、适当安排注释和注重程序的整个组织形式。二、数据说明:程序或模块在其可执行部分的前面都集中了一些说明语句,出于阅读理解和维护的要求,最好使其规范化,使说明的先后次序固定。三、语句构造:每条语句都应当简单而直接,同时也不应为了追求运行效率而使代码复杂化,这样会减低程序的可读性。四、输入/输出:源程序的输入输出风格必须满足运行工程学的需要。通常,效率主要指占用处理机时间和主存区域两个方面。好的编码可以提高效率,在我们进一步讨论这个问题之前,应该记住三条原则:第一、效率是一个性能要求,因而应该在需求分析阶段确定代码效率方面的要求;第二、通过好的设计可以提高效率;第三、程序的效率和程序的简明程度是一致的,不应该为了提高代码效率而牺牲程序的清晰性和可读性。效率一、代码效率

(1)应先简化算术和逻辑的表达式。

(2)仔细研究嵌套的循环,以确定是否有语句可以从内层往外移。

(3)尽量避免使用多维数组。

(4)尽量避免使用指针和复杂的列表。

(5)使用执行时间短的算术运算。

(6)即使语言允许,一般也不要采用混合数据类型。

(7)尽量使用整数表达式和布尔表达式。二、存储器效率 采用结构化程序设计,将程序功能合理分块,使每个模块或一组密切相关模块的程序体积大小与每页的容量相匹配,可减少页面调度、减少内外存交换,提高存储器效率。 在微型计算机系统中,存储器的容量对软件设计和编码的制约比较大。因此要选择可生成较短目标代码且存储压缩性能优良的编译程序,有时需要采用汇编语言编程。三、输入/输出的效率(1)所有输入/输出都应该有缓冲,以减少过多的通信次数。

(2)对辅存(如磁盘),应选用最简单的访问方法。

(3)辅存的输入/输出,应该以块为单位进行。

(4)终端和打印机的输入/输出,应当考虑设备的特性,以提高输入/输出的质量和速度。

(5)不应当采用不能被人们所理解的超高效的输入/输出。程序内部的文档包括:恰当的标识符(变量和标号)的名字;适当的注释;程序的视觉组织。程序内部的文档标识符包括模块名、变量名、常量名、标号名、子程序名以及数据区名、缓冲区名等。这些名字的选取应含义鲜明,能正确地提示程序对象所代表的实体。这对于帮助阅读者理解程序是很重要的。例如,表示次数用times,表示总量用total等。名字的长度不应限制,但也不宜过长,太长了容易出错,应选择精炼且意义明确的名字,这样才能简化程序语句,改善对程序功能的理解。如果名字使用缩写,那么缩写规则应该一致,并且应该给每个名字加上注解,以方便阅读。1、标识符的命名程序的注释分为两种:序言性注释和功能性注释。2、程序的注释序言性注释通常安排在每个程序模块的起始部分,它是对程序的整体说明,对于理解程序本身具有引导作用。其格式如下:有关本模块功能说明;主要算法;接口描述:包括调用形式,参数描述以及子模块清单;有关数据描述:包括重要的变量及其用途、约束或限制条件,以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:包括模块设计者姓名,复审人姓名,复审日期,修改日期及有关说明等。功能性注释嵌入在源程序体内,用以描述其后的语句或程序段的处理功能。书写功能性注释,要注意以下几点:描述的对象是一段程序,而不是每一个语句;适当使用缩进和空行,使程序与注释容易区别;注释一定要准确。不精确的甚至是错误的注释不仅对理解程序毫无帮助,反而会妨碍对程序的理解。PrivateSubForm_Load()DimtxtSQLAsStringDimMsgTextAsStringDimiAsInteger

comboSex.AddItem"男"comboSex.AddItem"女"txtSQL="select*frommanrecord"Setmrc=ExecuteSQL(txtSQL,MsgText)'添加内容到列表框

Nexti'关闭数据对象

EndSub程序中代码的布局对于程序的可读性也有很大影响。适当的利用空格、空行和移行能使程序的逻辑结构更加清晰。空格的合理应用还可以突出运算的优先性,避免发生运算的错误。3、程序的视觉组织Fori=0To1cboYear(i).ListIndex=0Nexti

Fori=0To1Forj=1To12cboMonth(i).AddItemjNextjNextiFori=0To1cboMonth(i).Text=Month(Now())NextiElsecmdCX.Enabled=FalseEndIf为了使数据更容易理解和维护,应遵循一些简单的原则:(1)数据说明的次序应当规范化。(2)当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。(3)如果设计时使用了一个复杂的数据结构,则应注解说明用程序设计语言实现这个数据结构的方法和特点。数据说明语句构造应遵循的原则是:每条语句应该简单而直接,不应为了片面追求效率而使代码变得过于复杂。语句构造人们在长期的实践中总结了以下一些规则:不要为了节省空间而把多个语句写在同一行;用空格或可读的符号使语句的内容更加清晰;尽量避免复杂的条件测试;尽量避免使用“非”条件的条件语句;避免过多使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观;尽可能使用库函数;让编译程序作简单的优化。在设计和程序编码时,应考虑输入和输出风格原则:对所有输入数据都进行校验,以保证每个数据的有效性;检查重要的输入项组合的合法性;使得输入的步骤和操作尽可能简单,并保持简单的输入格式;输入一批数据时,使用输入结束指示符,不要要求用户说明输入项数;在以交互式输入/输出方式进行输入时,要指明可以使用的选择值或界限值;应允许缺省值;当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求一致;给所有的输出加注释,并设计输出报表格式。输入/输出为了提高编码的效率,保证程序的可靠性,我们经常使用一些编码工具。首先要用的当然是编辑工具了。选用合适的编辑工具可以大大方便编程,提高效率。编译程序的好坏也会影响编码的效率。一方面,好的编译程序应该是程序员的好助手,能够帮助程序员及时准确地诊断出程序中的差错,减少程序开发的成本。另一方面,编译程序还应该能够生成高效率的机器代码,也就是代码优化。编码工具现在的软件系统往往是集体开发,一个大的软件系统往往包含许多模块,这些不同的模块可能分散在几个不同的文件或库里。为了得到最终的可执行代码,必须先将各个模块进行分别编译,然后再进行连接。由于模块的数量很多,而且这些模块往往都是相互影响和制约的,如果某个模块的源代码改变了,那么受此模块影响的所有其它模块都必须进行再编译、再连接。我们可以借助一些工具来完成这项工作。如UNIX的MAKE工具。利用MAKE程序能保持模块间的协调关系。程序员将程序不同模块之间的依赖关系以及更新模块时必须进行的操作告诉MAKE程序,这样,MAKE程序就能够自动检索出那些“过时”了的,需要进行再编译的模块,并对所发现的过时模块执行说明信息中规定的更新操作,从而使目标文件永远保持最新的版本。面向对象程序设计语言的特点

面向对象语言支持面向对象的概念,如封装、继承、多态、将数据抽象化等特点。如C++中一般用类来实现封装;Java的类有层次之分,子类继承父类的属性和方法,重用性较好。大多数面向对象语言都提供一个实用的类库。某些语言本身并没有规定提供什么样的类库,而是由实现这种语言的编译系统自行提供类库。

面向对象程序设计过程(1)选择编程语言:选择一种合适的面向对象的编程语言

(2)编码:用选定语言编码实现软件设计步骤所得到的公式、图表、说明和规则等软件系统各对象类的详尽描述。(3)集成:将编写好的各个类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论