admin 管理员组

文章数量: 1086019


2024年12月30日发(作者:character有汉字的意思吗)

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

高级语言程序设计概述

一台计算机由硬件系统和软件系统两大部分组成,硬件是物质基础,而软

件是计算机的灵魂。没有软件,计算机是一台“裸机”,有了软件,才能成为

一台真正的“电脑”。而所有的软件,都是用计算机程序设计语言编写的。程序

是指计算机可以直接或间接执行的指令的集合.计算机系统是通过运行程序来

实现各种不同的应用。程序设计语言(programminglanguage)是一组用来定义计

算机程序的语法规则.一种计算机语言能够准确地定义计算机所需要使用的数

据,并精确地定义在不同情况下所应当采取的行动。

本章学习重点

了解程序设计语言的发展;

了解常用程序设计语言;

熟悉高级语言编程的基本步骤;

了解面向对象程序设计语言的特点;

2 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

掌握C语言程序的结构;

了解算法的概念。

1。1程序设计语言的发展

程序设计语言按照语言级别可以分为低级语言和高级语言。低级语言有机

器语言和汇编语言。低级语言与特定的机器有关,其功效高,但使用复杂、繁

琐、费时、易出差错.机器语言是表示成数码形式的机器基本指令集。汇编语言

是机器语言中部分符号化的结果。高级语言的表示方法要比低级语言更接近于

待解问题的表示方法,其特点是在一定程度上与具体机器无关,易学、易用、

易维护。

1。1.1程序设计语言的简介

计算机做的每一次动作、每

3 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

一个步骤都是按照已经编好的程序来执行的,而程序需要用人们能掌握的

语言来编写,于是出现了程序设计语言。计算机程序设计语言的发展,经历了从

机器语言、汇编语言到高级语言的历程。

1.机器语言

电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机

的语言的基础。计算机发明之初,人们只能用计算机的语言去命令计算机工作,

也就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言

就是机器语言。

这时编写程序是一件十分繁琐的工作,特别是在程序有错需要修改时,更加

困难,而且编出的程序不便于记忆、阅读和书写,还容易出错。由于每台计算

机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一

台计算机上执行,必须另编程序,可移植性较差,造成了重复工作.但由于使用

的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语

言是第一代计算机语言。

2.汇编语言

为了克服机器语言难读、难编、难记和易出错的缺点,人们用与代码指令

实际含义相近的英文缩写词、字母和数字等符号取代指令代码,例如,用ADD代

表加法,用MOV代表数据传递等,这样,人们能较容易读懂并理解程序,使得纠

错及维护变得方便了,这种程序设计语言称为汇编语言,即第二代计算机语言。

然而计算机是不认识这些符号的,这就需要一个专门的程序负责将这些符号翻

3 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

译成二进制数的机器语言,这种翻译程序称为汇编程序。

汇编语言仍然是面向机器的语言,使用起来还是比较繁琐,通用性也差。

汇编语言是低级语言.但是,用汇编语言编写的程序,其目标程序占用内存空间

少,运行速度快,有着高级语言不可替代的用途。

3.高级语言

不论是机器语言还是汇编语言都是面向硬件具体操作的,语言对机器的过

分依赖,要求使用者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专

业人员是难以做到的,对于计算机的推广应用不利。计算机事业的发展促使人

们寻求一些与人类自然语言相接近且能为计算机所接受的通用易学的计算机语

言。这种与自然语言相近并被计算机接受和执行的计算机语言称高级语言。高

级语言是面向用户的语言。无论何种机型的计算机只要配备上相应的高级语言

的编译或解释程序,则用该高级语言编写的程序就可以运行。

1954年,第一个完全脱离机器硬件的高级语言FORTRAN问世了,四十多年

来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍

的有FORTRAN、ALGOL、COBOL、BASIC、LISP、Pascal、C、PROLOG、Ada、C++、

VC、VB、Delphi、Java等。

高级语言的出现使得计算机程序设计语言不再过度地依赖某种特定的机器

或环境。这是因为高级语言在不同的平台上会被编译成不同的机器语言,而不是

直接被机器执行。计算机并不能直接地接受和执行用高级语言编写的源程序,

源程序在输入计算机时,通过“翻译程序”翻译成机器语言形式的目标程序,

4 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方式和解释方

式。

5 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

编译方式是指在源程序执行之前,就将程序源代码“翻译”成目标代码(机

器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率

较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目

标文件(

。obj)才能执行。

解释方式是应用程序源代码一边由相应语言的解释器“翻译"成目标代码

(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文

件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修

改应用程序。

高级语言的发展经历了从早期语言到结构化程序设计语言,从面向过程到

非过程化程序语言的过程.20世纪60年代中后期,软件越来越多,规模越来越

大,而软件的生产基本上是各自为战,缺乏科学规范的系统规划与测试、评估标

准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚

至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软

件。这一切,极大地震动了计算机界,历史上称为“软件危机”。人们认识到:大

型程序的编制不同于编写小程序,它应该是一项新的技术,应该像处理工程一样

处理软件研制的全过程。1969年,提出了结构化程序设计方法,1970年,第一

个结构化程序设计语言Pascal语言出现,标志着结构化程序设计时期的开始。

4.面向对象语言

20世纪80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象

的程序设计.在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一

个模块被执行完成前,不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处

理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面

向过程,而应是面向具体的应用功能,也就是对象(object).

面向对象程序设计(objectorientedprogramming)语言与以往各种编程语言的根本区别

4 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

是程序设计思维方法不同,面向对象程序设计可以更直接地描述客观世界存在的事物(即

对象)及事物之间的相互关系。面向对象技术强调的基本原则是直接面对客观事物本身进

行抽象并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。

1。1.2常用的程序设计语言

目前有各种高级程序设计语言,其中以下几种应用非常广泛。

FORTRAN全称为FormulaTranslator,意即公式翻译。它是一种适用于科学计算的高

级程序设计语言.

COBOL全称为CommonBusinessOrientedLanguage,意即通用商业语言。它是适用于

数据处理的高级程序设计语言。

BASIC全称为Beginner'sAll-PurposeSymbolicInstructionCode,意即初学者通用符号指令

代码。这是一种简单易学,具有会话功能的,适用于科学计算、数据处理和实时处理的程

序设计语言。1964年由美国达尔摩斯学院的基米尼和科茨完成设计并提出了BASIC语言

的第一个版本,经过不断丰富和发展,从基本的BASIC发展到GWBASIC、QuickBASIC、

TrueBASIC、TurboBASIC、VisualBasic等。Visual

5 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

Basic是一个基于Windows操作系统的面向对象的可视化集成开发环境和程序设计语

言,它既有传统BASIC易学、易懂、易记、易用的特点,又有面向对象、可视化设计、事

件驱动、动态数据交换等特点。

Pascal是一种结构程序设计语言,由瑞士苏黎世联邦工业大学的沃斯教授研制,于1971

年正式发表.它是以ALGOL语言为基础,按照结构程序设计原则设计出来的,它的优点是

小巧,简洁,结构清晰,表达能力强,实现效能高.Pascal既重视数据结构,又很重视程序的

结构,具有大量的控制结构,充分反映了结构化程序设计的思想和要求,直观易懂,使用

灵活,既可用于科学计算,又能用来编写系统软件。它适用于科学计算、数据处理和描述系

统软件。

C语言是由美国贝尔实验室提出的.1973年首先用于编写UNIX操作系统。C语言易读,

程序效率很高,适于描述操作系统、编译程序和各种软件工具,已得到广泛的应用。C语言

的主要特色是兼顾了高级语言和汇编语言的特点,简洁、丰富、可移植。C语言提供了结构

式编程所需要的各种现代化的控制结构。C语言是一种通用编程语言,使用C语言编写程

序,既感觉到使用高级语言的自然,也体会到利用计算机硬件指令的直接。

LISP是一种表处理语言,是20世纪50年代末、60年代初为解决人工智能问题而发

展起来的一种高级程序设计语言。LISP的理论基础是数理逻辑,它很简单又有很强的表达

能力。

Java是Sun公司推出的一种编程语言.它是一种通过解释方式来执行的语言,语法规则

和C++类似。同时,Java也是一种跨平台的程序设计语言。Java非常适合于企业网络和

Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。 Java有许多优

点:简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、

多线程、动态性等。

1。1。3发展趋势

程序设计语言是软件的重要方面.它的发展趋势是可视化、智能化和构件化。

1.可视化程序设计技术

随着Windows操作系统的广泛推广与应用,它的可视化图形界面与所见即所得的视觉

效果越来越成为编程语言效仿的典范。典型的可视化程序设计语言集成环境有Microsoft

公司提供的VisualStudio系列等。Windows系统本身就提供了相应的接口功能与系统调用

供程序开发者使用,所以可视化程序设计技术成为程序设计语言发展的一个趋势。

2.智能化程序设计技术

程序设计技术的智能化主要体现在第4代程序设计语言中,改变了传统的完全手工的

编程工作方式,而将编程变成了提问式与填空式的工作方式。在系统给出部分甚至大部分

代码以后,由程序员填入适当的其他内容而完成整个编程工作,这样的工作方式不仅提高了

编程工作效率,而且避免了很多在传统手工方式中存在或容易出现的错误。

5 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

3.构件化程序设计技术

6 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

以面向对象程序设计为基础,在可视化程序设计语言集成环境的支持下,还出现了构件

化程序设计的趋势。程序设计过程中以标准的构件为基本单位来构造一个完整的程序,这种

工作类似于房屋建筑过程中以砖和瓦为基本单位,只需将它们放置到合适的位置并固定就

可以了。而构件就相当于程序设计过程中的砖和瓦,完成对构件属性的定义和操作的说明就

完成了所有编程工作。

1.2高级语言编程基本步骤

由高级语言编写的程序称为源程序。CPU只能直接理解机器语言,不能直接理解源程序,高级语言编写的

源程序必须经编译或解释加工以后才能被计算机理解。把源程序“翻译”为机器语言的过程称为“编译

(compile)",使用称为“编译程序(compiler)”的程序完成编译任务。编译程序把程序员编写的类自然

语言的源程序文件翻译为机器指令,并以目标文件(

*

。obj)的形式存放在磁盘上。目标文件不能装入内

存运行,还必须使用“连接程序(如)”连接为可执行程序文件(

。exe)后才能被执行.高级语

言编程步骤如图1-1所示。

图1—1编写高级语言程序的步骤

1。3C语言概述

1。3。1C语言的发展

C语言是国际上广泛流行的计算机高级语言,它既可以编写应用软件,也可以编写系统

软件。C语言的原型ALGOL60语言(也称为A语言).1963年,剑桥大学将ALGOL

6 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

60语言发展成为CPL(CombinedProgrammingLanguage)语言.1967年,剑桥大学的

MatinRichards对CPL语言进行了简化,于是产生了BCPL语言.1970年,美国贝尔实验室的

KenThompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”.意思是将CPL

语言煮干,提炼出它的精华。并且用B语言写了第一个UNIX操作系统。在1973年,美

国贝尔实验室的E在B语言的基础上最终设计出了一种新的语言,他取了

BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了推广UNIX操作系统,1977年e发表了不依赖于具体机器系统的C

语言编译文本《可移植的C语言编译程序》。1978年hian和e

出版了名著“TheCProgrammingLanguage”,从而使C语言成为目前世界上流行最广泛的高

级程序设计语言.1988年,随着微型计算机的日益普及,出现了许多C语言版本.由于没有

统一的标准,使得这些C语言之间出现了一些不一致的地方.为了改变这种情况,美国国家

标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准,C语言发

展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能.许多著名的系统软件,

如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,

就更能显示C语言的优势了。

最流行的C语言有MicrosoftC或称MSC、BorlandTurboC或称TurboC。这些C语言

版本不仅实现了ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

在C的基础上,1983年又由贝尔实验室的BjarneStrou—strup推出了C++。C++进一步扩

充和完善了C语言,成为一种面向对象的程序设计语言。

1。3。2C语言的特点

C语言具有如下特点:

(1)语言简洁紧凑、使用灵活方便。

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它

把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样

对位、字节和地址进行操作,它们是计算机最基本的工作单元.

(2)运算符丰富。

C的运算符包含的范围很广泛,共有34个运算符。C语言把括号、赋值、强制类型转

换等都作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化,灵活使用各种

运算符可以实现在其他高级语言中难以实现的运算.

(3)数据结构丰富。

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、联合体类

型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另

外C语言具有强大的图形功能,支持多种显示器和驱动器,且计算功能、逻辑判断功能也

较强大.

(4)C是结构式语言。

7 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交

流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是

以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流

向,从而使程序完全结构化。

(5)语法限制不太严格、程序设计自由度大.

一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程

序编写者有较大的自由度.

(6)允许直接访问物理地址,可以直接对硬件进行操作。

它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、

字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来编写系统软件.

(7)程序执行效率高。

一般只比汇编程序生成的目标代码效率低10%~20%。

(8)适用范围大,可移植性好。

用C语言编写的程序基本上不用修改就能用于各种型号的计算机和各种操作系统。

1.3。3C语言程序的结构

下面通过两个例子说明C语言程序的基本结构。

例1—1输入两个整数,计算这两个整数的和。

/

*

This is a C program.

*

/

#include

void main( )

{

/

*

无参数无返回值的主函数

*

/

/

*

程序开始

*

/

声明

部分

/

*

预处理命令

*

/

int x,y,s; /

*

定义变量

*

/

x=20; y=40; /

*

语句

*

/

s=x+y;

执行

printf("The sum of two integer is %d",s);

部分

} /

*

程序结束

*

/

行结果:

Thesumoftwointegeris60

程序说明:

①程序的第1行是注释语句.为了增加程序的可读性和易懂性,C语言程序中可以加入

注释进行说明。在C++程序中。注释有两种方式:一是多行注释,注释由“/

*

”开始,由“

*

/"

结束,在“/

*

”和“

*

/"中间写入注释的内容;二是单行注释,在“//"后加入注释信息。注

释不影响程序的功能和执行,注释的多少不影响程序.

②程序的第2行是文件包含预处理命令。C语言的预处理命令都是以“#”开头,通过

8 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

文件包含命令#include把输入输出头文件stdio。h包含在程序中。

9 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

③程序的第3行是空行。C语言程序允许插入空行,它不影响程序的功能。空行可增

加程序的可读性。

④程序的第4~10行是程序的主函数。main是主函数名,一个C语言程序有且仅有一

个主函数,并且程序执行时从主函数的“{”开始,在主函数的“}”结束。花括号中间是

main函数的具体实施部分,称为函数体。函数体中又由声明部分和执行部分组成。声明部

分定义变量,执行部分代表操作.在C程序中,函数的声明部分一定要在执行部分之前,它

们的顺序不能颠倒。

⑤函数体中的每一条语句都用“;”表示语句结束。

⑥程序第6行是声明部分,定义了三个变量x、y和s。定义变量后,程序运行时计算

机系统将会给定义的变量分配相应大小的内存单元,用以存放数据。

⑦程序的第7~9行是执行部分。x=20,y=40和s=x+y中的“=”是赋值运算符,作用

是把右边表达式的值赋给左边的变量。Printf函数用于输出。

例1—2用自定义函数的方法计算这两个整数的和。

/

*

This is a C program.

*

/

#include /

*

预处理命令

*

/

void main( )

{

int x,y,s;

x=20; y=40;

s=sum(x,y);

printf("The sum of two integer is %d",s);

} /

*

程序结束

*

/

int sum(int a,int b) /

*

有参数、有返回值的自定义函数

*

/

{

int c;

c=a+b;

return(c);

/

*

定义变量

*

/

/

*

返回整数c

*

/

声明部分

执行部分

自定义

函数体

/

*

无参数无返回值的主函数

*

/

/

*

程序开始

*

/

/

*

定义变量

*

/

/

*

语句

*

/

声明

部分

执行

部分

}

运行结果:

Thesumoftwointegeris60

程序说明:

①程序定义了两个函数,主函数main和自定义函数sum。

②自定义函数的结构与主函数的结构类似,都有函数体,且函数体中都由声明部分和执

行部分组成。

③主函数调用自定义函数。

④自定义函数中的值通过调用C标准库函数return将变量c的值返回给主函数.

9 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

C语言中变量和函数都有名字,它们是由用户定义的标识符,标识符只能由字母、数

字和下划线组成,且第一个字符必须是字母或下划线。C语言是字母大小写敏感语言,因此

“A”和“a”是不同的标识符,在同一程序中不允许同时定义两个完全相同的标识符。C

语言中有些特别的标识符,它们的用途已经事先定义好了,不能再将它们作为自定义的标识

符,如main是主函数名,不能再将它作为其他标识符,这样的标识符称为关键字。

1。4面向对象程序设计的基本思想

面向对象方法(object—orientedmethod)简称OO方法,是一种把面向对象的思想应用于

软件开发过程中,指导开发活动的系统方法,是建立在“对象"概念基础上的方法学。面向

对象的程序设计方法强调在软件开发过程中面向待求解的总是域中的事物,它的基本特征

主要包括抽象性、封装性、继承性和多态性。

1.4。1面向对象方法的产生

计算机产生的初期主要用于科学计算,这些问题的求解主要是过程计算,因此软件设计

的主要目标是设计求解问题的过程,所以,传统的程序设计主要采用面向过程的设计方法。

随着计算机技术的发展,计算机的应用越来越广泛,计算机的应用不再仅限于科学计算,计

算机处理的问题变得庞大而复杂,面向过程的结构化程序设计方法的局限性明显表露出来,

主要是结构化程序设计方法将数据与处理数据的过程分离,当数据结构改变时,相关的处理

过程通常需要全部或部分进行修改,因此代码的重用性差.

另外,图形用户界面的普及使软件的使用者越来越方便,而软件的开发者却越来越困难,

它们很难用过程语言来实现,这时面向对象的程序设计方法产生了。

面向对象的程序设计方法是一种以对象为基础、以事件或消息来驱动对象执行相应处

理的程序设计方法.在程序结构上,面向对象设计与面向过程程序有很大的区别。面向对象

程序由类定义和类的使用两部分组成,在主程序内定义对象,并确定对象之间消息的传递

规律,程序中的所有操作都通过对象发送消息来实现,对象接到消息后,通过消息处理函数

完成相应的操作。

面向对象程序设计中最基本、最重要的两个概念是类和对象。面向对象程序设计方法

的基本原则之一是直接面对客观世界中存在的问题进行软件开发,使软件开发方法更符合

人类的思维习惯。因此说,面向对象编程方法的出现是程序设计方法的一个接近和符合自

然规律的过程。

与传统的面向过程的程序设计方法相比,面向对象的程序设计方法有三个优点:

(1)程序的可维护性好。面向对象程序易于阅读和理解,程序的复杂性有所降低;

(2)程序易修改.程序员可以通过添加或删除对象,较容易地实现修改、添加或删除程

序;

(3)可重用性好.对象可以使用多次,程序员可以根据需要将类和对象保存起来,随时

插入到应用程序中,无需作修改。

10 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

1.4.2类与对象的概念

在一个面向对象的系统中,对象是运行期的基本实体.对象是人们要进行研究的任何事

物,从最简单的整数到复杂的汽车等均可看作对象,它不仅能表示具体的事物,还能表示

抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有

操作,用于改变对象的状态。对象实现了数据和操作的结合,使数据和操作封装于对象的统

一体中。

面向对象程序设计的基本思想认为客观世界由各种各样的对象组成,每一类型的对象

都有各自的内部状态和行为规律,不同对象间的相互联系和作用构成了不同的系统,形成

了客观世界。对象是客观世界存在的具体事物,它可以是有形的火车和轮船,也可以是无形

的计算方法。对象是构成世界的一个独立单位,它具有静态特征和动态特征,静态特征可通

过数据描述,动态特征是对象的行为或功能.

面向对象程序设计方法中的对象是构成软件系统的一个基本单位,是系统用以描述客

观事物的一个实例。对象由一组属性和一组行为构成,属性是用来描述对象静态特征的数据

项,行为是用来描述对象动态特征的一系列操作.对象是具有属性和行为的封装体。

类是对象的集合和再抽象.类是具有相同属性和行为的一组对象的集合。它为属于该类

的全部对象提供了统一的抽象描述。

具有相同或相似性质的对象的抽象就是类.因此,对象的抽象是类,类的具体化就是对

象,也可以说类的实例是对象。

类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。

类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

面向对象方法中,把从具有共同性质的实体中抽象出的事物本质特征概念,称为“类”

(class),对象是类的一个实例。类中封装了对象共有的属性和方法,通过实例化一个类创

建的对象,自动具有类中规定的属性和方法.

1.4。3消息的概念

一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。对象之间通过收

发消息相互沟通,类似于人与人之间的信息传递。不同对象之间通过发送消息向对方提出

服务,接受消息的对象主动完成所请求的服务,这种通信机制称为消息传递。传递消息的

内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。

同一个对象可以接受不同形式的多个消息,产生的消息各不相同;相同形式的消息可

以发送给不同的对象,产生的响应可以各不相同;一个对象可以立即响应发送给它的消息,

也可以暂不响应消息.程序的执行取决于事件发生的顺序,由所产生的消息来驱动程序的执

行,不需要预先确定消息产生的顺序.

消息机制为对象间提供了一个动态联系的途径,使它们的行为能互相配合,构成一个有

机的运行系统。

11 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

1.4.4面向对象程序设计的特点

在软件开发过程中面向对象的程序设计方法是面向客观世界本身,运用人类认识客观

世界的普遍思维方法,直观、准确、自然地描述客观世界中的相关事物。面向对象程序设计

方法的基本特征主要包括抽象性、封闭性、继承性和多态性.

1.抽象性

抽象是指强调实体的本质、内在的属性.在系统开发中,抽象指的是在决定如何实现对

象之前的对象的意义和行为.类使用了抽象的概念,并且被定义为一系列抽象的属性,如尺

寸、重量和价格,以及操作这些属性的函数。类封装了将要被创建的对象的所有核心属性。

因为类使用了数据抽象的概念。类实现了对象的数据(即状态)和行为的抽象.

抽象是指仅表现核心的特性而不描述背景细节的行为。使用抽象可以尽可能避免过早

考虑一些细节.

2.封装性

把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据封装是类的最典

型特点.数据不能被外界访问,只能被封装在同一个类中的函数访问,这是函数封装性。面

向对象方法中,程序和数据是封装在一起的,对象作为一个实体,其操作隐藏在方法中,

其状态由对象的“属性”来描述,并且只能通过对象中的“方法”来改变。

一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体.在一个对象内部,某

些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据

提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有

部分.

封装性构成了面向对象方法的基础,封装性是保证软件部件具有优良的模块性的基础.

对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封

装比传统语言的封装更为清晰、更为有力。因而,这种方法的创始人Codd和YOuMn认为,

面向对象就是“对象+属性+方法”.

3.继承性

继承性是面向对象程序设计语言不同于其他语言的最重要的特点,是其他语言所没有

的。

继承性是类特有的性质,类可以派生出子类,子类自动继承父类的属性与方法,这是类

之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进

行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。这样可大

大提高软件的可重用性。

继承性是子类自动共享父类数据结构和方法的机制,在类层次中,子类只继承一个父类

的数据结构和方法,则称为单重继承,子类继承了多个父类的数据结构和方法,则称为多

重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性。

12 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

4.多态性

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。

不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性.多态性允许每个对

象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

1.4.5面向对象程序设计语言

面向对象技术并不是某个特定语言的特权,它可以在很多语言,如C和Pascal中实现.

当程序越来越大时,程序设计工作越来越困难时,面向对象的程序设计语言将发挥它的作

用。面向对象编程有几个优点,如易于进行代码维护、可扩展性好、代码重用技术等,这

些优点是过程编程所没有的.目前常用的面向对象程序设计语言有C++、Java、VisualBasic

等。

1.C++语言

C++是美国Bell实验室于20世纪80年代在C语言的基础上开发出来的,是目前广泛

应用的面向对象程序设计语言。C++保留了C语言的全部优点,增加了面向对象的机制,

支持面向对象程序设计方法。C++既可以用于结构化程序设计,又可以用于面向对象程序

设计,是一种混合型面向对象程序设计语言。

C++是面向对象的大型程序设计语言,应用于各种应用领域。目前有各种版本的C++编

译系统,国内比较流行的有VisualC++和BorlandC++,C++的类库包括Borland的OWL和

Microsoft公司的MFC。

2.Java语言

1995年6月Sun公司推出了一种纯粹面向对象程序设计的语言Java.传统的程序设计

语言编写的软件一般与具体的实现环境有关,如果环境发生变化,则软件需要做较大的修

改,而Java编写的软件的执行代码具有兼容性,它编写的软件可以在有Java解释器的各

种系统上运行。

Java程序有两种类型:一类是可在网页上运行的Applet小应用程序,它不能单独运行,

必须嵌入HTML文件中,由Web浏览器执行;另一类是可以单独执行的Java应用程序,

可完成各种功能。

Java是网络世界的通用语言,它提供了丰富的类库,具有强大的图形、图像、动画、

音频、视频、多线程及网络交互能力,具有面向对象性、与平台无关性、可移植性、安全性、

动态性,并具有并发机制。目前Java已成为应用最广泛的网络编程语言之一。

3.VisualBasic语言

1991年Microsoft在原BASIC语言的基础上推出了可视化面向对象编程语言Visual

13 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

Basic。VB继承了BASIC语言的特点,具有语法简单、容易学习、容易使用、数据处

理能力强的特点,同时采用了面向对象、事件驱动的编程机制和可视化程序设计方法,有

效地提高了应用程序开发的效率。同时VB还具有强大的多媒体及网络编程功能,可以编

写强大的多媒体处理程序和数据库应用程序。

1.5C++概述

当C语言程序代码达到25000行以上后,维护和修改工作变得相当困难。为了满足管

理程序复杂性的需要,贝尔实验室的BjarneStroustrup博士于1979年开始对C语言进行了改

进和扩充,并引入了面向对象程序设计的内容,1983年命名为C++,后经过三次重大修订,

于1994年制定了标准C++草案,之后经过不断完善,成为目前的C++。

1。5。1C++的特点

C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直

接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方

法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

C++具有以下特点:

(1)保持了与C语言的兼容性。绝大多数C语言程序不经修改可以直接在C++环境中

运行。

(2)支持面向过程的程序设计.它是一种理想的结构化程序设计语言,又包含了面向对

象程序设计的特征。C++由两部分组成:一是过程性语言部分,与C语言无本质区别;二

是类和对象部分,是面向对象程序设计的主体.

(3)具有程序效率高、灵活性强的特点。C++使程序结构清晰、易于扩展、易于维护

而不失效率。

(4)具有通用性和可移植性。C++是一种标准化的、与硬件基本无关的程序设计语言,

C++程序通常无须修改或稍许修改便可在其他计算机上运行。

(5)具有丰富的数据类型和运算符,并提供了强大的库函数。

(6)具有面向对象的特性,C++支持抽象性、封装性、继承性和多态性。

1。5。2VisualC++

VisualC++是C++集成开发环境之一,它已从最初的1。0版发展到目前的6。0版、

C++.NET,系统功能日益强大和完善,是目前应用最广泛的C++语言.

1.VisualC++6。0

20世纪80年代,Microsoft公司在MicrosoftC6。0的基础上开发了基于DOS环境的

MicrosoftC/C++7.0,同时引入了基础类库MFC1.0版本。在此基础上,MicrosoftC/C++8.0将

程序编辑、编译、连接和运行集成为一体,这便是基于Windows环境的可视化集成开发工

14 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

具VisualC++1.0。随后经过多次版本升级,增加了适应Internet应用及编程的新类库,并提

供了更高级的宏能力及用户进行类和其他代码共享的支持。

15 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

VC++6。0是功能较为强大、代码效率较高的开发工具,它比以前的各版本更稳定、

功能更完善,它的编辑器具有自动语句生成的功能,并能自动提示函数的参数、对象成员

等,它支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,它包括了

Microsoft基于Windows和Web的全面解决方案的核心,是创建高性能Windows和Web

应用程序的最佳语言。

2.VisualC++.NET

2000年Microsoft公司推出了新一代的软件开发工具,它功能强大,核

心是VisualC++。NET,2002年又推出了,它是为应对网络信息时代的一

个重要战略。.NET是一个新的软件开发平台,定义了一种公用语言子集,它是一种为符合

其规范的语言与类库之间提供集成的混合语言.它提供了对网络通信标准—-可扩展置标语

言(XML)的支持,是一种面向网络的、支持各种用户终端的开发平台.它为使用者和软件

开发人员提供了功能强大、种类丰富的管理与开发工具,将BASIC、Java、C、C++等语言

集成到一个统一的程序框架,并增加了新一代计算机语言VisualC#。.NET平台提供了大量

的工具与服务,能够最大限度地发掘和使用计算及通信能力,它延续了MFC的功能,并加

入了新的基于属性的编程功能和ATLServer。

1.6算法概述

著名计算机科学家沃思提出一个公式:

程序=数据结构+算法

其中:数据结构是对程序中数据的描述,主要是数据的类型和数据的组织形式;算法是对

程序中操作的描述,即操作步骤。数据是操作的对象,操作的目的是对数据进行加工处理,

以得到期望的结果。算法是灵魂,数据结构是加工对象。

1.算法的基本概念

在日常生活中,人们处理问题都有一定的步骤.例如考大学就要有这样的步骤,要填报

名单,交报名费,拿到准考证,再参加考试,填报志愿,得到录取通知书.这些步骤都按一

定的次序,缺一不可,次序错了也不行.广义的说,为解决一个问题而采取的方法和步骤,

就称为算法.算法是解决“做什么”和“怎么做”的问题。计算机算法是用计算机求解一个

具体问题或执行特定任务的一组有序的操作步骤(或指令)。

解决一个问题,可以有不同的方法和步骤,一般的说,希望采用简单的和运算步骤少的

方法。不仅要保证算法正确,还要考虑算法的质量,选择合适的算法。算法是根据问题定义

中的信息得来的,是对问题处理过程的进一步细化,但它不是计算机可以直接执行的,只

是编制程序代码前对处理思想的一种描述,因此它是独立于计算机的,但它的具体实现是在

计算机上进行的.

15 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

2.算法的特性

一个算法应该具有以下5个重要的特征:

(1)有穷性:一个算法必须保证执行有限步之后结束。在执行有限步之后,计算必须终

止,并得到解答。也就是说一个算法的实现应该在有限的时间内完成。

(2)确切性:算法的每一步骤必须有确切的定义。算法中对每个步骤的解释是唯一的.

(3)零个或多个输入:输入指在执行算法时需要从外界取得的必要的信息。一个算法有

零个或多个输入,以刻画运算对象的初始情况.一个算法可以没有输入。

(4)一个或多个输出:输出是算法的执行结果.一个算法有一个或多个输出,以反映对

输入数据加工后的结果.没有输出的算法是毫无意义的。

(5)有效性:又称可行性.算法中的每一个步骤能够精确地运行,并得到确定的结果。

而且人们用笔和纸做有限次运算后即可完成。

3.算法的描述

算法的常用表示方法有如下3种:

(1)使用自然语言描述算法;

(2)使用流程图描述算法;

(3)使用伪代码描述算法。

下面以求解n!=1×2×3×4×5…×(n–1)×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所示.

16 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

图1-2求n的阶乘算法流程图

表1-1流程图的符号表示

符号 名称

起止框

输入输出框

判断框

处理框

流程线

连接点

注释框

表示算法的开始和结束符号

表示算法过程中,从外部获取信息(输入),然后将处理过的信息输出

表示算法过程中的分支结构。菱形框的4个顶点中,通常用上面的顶点

表示入口,根据需要用其余的顶点表示出口

表示算法过程中,需要处理的内容。只有一个入口和一个出口

在算法过程中指向流程的方向

在算法过程中用于将画在不同地方的流程线连接起来

对流程图中某些框的操作作必要的补充说明,可以帮助读者很好的理解

流程图的作用。不是流程图中的必要部分

作用

流程图的缺点是在使用标准中没有规定流程线的用法,因为流程线能够转移、指出流

程控制方向,即算法中操作步骤的执行次序。在早期的程序设计中,曾经由于滥用流程线的

转移而导致了可怕的“软件危机",震动了整个软件业,并展开了关于“转移”用法的大讨

论。

无论是使用自然语言还是使用流程图描述算法,仅仅是表述了编程者解决问题的一种

思路,都无法被计算机直接接受并进行操作。由此引进了第三种非常接近于计算机编程语

言的算法描述方法——伪代码.

第3种:使用伪代码描述n!的算法。

算法开始:

输入n的值;

置i的初值为1;

17 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

置f的初值为1;

当i〈=n时,执行下面的操作

使f=f

i;

使i=i+1;

(循环体到此结束)

输出sum的值;

算法结束

也可以写成以下形式:

BEGIN /

*

算法开始

/

输入n的值;

i←1; /

*

为变量i赋初值

*

/

f←1; /

为变量f赋初值

*

/

whilei〈=n /

*

当变量i〈=n时,执行下面的循环体语句

*

/

{f←f

i;

i←i+1;}

输出sum的值;

END /

算法结束

/

伪代码是一种用来书写程序或描述算法时使用的非正式、透明的表述方法。它并非是

一种编程语言,这种方法针对的是一台虚拟的计算机。伪代码通常采用自然语言、数学公

式和符号来描述算法的操作步骤,同时采用计算机高级语言(如C、Pascal、VB、C++、Java

等)的控制结构来描述算法步骤的执行顺序.伪代码书写格式比较自由,容易表达出设计者

的思想,写出的算法很容易修改.但是用伪代码写的算法不如流程图直观,可能会出现逻辑

上的错误。

本章小结

程序设计语言分为低级程序设计语言和高级程序设计语言,低级程序设计语言包括机

器语言和汇编语言,常用的高级程序设计语言有FORTRAN、ALGOL、COBOL、BASIC、

LISP、Pascal、C、PROLOG、Ada等,常用的面向对象程序设计语言有C++、VB、Delphi、

Java等。高级语言编程的基本步骤是首先编辑源程序,然后进行编译和连接,最后才能运行。

面向对象程序设计语言的特征是具有抽象性、封装性、继承性和多态性。

C语言是国际上广泛流行的计算机高级语言,它既可以编写应用软件,也可以编写系

统软件。C++是在C语言的基础上开发出来的,是目前已经得到广泛应用的面向对象程序

设计语言。C++保留了C语言的全部优点,增加了面向对象的机制,支持面向对象程序设

计方法。C++既可以用于结构化程序设计,又可以用于面向对象程序设计,是一种混合型

面向对象程序设计语言。

算法用计算机求解一个具体问题或执行特定任务的一组有序的操作步骤。算法的常用

的3种表示方法是:使用自然语言描述算法、使用流程图描述算法和使用伪代码描述

18 / 25

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除

算法。

练习与思考

简答题

1.简述程序设计语言的发展。

2.列举几个常用的高级程序设计语言和面向对象程序设计语言,并说明它们的特点。

3.写出高级语言编程的基本步骤。

4.简述类、对象、消息的概念.

5.简述面向对象程序设计的基本特征。

6.分别用流程图和伪代码的方法描述求找出n个整数中最大值的算法。

19 / 25


本文标签: 语言 程序设计 程序