高级语言程序设计概述_第1页
高级语言程序设计概述_第2页
高级语言程序设计概述_第3页
高级语言程序设计概述_第4页
高级语言程序设计概述_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第 1 章高级语言程序设计概述一台计算机由硬件系统和软件系统两大部分组成,硬件是物质基础,而软件是计算机的灵魂。没有软件,计算机是一台“裸机”,有了软件,才能成为一台真正的“电脑”。而所有的软件,都是用计算机程序设计语言编写的。程序是指计算机可以直接或间接执行的指令的集合。计算机系统是通过运行程序来实现各种不同的应用。程序设计语言(programming language)是一组用来定义计算机程序的语法规则。一种计算机语言能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。本章学习重点 了解程序设计语言的发展; 了解常用程序设计语言; 熟悉高级语言编程的基本步骤; 了解面向对象程序设计语言的特点; 掌握 C 语言程序的结构; 了解算法的概念。1.1 程序设计语言的发展程序设计语言按照语言级别可以分为低级语言和高级语言。低级语言有机器语言和汇编语言。低级语言与特定的机器有关,其功效高,但使用复杂、繁琐、费时、易出差错。机器语言是表示成数码形式的机器基本指令集。汇编语言是机器语言中部分符号化的结果。高级语言的表示方法要比低级语言更接近于待解问题的表示方法,其特点是在一定程度上与具体机器无关,易学、易用、易维护。1.1.1 程序设计语言的简介计算机做的每一次动作、每一个步骤都是按照已经编好的程序来执行的,而程序需要用人们能掌握的语言来编写,于是出现了程序设计语言。计算机程序设计语言的发展,经第 1 章 Error! No text of specified style in document.3历了从机器语言、汇编语言到高级语言的历程。1机器语言电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能用计算机的语言去命令计算机工作,也就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言就是机器语言。这时编写程序是一件十分繁琐的工作,特别是在程序有错需要修改时,更加困难,而且编出的程序不便于记忆、阅读和书写,还容易出错。由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,可移植性较差,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言是第一代计算机语言。2汇编语言为了克服机器语言难读、难编、难记和易出错的缺点,人们用与代码指令实际含义相近的英文缩写词、字母和数字等符号取代指令代码,例如,用 ADD 代表加法,用 MOV代表数据传递等,这样,人们能较容易读懂并理解程序,使得纠错及维护变得方便了,这种程序设计语言称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序负责将这些符号翻译成二进制数的机器语言,这种翻译程序称为汇编程序。汇编语言仍然是面向机器的语言,使用起来还是比较繁琐,通用性也差。汇编语言是低级语言。但是,用汇编语言编写的程序,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。3高级语言不论是机器语言还是汇编语言都是面向硬件具体操作的,语言对机器的过分依赖,要求使用者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专业人员是难以做到的,对于计算机的推广应用不利。计算机事业的发展促使人们寻求一些与人类自然语言相接近且能为计算机所接受的通用易学的计算机语言。这种与自然语言相近并被计算机接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。无论何种机型的计算机只要配备上相应的高级语言的编译或解释程序,则用该高级语言编写的程序就可以运行。1954 年,第一个完全脱离机器硬件的高级语言 FORTRAN 问世了,四十多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL 、BASIC、LISP、Pascal、 C、PROLOG、Ada 、C+、VC、VB、 Delphi、Java 等。高级语言的出现使得计算机程序设计语言不再过度地依赖某种特定的机器或环境。这是因为高级语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过“翻译程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方式和解释方式。高级语言程序设计与应用教程4编译方式是指在源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言) ,因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件( *.obj)才能执行。解释方式是应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。高级语言的发展经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。20 世纪 60 年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是各自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,历史上称为“软件危机” 。人们认识到:大型程序的编制不同于编写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。1969 年,提出了结构化程序设计方法,1970 年,第一个结构化程序设计语言 Pascal 语言出现,标志着结构化程序设计时期的开始。4面向对象语言20 世纪 80 年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(object) 。面向对象程序设计(object oriented programming)语言与以往各种编程语言的根本区别是程序设计思维方法不同,面向对象程序设计可以更直接地描述客观世界存在的事物(即对象)及事物之间的相互关系。面向对象技术强调的基本原则是直接面对客观事物本身进行抽象并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。1.1.2 常用的程序设计语言 目前有各种高级程序设计语言,其中以下几种应用非常广泛。 FORTRAN 全称为 Formula Translator,意即公式翻译。它是一种适用于科学计算的高级程序设计语言。 COBOL 全称为 Common Business Oriented Language,意即通用商业语言。它是适用于数据处理的高级程序设计语言。 BASIC 全称为 Beginners All-Purpose Symbolic Instruction Code,意即初学者通用符号指令代码。这是一种简单易学,具有会话功能的,适用于科学计算、数据处理和实时处理的程序设计语言。1964 年由美国达尔摩斯学院的基米尼和科茨完成设计并提出了 BASIC语言的第一个版本,经过不断丰富和发展,从基本的 BASIC 发展到 GWBASIC、Quick 第 1 章 Error! No text of specified style in document.5BASIC、 True BASIC、Turbo BASIC、Visual Basic 等。Visual Basic 是一个基于 Windows操作系统的面向对象的可视化集成开发环境和程序设计语言,它既有传统 BASIC 易学、易懂、易记、易用的特点,又有面向对象、可视化设计、事件驱动、动态数据交换等特点。Pascal 是一种结构程序设计语言,由瑞士苏黎世联邦工业大学的沃斯教授研制,于1971 年正式发表。它是以 ALGOL 语言为基础,按照结构程序设计原则设计出来的,它的优点是小巧,简洁,结构清晰,表达能力强,实现效能高。Pascal 既重视数据结构,又很重视程序的结构,具有大量的控制结构,充分反映了结构化程序设计的思想和要求,直观易懂,使用灵活,既可用于科学计算,又能用来编写系统软件。它适用于科学计算、数据处理和描述系统软件。C 语言是由美国贝尔实验室提出的。1973 年首先用于编写 UNIX 操作系统。C 语言易读,程序效率很高,适于描述操作系统、编译程序和各种软件工具,已得到广泛的应用。C 语言的主要特色是兼顾了高级语言和汇编语言的特点,简洁、丰富、可移植。C 语言提供了结构式编程所需要的各种现代化的控制结构。C 语言是一种通用编程语言,使用语言编写程序,既感觉到使用高级语言的自然,也体会到利用计算机硬件指令的直接。LISP 是一种表处理语言,是 20 世纪 50 年代末、60 年代初为解决人工智能问题而发展起来的一种高级程序设计语言。LISP 的理论基础是数理逻辑,它很简单又有很强的表达能力。Java 是 Sun 公司推出的一种编程语言。它是一种通过解释方式来执行的语言,语法规则和 C+类似。同时,Java 也是一种跨平台的程序设计语言。Java 非常适合于企业网络和Internet 环境,现在已成为 Internet 中最受欢迎、最有影响的编程语言之一。 Java 有许多优点:简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。1.1.3 发展趋势程序设计语言是软件的重要方面。它的发展趋势是可视化、智能化和构件化。1可视化程序设计技术随着 Windows 操作系统的广泛推广与应用,它的可视化图形界面与所见即所得的视觉效果越来越成为编程语言效仿的典范。典型的可视化程序设计语言集成环境有Microsoft 公司提供的 Visual Studio 系列等。Windows 系统本身就提供了相应的接口功能与系统调用供程序开发者使用,所以可视化程序设计技术成为程序设计语言发展的一个趋势。2智能化程序设计技术程序设计技术的智能化主要体现在第 4 代程序设计语言中,改变了传统的完全手工的编程工作方式,而将编程变成了提问式与填空式的工作方式。在系统给出部分甚至大部分代码以后,由程序员填入适当的其他内容而完成整个编程工作,这样的工作方式不仅提高高级语言程序设计与应用教程6了编程工作效率,而且避免了很多在传统手工方式中存在或容易出现的错误。3构件化程序设计技术以面向对象程序设计为基础,在可视化程序设计语言集成环境的支持下,还出现了构件化程序设计的趋势。程序设计过程中以标准的构件为基本单位来构造一个完整的程序,这种工作类似于房屋建筑过程中以砖和瓦为基本单位,只需将它们放置到合适的位置并固定就可以了。而构件就相当于程序设计过程中的砖和瓦,完成对构件属性的定义和操作的说明就完成了所有编程工作。1.2 高级语言编程基本步骤由高级语言编写的程序称为源程序。CPU 只能直接理解机器语言,不能直接理解源程序,高级语言编写的源程序必须经编译或解释加工以后才能被计算机理解。把源程序“翻译”为机器语言的过程称为“编译(compile) ”,使用称为“编译程序(compiler) ”的程序完成编译任务。编译程序把程序员编写的类自然语言的源程序文件翻译为机器指令,并以目标文件( *.obj)的形式存放在磁盘上。目标文件不能装入内存运行,还必须使用“连接程序(如 Link.exe) ”连接为可执行程序文件( *.exe)后才能被执行。高级语言编程步骤如图 1-1 所示。图 1-1 编写高级语言程序的步骤1.3 C 语言概述第 1 章 Error! No text of specified style in document.71.3.1 C 语言的发展C 语言是国际上广泛流行的计算机高级语言,它既可以编写应用软件,也可以编写系统软件。C 语言的原型 ALGOL 60 语言(也称为 A 语言) 。1963 年,剑桥大学将 ALGOL 60 语言发展成为 CPL(Combined Programming Language)语言。1967 年,剑桥大学的 Matin Richards 对 CPL 语言进行了简化,于是产生了 BCPL 语言。1970 年,美国贝尔实验室的Ken Thompson 将 BCPL 进行了修改,并为它起了一个有趣的名字“B 语言” 。意思是将CPL 语言煮干,提炼出它的精华。并且用 B 语言写了第一个 UNIX 操作系统。在 1973 年,美国贝尔实验室的 D.M.RITCHIE 在 B 语言的基础上最终设计出了一种新的语言,他取了BCPL 的第二个字母作为这种语言的名字,这就是 C 语言。为了推广 UNIX 操作系统,1977 年 Dennis M.Ritchie 发表了不依赖于具体机器系统的C 语言编译文本可移植的 C 语言编译程序 。1978 年 Brian W.Kernighian 和 Dennis M.Ritchie 出版了名著“The C Programming Language”,从而使 C 语言成为目前世界上流行最广泛的高级程序设计语言。1988 年,随着微型计算机的日益普及,出现了许多 C 语言版本。由于没有统一的标准,使得这些 C 语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为 C 语言制定了一套 ANSI 标准,成为现行的 C 语言标准,C 语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如 DBASE PLUS 、DBASE 都是由 C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示 C 语言的优势了。最流行的 C 语言有 Microsoft C 或称 MS C、Borland Turbo C 或称 Turbo C。这些 C语言版本不仅实现了 ANSI C 标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。在 C 的基础上,1983 年又由贝尔实验室的 Bjarne Strou-strup 推出了 C+。 C+进一步扩充和完善了 C 语言,成为一种面向对象的程序设计语言。1.3.2 C 语言的特点C 语言具有如下特点:(1)语言简洁紧凑、使用灵活方便。C 语言一共只有 32 个关键字, 9 种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,它们是计算机最基本的工作单元。(2)运算符丰富。C 的运算符包含的范围很广泛,共有 34 个运算符。C 语言把括号、赋值、强制类型转换等都作为运算符处理,从而使 C 的运算类型极其丰富,表达式类型多样化,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。(3)数据结构丰富。C 的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、联合体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。高级语言程序设计与应用教程8另外 C 语言具有强大的图形功能,支持多种显示器和驱动器,且计算功能、逻辑判断功能也较强大。(4)C 是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。(5)语法限制不太严格、程序设计自由度大。一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而 C 语言允许程序编写者有较大的自由度。(6)允许直接访问物理地址,可以直接对硬件进行操作。它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来编写系统软件。(7)程序执行效率高。一般只比汇编程序生成的目标代码效率低 10%20% 。(8)适用范围大,可移植性好。用 C 语言编写的程序基本上不用修改就能用于各种型号的计算机和各种操作系统。1.3.3 C 语言程序的结构下面通过两个例子说明 C 语言程序的基本结构。例 1-1 输入两个整数,计算这两个整数的和。/* This is aC program. */ #include /* 预 处 理 命 令 */ void main( ) /*无 参 数 无 返 回 值 的 主 函 数 */ /*程 序 开 始 */ int x,ys; /*定 义 变 量 */ x=20; y=40; /*语 句 */ s=x+y; printf(“The sum of two integr is %d“,s); /*程 序 结 束 */ 声 明 部 分 执 行 部 分 函 数 体 运行结果:The sum of two integer is 60程序说明: 程序的第 1 行是注释语句。为了增加程序的可读性和易懂性,C 语言程序中可以加入注释进行说明。在 C+程序中。注释有两种方式:一是多行注释,注释由“/ *”开始,第 1 章 Error! No text of specified style in document.9由“ */”结束,在“/ *”和“ */”中间写入注释的内容;二是单行注释,在 “/”后加入注释信息。注释不影响程序的功能和执行,注释的多少不影响程序。 程序的第 2 行是文件包含预处理命令。C 语言的预处理命令都是以“#”开头,通过文件包含命令#include 把输入输出头文件 stdio.h 包含在程序中。 程序的第 3 行是空行。C 语言程序允许插入空行,它不影响程序的功能。空行可增加程序的可读性。 程序的第 410 行是程序的主函数。main 是主函数名,一个 C 语言程序有且仅有一个主函数,并且程序执行时从主函数的“”开始,在主函数的 “”结束。花括号中间是 main 函数的具体实施部分,称为函数体。函数体中又由声明部分和执行部分组成。声明部分定义变量,执行部分代表操作。在 C 程序中,函数的声明部分一定要在执行部分之前,它们的顺序不能颠倒。 函数体中的每一条语句都用“;”表示语句结束。 程序第 6 行是声明部分,定义了三个变量 x、y 和 s。定义变量后,程序运行时计算机系统将会给定义的变量分配相应大小的内存单元,用以存放数据。 程序的第 79 行是执行部分。 x=20,y=40 和 s=x+y 中的“=”是赋值运算符,作用是把右边表达式的值赋给左边的变量。Printf 函数用于输出。例 1-2 用自定义函数的方法计算这两个整数的和。/* This is aC program.*/ #include *预 处 理 命 令 */ void main( ) /*无 参 数 无 返 回 值 的 主 函 数 */ *程 序 开 始 */ intx,ys; /*定 义 变 量 *x=20; =40 *语 句 */ sum(x,y); printf“Thesumoftwo integr is %d“,s); /*程 序 结 束 */intsum(inta,intb)*有 参 数 、 有 返 回 值 的 自 定 义 函 数 */ int c; /*定 义 变 量 */ 主主 c=a+breturn(c); /*返 回 整 数 c*/ 主 主 主 主 主主 主 主 主主 主 主 运行结果:The sum of two integer is 60程序说明: 程序定义了两个函数,主函数 main 和自定义函数 sum。高级语言程序设计与应用教程10 自定义函数的结构与主函数的结构类似,都有函数体,且函数体中都由声明部分和执行部分组成。 主函数调用自定义函数。 自定义函数中的值通过调用 C 标准库函数 return 将变量 c 的值返回给主函数。C 语言中变量和函数都有名字,它们是由用户定义的标识符,标识符只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。C 语言是字母大小写敏感语言,因此“A”和“a ”是不同的标识符,在同一程序中不允许同时定义两个完全相同的标识 符。C 语言中有些特别的标识符,它们的用途已经事先定义好了,不能再将它们作为自 定义的标识符,如 main 是主函数名,不能再将它作为其他标识符,这样的标识符称为关 键字。1.4 面向对象程序设计的基本思想面向对象方法(object-oriented method)简称 OO 方法,是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。面向对象的程序设计方法强调在软件开发过程中面向待求解的总是域中的事物,它的基本特征主要包括抽象性、封装性、继承性和多态性。1.4.1 面向对象方法的产生计算机产生的初期主要用于科学计算,这些问题的求解主要是过程计算,因此软件设计的主要目标是设计求解问题的过程,所以,传统的程序设计主要采用面向过程的设计方法。随着计算机技术的发展,计算机的应用越来越广泛,计算机的应用不再仅限于科学计算,计算机处理的问题变得庞大而复杂,面向过程的结构化程序设计方法的局限性明显表露出来,主要是结构化程序设计方法将数据与处理数据的过程分离,当数据结构改变时,相关的处理过程通常需要全部或部分进行修改,因此代码的重用性差。另外,图形用户界面的普及使软件的使用者越来越方便,而软件的开发者却越来越困难,它们很难用过程语言来实现,这时面向对象的程序设计方法产生了。面向对象的程序设计方法是一种以对象为基础、以事件或消息来驱动对象执行相应处理的程序设计方法。在程序结构上,面向对象设计与面向过程程序有很大的区别。面向对象程序由类定义和类的使用两部分组成,在主程序内定义对象,并确定对象之间消息的传递规律,程序中的所有操作都通过对象发送消息来实现,对象接到消息后,通过消息处理函数完成相应的操作。面向对象程序设计中最基本、最重要的两个概念是类和对象。面向对象程序设计方法的基本原则之一是直接面对客观世界中存在的问题进行软件开发,使软件开发方法更符合人类的思维习惯。因此说,面向对象编程方法的出现是程序设计方法的一个接近和符合自然规律的过程。与传统的面向过程的程序设计方法相比,面向对象的程序设计方法有三个优点:(1)程序的可维护性好。面向对象程序易于阅读和理解,程序的复杂性有所降低;第 1 章 Error! No text of specified style in document.11(2)程序易修改。程序员可以通过添加或删除对象,较容易地实现修改、添加或删除程序;(3)可重用性好。对象可以使用多次,程序员可以根据需要将类和对象保存起来,随时插入到应用程序中,无需作修改。1.4.2 类与对象的概念在一个面向对象的系统中,对象是运行期的基本实体。对象是人们要进行研究的任何事物,从最简单的整数到复杂的汽车等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。面向对象程序设计的基本思想认为客观世界由各种各样的对象组成,每一类型的对象都有各自的内部状态和行为规律,不同对象间的相互联系和作用构成了不同的系统,形成了客观世界。对象是客观世界存在的具体事物,它可以是有形的火车和轮船,也可以是无形的计算方法。对象是构成世界的一个独立单位,它具有静态特征和动态特征,静态特征可通过数据描述,动态特征是对象的行为或功能。面向对象程序设计方法中的对象是构成软件系统的一个基本单位,是系统用以描述客观事物的一个实例。对象由一组属性和一组行为构成,属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的一系列操作。对象是具有属性和行为的封装体。类是对象的集合和再抽象。类是具有相同属性和行为的一组对象的集合。它为属于该类的全部对象提供了统一的抽象描述。具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。面向对象方法中,把从具有共同性质的实体中抽象出的事物本质特征概念,称为“类”(class) ,对象是类的一个实例。类中封装了对象共有的属性和方法,通过实例化一个类创建的对象,自动具有类中规定的属性和方法。1.4.3 消息的概念一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。对象之间通过收发消息相互沟通,类似于人与人之间的信息传递。不同对象之间通过发送消息向对方提出服务,接受消息的对象主动完成所请求的服务,这种通信机制称为消息传递。传递消息的内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。同一个对象可以接受不同形式的多个消息,产生的消息各不相同;相同形式的消息可以发送给不同的对象,产生的响应可以各不相同;一个对象可以立即响应发送给它的消息,也可以暂不响应消息。程序的执行取决于事件发生的顺序,由所产生的消息来驱动程序的高级语言程序设计与应用教程12执行,不需要预先确定消息产生的顺序。消息机制为对象间提供了一个动态联系的途径,使它们的行为能互相配合,构成一个有机的运行系统。1.4.4 面向对象程序设计的特点在软件开发过程中面向对象的程序设计方法是面向客观世界本身,运用人类认识客观世界的普遍思维方法,直观、准确、自然地描述客观世界中的相关事物。面向对象程序设计方法的基本特征主要包括抽象性、封闭性、继承性和多态性。1抽象性抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。类使用了抽象的概念,并且被定义为一系列抽象的属性,如尺寸、重量和价格,以及操作这些属性的函数。类封装了将要被创建的对象的所有核心属性。因为类使用了数据抽象的概念。类实现了对象的数据(即状态)和行为的抽象。抽象是指仅表现核心的特性而不描述背景细节的行为。使用抽象可以尽可能避免过早考虑一些细节。2封装性把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据封装是类的最典型特点。数据不能被外界访问,只能被封装在同一个类中的函数访问,这是函数封装性。面向对象方法中,程序和数据是封装在一起的,对象作为一个实体,其操作隐藏在方法中,其状态由对象的“属性”来描述,并且只能通过对象中的“方法”来改变。一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。封装性构成了面向对象方法的基础,封装性是保证软件部件具有优良的模块性的基础。对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。因而,这种方法的创始人 Codd 和 YOuMn 认为,面向对象就是“对象+属性+方法” 。3继承性继承性是面向对象程序设计语言不同于其他语言的最重要的特点,是其他语言所没 有的。继承性是类特有的性质,类可以派生出子类,子类自动继承父类的属性与方法,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。这样可大大提高软件的可重用性。第 1 章 Error! No text of specified style in document.13继承性是子类自动共享父类数据结构和方法的机制,在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性。4多态性多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。1.4.5 面向对象程序设计语言面向对象技术并不是某个特定语言的特权,它可以在很多语言,如 C 和 Pascal 中实 现。当程序越来越大时,程序设计工作越来越困难时,面向对象的程序设计语言将发挥它的作用。面向对象编程有几个优点,如易于进行代码维护、可扩展性好、代码重用技术等,这些优点是过程编程所没有的。目前常用的面向对象程序设计语言有 C+、Java、Visual Basic 等。1C+语言C+是美国 Bell 实验室于 20 世纪 80 年代在 C 语言的基础上开发出来的,是目前广泛应用的面向对象程序设计语言。C+保留了 C 语言的全部优点,增加了面向对象的机制,支持面向对象程序设计方法。C+既可以用于结构化程序设计,又可以用于面向对象程序设计,是一种混合型面向对象程序设计语言。C+是面向对象的大型程序设计语言,应用于各种应用领域。目前有各种版本的 C+编译系统,国内比较流行的有 Visual C+和 Borland C+,C+的类库包括 Borland 的OWL 和 Microsoft 公司的 MFC。2Java 语言1995 年 6 月 Sun 公司推出了一种纯粹面向对象程序设计的语言 Java。传统的程序设计语言编写的软件一般与具体的实现环境有关,如果环境发生变化,则软件需要做较大的修改,而 Java 编写的软件的执行代码具有兼容性,它编写的软件可以在有 Java 解释器的各种系统上运行。Java 程序有两种类型:一类是可在网页上运行的 Applet 小应用程序,它不能单独运行,必须嵌入 HTML 文件中,由 Web 浏览器执行;另一类是可以单独执行的 Java 应用程序,可完成各种功能。Java 是网络世界的通用语言,它提供了丰富的类库,具有强大的图形、图像、动画、音频、视频、多线程及网络交互能力,具有面向对象性、与平台无关性、可移植性、安全性、动态性,并具有并发机制。目前 Java 已成为应用最广泛的网络编程语言之一。3Visual Basic 语言高级语言程序设计与应用教程141991 年 Microsoft 在原 BASIC 语言的基础上推出了可视化面向对象编程语言 Visual Basic。VB 继承了 BASIC 语言的特点,具有语法简单、容易学习、容易使用、数据处理能力强的特点,同时采用了面向对象、事件驱动的编程机制和可视化程序设计方法,有效地提高了应用程序开发的效率。同时 VB 还具有强大的多媒体及网络编程功能,可以编写强大的多媒体处理程序和数据库应用程序。1.5 C+概述当 C 语言程序代码达到 25 000 行以上后,维护和修改工作变得相当困难。为了满足管理程序复杂性的需要,贝尔实验室的 Bjarne Stroustrup 博士于 1979 年开始对 C 语言进行了改进和扩充,并引入了面向对象程序设计的内容,1983 年命名为 C+,后经过三次重大修订,于 1994 年制定了标准 C+草案,之后经过不断完善,成为目前的 C+。1.5.1 C+的特点C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。C+具有以下特点:(1)保持了与 C 语言的兼容性。绝大多数 C 语言程序不经修改可以直接在 C+环境中运行。(2)支持面向过程的程序设计。它是一种理想的结构化程序设计语言,又包含了面向对象程序设计的特征。C+由两部分组成:一是过程性语言部分,与 C 语言无本质区别;二是类和对象部分,是面向对象程序设计的主体。(3)具有程序效率高、灵活性强的特点。C+使程序结构清晰、易于扩展、易于维护而不失效率。(4)具有通用性和可移植性。C+是一种标准化的、与硬件基本无关的程序设计语言,C+程序通常无须修改或稍许修改便可在其他计算机上运行。(5)具有丰富的数据类型和运算符,并提供了强大的库函数。(6)具有面向对象的特性,C+支持抽象性、封装性、继承性和多态性。1.5.2 Visual C+Visual C+是 C+集成开发环境之一,它已从最初的 1.0 版发展到目前的 6.0 版、C+ .NET,系统功能日益强大和完善,是目前应用最广泛的 C+语言。1Visual C+ 6.020 世纪 80 年代,Microsoft 公司在 Microsoft C 6.0 的基础上开发了基于 DOS 环境的Microsoft C/C+ 7.0,同时引入了基础类库 MFC 1.0 版本。在此基础上, Microsoft C/C+8.0第 1 章 Error! No text of specified style in document.15将程序编辑、编译、连接和运行集成为一体,这便是基于 Windows 环境的可视化集成开发工具 Visual C+ 1.0。随后经过多次版本升级,增加了适应 Internet 应用及编程的新类库,并提供了更高级的宏能力及用户进行类和其他代码共享的支持。VC+ 6.0 是功能较为强大、代码效率较高的开发工具,它比以前的各版本更稳定、功能更完善,它的编辑器具有自动语句生成的功能,并能自动提示函数的参数、对象成员等,它支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,它包括了Microsoft 基于 Windows 和 Web 的全面解决方案的核心,是创建高性能 Windows 和 Web应用程序的最佳语言。2Visual C+.NET2000 年 Microsoft 公司推出了新一代的软件开发工具 Mocrosoft .NET,它功能强大,核心是 Visual C+.NET,2002 年又推出了 Visual Studio.NET,它是为应对网络信息时代的一个重要战略。.NET 是一个新的软件开发平台,定义了一种公用语言子集,它是一种为符合其规范的语言与类库之间提供集成的混合语言。它提供了对网络通信标准可扩展置标语言(XML)的支持,是一种面向网络的、支持各种用户终端的开发平台。它为使用者和软件开发人员提供了功能强大、种类丰富的管理与开发工具,将BASIC、 Java、C、C+等语言集成到一个统一的程序框架,并增加了新一代计算机语言Visual C#。.NET 平台提供了大量的工具与服务,能够最大限度地发掘和使用计算及通信能力,它延续了 MFC 的功能,并加入了新的基于属性的编程功能和 ATL Server。1.6 算 法 概 述著名计算机科学家沃思提出一个公式:程序=数据结构+ 算法其中:数据结构是对程序中数据的描述,主要是数据的类型和数据的组织形式;算法是对程序中操作的描述,即操作步骤。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。算法是灵魂,数据结构是加工对象。1算法的基本概念在日常生活中,人们处理问题都有一定的步骤。例如考大学就要有这样的步骤,要填报名单,交报名费,拿到准考证,再参加考试,填报志愿,得到录取通知书。这些步骤都按一定的次序,缺一不可,次序错了也不行。广义的说,为解决一个问题而采取的方法和步骤,就称为算法。算法是解决“做什么”和“怎么做”的问题。计算机算法是用计算机求解一个具体问题或执行特定任务的一组有序的操作步骤(或指令) 。解决一个问题,可以有不同的方法和步骤,一般的说,希望采用简单的和运算步骤少的方法。不仅要保证算法正确,还要考虑算法的质量,选择合适的算法。算法是根据问题定义中的信息得来的,是对问题处理过程的进一步细化,但它不是计算机可以直接执行的,高级语言程序设计与应用教程16只是编制程序代码前对处理思想的一种描述,因此它是独立于计算机的,但它的具体实现是在计算机上进行的。2算法的特性一个算法应该具有以下 5 个重要的特征: (1)有穷性:一个算法必须保证执行有限步之后结束。在执行有限步之后,计算必须终止,并得到解答。也就是说一个算法的实现应该在有限的时间内完成。 (2)确切性:算法的每一步骤必须有确切的定义。算法中对每个步骤的解释是唯一的。 (3)零个或多个输入:输入指在执行算法时需要从外界取得的必要的信息。一个算法有零个或多个输入,以刻画运算对象的初始情况。一个算法可以没有输入。(4)一个或多个输出:输出是算法的执行结果。一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。 (5)有效性:又称可行性。算法中的每一个步骤能够精确地运行,并得到确定的结果。而且人们用笔和纸做有限次运算后即可完成。3算法的描述算法的常用表示方法有如下 3 种:(1)使用自然语言描述算法;(2)使用流程图描述算法;(3)使用伪代码描述算法。下面以求解 n!=12345(n1) n 为例说明算法的 3 种描述方法。第 1 种:使用自然语言描述求 n!的算法。 确定一个 n 的值; 假设等号右边的算式项中的初始值 i 为 1; 假设变量 f 中存放 n!的值,且初始值为 1; 如果 i n 时,执行,否则转出执行; 计算 f 乘以 i 的值后,重新赋值给 f; 计算 i 加 1,然后将值重新赋值给 i; 转去执行; 输出 f 的值,即 n!的值,算法结束。从上面的这个描述的求解过程中,不难发现,使用自然语言描述算法的方法虽然比较容易掌握,但是存在着很大的缺陷。例如,当算法中含有多分支或循环操作时很难表述清楚。另外,使用自然语言描述算法还很容易造成歧义(称之为二义性) ,可能使他人对相同的一句话产生不同的理解。第 2 种:使用流程图描述 n!的算法。算法如图 1-2 所示。从图 1-1 中,可以比较清晰地看出求解问题的执行过程。流程图是用一些图框表示各第 1 章

温馨提示

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

评论

0/150

提交评论