您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程PPT-06编码
授课教师:梁丽西华大学计算机科学与工程系第六章编码内容要点:本章介绍程序设计语言的特点、程序设计语言的选择以及编码时的程序设计风格。教学重点:程序设计风格教学难点:几种常见的程序设计语言的特点本章的知识要点•程序设计语言•程序设计语言的特点•程序设计语言的选择•程序设计风格软件编码:软件质量主要取决于设计质量。在充分设计的基础上,编码的任务相对简单,就是将详细设计文档忠实翻译成可执行代码。但程序设计语言的特点与编码风格对于软件质量(可靠性、可读性、可测试性、可维护性)也有深远影响。本章从软件工程的角度讨论程序设计语言和编码风格的相关问题。程序设计语言分类:汇编语言高级语言对于高级语言:从应用特点可分为:从语言的内在特点可分为:基础语言结构化语言专用语言系统实现语言静态高级语言动态高级语言经典程序设计语言(基础语言)FORTRAN语言(FormulaTransform公共翻译):IBM于1954~1955年开发,1956年在IBM704机上实现,是第一个实现的高级语言。它采用与数学表达类似的方法描述算法,主要用于工程设计与数值计算。优点:结构紧凑,编译、运行效率高缺点:数据类型贫乏,字符串处理能力较差,对于结构化编程支持有限,且I/O格式的说明繁琐复杂ALGOL语言:发表于1959年,它是第一个提供丰富的数据类型和控制结构,支持动态存储分配、递归程序设计的高级语言。主要用于学术、教育领域。它对后来的结构化语言产生深远的影响。COBOL语言(CommonBusinessOrientedLanguage面向商业的通用语言):最早发表于1959年12月,1968年8月ANSI发表标准文本,并在大多数计算机系统中实现。COBOL数据类型丰富,采用近乎自然语言的形式规则描述算法过程、系统运行环境和I/O数据格式,支持与商业数据处理领域有关、范围广泛的过程技术。优点:程序可读性好,自成文档,是商业数据处理领域的重要算法语言。缺点:语言不够简练,编译、运行效率不够理想。BASIC语言:60年代中期为程序设计教学研制的小型会话式语言,解释方式执行。70年代末随着计算机的发展而广泛使用,是计算机应用普及的理想入门语言。BASIC语言是唯一广泛使用又没有标准化的语言。主要起源于ALGOL,其特点是控制结构满足结构化程序设计要求,具有很强的过程、函数和数据类型描述能力,是当前应用主流语言。PL/1(ProgrammingLanguageOne):是IBM及其科学计算用户团体SHARE于60年代中后期共同开发的大型通用语言并得到广泛应用。优点:它几乎汇集了60~70年代程序设计语言研究的所有成果,可以描述复杂的数据结构,允许多道作业,具有复杂的I/O功能及表处理功能,适应于各种不同领域的应用需要。缺点:过于庞大,实现复杂。通用结构化语言PASCAL:70年代初由N.Wirth设计并发表,目前仍然广泛使用的语言。它最初作为结构化程序设计的教学语言而设计,基本风格源于ALGOL。它保持了ALGOL的分程序结构与强数据类型、支持递归的特征,强调使用结构化设计概念,编译实现简洁、紧凑,致力于改善软件结构复杂性。使用PASCAL语言编程有助于提高程序的可读性、可靠性,培养结构化程序设计风格,是结构化程序设计教学的理想语言。该语言的目标程序效率高,查错能力强,可移植性好。在程序设计、程序验证、并行处理等方面均获得成功。是70年代程序设计的代表语言。ADA:1974年开始由美国国防部赞助并组织发表。结构与符号类似PASCAL,最初主要针对嵌入式实时系统(如巡航制导系统,武器火控系统,航天飞机导航系统等)设计开发,提供丰富的实时中断、并行处理、进程通信、异常处理描述功能。缺点:编译效率太低,结构复杂,学习训练时间教长。C语言:最初作为UNIX操作系统的开发语言由BELL实验室设计并实现。是一种满足结构化要求,类PASCAL风格,块结构,指针操作灵活,能够实现对系统硬件资源控制与操作的中级语言。目前在系统、应用软件的开发设计中广泛使用。专用语言具有很强的针对性,通常是为某一应用领域软件开发而设计的,具有自己独特的程序结构,与问题求解的领域密切相关。典型的专用语言有APL,FORTH,LISP,PROLOG,JAVA等。APL:主要是面向数组与向量运算,但几乎不提供结构化控制和数据类型。FORTH:为开发PC机系统软件设计的语言,其特点是面向堆栈方式编程LISP:是一种表处理语言,特别适应于组合符号演算、表处理和树操作,在人工智能、专家系统、CAD、CAI等领域广泛应用专用语言PROLOG:是一种基于HORNE子句逻辑的递归语言,广泛用于关系演算、抽象问题求解、自然语言处理等人工智能领域。JAVA:是一种面向对象的,分布的,支持多线程,易于理解,解释实现的语言。其程序设计风格类似于C++,但不支持演算符重载、多重继承、自动强制等C++中不易掌握又较少使用的特性,增加了内存垃圾自动收集功能,能够安全有效地访问网络资源,提供基于TCP/IP协议的网络环境下交互式和实时程序设计支持。JAVA的应用推动了Internet上基于Web服务的应用发展。又称超高级语言,它们通常由某个专门领域的知识库和方法库支持,是数据处理和过程描述的更高级抽象,具有非过程特性。可以分为如下几个类型:查询语言:为与数据库应用相关的问题求解开发。其代表有SQL。应用程序生成器:根据人机对话和少量的非过程性描述语句使得系统自动生成完整的过程语言程序。原型语言:可以方便地生成用户界面和对话,提供数据模型化支持,帮助建立系统原型或者应用系统。图形语言:规定一套用于描述数据结构和处理过程的图符,用户通过对话定义各图符规定的属性、调用资源和图符对象之间的过程联系。系统直接解释执行这种图形程序,或者产生对应处理要求的过程语言源程序或目标程序。第四代语言(4GL)名字说明预先说明程序中使用的对象名字,使编译程序能检查程序中出现的名字的合法性。从而帮助程序员发现和改正程序中的错误。类型说明对程序中使用的对象的类型进行说明,编译程序能够发现程序中某个特定类型的对象使用不当的错误,有助于减少程序错误。程序设计语言的特点:变量初始化使用未初始化的变量是程序设计中最常见的错误之一。为减少错误,应该对程序中所有变量进行初始化。程序对象的局部性程序设计的一般原理是,程序对象应该在靠近使用它的地方引入,并且应该在程序中真正需要它们的地方才能访问它们。(局部化和信息隐藏原理)程序设计语言的特点:程序模块块结构语言提供了控制程序对象名字可见性的某种手段,主要是在较内层程序块中说明的名字不能被较外层的程序块访问。由于动态分配内存,在两次调用一个程序块的间隔中不能保存局部对象的值。程序设计语言的特点:循环控制结构程序设计语言的特点:for(…;…;…){……}while(…){……}do{……}until(…)break语句C语言:分支控制结构程序设计语言的特点:if(…){……}else{……}switch(…){case…case…case…default:}C语言:异常处理程序运行过程中发生的错误或意外事件称为异常。目前许多流行的工具或语言提供了异常处理功能。程序设计语言的特点:Java语言:try{……}catch(…){……}…finally{……}VisualC++:_try{……}_except(…){……}…_finally{……}独立编译独立编译是指分别编译各个程序单元,然后将它们集成为一个完整的程序。程序设计语言的特点:选择的程序设计语言通常应考虑5个因素:①项目的应用领域:是选择语言的关键因素。它一般有5种类型:·科学工程计算:需要大量的标准库函数,以便处理复杂的数值计算。可供选择的语言有Fortran、Pascal、C和PL/1。·数据处理与数据库应用:可供选择的语言有Cobol、SQL和4GL。·程序设计语言选择:·实时处理:对性能的要求很高。可供选择的语言有汇编语言和Ada。·系统软件:可供选择的语言有汇编语言、C、Pascal和Ada。·人工智能:包括知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视角、自然语言等系统。可供选择的语言有Prolog和Lisp。程序设计语言选择:②软件开发方法:选择语言有时依赖该因素。·用快速原型模型开发方法:可供选择的语言有4GL。·用面向对象方法开发:可供选择的语言有C++和Java。③软件执行环境:对软件生产率、错误率和软件质量有影响。④算法和数据结构的复杂性:语言选择时应考虑是否有实现复杂算法的能力或构造复杂数据结构的能力。⑤软件开发人员的知识:与开发人员的知识水平和心理因素有关,有时对语言选择有影响。程序设计语言选择:程序实际上也是一种供人阅读的文章,有一个文章的风格问题。应该使程序具有良好的风格。源程序文档化数据说明语句结构输入/输出方法程序设计风格:标识符的命名安排注释程序的视觉组织源程序文档化符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、、数据区名以及缓冲区名等。这些名字应能反映它所代表的实际东西,应有一定实际意义。例如,表示次数的量用Times,表示总量的用Total,表示平均值的用Average,表示和的量用Sum等。符号名的命名:名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。NEW.BALANCE.ACCOUNTS.PAYABLE(PASCAL)NBALAP(FORTRAN)N(BASIC)符号名的命名:夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。程序的注释:通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关项目包括:程序标题;有关本模块功能和目的的说明;序言性注释:主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。序言性注释:功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。而不要解释下面怎么做。例如,/*ADDAMOUNTTOTOTAL*/TOTAL=AMOUNT+TOTAL不好。功能性注释:如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:/*ADDMONTHLY-SALESTOANNUAL-TOTAL*/TOTAL=AMOUNT+TOTAL要点描述一段程序,而不是每一个语句;用缩进和空行,使程序与注释容易区别;注释要正确。功能性注释:恰当地利用空格,可以突出运算的优先性,避免发生运算的错误。例如,将表达式(A<-17)ANDNOT(B<=49)ORC写成(A<-17)ANDNOT(B<=49)ORC自然的程序段之间可用空行隔开;视觉组织:空格、空行和移行移行也叫做向右缩格。它是指程序中的各行不必都在左端对齐,都从第一格起排列。这样做使程序完全分不清层次关系。对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行。使程序的逻辑结构更加清晰。例如,两重选择结构嵌套,写成下面的移行形式,层次就清楚得多。视觉组织:空格、空行和移行IF(…)THENIF(…)THEN……ELSE……ENDIF……ELSE……ENDIF视觉组织:空格、空行和移行在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须
本文标题:软件工程PPT-06编码
链接地址:https://www.777doc.com/doc-4973446 .html