java语言程序设计基础篇(第八版)_完整版_第1页
java语言程序设计基础篇(第八版)_完整版_第2页
java语言程序设计基础篇(第八版)_完整版_第3页
java语言程序设计基础篇(第八版)_完整版_第4页
java语言程序设计基础篇(第八版)_完整版_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

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

文档简介

1、.1.2 1. 了解计算机的组成及运行原理,了了解计算机的组成及运行原理,了解简单机器语言程序的执行特征;解简单机器语言程序的执行特征; 2. 理解汇编语言指令与机器语言指令理解汇编语言指令与机器语言指令的关系,理解高级语言与汇编语言的的关系,理解高级语言与汇编语言的关系,理解编译程序或编译器的功能关系,理解编译程序或编译器的功能与作用,初步理解掌握执行程序的过与作用,初步理解掌握执行程序的过程;程; 3. 了解高级语言发展简史;初步理解了解高级语言发展简史;初步理解操作系统、客户操作系统、客户/服务器以及服务器以及Internet和和WWW的基本概念。的基本概念。.3 4. 了解了解Java

2、语言的特点,理解语言的特点,理解Java程序上机执行过程,掌握简单的程序上机执行过程,掌握简单的Java 应用程序和应用程序和Java applet程序的基本程序的基本结构,能上机执行结构,能上机执行Java 应用程序和应用程序和Java applet程序;能初步使用格式程序;能初步使用格式化输入输出语句。化输入输出语句。 5. 初步理解对象和类的概念,掌握表初步理解对象和类的概念,掌握表示它们的示它们的UML图形符号。图形符号。 .4 1.1计算机、计算机、Internet和和WWW 1.2 Java语言语言 1.3 Java程序程序 1.4 对象与统一建模语言对象与统一建模语言UML .5

3、 1.2 Java语言语言 1.3 Java程序程序 1.4 对象与统一建模语言对象与统一建模语言UML.6 Java语言是当今最为成功的计算机高级语言之语言是当今最为成功的计算机高级语言之一,是开发互联网应用的重要语言。它是富有一,是开发互联网应用的重要语言。它是富有经验的程序员或计算机及其相关专业的学生不经验的程序员或计算机及其相关专业的学生不能不学习的语言,事实上,它是许多各类学校能不学习的语言,事实上,它是许多各类学校计算机及其相关专业学生的一门课程。通过对计算机及其相关专业学生的一门课程。通过对它的学习,学生将熟悉面向对象程序设计基本它的学习,学生将熟悉面向对象程序设计基本知识和基本

4、技能,并积累面向对象编程经验,知识和基本技能,并积累面向对象编程经验,掌握当流行的应用程序开发技术,而这正是掌握当流行的应用程序开发技术,而这正是Java语言程序设计教材语言程序设计教材主要目的之一。本主要目的之一。本章是学习章是学习Java语言程序设计的一个简短入门。语言程序设计的一个简短入门。.7 我们操作过计算机的人都知道,计算机我们操作过计算机的人都知道,计算机就是一种设备,它能让我们进行文字处就是一种设备,它能让我们进行文字处理,绘制图形,玩游戏,听音乐,制作理,绘制图形,玩游戏,听音乐,制作动画,上网查询信息和观看网络电影,动画,上网查询信息和观看网络电影,等等。这是从计算机应用角

5、度上的认识,等等。这是从计算机应用角度上的认识,实际上,计算机是能够以比人快几百万实际上,计算机是能够以比人快几百万甚至几十亿倍的速度执行计算和逻辑判甚至几十亿倍的速度执行计算和逻辑判断的设备。这种说法可能让人感到有点断的设备。这种说法可能让人感到有点神奇甚至迷惑神奇甚至迷惑:.8 “文字处理、绘制图形、玩游戏、制作动文字处理、绘制图形、玩游戏、制作动画、听音乐、上网查询信息和观看网络画、听音乐、上网查询信息和观看网络电影等电影等”是怎样与是怎样与“执行计算和逻辑判执行计算和逻辑判断断”联系起来呢?联系起来呢? 实际上,我们使用的计算机即计算机系实际上,我们使用的计算机即计算机系统包含两大部分

6、,一是硬件本身,它包统包含两大部分,一是硬件本身,它包括键盘、鼠标、显示器、磁盘和主机括键盘、鼠标、显示器、磁盘和主机(箱)等;另一是软件。(箱)等;另一是软件。.9 计算机硬件本身提供了执行计算和逻辑计算机硬件本身提供了执行计算和逻辑判断的功能,这些功能表现为一组指令,判断的功能,这些功能表现为一组指令,如加法指令、减法指令、取数指令、存如加法指令、减法指令、取数指令、存数指令、输入指令和输出指令以及逻辑数指令、输入指令和输出指令以及逻辑判断类指令等;判断类指令等; 而软件是程序员利用计算机指令集,规而软件是程序员利用计算机指令集,规划组织完成令我们激动的玩游戏、听音划组织完成令我们激动的玩

7、游戏、听音乐和制作动画等计算机应用的特定指令乐和制作动画等计算机应用的特定指令序列。软件也可简称为程序。实际上,序列。软件也可简称为程序。实际上,.10 软件与程序是不等价的,简单说,软件软件与程序是不等价的,简单说,软件 = 程序程序 + 相关文档资料。相关文档资料。 计算机硬件是在程序的指令集控制下处计算机硬件是在程序的指令集控制下处理数据的。计算机程序控制着计算机,理数据的。计算机程序控制着计算机,使它按顺序执行一系列动作,这些动作使它按顺序执行一系列动作,这些动作是由程序员规划的,并用指令描述的。是由程序员规划的,并用指令描述的。 各种计算机无论外观差别有多大,每一各种计算机无论外观差

8、别有多大,每一台计算机实际上都可划分为五个逻辑单台计算机实际上都可划分为五个逻辑单元(或称五大部分),如图元(或称五大部分),如图1-1所示。所示。 .11计算程序输入设备输出设备外存储器外部设备接口内存运算器控制器原始数据计算结果取数存数指令指令数据线控制信号线图1-1计算机的基本组成.12 1)输入单元。输入单元是计算机接收信)输入单元。输入单元是计算机接收信息的部分。它从各种输入设备读取信息息的部分。它从各种输入设备读取信息(数据和计算机程序),并把这些放置(数据和计算机程序),并把这些放置到其它处理信息的单元中。当今计算机到其它处理信息的单元中。当今计算机的大多数信息是通过键盘输入的,

9、但也的大多数信息是通过键盘输入的,但也逐渐出现使用其它许多输入设备来进行逐渐出现使用其它许多输入设备来进行信息输入,如扫描仪、声音输入设备等。信息输入,如扫描仪、声音输入设备等。.13 2)输出单元。输出单元是计算机输出信)输出单元。输出单元是计算机输出信息的部分。它把计算机处理过的信息放息的部分。它把计算机处理过的信息放置到各种输出设备中,从而使这些信息置到各种输出设备中,从而使这些信息能够被计算机外部使用。当今计算机的能够被计算机外部使用。当今计算机的大多数信息是通过屏幕显示和纸张打印大多数信息是通过屏幕显示和纸张打印输出的,同时也出现使用其它许多输出输出的,同时也出现使用其它许多输出设备

10、来进行信息输出,如音箱等。设备来进行信息输出,如音箱等。.14 3)内存单元。内存单元是计算机中存取)内存单元。内存单元是计算机中存取速度快、容量相对较少的储存部分。它速度快、容量相对较少的储存部分。它能够记忆来自输入单元的信息,因而能能够记忆来自输入单元的信息,因而能够在需要的时候立即处理这些信息。内够在需要的时候立即处理这些信息。内存单元还能够记忆被处理过的信息,直存单元还能够记忆被处理过的信息,直到输出单元把信息放到输出设备上。内到输出单元把信息放到输出设备上。内存单元经常被称为内存或主存。内存在存单元经常被称为内存或主存。内存在计算机电源关闭后将不起作用。计算机电源关闭后将不起作用。.

11、15 4)中央处理单元()中央处理单元(CPU)。中央处理单)。中央处理单元是计算机中的元是计算机中的“加工加工”和和“管理管理”部部分。它负责执行各种计算如加、减、乘、分。它负责执行各种计算如加、减、乘、除等,负责逻辑判断如比较内存中的两除等,负责逻辑判断如比较内存中的两个数是否相等,这部分又称为运算器。个数是否相等,这部分又称为运算器。同时,它还是计算机的协调者,负责管同时,它还是计算机的协调者,负责管理对其它部分的操作,这部分又称为控理对其它部分的操作,这部分又称为控制器。在应该把信息读到内存单元中时,制器。在应该把信息读到内存单元中时,CPU就会向输入设备发出请求;就会向输入设备发出请

12、求;.16 当要把内存中信息用于计算时,当要把内存中信息用于计算时,CPU会会把这种请求通知其内部的运算器;当要把这种请求通知其内部的运算器;当要把内存中的信息发送给某个输出设备时,把内存中的信息发送给某个输出设备时,CPU就会告诉输出设备。就会告诉输出设备。 5)二级存储单元。二级存储单元是计算)二级存储单元。二级存储单元是计算机中可以长久保存信息的高容量存储部机中可以长久保存信息的高容量存储部分。没有被其它单元使用的程序和数据分。没有被其它单元使用的程序和数据通常放在二级存储单元中(如磁盘),通常放在二级存储单元中(如磁盘),.17 这些信息可能需要几个小时、几天、几这些信息可能需要几个小

13、时、几天、几个月甚至几年才会被使用。二级存储单个月甚至几年才会被使用。二级存储单元也称为外存储器,外存或称为辅存。元也称为外存储器,外存或称为辅存。 计算机运行的过程,就是顺次执行程序计算机运行的过程,就是顺次执行程序中指令的过程。计算机的指令以及运行中指令的过程。计算机的指令以及运行时数据都是采用二进制数表示的。下面时数据都是采用二进制数表示的。下面举一个简单的例子说明计算机的运行。举一个简单的例子说明计算机的运行。.18 例例1.1 设计一个程序,其运行后接受用设计一个程序,其运行后接受用户输入的两个数,然后计算其平均值,户输入的两个数,然后计算其平均值,并输出结果。并输出结果。 解答:解

14、决问题的过程为:解答:解决问题的过程为:1)输入两个数存放于变量)输入两个数存放于变量a和和b中;中;2)计算)计算(a+b)/2,并将其结果存储于变量,并将其结果存储于变量X中;中;3)输出)输出X中的值;中的值; .19 当用计算机的指令来完成上述过程时,当用计算机的指令来完成上述过程时,需要考虑到计算机的具体特性,如计算需要考虑到计算机的具体特性,如计算机中没有变量,而是用存储单元来表示机中没有变量,而是用存储单元来表示等。完成上述过程的指令序列及其运行等。完成上述过程的指令序列及其运行时在内存的存储布局如图时在内存的存储布局如图1-2所示。所示。.20图1-2计算X=(a+b)/2指令

15、序列(表示a)00000100内存内存单元地址(表示b)00000101(表示X)0000011010000110 011000000000011110100010 00000100 000000000000100110000110 011000000000110010100010 00000101 000000000000111010100000 00000100 000000000001000100000000 11000000 00000101 000000000001010010110001 000000100001100011110110 1111000100011010101000

16、10 00000110 000000000001110010111010 11010101 000000110001111111101110001000101111010000100011.21 例子说明:每例子说明:每8位二进制数称为一个字节位二进制数称为一个字节(Byte),每一条指令用若干个字节的),每一条指令用若干个字节的二进制代码表示,并存储到内存单元中。二进制代码表示,并存储到内存单元中。最小内存单元为最小内存单元为1个字节,它必须用一个个字节,它必须用一个编号来表示,这个编号称为单元地址。编号来表示,这个编号称为单元地址。在图在图1-2中我们并没有把每个单元的地中我们并没有把每个

17、单元的地址标出来,只标出每条指令代码存储的址标出来,只标出每条指令代码存储的起始单元的地址。起始单元的地址。.22 图图1-2中的开始三个字节存储单元分别中的开始三个字节存储单元分别表示变量表示变量a、b和和X,用于存储它们的值。,用于存储它们的值。其它存储单元用于存储指令,这些指令其它存储单元用于存储指令,这些指令的含义解释如下。的含义解释如下。 第一条指令用第一条指令用2个字节数据个字节数据“10000110 01100000”表示表示CPU从输入设备读进一从输入设备读进一个数(个数(a)并放置到寄存器)并放置到寄存器AL中。中。.23 第二条指令用第二条指令用3个字节数据个字节数据“10

18、100010 00000100 00000000”表示表示CPU把寄把寄存器存器AL中数放置到内存中地址编号为中数放置到内存中地址编号为00000100的存储单元(的存储单元(1个字节)中保个字节)中保存。其中第存。其中第3个字节数据和第个字节数据和第2个字节数个字节数据合成一个据合成一个16位二进制数据(即位二进制数据(即00000000 00000100),表示存储单),表示存储单元(元(a)的地址。)的地址。.24 第三条指令用第三条指令用2个字节数据个字节数据“10000110 01100000”表示表示CPU从输入设备读进一从输入设备读进一个数(个数(b)并放置到寄存器)并放置到寄存

19、器AL中;中; 第四条指令用第四条指令用3个字节数据个字节数据“10100010 00000101 00000000”表示表示CPU把寄把寄存器存器AL中数放置到内存中地址编号为中数放置到内存中地址编号为00000101的存储单元(的存储单元(1个字节)中保个字节)中保存。其中第存。其中第3个字节数据和第个字节数据和第2个字节数个字节数据合成一个据合成一个16位二进制数据(即位二进制数据(即.25 即即00000000 00000101),表示存储),表示存储单元(单元(b)的地址。)的地址。 第五条指令用第五条指令用3个字节数据个字节数据“10100000 00000100 00000000

20、”表示表示CPU从内从内存中地址编号为存中地址编号为00000100的存储单元的存储单元读进读进1个字节数据(个字节数据(a)并放置到)并放置到AL寄存寄存器中。器中。.26 第六条指令用第六条指令用4个字节数据个字节数据“00000000 11000000 00000101 00000000”表示表示CPU把内存中地址编号为把内存中地址编号为00000101存储单元的数据(存储单元的数据(b)加到)加到AL寄存器中。寄存器中。 第七条指令用第七条指令用2个字节数据个字节数据“10110001 00000010”表示表示CPU把数把数00000010即即2存储到存储到CL寄存器中。寄存器中。.

21、27 第八条指令用第八条指令用2个字节数据个字节数据“11110110 11110001”表示表示CPU用用CL中数支除中数支除AL寄寄存器中数,其结果存储在存器中数,其结果存储在AL寄存器中。寄存器中。 第九条指令用第九条指令用3个字节数据个字节数据“10100010 00000110 00000000”表示表示CPU把寄把寄存器存器AL中数传送到内存中地址编号为中数传送到内存中地址编号为00000110的存储单元(的存储单元(X)中保存;)中保存;.28 第十条指令用第十条指令用3个字节数据个字节数据“10111010 11010101 00000011”表示表示CPU把数把数000000

22、11 11010101即即03D5H(十(十六进制)存储到六进制)存储到DX寄存器中;寄存器中;03D5H表表示显示器的端口号。示显示器的端口号。 第十一条指令用第十一条指令用1个字节数据个字节数据“11101110”表示表示CPU把把AL寄存器中数寄存器中数送到送到DX寄存器所指向的端口连接的设备寄存器所指向的端口连接的设备即显示器。即显示器。.29 第十二条指令用第十二条指令用1个字节数据个字节数据“11110100”表示表示CPU停止执行指令。停止执行指令。 计算机的指令集也称为机器语言,上述计算机的指令集也称为机器语言,上述的指令序列也称为机器语言程序。注意,的指令序列也称为机器语言程

23、序。注意,该例子中用汉语描述计算过程时的每一该例子中用汉语描述计算过程时的每一步,在用机器语言描述时需要多条指令。步,在用机器语言描述时需要多条指令。 .30 机器语言就是计算机机器语言就是计算机CPU的指令集合,的指令集合,用它表示的计算程序即机器语言程序可用它表示的计算程序即机器语言程序可以直接由计算机执行。我们所谓的使用以直接由计算机执行。我们所谓的使用计算机,其它实质就是通过使用机器语计算机,其它实质就是通过使用机器语言来完成计算任务,所以从这个角度上言来完成计算任务,所以从这个角度上讲,机器语言就是机器的讲,机器语言就是机器的“代表代表”或或“化身化身”。 但机器语言程序难理解,因为

24、机器指令但机器语言程序难理解,因为机器指令是用二进制数据表示的。为了便于记忆、是用二进制数据表示的。为了便于记忆、.31 理解机器指令或机器语言程序,人们用理解机器指令或机器语言程序,人们用字母符号来表示机器指令,这种字母符字母符号来表示机器指令,这种字母符号一般用一个有意义单词的前几个字母号一般用一个有意义单词的前几个字母组成,如组成,如ADD表示加法指令,表示加法指令,MOV表示表示传送数据等等。符号化的指令称为汇编传送数据等等。符号化的指令称为汇编指令,汇编指令的集合称为汇编语言,指令,汇编指令的集合称为汇编语言,用它表示的程序称为汇编语言程序。用它表示的程序称为汇编语言程序。 上节例子

25、中的机器语言程序对应的汇编上节例子中的机器语言程序对应的汇编语言程序为下表右部分所示:语言程序为下表右部分所示: .32.33 将该汇编语言程序与上节机器语言程序比较,将该汇编语言程序与上节机器语言程序比较,我们可以发现每一条汇编语言指令与每一条我们可以发现每一条汇编语言指令与每一条机器指令基本上是一一对应的。注意,该汇机器指令基本上是一一对应的。注意,该汇编语言程序中,方括号中的数表示存储单元编语言程序中,方括号中的数表示存储单元地址,这个数前后加上方括号,表示以该数地址,这个数前后加上方括号,表示以该数为地址的存储单元内容,如第为地址的存储单元内容,如第2条汇编指令条汇编指令中,中,010

26、0表示地址为表示地址为00000100的存储单的存储单元(元(a),寄存器中的数(),寄存器中的数(a)将被放置在其)将被放置在其中;中;.34 不加方括号的数表示一般数据,如第不加方括号的数表示一般数据,如第10条汇编指令中,条汇编指令中,03D5H表示表示16进制数值进制数值03D5,将被放置到寄存器,将被放置到寄存器DX中。中。 汇编语言可以看作是机器语言的抽象,汇编语言可以看作是机器语言的抽象,事实上,它是通过符号化机器代码来实事实上,它是通过符号化机器代码来实现的。现的。 然而用汇编语言表示人类社会的计算,然而用汇编语言表示人类社会的计算,也不大方便和直观,如上例中的也不大方便和直观

27、,如上例中的.35 “MOV DX 03D5H和和OUT DX AL”是用于是用于“输出数据输出数据”,这两者之间几乎,这两者之间几乎看不出有什么直观的联系。于是出现了看不出有什么直观的联系。于是出现了所谓的高级语言作为对汇编语言的抽象,所谓的高级语言作为对汇编语言的抽象,使得指令更加使得指令更加“概念化概念化”,以便更接近,以便更接近我们的自然语言层次。用高级语言表示我们的自然语言层次。用高级语言表示的程序称为高级语言程序。的程序称为高级语言程序。Java语言就语言就是一种高级语言,用它写出类似上述例是一种高级语言,用它写出类似上述例子的程序是:子的程序是: .36 1 public cla

28、ss average 2 public static void main(String args) 3 int a = 12, b = 34, c ; 4 c = (a+b)/2; 5 System.out.println(“The average is:”+c); 6 7 .37 输出结果:输出结果: The average is: 23 程序说明:这里的程序说明:这里的Java程序由一个所谓程序由一个所谓的类构成,第的类构成,第1行是该类的开始,定义了行是该类的开始,定义了名为名为average的类,第的类,第7行以行以来结束该类来结束该类的定义。的定义。 类一般包含多个方法,类一般包含多

29、个方法,average类只含一类只含一个名为个名为main的主方法,它由方法头部即的主方法,它由方法头部即.38 第第2行开始到第行开始到第6行结束,其包含三句即行结束,其包含三句即第第3、4、5行,其中第行,其中第3行声明三个整型行声明三个整型变量变量a、b和和c,分别存放两个整数和它们,分别存放两个整数和它们的平均值。第的平均值。第4行计算出行计算出a和和b的平均值,的平均值,并存放到(赋值给)变量并存放到(赋值给)变量c中。第中。第5行从行从屏幕上输出文字屏幕上输出文字“The average is:”和和结果即结果即c的值。的值。 注:上述注:上述java程序中,每行开始的数字程序中,

30、每行开始的数字不是程序中的部分,它是作者加上的,不是程序中的部分,它是作者加上的,.39 用来表示行号,以便解释每行程序时,用来表示行号,以便解释每行程序时,指明是哪一行。指明是哪一行。 可见,高级语言要比汇编语言容易理解可见,高级语言要比汇编语言容易理解和记忆,事实上,它的抽象程度比汇编和记忆,事实上,它的抽象程度比汇编语言的高,并且更语言的高,并且更“接近接近”我们人类的我们人类的语言,如高级语言中的变量就是存储单语言,如高级语言中的变量就是存储单元的抽象。元的抽象。 注:这里每一句如注:这里每一句如c=(a+b)/2对应了完成对应了完成相应计算的多条汇编语句。相应计算的多条汇编语句。.4

31、0 采用高级语言完成我们的计算任务,确采用高级语言完成我们的计算任务,确实要比机器语言和汇编语言较自然和直实要比机器语言和汇编语言较自然和直观。但是,计算机毕竟只能执行机器指观。但是,计算机毕竟只能执行机器指令,所以,当我们编写出高级语言程序令,所以,当我们编写出高级语言程序后,还得将它转换成对应的机器语言程后,还得将它转换成对应的机器语言程序,才能使计算机去执行计算。序,才能使计算机去执行计算。 完成这种转换的过程称为程序翻译。完成这种转换的过程称为程序翻译。 程序翻译犹如是现实中的语言翻译,也程序翻译犹如是现实中的语言翻译,也.41 有两种方式即有两种方式即“笔译笔译”和和“口译口译”。

32、笔译就是一次完整地翻译并记录在纸上,笔译就是一次完整地翻译并记录在纸上,然后可以复印多份,同时供多人阅读。然后可以复印多份,同时供多人阅读。 而口译是在实际场景中,边讲边口头翻而口译是在实际场景中,边讲边口头翻译,同样的话说两次,就得口译两次。译,同样的话说两次,就得口译两次。显然。口译快,笔译慢;口译效率低,显然。口译快,笔译慢;口译效率低,笔译效率高。笔译效率高。.42 对程序翻译而言,其对程序翻译而言,其“笔译笔译”称为编译,称为编译,其其“口译口译”称为解释,并且编译和解释称为解释,并且编译和解释工作是由专门的程序来完成的,这种翻工作是由专门的程序来完成的,这种翻译程序分别称为编译程序

33、和解释程序。译程序分别称为编译程序和解释程序。 在编译过程,被翻译的语言程序也称为在编译过程,被翻译的语言程序也称为源程序,相应地翻译结果称为目标程序,源程序,相应地翻译结果称为目标程序,并且当源程序是汇编语言程序是,对应并且当源程序是汇编语言程序是,对应的翻译程序称为汇编程序,如图的翻译程序称为汇编程序,如图1-3所所示。示。.43.44 注意:由上可以看出采用机器语言、汇注意:由上可以看出采用机器语言、汇编语言和高级语言分别表示同一个计算编语言和高级语言分别表示同一个计算时,虽然它们采用的命令或语句的数目时,虽然它们采用的命令或语句的数目不相同,特征也各异,但它们所包含的不相同,特征也各异

34、,但它们所包含的内在计算步骤或过程是相同的。在后面内在计算步骤或过程是相同的。在后面我们将把这种我们将把这种“计算步骤或过程计算步骤或过程”称为称为算法。算法。.45 上个世纪上个世纪50年代早期,开始出现符号年代早期,开始出现符号化语言。格雷斯化语言。格雷斯.霍帕(霍帕(Grace Hopper)领导一个小组开发了)领导一个小组开发了A-0语语言,约翰言,约翰.巴克斯为巴克斯为IBM 701开发了加开发了加速代码。速代码。 1955年以后,开始出现一系列高级语年以后,开始出现一系列高级语言。言。1955年到年到1957年间,巴克斯领导年间,巴克斯领导一个组开发了公式翻译语言一个组开发了公式翻

35、译语言.46 ALGOrithmic Language,也即,也即ALGOL语言。该语言具有几个不同语言。该语言具有几个不同的目标,即的目标,即 1、ALGOL语言的表示应该接近标准语言的表示应该接近标准数学。数学。 2、ALGOL语言对于描述算法应该是语言对于描述算法应该是有用的。有用的。 3、用、用ALGOL语言编写的程序应该可语言编写的程序应该可编译为机器语言程序。编译为机器语言程序。.47 4、ALGOL语言不局限于某一计算机语言不局限于某一计算机的体系结构。的体系结构。 正是正是ALGOL语言,引入了传递名字语言,引入了传递名字参数的过程调用概念,也是为了定义参数的过程调用概念,也是

36、为了定义ALGOL语言,约翰语言,约翰.巴克斯和彼特巴克斯和彼特.瑙尔给出了一种高级语言的语法描述瑙尔给出了一种高级语言的语法描述方法,被称为巴克斯方法,被称为巴克斯-瑙尔范式,或瑙尔范式,或称为称为BNF。ALGOL语言后来又有了语言后来又有了两次发展分别为两次发展分别为ALGOL 60和和.48 ALGOL 68。ALGOL语言并没有在语言并没有在美国得到推广。美国得到推广。 FORTRAN语言和语言和ALGOL语言都是语言都是基于数值计算的语言。基于数值计算的语言。 在早期语言的研究与开发的基础上,在早期语言的研究与开发的基础上,各种各样的高级语言迅速发展起来,各种各样的高级语言迅速发展

37、起来,多达几万种,但得到广泛应用的也就多达几万种,但得到广泛应用的也就是十几种。是十几种。 .49.50.51 在前面,为了便于写出完成计算的程序,在前面,为了便于写出完成计算的程序,引入了高级语言,而用高级语言写程序引入了高级语言,而用高级语言写程序确实要比用汇编语言和机器语言来得方确实要比用汇编语言和机器语言来得方便和直观,但由此也改变了我们运行程便和直观,但由此也改变了我们运行程序的过程。序的过程。 一般地,运行一个高级语言程序需要经一般地,运行一个高级语言程序需要经历三个步骤历三个步骤: 第一就是要把源程序正确无误地输入到第一就是要把源程序正确无误地输入到计算机内部,这一步称为编辑源程

38、序计算机内部,这一步称为编辑源程序.52 并且是通过运行一个所谓的编辑程序并且是通过运行一个所谓的编辑程序来完成的;来完成的; 第二步就是运行编译程序,来把源程第二步就是运行编译程序,来把源程序翻译成目标程序;序翻译成目标程序; 第三步就是运行该目标程序,完成特第三步就是运行该目标程序,完成特定的计算。定的计算。 如图如图1-4所示所示.53图1-4 高级语言程序运行过程编辑器高级语言源程序机器语言程序(目标程序)源程序文本编译器执行目标程序第1步:编辑第2步:编译第3步:运行.54 我们运行程序时,并不是简单地直接使用我们运行程序时,并不是简单地直接使用计算机硬件来进行,而是通过运行在计算计

39、算机硬件来进行,而是通过运行在计算机中的所谓操作系统来完成的。操作系统机中的所谓操作系统来完成的。操作系统是计算机中最重要的程序,用来管理和控是计算机中最重要的程序,用来管理和控制 计 算 机 的 活 动 。 我 们 经 常 使 用 的制 计 算 机 的 活 动 。 我 们 经 常 使 用 的Windows 2000、XP或或ME,就是一种常,就是一种常用的操作系统。没有操作系统,应用程序用的操作系统。没有操作系统,应用程序(如字处理程序、(如字处理程序、Internet浏览器等)就浏览器等)就不能运行。硬件、操作系统、应用程序和不能运行。硬件、操作系统、应用程序和用户之间的关系如图用户之间的

40、关系如图1-5所示。所示。.55.56 1. 控制和监督系统的活动控制和监督系统的活动操作系统要对系统的安全负责,要确保没操作系统要对系统的安全负责,要确保没有权限的用户不能访问系统,要确保系统有权限的用户不能访问系统,要确保系统信息不受到破坏,要确保合法的操作得到信息不受到破坏,要确保合法的操作得到执行,还要确保不同程序和用户在同时使执行,还要确保不同程序和用户在同时使用计算机时不会相互干扰。操作系统不必用计算机时不会相互干扰。操作系统不必须提供一些基本功能,如,识别键盘输入,须提供一些基本功能,如,识别键盘输入,向显示器发送输出,保存文件和目录,控向显示器发送输出,保存文件和目录,控制硬盘

41、驱动器和打印机等。制硬盘驱动器和打印机等。.57 2. 分配系统资源分配系统资源 操作系统负责确定程序需要使用哪些操作系统负责确定程序需要使用哪些计算机资源(计算机资源(CPU、内存、磁盘、输入和、内存、磁盘、输入和输出设备),并进行资源分配以便运行程输出设备),并进行资源分配以便运行程序;程序结束时还要回收资源。序;程序结束时还要回收资源。 3. 安排操作的顺序安排操作的顺序 操作系统还要负责安排和确定程序的操作系统还要负责安排和确定程序的执行顺序,以便有效地利用资源。为了增执行顺序,以便有效地利用资源。为了增强系统的性能,目前许多操作系统支持多强系统的性能,目前许多操作系统支持多道程序设计

42、、多线程和多处理技术。道程序设计、多线程和多处理技术。.58 多道程序设计允许多个程序同时运行,共多道程序设计允许多个程序同时运行,共享享CPU。例如,。例如,Web浏览器下载文件的同浏览器下载文件的同时,我们可以用字处理程序来编辑文件。时,我们可以用字处理程序来编辑文件。 线程是程序中可同时运行的基本单。多线线程是程序中可同时运行的基本单。多线程允许一个程序内部同时有多个程允许一个程序内部同时有多个“子程序子程序”并发处理,即可以同时运行。例如,并发处理,即可以同时运行。例如,Word字处理程序允许用户编辑文字的同字处理程序允许用户编辑文字的同时将其保存到文件中。这里编辑和保存就时将其保存到

43、文件中。这里编辑和保存就是同一个应用程序中的两个不同任务。是同一个应用程序中的两个不同任务。 多处理也称为并行处理,是指用两个或多多处理也称为并行处理,是指用两个或多个处理器一起执行同一任务。个处理器一起执行同一任务。.59 客户客户/服务器是网络系统中应用广泛的服务器是网络系统中应用广泛的一种技术,它的用法有点混乱。客户一种技术,它的用法有点混乱。客户/服务器有两种用法服务器有两种用法: 一种用来指网络上作为提供信息共享一种用来指网络上作为提供信息共享服务的计算机和用户用来查询浏览网服务的计算机和用户用来查询浏览网络上信息的计算机,前者称为服务器络上信息的计算机,前者称为服务器计算机或简称为

44、服务器,后者称为客计算机或简称为服务器,后者称为客户计算机或简称为客户机。户计算机或简称为客户机。.60 另一种用法是指运行中的程序(进程另一种用法是指运行中的程序(进程或线程)之间的关系的处理方式,本或线程)之间的关系的处理方式,本书下面开始都是指的这种用法。书下面开始都是指的这种用法。 当一个程序在某一时刻向另一个程序当一个程序在某一时刻向另一个程序提出请求服务时,则提出请求服务的提出请求服务时,则提出请求服务的程序称为客户,而提供服务的程序称程序称为客户,而提供服务的程序称为服务器。例如,我们通过为服务器。例如,我们通过Internet浏览器上网查询网络信息时,它就是浏览器上网查询网络信

45、息时,它就是一个客户程序,而提供信息的一个客户程序,而提供信息的Web就就是服务器。是服务器。.61 客户与服务器的关系并不是一成不变客户与服务器的关系并不是一成不变的,它们是一种相对的关系。在某一的,它们是一种相对的关系。在某一时刻是服务器的程序,在另一时刻就时刻是服务器的程序,在另一时刻就有可能成为客户程序。有可能成为客户程序。.62 Internet互联网络是上世纪互联网络是上世纪60年代以年代以来,由美国国防部投资开发的。最初来,由美国国防部投资开发的。最初只是联接大约十几所大学和研究机构只是联接大约十几所大学和研究机构的主要计算机系统。今天,联入的主要计算机系统。今天,联入Inter

46、net的计算机数量已达几亿台。的计算机数量已达几亿台。 WWW(The World Wide Web)是)是Internet互联网络上一种最广泛的应互联网络上一种最广泛的应用技术或应用形式,它使用技术或应用形式,它使Internet互互联网络上的用户从世界各地访问多媒联网络上的用户从世界各地访问多媒.63 体电子信息宝库。可以使用体电子信息宝库。可以使用WWW查查找和查看所有主题的基于多媒体的文找和查看所有主题的基于多媒体的文档,可以预定旅馆的房间、购买飞机档,可以预定旅馆的房间、购买飞机票、注册学习课程、下载各种资料、票、注册学习课程、下载各种资料、与朋友聊天、观看电影、收听实况直与朋友聊天

47、、观看电影、收听实况直播等等。播等等。.64 1.3 Java程序程序 1.4 对象与统一建模语言对象与统一建模语言UML.65 Java是功能齐全的能用程序设计语言,是功能齐全的能用程序设计语言,可以开发可靠的、要求严格的应用程可以开发可靠的、要求严格的应用程序。序。Java不仅可以开发不仅可以开发Web应用程序,应用程序,而且还可以开发跨平台的独立应用程而且还可以开发跨平台的独立应用程序,这些程序用于服务器、台式机、序,这些程序用于服务器、台式机、移动设备等。移动设备等。.66 Java具有许多诱人的特点。这些特点具有许多诱人的特点。这些特点正如正如Sun公司在公司在Java语言白皮书开始

48、语言白皮书开始处所说,包括处所说,包括Java是简单的、面向对是简单的、面向对象的、分布式的、解释型的、健壮的、象的、分布式的、解释型的、健壮的、安全的、结构中立的、可移植的、高安全的、结构中立的、可移植的、高效的、多线程的以及动态的等。效的、多线程的以及动态的等。1. Java是简单的是简单的 任何一门计算机语言都不是简单的,任何一门计算机语言都不是简单的,.67 因为他们都具有进行程序设计所需要因为他们都具有进行程序设计所需要的基本功能和基本成份,需要完成常的基本功能和基本成份,需要完成常规程序设计。但是与程序设计语言规程序设计。但是与程序设计语言C+相比,相比,Java要显得简单一些。要

49、显得简单一些。Java部分地模仿了部分地模仿了C+,但是进行了,但是进行了极大的简化和改进。例如,极大的简化和改进。例如,C+中的中的指针和多重继续常常使程序复杂化,指针和多重继续常常使程序复杂化,而而Java丢弃了指针,并使用一种所谓丢弃了指针,并使用一种所谓接口(接口(interface)的简单概念代替了)的简单概念代替了多重继续。多重继续。.68 C+要求程序员自己去进行内存的分要求程序员自己去进行内存的分配与回收,而配与回收,而Java采用自动内存分配采用自动内存分配与回收。另外,与回收。另外,Java比比C+具有更少具有更少的语言概念,而功能却更强大。的语言概念,而功能却更强大。2.

50、 Java是面向对象的是面向对象的 Java一开始就设计为完全面向对象的,一开始就设计为完全面向对象的,即即Java天生就是面向对象的。而许多天生就是面向对象的。而许多面向对象语言如面向对象语言如C+,包含了面向过,包含了面向过程的特征。程的特征。.69 所谓面向过程,指程序是按照问题解所谓面向过程,指程序是按照问题解决的既定过程设计而的,它在的运行决的既定过程设计而的,它在的运行过程完全符合问题解决的既定过程,过程完全符合问题解决的既定过程,这就要求设计过程中必须按照(规定这就要求设计过程中必须按照(规定的)解决问题过程来进行,即通过把的)解决问题过程来进行,即通过把问题分解为若干小问题来进

51、行求解,问题分解为若干小问题来进行求解,也即进行所谓的功能分解。这样,设也即进行所谓的功能分解。这样,设计出来的程序是由一些功能模块构成计出来的程序是由一些功能模块构成.70 (这种(这种“功能模块功能模块”在在C语言中称为函语言中称为函数),如图数),如图1-5所示,该程序是用于所示,该程序是用于计算规则图形面积,它被分解为四个计算规则图形面积,它被分解为四个功能模块。功能模块。.71 而面向对象是指程序是由对象构成的,而面向对象是指程序是由对象构成的,这种对象是问题中事物的抽象,它包含这种对象是问题中事物的抽象,它包含数据字段和方法;数据字段和方法分别数据字段和方法;数据字段和方法分别用来

52、表征事物的属性和行为。面向对象用来表征事物的属性和行为。面向对象还提供了对象的继承和多态性,这用来还提供了对象的继承和多态性,这用来反映事物之间的关系。面向对象是对现反映事物之间的关系。面向对象是对现实世界中事物及其关系的一种自然的反实世界中事物及其关系的一种自然的反映,因而,它便于反映现实世界的变化,映,因而,它便于反映现实世界的变化,并且对付这种变化付出的代价要比面向并且对付这种变化付出的代价要比面向过程技术小得多。过程技术小得多。.72 作为面向对象的作为面向对象的Java,它提供了封装、,它提供了封装、继承和多态性,这使得它具有了极大的继承和多态性,这使得它具有了极大的灵活性、模块性、

53、透明性和可重用性。灵活性、模块性、透明性和可重用性。其中的重用性使我们可以重用代码。其中的重用性使我们可以重用代码。3. Java是分布式的是分布式的 分布式计算是网络上的一种高级应用形分布式计算是网络上的一种高级应用形式,它使网络上的多台计算机整合为一式,它使网络上的多台计算机整合为一个整体(好象一台计算机一样),个整体(好象一台计算机一样),.73 透明地完成用户提交的工作。透明地完成用户提交的工作。Java的的设计使分布式计算变得容易起来,由设计使分布式计算变得容易起来,由于于Java一开始就设计了网络工作能力,一开始就设计了网络工作能力,因而编写网络程序如同在文件中存取因而编写网络程序

54、如同在文件中存取数一起。数一起。4. Java是解释型的是解释型的 Java程序运行前需要编译成一种所谓程序运行前需要编译成一种所谓Java虚拟机(虚拟机(Java Virtual Machine,JVM)编码,这种编码称)编码,这种编码称.74 为字节码(为字节码(bytecode)。字节码独立)。字节码独立于具体的计算机,运行时需要于具体的计算机,运行时需要Java解解释器来把它转换成本地计算机代码予释器来把它转换成本地计算机代码予以完成,所以它能在任何具有以完成,所以它能在任何具有Java解解释器的机器上运行。如图释器的机器上运行。如图1-6所示是所示是Java程序、程序、Java字节码

55、、字节码、Java虚拟虚拟机和计算机的关系。机和计算机的关系。 .75.76 大多数高级语言的编译器都把程序编大多数高级语言的编译器都把程序编译成机器代码,这种机器代码只能在译成机器代码,这种机器代码只能在本地计算机上运行,如果要在其他计本地计算机上运行,如果要在其他计算机上运行,还得在这些计算机上重算机上运行,还得在这些计算机上重新编译。使用新编译。使用Java,只需要编译一次,只需要编译一次,其编译而成的字节码即可以在任何具其编译而成的字节码即可以在任何具有有Java解释器的平台上运行。解释器的平台上运行。5. Java是健壮的是健壮的 任何一门程序设计语言都不能是绝对任何一门程序设计语言

56、都不能是绝对.77 可靠的,其编制的程序都有可能发生可靠的,其编制的程序都有可能发生这样或那样的错误。所谓健壮的就指这样或那样的错误。所谓健壮的就指避免错误和处理错误的能力较强。避免错误和处理错误的能力较强。Java丢弃了其他语言中容易引起错误丢弃了其他语言中容易引起错误的某些程序概念类型,例如,它不支的某些程序概念类型,例如,它不支持指针,从而避免了重写内存而造成持指针,从而避免了重写内存而造成的数据破坏的可能性。另一方面,的数据破坏的可能性。另一方面,Java具有实时异常处理的功能,该特具有实时异常处理的功能,该特点有助于提高程序的健壮性。点有助于提高程序的健壮性。Java强强.78 制程

57、序员编写处理异常的代码,所以制程序员编写处理异常的代码,所以它能够捕获并响应意外情况,从而发它能够捕获并响应意外情况,从而发生实时错误时程序能够继续正常执行生实时错误时程序能够继续正常执行错误处理代码,稳妥地结束。错误处理代码,稳妥地结束。5. Java是安全的是安全的 Java一开始就是用于一开始就是用于Internet程序设程序设计而出现的,网络和分布式环境是它计而出现的,网络和分布式环境是它的主要用途之一。所以,的主要用途之一。所以,Java在安全在安全上进行了精心的考虑,它执行多层安上进行了精心的考虑,它执行多层安.79 全机制用以保护系统不受到恶意地破全机制用以保护系统不受到恶意地破

58、坏,从而使用户在下载并运行一个坏,从而使用户在下载并运行一个Java applet(一种特殊的(一种特殊的Java程序,程序,它需要下载到本地计算机它需要下载到本地计算机Internet浏浏览器中运行)时,它不会损害本地的览器中运行)时,它不会损害本地的系统。安全性的前提是什么也不能信系统。安全性的前提是什么也不能信任。任。6. Java是结构中立的是结构中立的 Java是解释型的,这一特点使得是解释型的,这一特点使得Java.80 成为结构中立的(成为结构中立的(architecture-neutral),即),即Java是平台无关的。得是平台无关的。得用用Java虚拟机,我们可编写任何平台

59、虚拟机,我们可编写任何平台上都能运行的程序。上都能运行的程序。7. Java是可移植的是可移植的 Java是结构中立的,因而是结构中立的,因而Java程序是程序是可移埴的,它不必重新编译就能在任可移埴的,它不必重新编译就能在任何平台上运行。何平台上运行。Java在不同平台上运在不同平台上运行时,用户不用担心数值的最大长度行时,用户不用担心数值的最大长度.81 和精度会发生变化。和精度会发生变化。8. Java是高效的是高效的9. Java是多线程的是多线程的 多线程使得一个程序可以同时执行多多线程使得一个程序可以同时执行多个任务成为可能,因而它被广泛应用个任务成为可能,因而它被广泛应用于图形用

60、户界面(于图形用户界面(Graphics User Interface,GUI)和网络程序设计)和网络程序设计中。在中。在GUI程序设计中,有许多任务程序设计中,有许多任务需要同时进行,如播放音乐、浏览网需要同时进行,如播放音乐、浏览网.82 页等。在网络程序设计中,一个服务页等。在网络程序设计中,一个服务器可能同时为多个客户服务,如多台器可能同时为多个客户服务,如多台计算机上的浏览器同时向一台计算机上的浏览器同时向一台WWW服务器请求网页信息时,就需要服务服务器请求网页信息时,就需要服务器有多个线程分别响应它们的要求。器有多个线程分别响应它们的要求。一般而言,使用多线程必须调用操作一般而言,

温馨提示

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

评论

0/150

提交评论