程序设计语言与编码.ppt_第1页
程序设计语言与编码.ppt_第2页
程序设计语言与编码.ppt_第3页
程序设计语言与编码.ppt_第4页
程序设计语言与编码.ppt_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

1、1,做为软件工程过程的一个阶段,程序编码是设计的继续。程序设计语言的特性和程序设计风格会深刻地影响软件的质量和可维护性。为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特性。此外,还要求源程序具有良好的结构性和良好的程序设计风格。,2,6.1.1程序设计语言的分类,大体上,程序设计语言分为以下几类:(1)机器语言(2)汇编语言(3)高级语言(4)4GL,由于高级语言种类繁多,我们可以从应用特点、语言内在特点和对客观系统的描述三个不同的角度来对高级语言进行分类。,3,(1)基础语言(例:FORTRAN,BASIC,COBOL和ALGOL)(2)结构化语言(例:ALG

2、OL,PL/1,PASCAL,C,Ada)(3)专用语言(例:APL,LISP,PROLOG,BLISS,FORTH),1、从应用特点的角度来分,4,(1)系统实现语言(例:C语言)(2)静态高级语言(例:FORTRAN、COBOL)(3)块结构高级语言(例:PASCAL,ALGOL)(4)动态高级语言,2、从语言内在特点的角度来分,5,(2)面向对象语言对象+消息,(1)面向过程语言数据结构+算法,3、从描述客观系统的角度来分,例:Delphi、VisualBasic、JAVA、C+。,6,6.1.2程序设计语言的选择为开发一个特定项目选择程序设计语言时,必须从技术特性、工程特性和心理特性几

3、方面考虑。在选择语言时,从问题入手,确定它的要求是什么,以及这些要求的相对重要性。由于一种语言不可能同时满足它的各种需求,所以要对各种要求进行权衡,比较各种可用语言的适用程度,最后选择认为是最适用的语言。,7,1.项目的应用领域项目应用领域是选择语言的关键因素,有下列几种类型。1)科学工程计算该计算需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有:,8,(1)FORTRAN语言:是世界上第一个被正式推广应用的计算机语言,产生于1954年,经过FORTRAN0到FORTRAN,又相继扩展为FORTRAN77,FORTRAN90,通过几个版本不断的更新,使它不仅面向科学计算,数据处理

4、能力也极强。(2)Pascal语言:产生于60年代末,具有很强的数据和过程结构化的能力,它是第一个体现结构化编程思想的语言,由于它语言简明、数据类型丰富、程序结构严谨,许多算法都用类Pascal来概括。用Pascal语言写程序,也有助于培养良好的编程风格。,9,(3)C语言:产生于70年代初,最初用于描述UNIX操作系统及其上层软件,后来发展成具有很强功能的语言,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符。此外还具有汇编语言的某些特性,使程序运行效率高。(4)PL/1语言:是一个适用性非常广泛的语言,能够适用于多种不同的应用领域,但由于太庞大,难以推广使用,目

5、前一些PL/1的子集被广泛使用。,10,2)数据处理与数据库应用数据处理与数据库应用可供选用的语言如下:(1)Cobol语言:产生于50年代末,是广泛用于商业数据处理的语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开,数据描述与算法描述分开,结构严谨层次分明,说明采用类英语的语法结构,可读性强。,11,(2)SQL语言:最初是为IBM公司开发的数据库查询语言,目前不同的软件开发公司有了不同的扩充版本,如80年代后期我国引入Informix-SQL,Microsoft-SQL可以方便地对数据库进行存取管理。,12,(3)4GL语言:称为第4代语言,随着信息系统的飞速发展,原来的第2代语

6、言(如FORTRAN,Cobol)第3代语言(如Pascal,C等)受硬件和操作系统的局限,其开发工具不能满足新技术发展的需求,因此,在70年代末,提出了第4代语言的概念,4GL的主要特征是:,13,友好的用户界面:指操作简单,使非计算机专业人员也能方便地使用它。兼有过程性和非过程性双重特性:非过程性指语言的抽象层次又提高到一个新的高度,只需告诉计算机“做什么”,而不必描述“怎么做”,“怎么做”的工作由语言系统运用它的专门领域的知识来填充过程细节。高效的程序代码:指能缩短开发周期,并减少维护的代价。完备的数据库:指在4GL中实现数据库功能,不再把DBMS(数据库管理系统)看成是语言以外的成分。

7、,14,应用程序生成器:能提供一些常用的程序来完成文件维护、屏幕管理、报表生成和查询等任务,从而有效提高软件生产率。目前流行的Fox公司的FoxPro,Uniface公司的Uniface,Powersoft公司的PowerBuilder,Informix公司的Informix-4GL以及各种扩充版本的SQL等都不同程度地具有上述特征。,15,3)实时处理实时处理软件一般对性能的要求很高,可选用的语言有:(1)汇编语言:是面向机器的,它可以完成高级语言无法满足要求的特殊功能,如与外部设备之间的一些接口操作。,16,(2)Ada语言:是美国国防部出资开发的,主要用于适时、并发和嵌入系统的语言。Ad

8、a语言是在Pascal基础上开发出来的,但其功能更强、更复杂。它提供了一组丰富的实时特性,包括多任务处理、中断处理、任务间同步与通信等,它还提供了许多程序包供程序员选择。通过修订,已成为安全、高效和灵活的面向对象的编程语言。,17,4)系统软件如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。5)人工智能如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视角及自然语言处理等人工智能领域内的系统,应选择的语言如下:,18,(1)Lisp:是一种函数型语言,产生于60年代初,它特别适用于组合问题中的符号运算和表处理,因此用

9、于定理证明、树的搜索和其他问题的求解。近年来Lisp广泛应用于专家系统的开发,对于定义知识库系统中的事实、规则和相应的推理相对要容易一些。,19,(2)Prolog:是一种逻辑型语言,产生于70年代初,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的子句组成,比较接近于自然语言,符合人的思维方式。以上讨论的语言,一般适用于相应的应用领域,但要根据具体情况灵活掌握。有的语言功能强,适用的范围较广,但比较庞大。,20,2.软件开发的方法有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。如果是面向对象方法,宜采用面向对象的语言编程

10、。近年来,推出了许多面向对象的语言,这里主要介绍以下几种:,21,(1)C+:是由美国ATi=n;i+)for(j=1;j=n;j+)Vij(ij)*(ji)除法运算()在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量。,63,当ij时,i/j=0当ji时,j/i=0得到的数组当ij时Vij=(ij)*(ji)=0当ij时Vij=(ij)*(ji)=1这样得到的结果V是一个单位矩阵。,64,写成以下的形式,就能让读者直接了解程序编写者的意图。for(i1;i=n;i+)for(j1;j=n;j+)if(i=j)Vij1.0;ELSEVij0.0;,65,66,4.除非对效率有特殊的

11、要求,程序编写要做到清晰第一,效率第二。不要为了追求效率而丧失了清晰性。事实上,程序效率的提高主要应通过选择高效的算法来实现。5.首先要保证程序正确,然后才要求提高速度。反过来说,在使程序高速运行时,首先要保证它是正确的。,67,6.避免使用临时变量而使可读性下降。例如,有的程序员为了追求效率,往往喜欢把表达式AI1AI;写成AIAI;XAI1AI;这样将一句分成两句写,会产生意想不到的问题。,68,7.让编译程序做简单的优化。8.尽可能使用库函数9.避免不必要的转移。同时如果能保持程序可读性,则不必用GOTO语句。例如,有一个求三个数中最小值的程序:,69,IF(XY)GOTO30IF(YZ

12、)GOTO50SMALLZGOTO7030IF(XZ)GOTO60SMALLZGOTO7050SMALLYGOTO7060SMALLX70CONTINUE,70,程序只需编写成:smallx;if(ysmall)smally;if(z=a)if(char=z)cout“Thisisaletter。”;elsecout=0&char=9)不要让读者绕弯子想。,73,14.尽可能用通俗易懂的伪码来描述程序的流程,然后再翻译成必须使用的语言。15.数据结构要有利于程序的简化。16.要模块化,使模块功能尽可能单一化,模块间的耦合能够清晰可见。17.利用信息隐蔽,确保每一个模块的独立性。,74,18.从

13、数据出发去构造程序。19.不要修补不好的程序,要重新编写。也不要一味地追求代码的复用,要重新组织。20.对太大的程序,要分块编写、测试,然后再集成。21.对递归定义的数据结构尽量使用递归过程。,75,输入和输出,输入和输出信息是与用户的使用直接相关的。输入和输出的方式和格式应当尽可能方便用户的使用。一定要避免因设计不当给用户带来的麻烦。因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。,76,不论是批处理的输入输出方式,还是交互式的输入输出方式,在设计和编码时都应考虑下列原则:1.对所有的输入数据都要进行检验,识别错误的输入,以

14、保证每个数据的有效性;2.检查输入项的各种重要组合的合理性,必要时报告输入状态信息;3.使得输入的步骤和操作尽可能简单,并保持简单的输入格式;,77,4.输入数据时,应允许使用自由格式输入;5.应允许缺省值;6.输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;7.在交互式输入输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息;,78,8.当程序设计语言对输入输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性;9.给所有的输出加注解,并设计输出报表格式。输入输出风格还受

15、到许多其它因素的影响。如输入输出设备(例如终端的类型,图形设备,数字化转换设备等)、用户的熟练程度、以及通信环境等。,79,6.3结构化程序设计,结构化程序设计主要包括两方面:在编写程序时,强调使用几种基本控制结构,通过组合嵌套,形成程序的控制结构。尽可能避免使用GOTO语句。在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。,80,结构化程序设计的主要原则,使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。选用的控制结构只准许有一个入口和一个出口。程序语句组成容易识别的块,每块只有一个入口和一个出口。复杂结构应该用基本控制结构进行组合嵌套来实现。,81,语

16、言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致。严格控制GOTO语句,仅在下列情形才可使用:用一个非结构化的程序设计语言去实现一个结构化的构造。若不使用GOTO语句就会使程序功能模糊。在某种可以改善而不是损害程序可读性的情况下。,82,例1打印A,B,C三数中最小者程序,83,程序1if(AB)goto120;if(BC)goto110;100write(C);goto140;110write(B);goto140;120if(AC)goto130;goto100;130write(A);140end,84,程序2if(AB)and(AC)thenwrite

17、(A)elseif(AB)and(BC)thenwrite(B)elsewrite(C)endifendif,85,自顶向下,逐步求精,在详细设计和编码阶段,应当采取自顶向下,逐步求精的方法。把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的程序。,86,自顶向下,逐步求精方法的优点,符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解,87,程序自顶向下,逐步细化,分解成一个树形结构。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查有利于设计的分工和组织工作。,88,为了提高编码的效率,保证程序的可靠性,我们经常使用一些编码工具。首先要用的当然是编辑工具了。选用合适的编辑工具可以大大方便编程,提高效率。编译程序的好坏也会影响编码的效率。一方面,好的编译程序应该是程序员的好助手,能够帮助程序员及时准确地诊断出程序中的差错,减少程序开发的成本。另一方面,编译程序还应该能够生成高效率的机器代码,也就是代码优化。,6.4编码工具,89,现在的软件系统往往是集体开发,一个大的软件系统往往包含许多模块,这些不同的模块可能分散在几个不同的文件或库里

温馨提示

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

评论

0/150

提交评论