软件工程ppt课件_第1页
软件工程ppt课件_第2页
软件工程ppt课件_第3页
软件工程ppt课件_第4页
软件工程ppt课件_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

.,软件工程,第12章程序设计语言和编码,2,.,编码阶段的任务是把详细设计的结果翻译成计算机可以“理解”的形式用程序设计语言编写的程序。程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性。程序经常需要被人阅读和理解:读程序是发现错误、修改功能的有效手段;读程序是软件开发工作中的一个重要组成部分;读程序的时间一般多于写程序的时间。一个逻辑上正确但杂乱无章的程序是没有什么价值的,因为它无法供人阅读,所以难以测试、排错和维护。,3,.,内容摘要,10.1程序设计语言程序设计风格,4,.,程序设计语言的要素,字符集(大多使用ASCII字符集)词汇:保留词运算符分隔符标识符语法:词法和句法语义:,(C语言的保留词),5,.,程序设计语言的4种基本成分,数据成分:用于描述程序所涉及的对象数据运算成分:用以描述程序中所包含的运算(算术运算、逻辑运算、字符串运算等)控制成分:用以控制程序中所含语句的执行顺序传输成分:用以描述程序中的数据传输操作,6,.,程序语言中的数据成分,数据是客观事物在计算机内的(格式化)表示,是程序所操作和处理的对象程序中的数据通常应该先说明、后使用数据说明的内容包括:变量还是常量它们的标识符(符号表示)它们的数据类型,例:C语言中的数据类型,7,.,什么是数据类型(datatype)?,数据类型:用于刻画数据的特性数据的取值范围和允许对它进行哪些操作C语言通常支持下列基本数据类型:,(基本数据类型是大部分CPU能直接支持的数据类型,也称为内部类型,是不可分解的),8,.,复合数据类型,通过类型构造符把1个或多个更简单的类型复合而成的数据类型常见的复合数据类型有:数组(含:字符数组字符串)结构(记录)指针集合枚举联合(变体记录)程序员定义的其它数据类型(定制类型)数据类型的概念在各种程序设计语言中几乎都有,目的是实现信息的隐蔽,将程序员不必了解的细节都封装在数据类型中例如使用浮点数类型时,可不必了解浮点数在CPU中如何表示,如何完成运算,只需了解其数学特性即可,9,.,算术运算符:+-*/%+-关系运算符:=!=逻辑运算符:!elseB实现条件选择结构for(P1;P2;P3)A实现重复结构while(P)A实现重复结构doAwhile(P)实现重复结构switch实现条件选择结构gotoreturncontinuebreak,12,.,例1两数求和(C语言程序),/*example1.1calculatethesumofaandb*/#include/*Thisisthemainprogram*/main()inta,b,sum;a=10;b=24;sum=a+b;printf(”sum=%dn,sum);,运算语句,注释,赋值语句,数据类型说明,输出语句,13,.,例2找两数中较大的数,14,.,程序设计语言的翻译程序,把甲语言编写的程序翻译为等价的乙语言编写的程序。其中甲语言程序称为源程序,乙语言程序称为目标程序,常用的有下列几种:,15,.,编译程序与解释程序的区别,解释:解释器直接解释并且执行源语言程序,不产生目标程序(相当于“口译”)编译:把源程序编译为机器语言目标程序后,再由计算机运行(相当于“笔译”),BASIC、VisualBasic、VBScript、Java、JavaScript等都是解释执行的语言,C、C+等都是需要编译的语言,16,.,编译程序的处理过程,编译程序,链接程序,.c.h,.obj,.exe,1.编辑2.编译3.链接4.运行,17,.,程序设计语言的发展和分类,程序设计语言的分类按语言级别:低级语言和高级语言;按应用范围:通用语言和专用语言;按用户要求:过程式语言和非过程式语言;按语言所含的成分:顺序语言、并发语言和分布式语言,18,.,机器语言,机器语言就是计算机的指令系统指令是使用二进制编码表示的用机器语言编程序,也就是直接使用二进制代码编写程序优点:可以直接被计算机执行缺点:记不住、难理解、效率低、不易维护不同的机器语言程序,相互不兼容现在已不直接用机器语言编制程序!,19,.,例:机器语言程序,在MIPS计算机上求最大公约数(GCD)的机器程序(16进制表示),MISP计算机的每条机器指令均为32个二进位,用8个16进制数表示,20,.,汇编语言,用助记符号来表示机器指令中的操作符与操作数,优点:操作数可直接使用十进制程序相对容易理解,缺点:大型程序难以开发依赖于具体计算机,将383传送到AX寄存器将545传送到BX寄存器将BX内容加AX内容,结果在BX中将1055传送到AX寄存器将AX内容减BX内容,结果在AX寄存器中,对应的汇编语言程序,MOVAX,383MOVBX,545ADDBX,AXMOVAX,1055SUBAX,BX,汇编语言程序,21,.,高级程序设计语言,目的:克服汇编语言的缺陷,提高编程和维护的效率特点:接近人们日常使用的自然语言(主要是英语)容易理解、记忆和使用可在不同计算机上通用对使用的符号、词汇、语法和语义等各种语言成分都有严格规定意义:使程序设计的难度降低,导致了计算机的发展进入新的阶段,22,.,高级程序设计语言的发展,50年代:Fortran,ALGOL60年代:COBOL语言,BASIC语言70年代:Pascal语言,C语言80年代:Ada语言,PROLOG语言,LISP语言90年代起:面向对象语言C+、JAVA、C#等,23,.,程序设计语言的特性,心理特性从设计到编码基本上是人的活动,因此,语言的性能对程序员的心理影响将对转换产生重大影响程序员总希望选择简单易学、使用方便的语言,以减少程序出错率,提高软件可靠性,从而提高用户对软件质量的可信度,24,.,影响程序员心理的语言特性有:歧义性:对语句不同理解所产生的二义性将导致程序员对程序理解的混乱。如,ifC1thenS1ifC2thenS2elseS3x=a*b*c简洁性局部性和顺序性:人们习惯于按逻辑上线性的次序理解程序传统性:容易影响人们学习新语种的积极性,25,.,工程特性独立编译:独立编译意味着能分别编译各个程序单元,然后再把它们集成为一个完整的程序可移植性开发工具的可利用性:CASE工具可减少编码时间,提高代码质量软件的可重用性可维护性:包括可理解性、可测试性、可修改性,26,.,技术特性不同的程序设计语言满足不同的技术特性,可以对应于不同的应用。例如Prolog语言适用于人工智能领域、SQL语言适用于关系数据库。语言的技术特性对软件工程各阶段有一定的影响,特别是确定了软件需求之后,程序设计语言的特性就很重要了,要根据不同项目的特性选择相应特性的语言。支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护,27,.,程序设计语言的选择,为一个开发项目选择编程语言时,通常要考虑如下因素:应用领域软件开发的方法软件执行的环境算法和数据结构的复杂性软件开发人员的知识水平,28,.,项目所属的应用领域常常是首要的标准COBOL适用于商业领域C、FORTRAN适用于工程和科学计算领域Prolog、Lisp适用于人工智能领域汇编、Ada适用于实时处理领域操作系统、编译系统开发可用汇编、C、Pascal和AdaWindows应用开发可用C+、ObjectPascaleb应用的开发可用Java、#若有多种语言都适合于某项目的开发时,可考虑选择开发人员比较熟悉的语言,29,.,选择高级语言还是低级语言优先选择高级语言开发和维护高级语言程序比开发和维护低级语言程序容易得多必要时使用低级语言高级语言程序经编译后所产生的目标程序的功效要比完成相同功能的低级语言程序低得多,所以在有些情况下会部分或全部使用低级语言,30,.,内容摘要,程序设计语言10.2程序设计风格,31,.,程序设计风格,编程的依据是详细设计的结果,因此程序的质量主要取决于设计,但编程的质量也在很大程度上影响着程序的质量编程风格主要包括:源程序中的内部文档数据说明语句构造输入输出,32,.,一、源程序文档化,理解一个程序比编写一个程序的时间长得多!在源程序中包含一些内部文档,可以帮助阅读和理解源程序在源程序中的内部文档主要包括:标识符的命名注解程序的视觉组织,33,.,1、标识符的命名,选择含义明确的名字,使其能正确提示标识符所代表的实体如,总量的变量名用Total,平均值的用Average等名字不要太长,太长会增加打字量,且易出错。必要时可使用缩写不用相似的名字,否则容易混淆,不易发现错误如cm,cn,cmn,cnm,cnn,cmm不用关键字作标识符同一个名字不要有多个含义名字中避免使用易混淆的字符。如数字0与字母O;数字1与字母I或l;数字2与字母z等,34,.,2、程序的注释,注释是程序员与日后读者之间通信的重要工具,用自然语言或伪码描述。它说明了程序的功能,特别在维护阶段,对理解程序提供了明确指导。注解决不是可有可无的一些正规的程序文本中,注解行的数量约占整个源程序的1/3到1/2,甚至更多注解分为序言性注解和功能性注解,35,.,序言性注释,置于每个模块的起始部分,主要内容:说明每个模块的用途、功能。说明模块的接口:调用形式、参数描述及从属模块的清单。数据描述:重要数据的名称、用途、限制、约束及其他信息。开发历史:设计者、审阅者姓名及日期,修改说明及日期。,36,.,(*=;*Copyright(C)1994-1999MicrosoftCorporation.AllRightsReserved.*DirectXheaderversion98.11.20*PresentbyHiroyukiHori.*E-Mail:horiingjapan.ne.jp*Homepage:http:/www.ingjapan.ne.jp/hori/index.html*Homepage:http:/www.ingjapan.ne.jp/hori/index-e.html*Presentunit:*DirectX.pasDirectX7(DirectX7SDK)*DShow.pasDirectShow(DirectXMediaSDK5.1)*DAnim.pasDirectAnimation(DirectXMediaSDK5.1)*-*DirectMusicheaderversion1.0*PresentbyKazuyaYamane*e-mail:kazuya-yinfosakyu.ne.jp*URL:sakyu.ne.jp/kazuya-y/index.html*),序言性注释例,37,.,功能性注释,嵌入在源程序内部,说明程序段或语句的功能以及数据的状态。注意以下几点:注解要正确,错误的注解比没有注解更坏;为程序段作注解,没必要为每一个语句作注解;用空行、缩格或括号,以便区分注释和程序注解应提供一些从程序本身难以得到的信息,而不是语句的重复。修改程序也应同时修改注释。,38,.,例如:/*ADDAMOUNTTOTOTAL*/TOTAL=AMOUNT+TOTAL此注释只是重复了后面的语句,对于理解它的工作没有什么作用;如果注明:把月销售额计入年度总额,便能使读者了解其下面语句的意图:/*ADDMONTHLY-SALESTOANNUAL-TOTAL*/TOTAL=AMOUNT+TOTAL,39,.,(*D3DRGBandD3DRGBAmaybeusedasinitialisersforD3DCOLORs*Thefloatvaluesmustbeintherange0.1*)functionD3DRGB(r,g,b:TD3DValue):TD3DColor;functionD3DRGBA(r,g,b,a:TD3DValue):TD3DColor;(*FormatofRGBcolorsis*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*|ignored|red|green|blue|*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*),功能性注释例,40,.,3、视觉组织,通过在程序中添加一些空格、空行和缩进等技巧,帮助人们从视觉上看清程序的结构例如,通过缩进技巧可清晰地观察到程序的嵌套层次,同时还容易发现诸如“遗漏end”那样的错误,41,.,自然的程序段之间可用空行隔开可通过添加空格使语句成分清晰,如(A17)ANDNOT(B49)ORC可写成(A17)ANDNOT(B49)ORC也可以通过添加括号突出运算的优先级,避免发生运算的错误,如a*(b*c)(2*3)*4=40962*(3*4)=2.421024,42,.,放置大括号一般首选的方法是K,if(x=y)elseif(xy).else,43,.,二、数据说明,为了使数据说明更易于理解和维护,可采用以下风格:数据说明顺序应规范,使数据的属性更易于查找,从而有利于测试、纠错与维护。例如按以下顺序:常量说明、类型说明、全局变量说明、局部变量说明。一个语句说明多个变量时,各变量名按字典序排列。如:把INTEGERsize,length,width,cost,price写成INTEGERcost,length,price,size,width对于复杂的数据结构,要加注释,说明在程序实现时的特点。如:C链表结构和PASCAL中用户自定义的数据类型等,44,.,三、语句构造,语句构造的原则是:简单直接,不能为了追求效率而使代码复杂化。为了便于阅读和理解,不要一行多个语句。不同层次的语句采用缩进形式,使程序的逻辑结构和功能特征更加清晰。要避免复杂的判定条件,避免多重的循环嵌套。表达式中使用括号以提高运算次序的清晰度。,45,.,1、在一行内只写一条语句,在一行内只写一条语句,并且采取适当添加空格的办法,使程序的逻辑和功能变得更加明确。许多程序设计语言允许在一行内写多个语句。但这种方式会使程序可读性变差,因而不可取。,46,.,2、首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑。例如,有一个用C语句写出的程序段:Ai=AiAt;At=AiAt;Ai=AiAt;此段程序可能不易看懂。实际上,这段程序的功能就是交换Ai和At中的内容。目的是为了节省一个内存变量。如果改一下:Temp=At;At=Ai;Ai=Temp;就能一目了然了。,47,.,3、直截了当地说明程序员的用意,程序编写要简单,写清楚,直截了当地说明程序员的用意。例如,for(i=1;i=n;i+)for(j=1;j=n;j

温馨提示

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

评论

0/150

提交评论