软件工程基础之程序实现

上传人:宝路 文档编号:47555570 上传时间:2018-07-02 格式:PPT 页数:60 大小:640.64KB
返回 下载 相关 举报
软件工程基础之程序实现_第1页
第1页 / 共60页
软件工程基础之程序实现_第2页
第2页 / 共60页
软件工程基础之程序实现_第3页
第3页 / 共60页
软件工程基础之程序实现_第4页
第4页 / 共60页
软件工程基础之程序实现_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《软件工程基础之程序实现》由会员分享,可在线阅读,更多相关《软件工程基础之程序实现(60页珍藏版)》请在金锄头文库上搜索。

1、第五章第五章 程序实现程序实现程序设计语言的特点1程序的效率 3良好的编程习惯2小结4本章学习目标本章学习目标1 12 23 3培养良好的编程习惯理解编程规范了解选择程序设计语言的一般原则 程序编码就好比建筑 工程中最基础的砌砖 和泥工作一样是工程 的基础,是设计的具体 实施。引言不同 瓷砖特点,砌砖风格,砌墙的手艺,砌墙的规范程序语言特点,编程风格,编程基本功,编程规范手艺太差了,还不规范 手艺不错,规范屋里的墙砖的应用不合适程序设计语言程序设计语言 程序设计语言是:人与计算机通信的最基本工具 。 程序设计语言的特性不可避免地会影响开发人员 的思路和解决问题的方式,会影响代码的可理解 性和可

2、维护性。 编码之前的一项重要工作就是选择一种适当的编 程语言。不同的语言适用于不同的应用不同的语言适用于不同的应用 COBOL语言:数据处理程序 PHP语言:专门用来编写网页处理程序 Perl语言:更适合文本处理 C语言:被广泛用于系统软件开发 JAVA语言:用于跨平台的应用软件开发等等。程序设计语言的特点程序设计语言的特点- -技术方面技术方面 一旦确定了软件需求之后,待选用的 程序设计语言的技术特性就显得非常 重要了。o 如果需要复杂的数据结构,就要仔细衡量有哪些语言 能提供这些复杂的数据结构描述。 o 如果软件要求高性能及实时处理能力,就该选用适合 于实时处理的语言,如C或汇编语言。o

3、如果应用有许多输出报告或繁杂的文件处理,则选用 PowerBuilder、Delphi或SQL比较合适。 所有程序语言的基本成分都可归纳为4种:o 数据成分:指明该语言能接受的数据,如各种类型的变量、数组 、指针、记录等。作为程序操作的对象,具有名称、类型和作用 域等特征。使用前要对这些特征加以说明,数据名称由用户通过 标识符命名,类型是说明数据需占用多少存储单元和存放形式, 作用域说明数据可被使用的范围。 o 运算成分:指明该语言可执行的运算,如+,-,*、/o 控制成分:顺序结构、条件选择结构和循环结构 o 传输成分:数据的传输方法,例如输入、输出函数程序设计语言的特点程序设计语言的特点-

4、 -语言本身语言本身1. 名字声明 2. 类型声明 3. 初始化 4. 程序变量的局部性 5. 程序模块的独立性 6. 循环结构 7. 分支结构 8. 异常处理 9. 独立编译 10. 1 1、名字声明、名字声明 预先说明程序中所使用的变量名字,编译程序能 够检查程序中出现的名字的合法性,从而帮助程 序员发现和改正程序中的错误。 但是,有些语言不要求显式地声明程序中所使用 的变量名称,它把变量第一次出现时使用的名字 看做对这个变量的声明。这样做可能会引入一些 很难发现的错误,并且可能会产生严重后果。2 2、类型声明、类型声明 变量的类型声明确定一个变量的使用方式,有了类型声明 ,编译程序就能够

5、很容易地发现程序中某个特定类型的变 量使用不当的错误。有些语言不要求显式的类型声明,例 如FORTRAN语言规定,名字的第一个字母决定它的类型, 但是一旦显式地声明了一个变量的类型,则以显式声明为 该变量的类型。这很容易造成阅读时的混淆。 现代的大多数高级语言都有自定义类型,即允许开发人员 定义与特定应用相关的类型,并且可以用自定义类型嵌套 定义新的类型。例如,可以定义记录、链表、二叉树等复 杂的结构类型。 程序设计语言中的类型说明不仅仅是一种安全措施,还是 一种重要的抽象机制。3 3、初始化、初始化 程序设计中最常见的错误之一就是在使用变量之 前没有对变量进行初始化。为了减少发生错误的 可能

6、性,应该强迫程序员对程序中所使用的变量 进行初始化。 另一个办法是在说明变量时由系统给变量赋予一 个特殊的标识,表明它尚未初始化,以后如果没 给这个变量赋值就企图使用它,系统会发出报警 信号。4 4、程序变量的局部性、程序变量的局部性 程序设计的一般原则是变量的名字应 该在靠近使用它的地方引入,并且应 该只有程序中真正需要它的那些部分 才能够访问它。o 通常有两种提供局部变量的途径:单层局部性和多层 局部性 。PROGRAM TEST PROCEDURE A() VAR ARRAY A20,B20:INTEGER; WORK,I,J:INTEGER; BEGIN END; PROCEDURE

7、B() VAR ARRAY A20,B20:INTEGER; WORK,I,J:INTEGER; BEGIN END; END.程序中过程A和B内的变量是单层局部性的,两个过程中声明的变量的作用范围局限于所在的过程。 PROGRAM TEST PROCEDURE A() VAR ARRAY A20,B20:INTEGER; WORK,I,J,K:INTEGER; PROCEDURE B()VAR ARRAY A20,B20:INTEGER; WORK,I,J:INTEGER; BEGIN END; BEGIN END; 程序的结构是多层的,模块A中声明的变量与模块B中声明的变量除了变量K之外全

8、部相同。内层模块B中有意义的变量是属于该模块的A,B,WORK,I,J和属于外层模块的变量K。 要尽量避免内层模块与外层模块定义相同的变量名,容易引起差错,给维护人员理解代码带来很多困难 5 5、程序模块独立性、程序模块独立性 结构化语言提供了控制局部变量可见性的某些手段,主要 是在较内层程序模块中定义的变量不能被较外层的程序块 访问。 由于动态存储分配的缘故,在两次调用一个程序块的间隔 中不能够保存局部变量的值。因此,即使只有一两个子程 序使用的变量,如果需要在两次调用这些子程序的过程中 保存这个变量的值,也必须把这个变量说明成全局的,这 将增加维护时发生差错的可能性。因此现在大多数语言提

9、供了静态变量,这种变量可以保存前次调用时的数据,解 决了多次调用一个模块时局部变量不能保存的问题。6 6、循环结构、循环结构 最常见的循环结构有for语句、while-do语句和repeat-until 语句,这些语言都是在循环体外判断循环条件。 有许多场合需要在循环体内的任意一点测试循环结束条件 ,如果使用if-then-else语句和附加的布尔变量实现这个要 求,则将增加程序长度并且降低程序的可读性。 某些程序设计语言考虑到上述要求,适当地解决了这个问 题。 exit(标识符)when(条件)这个语句把控制转移到循 环语句后面的一条语句或转移到由标识符指定的语句上 。7 7、分支结构、分支

10、结构 简单的分支语句一般不会出现问题, 但是多分支的case型语句注意以下2个 问题: o 如果case表达式取的值不在预先指定的范围内,需要 用缺省方式处理。 o 在某些程序设计语言中,由case表达式选定的执行语 句取决于所有可能执行的语句排列顺序,如果语句顺 序排列错了,编译和运行时系统是不会发现这类错误 的。8 8、异常处理、异常处理 程序运行过程中发生的错误或意外事件称为异常 。 以前大多数程序设计语言在检测和处理异常方面 几乎没有给程序员提供任何帮助,程序员只能使 用条件控制检测异常,在发生异常时把控制转移 到处理异常的程序段。但是,JAVA等一些语言提 供了异常处理机制,程序员可

11、以很容易地利用语 言提供的异常处理机制实现错误和异常的处理操 作。 9 9、独立编译、独立编译 独立编译意味着能够分别编译各个程序单元,然 后再把它们集成为一个完整的程序。 一个大程序通常由许多程序单元组成,如果修改 了其中任何一个程序单元都需要重新编译整个程 序,将大大增加程序开发、调试和维护的成本; 反之,如果可以独立编译,则只需要重新编译修 改了的程序单元,然后重新连接整个程序即可。 独立编译的机制对于开发大型系统极其重要。1010、其它特性、其它特性 某些语言带有一些特别的功能,这些功能可实现 一些特殊的设计。如MODULA语言和并发PASCAL 语言支持并发处理、以及必须彼此通信和协

12、调的 分布式进程。因此适应并发的和分布式处理的要 求。程序设计语言的特点程序设计语言的特点- -软件工程方面软件工程方面详细设计能够直接地翻译成程序代码。 源程序的可移植性。改善软件可移植性的主要途径是使语言标准化。 对于可移植性要求的软件,应该严格遵守相应的标准编写程序代码, 不要图一时的省事去使用语言的非标准特性。 编译程序效率较高。编译程序首先应该支持独立编译,并且能够发现 尽可能多的程序代码错误,辅助程序员提高程序调试效率。 尽可能应用代码生成工具。许多语言都有与它相应的编译程序、连接 程序、调试程序、代码格式化程序、交叉编译程序、宏处理程序和标 准子程序库等。对于提高效率是明智的选择

13、。 可维护性。可维护性的前提是代码的可理解性,源程序的可读性、语 言的文档化特性是影响可维护性的重要因素。程序设计语言的分类程序设计语言的分类 按语言级别分类,有低级语言和高级语言之分 按照用户要求,有过程式语言和非过程式语言之分 按照应用范围,有通用语言和专用语言之分 按照使用方式,有交互式语言和非交互式语言之分 按照成分性质,有顺序语言、并发语言和分布式语言之分 第四代语言,有数据库查询语言DEV2000、程序代码生成 器以及其他一些原型语言、形式化规格说明语言等等。低级语言:与特定计算机体系结构密切相关,如机器语言、汇编语言,特点是与机器有关,功效高,但使用复杂、开发费时、难维护高级语言

14、:不与特定计算机体系结构密切相关,表示方法贴近于待解问题,特点是在一定程度上与具体机器无关,易学、易用、易维护,但编译后的目标程序的功效往往较低过程式语言:通过指明一列可执行的运算及运算次 序来描述计算过程,如FORTRAN、C、Java等非过程式语言:不显式指明处理过程细节,在这种语言中尽量引入抽象度较高的非过程性描述手段, 以期在程序中增加“做什么”的描述成分,较少“如何做”的描述细节,如第四代语言(4GL)、函数式语言、逻辑式语言。通用语言:目标非单一的语言,如:FORTRAN、C、Java等专用语言:目标单一的语言,如:自动数控程序 APT交互式语言:具有反映人机交互的语言,如: BA

15、SIC非交互式语言:不反映人机交互的语言,如: FORTRAN、COBOL顺序语言:只含顺序成分的语言,如:FORTRAN、C并发语言:含并发成分的语言,如:Modula、Ada、并发Pascal分布语言:考虑分布式计算要求的语言,如: Modula选择一种语言要考虑的因素选择一种语言要考虑的因素 在选择与评价语言时,首先要从应用要求入手, 对比各项要求的相对重要性,然后再根据这些要 求和相对重要性来选择合适的编程语言。 具体选择的考虑:o 编程人员的水平和编程经历 o 待开发软件的类型 o 算法和计算复杂性 o 数据结构的复杂性 o 软件的开发成本和时间要求 o 软件的可移植性要求 o 可用

16、的软件工具编程人员的水平和编程经历编程人员的水平和编程经历 虽然程序员学习一门新的语言并不困难, 但是要熟练地掌握和精通一门语言是需要 长期的实践开发积累的。因此,在选择语 言时一定要考虑到时间限制和程序员掌握 语言的程度,尽可能选择一种程序员熟悉 的语言。待开发软件的类型待开发软件的类型 待开发软件的类型可能不同,一般分为数据库应 用软件、实时控制软件、系统级软件、人工智能 类软件、军用软件等等。根据软件的类型选择合 适的开发语言,例如,FORTRAN语言适合科学计 算,PowerBuilder、Delphi、C#等语言适合于信息 系统的开发,LISP、PROLOG语言适合于人工智能 领域。算法和计算复杂性算法和计算复杂性 待开发软件算法的复杂性不同,应

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号