1、java语言程序设计基础篇第八版课件完整版21.了解计算机的组成及运行原理,了解简单机器语言程序的执行特征;了解计算机的组成及运行原理,了解简单机器语言程序的执行特征;2.理解汇编语言指令与机器语言指令的关系,理解高级语言与汇编语言的关系,理解编译程序或理解汇编语言指令与机器语言指令的关系,理解高级语言与汇编语言的关系,理解编译程序或编译器的功能与作用,初步理解掌握执行程序的过程;编译器的功能与作用,初步理解掌握执行程序的过程;3.了解高级语言发展简史;初步理解操作系统、客户了解高级语言发展简史;初步理解操作系统、客户/服务器以及服务器以及Internet和和WWW的基本概念。的基本概念。34
2、.了解了解Java语言的特点,理解语言的特点,理解Java程序上机执行过程,掌握简单的程序上机执行过程,掌握简单的Java 应用程序和应用程序和Java applet程序的基本结构,能上机执行程序的基本结构,能上机执行Java 应用程序和应用程序和Java applet程序;能初步使用格式化输程序;能初步使用格式化输入输出语句。入输出语句。5.初步理解对象和类的概念,掌握表示它们的初步理解对象和类的概念,掌握表示它们的UML图形符号。图形符号。41.1计算机、计算机、Internet和和WWW1.2 Java语言语言1.3 Java程序程序1.4 对象与统一建模语言对象与统一建模语言UML 5
3、1.2 Java语言语言1.3 Java程序程序1.4 对象与统一建模语言对象与统一建模语言UML6Java语言是当今最为成功的计算机高级语言之一,是开发互联网应用的重要语言。它是富有经语言是当今最为成功的计算机高级语言之一,是开发互联网应用的重要语言。它是富有经验的程序员或计算机及其相关专业的学生不能不学习的语言,事实上,它是许多各类学校计算验的程序员或计算机及其相关专业的学生不能不学习的语言,事实上,它是许多各类学校计算机及其相关专业学生的一门课程。通过对它的学习,学生将熟悉面向对象程序设计基本知识和机及其相关专业学生的一门课程。通过对它的学习,学生将熟悉面向对象程序设计基本知识和基本技能
4、,并积累面向对象编程经验,掌握当流行的应用程序开发技术,而这正是基本技能,并积累面向对象编程经验,掌握当流行的应用程序开发技术,而这正是Java语言语言程序设计教材程序设计教材主要目的之一。本章是学习主要目的之一。本章是学习Java语言程序设计的一个简短入门。语言程序设计的一个简短入门。7我们操作过计算机的人都知道,计算机就是一种设备,它能让我们进行文字处理,绘制图形,我们操作过计算机的人都知道,计算机就是一种设备,它能让我们进行文字处理,绘制图形,玩游戏,听音乐,制作动画,上网查询信息和观看网络电影,等等。这是从计算机应用角度玩游戏,听音乐,制作动画,上网查询信息和观看网络电影,等等。这是从
5、计算机应用角度上的认识,实际上,计算机是能够以比人快几百万甚至几十亿倍的速度执行计算和逻辑判断上的认识,实际上,计算机是能够以比人快几百万甚至几十亿倍的速度执行计算和逻辑判断的设备。这种说法可能让人感到有点神奇甚至迷惑的设备。这种说法可能让人感到有点神奇甚至迷惑:8“文字处理、绘制图形、玩游戏、制作动画、听音乐、上网查询信息和观看网络电影等文字处理、绘制图形、玩游戏、制作动画、听音乐、上网查询信息和观看网络电影等”是怎是怎样与样与“执行计算和逻辑判断执行计算和逻辑判断”联系起来呢?联系起来呢?实际上,我们使用的计算机即计算机系统包含两大部分,一是硬件本身,它包括键盘、鼠标、实际上,我们使用的计
6、算机即计算机系统包含两大部分,一是硬件本身,它包括键盘、鼠标、显示器、磁盘和主机(箱)等;另一是软件。显示器、磁盘和主机(箱)等;另一是软件。9计算机硬件本身提供了执行计算和逻辑判断的功能,这些功能表现为一组指令,如加法指令、计算机硬件本身提供了执行计算和逻辑判断的功能,这些功能表现为一组指令,如加法指令、减法指令、取数指令、存数指令、输入指令和输出指令以及逻辑判断类指令等;减法指令、取数指令、存数指令、输入指令和输出指令以及逻辑判断类指令等;而软件是程序员利用计算机指令集,规划组织完成令我们激动的玩游戏、听音乐和制作动画而软件是程序员利用计算机指令集,规划组织完成令我们激动的玩游戏、听音乐和
7、制作动画等计算机应用的特定指令序列。软件也可简称为程序。实际上,等计算机应用的特定指令序列。软件也可简称为程序。实际上,10软件与程序是不等价的,简单说,软件软件与程序是不等价的,简单说,软件=程序程序+相关文档资料。相关文档资料。计算机硬件是在程序的指令集控制下处理数据的。计算机程序控制着计算机,使它按顺序执计算机硬件是在程序的指令集控制下处理数据的。计算机程序控制着计算机,使它按顺序执行一系列动作,这些动作是由程序员规划的,并用指令描述的。行一系列动作,这些动作是由程序员规划的,并用指令描述的。各种计算机无论外观差别有多大,每一台计算机实际上都可划分为五个逻辑单元(或称五大各种计算机无论外
8、观差别有多大,每一台计算机实际上都可划分为五个逻辑单元(或称五大部分),如图部分),如图1-1所示。所示。11计算程序输入设备输出设备外存储器外部设备接口内存运算器控制器原始数据计算结果取数存数指令指令数据线控制信号线图1-1计算机的基本组成121)输入单元。输入单元是计算机接收信息的部分。它从各种输入设备读取信息(数据和计)输入单元。输入单元是计算机接收信息的部分。它从各种输入设备读取信息(数据和计算机程序),并把这些放置到其它处理信息的单元中。当今计算机的大多数信息是通过键盘算机程序),并把这些放置到其它处理信息的单元中。当今计算机的大多数信息是通过键盘输入的,但也逐渐出现使用其它许多输入
9、设备来进行信息输入,如扫描仪、声音输入设备等。输入的,但也逐渐出现使用其它许多输入设备来进行信息输入,如扫描仪、声音输入设备等。132)输出单元。输出单元是计算机输出信息的部分。它把计算机处理过的信息放置到各种输)输出单元。输出单元是计算机输出信息的部分。它把计算机处理过的信息放置到各种输出设备中,从而使这些信息能够被计算机外部使用。当今计算机的大多数信息是通过屏幕显出设备中,从而使这些信息能够被计算机外部使用。当今计算机的大多数信息是通过屏幕显示和纸张打印输出的,同时也出现使用其它许多输出设备来进行信息输出,如音箱等。示和纸张打印输出的,同时也出现使用其它许多输出设备来进行信息输出,如音箱等
10、。143)内存单元。内存单元是计算机中存取速度快、容量相对较少的储存部分。它能够记忆来)内存单元。内存单元是计算机中存取速度快、容量相对较少的储存部分。它能够记忆来自输入单元的信息,因而能够在需要的时候立即处理这些信息。内存单元还能够记忆被处理自输入单元的信息,因而能够在需要的时候立即处理这些信息。内存单元还能够记忆被处理过的信息,直到输出单元把信息放到输出设备上。内存单元经常被称为内存或主存。内存在过的信息,直到输出单元把信息放到输出设备上。内存单元经常被称为内存或主存。内存在计算机电源关闭后将不起作用。计算机电源关闭后将不起作用。154)中央处理单元()中央处理单元(CPU)。中央处理单元
11、是计算机中的)。中央处理单元是计算机中的“加工加工”和和“管理管理”部分。它负责部分。它负责执行各种计算如加、减、乘、除等,负责逻辑判断如比较内存中的两个数是否相等,这部分执行各种计算如加、减、乘、除等,负责逻辑判断如比较内存中的两个数是否相等,这部分又称为运算器。同时,它还是计算机的协调者,负责管理对其它部分的操作,这部分又称为又称为运算器。同时,它还是计算机的协调者,负责管理对其它部分的操作,这部分又称为控制器。在应该把信息读到内存单元中时,控制器。在应该把信息读到内存单元中时,CPU就会向输入设备发出请求;就会向输入设备发出请求;16当要把内存中信息用于计算时,当要把内存中信息用于计算时
12、,CPU会把这种请求通知其内部的运算器;当要把内存中的信会把这种请求通知其内部的运算器;当要把内存中的信息发送给某个输出设备时,息发送给某个输出设备时,CPU就会告诉输出设备。就会告诉输出设备。5)二级存储单元。二级存储单元是计算机中可以长久保存信息的高容量存储部分。没有被)二级存储单元。二级存储单元是计算机中可以长久保存信息的高容量存储部分。没有被其它单元使用的程序和数据通常放在二级存储单元中(如磁盘),其它单元使用的程序和数据通常放在二级存储单元中(如磁盘),17这些信息可能需要几个小时、几天、几个月甚至几年才会被使用。二级存储单元也称为外存这些信息可能需要几个小时、几天、几个月甚至几年才
13、会被使用。二级存储单元也称为外存储器,外存或称为辅存。储器,外存或称为辅存。计算机运行的过程,就是顺次执行程序中指令的过程。计算机的指令以及运行时数据都是采计算机运行的过程,就是顺次执行程序中指令的过程。计算机的指令以及运行时数据都是采用二进制数表示的。下面举一个简单的例子说明计算机的运行。用二进制数表示的。下面举一个简单的例子说明计算机的运行。18例例1.1 设计一个程序,其运行后接受用户输入的两个数,然后计算其平均值,并输出结果。设计一个程序,其运行后接受用户输入的两个数,然后计算其平均值,并输出结果。解答:解决问题的过程为:解答:解决问题的过程为:1)输入两个数存放于变量)输入两个数存放
14、于变量a和和b中;中;2)计算)计算(a+b)/2,并将其结果存储于变量,并将其结果存储于变量X中;中;3)输出)输出X中的值;中的值;19当用计算机的指令来完成上述过程时,需要考虑到计算机的具体特性,如计算机中没有变量,当用计算机的指令来完成上述过程时,需要考虑到计算机的具体特性,如计算机中没有变量,而是用存储单元来表示等。完成上述过程的指令序列及其运行时在内存的存储布局如图而是用存储单元来表示等。完成上述过程的指令序列及其运行时在内存的存储布局如图1-2所示。所示。20图1-2计算X=(a+b)/2指令序列(表示a)00000100内存内存单元地址(表示b)00000101(表示X)000
15、0011010000110 011000000000011110100010 00000100 000000000000100110000110 011000000000110010100010 00000101 000000000000111010100000 00000100 000000000001000100000000 11000000 00000101 000000000001010010110001 000000100001100011110110 111100010001101010100010 00000110 000000000001110010111010 1101010
16、1 00000011000111111110111000100010111101000010001121例子说明:每例子说明:每8位二进制数称为一个字节(位二进制数称为一个字节(Byte),每一条指令用若干个字节的二进制代码),每一条指令用若干个字节的二进制代码表示,并存储到内存单元中。最小内存单元为表示,并存储到内存单元中。最小内存单元为1个字节,它必须用一个编号来表示,这个编个字节,它必须用一个编号来表示,这个编号称为单元地址。在图号称为单元地址。在图1-2中我们并没有把每个单元的地址标出来,只标出每条指令代码存中我们并没有把每个单元的地址标出来,只标出每条指令代码存储的起始单元的地址。储
17、的起始单元的地址。22图图1-2中的开始三个字节存储单元分别表示变量中的开始三个字节存储单元分别表示变量a、b和和X,用于存储它们的值。其它存储单,用于存储它们的值。其它存储单元用于存储指令,这些指令的含义解释如下。元用于存储指令,这些指令的含义解释如下。第一条指令用第一条指令用2个字节数据个字节数据“10000110 01100000”表示表示CPU从输入设备读进一个数(从输入设备读进一个数(a)并放置到寄存器并放置到寄存器AL中。中。23第二条指令用第二条指令用3个字节数据个字节数据“10100010 00000100 00000000”表示表示CPU把寄存器把寄存器AL中数中数放置到内存
18、中地址编号为放置到内存中地址编号为00000100的存储单元(的存储单元(1个字节)中保存。其中第个字节)中保存。其中第3个字节数据和个字节数据和第第2个字节数据合成一个个字节数据合成一个16位二进制数据(即位二进制数据(即00000000 00000100),表示存储单元(),表示存储单元(a)的地址。的地址。24第三条指令用第三条指令用2个字节数据个字节数据“10000110 01100000”表示表示CPU从输入设备读进一个数(从输入设备读进一个数(b)并放置到寄存器并放置到寄存器AL中;中;第四条指令用第四条指令用3个字节数据个字节数据“10100010 00000101 000000
19、00”表示表示CPU把寄存器把寄存器AL中数中数放置到内存中地址编号为放置到内存中地址编号为00000101的存储单元(的存储单元(1个字节)中保存。其中第个字节)中保存。其中第3个字节数据和个字节数据和第第2个字节数据合成一个个字节数据合成一个16位二进制数据(即位二进制数据(即25即即00000000 00000101),表示存储单元(),表示存储单元(b)的地址。)的地址。第五条指令用第五条指令用3个字节数据个字节数据“10100000 00000100 00000000”表示表示CPU从内存中地址编从内存中地址编号为号为00000100的存储单元读进的存储单元读进1个字节数据(个字节数
20、据(a)并放置到)并放置到AL寄存器中。寄存器中。26第六条指令用第六条指令用4个字节数据个字节数据“00000000 11000000 00000101 00000000”表示表示CPU把把内存中地址编号为内存中地址编号为00000101存储单元的数据(存储单元的数据(b)加到)加到AL寄存器中。寄存器中。第七条指令用第七条指令用2个字节数据个字节数据“10110001 00000010”表示表示CPU把数把数00000010即即2存储到存储到CL寄存器中。寄存器中。27第八条指令用第八条指令用2个字节数据个字节数据“11110110 11110001”表示表示CPU用用CL中数支除中数支除
21、AL寄存器中数,寄存器中数,其结果存储在其结果存储在AL寄存器中。寄存器中。第九条指令用第九条指令用3个字节数据个字节数据“10100010 00000110 00000000”表示表示CPU把寄存器把寄存器AL中数中数传送到内存中地址编号为传送到内存中地址编号为00000110的存储单元(的存储单元(X)中保存;)中保存;28第十条指令用第十条指令用3个字节数据个字节数据“10111010 11010101 00000011”表示表示CPU把数把数00000011 11010101即即03D5H(十六进制)存储到(十六进制)存储到DX寄存器中;寄存器中;03D5H表示显示器的端口号。表示显示
22、器的端口号。第十一条指令用第十一条指令用1个字节数据个字节数据“11101110”表示表示CPU把把AL寄存器中数送到寄存器中数送到DX寄存器所指向的寄存器所指向的端口连接的设备即显示器。端口连接的设备即显示器。29第十二条指令用第十二条指令用1个字节数据个字节数据“11110100”表示表示CPU停止执行指令。停止执行指令。计算机的指令集也称为机器语言,上述的指令序列也称为机器语言程序。注意,该例子中用计算机的指令集也称为机器语言,上述的指令序列也称为机器语言程序。注意,该例子中用汉语描述计算过程时的每一步,在用机器语言描述时需要多条指令。汉语描述计算过程时的每一步,在用机器语言描述时需要多
23、条指令。30机器语言就是计算机机器语言就是计算机CPU的指令集合,用它表示的计算程序即机器语言程序可以直接由计算的指令集合,用它表示的计算程序即机器语言程序可以直接由计算机执行。我们所谓的使用计算机,其它实质就是通过使用机器语言来完成计算任务,所以从机执行。我们所谓的使用计算机,其它实质就是通过使用机器语言来完成计算任务,所以从这个角度上讲,机器语言就是机器的这个角度上讲,机器语言就是机器的“代表代表”或或“化身化身”。但机器语言程序难理解,因为机器指令是用二进制数据表示的。为了便于记忆、但机器语言程序难理解,因为机器指令是用二进制数据表示的。为了便于记忆、31理解机器指令或机器语言程序,人们
24、用字母符号来表示机器指令,这种字母符号一般用一个理解机器指令或机器语言程序,人们用字母符号来表示机器指令,这种字母符号一般用一个有意义单词的前几个字母组成,如有意义单词的前几个字母组成,如ADD表示加法指令,表示加法指令,MOV表示传送数据等等。符号化的表示传送数据等等。符号化的指令称为汇编指令,汇编指令的集合称为汇编语言,用它表示的程序称为汇编语言程序。指令称为汇编指令,汇编指令的集合称为汇编语言,用它表示的程序称为汇编语言程序。上节例子中的机器语言程序对应的汇编语言程序为下表右部分所示:上节例子中的机器语言程序对应的汇编语言程序为下表右部分所示:3233将该汇编语言程序与上节机器语言程序比
25、较,我们可以发现每一条汇编语言指令与每一条机器指令将该汇编语言程序与上节机器语言程序比较,我们可以发现每一条汇编语言指令与每一条机器指令基本上是一一对应的。注意,该汇编语言程序中,方括号中的数表示存储单元地址,这个数前后加基本上是一一对应的。注意,该汇编语言程序中,方括号中的数表示存储单元地址,这个数前后加上方括号,表示以该数为地址的存储单元内容,如第上方括号,表示以该数为地址的存储单元内容,如第2条汇编指令中,条汇编指令中,0100表示地址为表示地址为00000100的存储单元(的存储单元(a),寄存器中的数(),寄存器中的数(a)将被放置在其中;)将被放置在其中;34不加方括号的数表示一般
26、数据,如第不加方括号的数表示一般数据,如第10条汇编指令中,条汇编指令中,03D5H表示表示16进制数值进制数值03D5,将被,将被放置到寄存器放置到寄存器DX中。中。汇编语言可以看作是机器语言的抽象,事实上,它是通过符号化机器代码来实现的。汇编语言可以看作是机器语言的抽象,事实上,它是通过符号化机器代码来实现的。然而用汇编语言表示人类社会的计算,也不大方便和直观,如上例中的然而用汇编语言表示人类社会的计算,也不大方便和直观,如上例中的35“MOV DX 03D5H和和OUT DX AL”是用于是用于“输出数据输出数据”,这两者之间几乎看不出有什么,这两者之间几乎看不出有什么直观的联系。于是出
27、现了所谓的高级语言作为对汇编语言的抽象,使得指令更加直观的联系。于是出现了所谓的高级语言作为对汇编语言的抽象,使得指令更加“概念化概念化”,以便更接近我们的自然语言层次。用高级语言表示的程序称为高级语言程序。以便更接近我们的自然语言层次。用高级语言表示的程序称为高级语言程序。Java语言就是语言就是一种高级语言,用它写出类似上述例子的程序是:一种高级语言,用它写出类似上述例子的程序是:361 public class average2 public static void main(String args)3 int a=12,b=34,c;4 c=(a+b)/2;5 System.out.p
28、rintln(“The average is:”+c);6 7 37输出结果:输出结果:The average is:23程序说明:这里的程序说明:这里的Java程序由一个所谓的类构成,第程序由一个所谓的类构成,第1行是该类的开始,定义了名为行是该类的开始,定义了名为average的类,第的类,第7行以行以来结束该类的定义。来结束该类的定义。类一般包含多个方法,类一般包含多个方法,average类只含一个名为类只含一个名为main的主方法,它由方法头部即的主方法,它由方法头部即38第第2行开始到第行开始到第6行结束,其包含三句即第行结束,其包含三句即第3、4、5行,其中第行,其中第3行声明三个
29、整型变量行声明三个整型变量a、b和和c,分别存放两个整数和它们的平均值。第分别存放两个整数和它们的平均值。第4行计算出行计算出a和和b的平均值,并存放到(赋值给)变量的平均值,并存放到(赋值给)变量c中。第中。第5行从屏幕上输出文字行从屏幕上输出文字“The average is:”和结果即和结果即c的值。的值。注:上述注:上述java程序中,每行开始的数字不是程序中的部分,它是作者加上的,程序中,每行开始的数字不是程序中的部分,它是作者加上的,39用来表示行号,以便解释每行程序时,指明是哪一行。用来表示行号,以便解释每行程序时,指明是哪一行。可见,高级语言要比汇编语言容易理解和记忆,事实上,
30、它的抽象程度比汇编语言的高,并可见,高级语言要比汇编语言容易理解和记忆,事实上,它的抽象程度比汇编语言的高,并且更且更“接近接近”我们人类的语言,如高级语言中的变量就是存储单元的抽象。我们人类的语言,如高级语言中的变量就是存储单元的抽象。注:这里每一句如注:这里每一句如c=(a+b)/2对应了完成相应计算的多条汇编语句。对应了完成相应计算的多条汇编语句。40采用高级语言完成我们的计算任务,确实要比机器语言和汇编语言较自然和直观。但是,计采用高级语言完成我们的计算任务,确实要比机器语言和汇编语言较自然和直观。但是,计算机毕竟只能执行机器指令,所以,当我们编写出高级语言程序后,还得将它转换成对应的
31、算机毕竟只能执行机器指令,所以,当我们编写出高级语言程序后,还得将它转换成对应的机器语言程序,才能使计算机去执行计算。机器语言程序,才能使计算机去执行计算。完成这种转换的过程称为程序翻译。完成这种转换的过程称为程序翻译。程序翻译犹如是现实中的语言翻译,也程序翻译犹如是现实中的语言翻译,也41有两种方式即有两种方式即“笔译笔译”和和“口译口译”。笔译就是一次完整地翻译并记录在纸上,然后可以复印多份,同时供多人阅读。笔译就是一次完整地翻译并记录在纸上,然后可以复印多份,同时供多人阅读。而口译是在实际场景中,边讲边口头翻译,同样的话说两次,就得口译两次。显然。口译快,而口译是在实际场景中,边讲边口头
32、翻译,同样的话说两次,就得口译两次。显然。口译快,笔译慢;口译效率低,笔译效率高。笔译慢;口译效率低,笔译效率高。42对程序翻译而言,其对程序翻译而言,其“笔译笔译”称为编译,其称为编译,其“口译口译”称为解释,并且编译和解释工作是由专称为解释,并且编译和解释工作是由专门的程序来完成的,这种翻译程序分别称为编译程序和解释程序。门的程序来完成的,这种翻译程序分别称为编译程序和解释程序。在编译过程,被翻译的语言程序也称为源程序,相应地翻译结果称为目标程序,并且当源程在编译过程,被翻译的语言程序也称为源程序,相应地翻译结果称为目标程序,并且当源程序是汇编语言程序是,对应的翻译程序称为汇编程序,如图序
33、是汇编语言程序是,对应的翻译程序称为汇编程序,如图1-3所示。所示。4344注意:由上可以看出采用机器语言、汇编语言和高级语言分别表示同一个计算时,虽然它们注意:由上可以看出采用机器语言、汇编语言和高级语言分别表示同一个计算时,虽然它们采用的命令或语句的数目不相同,特征也各异,但它们所包含的内在计算步骤或过程是相同采用的命令或语句的数目不相同,特征也各异,但它们所包含的内在计算步骤或过程是相同的。在后面我们将把这种的。在后面我们将把这种“计算步骤或过程计算步骤或过程”称为算法。称为算法。45上个世纪上个世纪50年代早期,开始出现符号化语言。格雷斯年代早期,开始出现符号化语言。格雷斯.霍帕(霍帕
34、(Grace Hopper)领导一个小组开发了)领导一个小组开发了A-0语言,约翰语言,约翰.巴克斯为巴克斯为IBM 701开发了加速代码。开发了加速代码。1955年以后,开始出现一系列高级语言。年以后,开始出现一系列高级语言。1955年到年到1957年间,巴克斯领导一个组开发了公式翻译年间,巴克斯领导一个组开发了公式翻译语言语言46ALGOrithmic Language,也即,也即ALGOL语言。该语言具有几个不同的目标,即语言。该语言具有几个不同的目标,即1、ALGOL语言的表示应该接近标准数学。语言的表示应该接近标准数学。2、ALGOL语言对于描述算法应该是有用的。语言对于描述算法应该
35、是有用的。3、用、用ALGOL语言编写的程序应该可编译为机器语言程序。语言编写的程序应该可编译为机器语言程序。474、ALGOL语言不局限于某一计算机的体系结构。语言不局限于某一计算机的体系结构。正是正是ALGOL语言,引入了传递名字参数的过程调用概念,也是为了定义语言,引入了传递名字参数的过程调用概念,也是为了定义ALGOL语言,约翰语言,约翰.巴巴克斯和彼特克斯和彼特.瑙尔给出了一种高级语言的语法描述方法,被称为巴克斯瑙尔给出了一种高级语言的语法描述方法,被称为巴克斯-瑙尔范式,或称为瑙尔范式,或称为BNF。ALGOL语言后来又有了两次发展分别为语言后来又有了两次发展分别为ALGOL 60
36、和和48ALGOL 68。ALGOL语言并没有在美国得到推广。语言并没有在美国得到推广。FORTRAN语言和语言和ALGOL语言都是基于数值计算的语言。语言都是基于数值计算的语言。在早期语言的研究与开发的基础上,各种各样的高级语言迅速发展起来,多达几万种,但得到在早期语言的研究与开发的基础上,各种各样的高级语言迅速发展起来,多达几万种,但得到广泛应用的也就是十几种。广泛应用的也就是十几种。495051在前面,为了便于写出完成计算的程序,引入了高级语言,而用高级语言写程序确实要比用汇编语言在前面,为了便于写出完成计算的程序,引入了高级语言,而用高级语言写程序确实要比用汇编语言和机器语言来得方便和
37、直观,但由此也改变了我们运行程序的过程。和机器语言来得方便和直观,但由此也改变了我们运行程序的过程。一般地,运行一个高级语言程序需要经历三个步骤一般地,运行一个高级语言程序需要经历三个步骤:第一就是要把源程序正确无误地输入到计算机内部,这一步称为编辑源程序第一就是要把源程序正确无误地输入到计算机内部,这一步称为编辑源程序52并且是通过运行一个所谓的编辑程序来完成的;并且是通过运行一个所谓的编辑程序来完成的;第二步就是运行编译程序,来把源程序翻译成目标程序;第二步就是运行编译程序,来把源程序翻译成目标程序;第三步就是运行该目标程序,完成特定的计算。第三步就是运行该目标程序,完成特定的计算。如图如
38、图1-4所示所示.53图1-4 高级语言程序运行过程编辑器高级语言源程序机器语言程序(目标程序)源程序文本编译器执行目标程序第1步:编辑第2步:编译第3步:运行54我们运行程序时,并不是简单地直接使用计算机硬件来进行,而是通过运行在计算机中的所谓操作系统来我们运行程序时,并不是简单地直接使用计算机硬件来进行,而是通过运行在计算机中的所谓操作系统来完成的。操作系统是计算机中最重要的程序,用来管理和控制计算机的活动。我们经常使用的完成的。操作系统是计算机中最重要的程序,用来管理和控制计算机的活动。我们经常使用的Windows 2000、XP或或ME,就是一种常用的操作系统。没有操作系统,应用程序(
39、如字处理程序、,就是一种常用的操作系统。没有操作系统,应用程序(如字处理程序、Internet浏览器浏览器等)就不能运行。硬件、操作系统、应用程序和用户之间的关系如图等)就不能运行。硬件、操作系统、应用程序和用户之间的关系如图1-5所示。所示。55561.控制和监督系统的活动控制和监督系统的活动操作系统要对系统的安全负责,要确保没有权限的用户不能访问系统,要确保系统信息不受到破坏,要确保合操作系统要对系统的安全负责,要确保没有权限的用户不能访问系统,要确保系统信息不受到破坏,要确保合法的操作得到执行,还要确保不同程序和用户在同时使用计算机时不会相互干扰。操作系统不必须提供一法的操作得到执行,还
40、要确保不同程序和用户在同时使用计算机时不会相互干扰。操作系统不必须提供一些基本功能,如,识别键盘输入,向显示器发送输出,保存文件和目录,控制硬盘驱动器和打印机等。些基本功能,如,识别键盘输入,向显示器发送输出,保存文件和目录,控制硬盘驱动器和打印机等。572.分配系统资源分配系统资源 操作系统负责确定程序需要使用哪些计算机资源(操作系统负责确定程序需要使用哪些计算机资源(CPU、内存、磁盘、输入和输出设备),并进行资源分、内存、磁盘、输入和输出设备),并进行资源分配以便运行程序;程序结束时还要回收资源。配以便运行程序;程序结束时还要回收资源。3.安排操作的顺序安排操作的顺序 操作系统还要负责安
41、排和确定程序的执行顺序,以便有效地利用资源。为了增强系统的性能,目前许多操作系统还要负责安排和确定程序的执行顺序,以便有效地利用资源。为了增强系统的性能,目前许多操作系统支持多道程序设计、多线程和多处理技术。操作系统支持多道程序设计、多线程和多处理技术。58多道程序设计允许多个程序同时运行,共享多道程序设计允许多个程序同时运行,共享CPU。例如,。例如,Web浏览器下载文件的同时,我们可以用字处理浏览器下载文件的同时,我们可以用字处理程序来编辑文件。程序来编辑文件。线程是程序中可同时运行的基本单。多线程允许一个程序内部同时有多个线程是程序中可同时运行的基本单。多线程允许一个程序内部同时有多个“
42、子程序子程序”并发处理,即可以同并发处理,即可以同时运行。例如,时运行。例如,Word字处理程序允许用户编辑文字的同时将其保存到文件中。这里编辑和保存就是同一字处理程序允许用户编辑文字的同时将其保存到文件中。这里编辑和保存就是同一个应用程序中的两个不同任务。个应用程序中的两个不同任务。多处理也称为并行处理,是指用两个或多个处理器一起执行同一任务。多处理也称为并行处理,是指用两个或多个处理器一起执行同一任务。59客户客户/服务器是网络系统中应用广泛的一种技术,它的用法有点混乱。客户服务器是网络系统中应用广泛的一种技术,它的用法有点混乱。客户/服务器有两种用法服务器有两种用法:一种用来指网络上作为
43、提供信息共享服务的计算机和用户用来查询浏览网络上信息的计算机,前者一种用来指网络上作为提供信息共享服务的计算机和用户用来查询浏览网络上信息的计算机,前者称为服务器计算机或简称为服务器,后者称为客户计算机或简称为客户机。称为服务器计算机或简称为服务器,后者称为客户计算机或简称为客户机。60另一种用法是指运行中的程序(进程或线程)之间的关系的处理方式,本书下面开始都是指的这种另一种用法是指运行中的程序(进程或线程)之间的关系的处理方式,本书下面开始都是指的这种用法。用法。当一个程序在某一时刻向另一个程序提出请求服务时,则提出请求服务的程序称为客户,而提供服当一个程序在某一时刻向另一个程序提出请求服
44、务时,则提出请求服务的程序称为客户,而提供服务的程序称为服务器。例如,我们通过务的程序称为服务器。例如,我们通过Internet浏览器上网查询网络信息时,它就是一个客户程序,浏览器上网查询网络信息时,它就是一个客户程序,而提供信息的而提供信息的Web就是服务器。就是服务器。61客户与服务器的关系并不是一成不变的,它们是一种相对的关系。在某一时刻是服务器的程序,在客户与服务器的关系并不是一成不变的,它们是一种相对的关系。在某一时刻是服务器的程序,在另一时刻就有可能成为客户程序。另一时刻就有可能成为客户程序。62Internet互联网络是上世纪互联网络是上世纪60年代以来,由美国国防部投资开发的。
45、最初只是联接大约十几所大学年代以来,由美国国防部投资开发的。最初只是联接大约十几所大学和研究机构的主要计算机系统。今天,联入和研究机构的主要计算机系统。今天,联入Internet的计算机数量已达几亿台。的计算机数量已达几亿台。WWW(The World Wide Web)是)是Internet互联网络上一种最广泛的应用技术或应用形式,它互联网络上一种最广泛的应用技术或应用形式,它使使Internet互联网络上的用户从世界各地访问多媒互联网络上的用户从世界各地访问多媒63体电子信息宝库。可以使用体电子信息宝库。可以使用WWW查找和查看所有主题的基于多媒体的文档,可以预定旅馆的房间、查找和查看所有
46、主题的基于多媒体的文档,可以预定旅馆的房间、购买飞机票、注册学习课程、下载各种资料、与朋友聊天、观看电影、收听实况直播等等。购买飞机票、注册学习课程、下载各种资料、与朋友聊天、观看电影、收听实况直播等等。641.3 Java程序程序1.4 对象与统一建模语言对象与统一建模语言UML65Java是功能齐全的能用程序设计语言,可以开发可靠的、要求严格的应用程序。是功能齐全的能用程序设计语言,可以开发可靠的、要求严格的应用程序。Java不仅可以开不仅可以开发发Web应用程序,而且还可以开发跨平台的独立应用程序,这些程序用于服务器、台式机、移动应用程序,而且还可以开发跨平台的独立应用程序,这些程序用于
47、服务器、台式机、移动设备等。设备等。66Java具有许多诱人的特点。这些特点正如具有许多诱人的特点。这些特点正如Sun公司在公司在Java语言白皮书开始处所说,包括语言白皮书开始处所说,包括Java是简是简单的、面向对象的、分布式的、解释型的、健壮的、安全的、结构中立的、可移植的、高效的、单的、面向对象的、分布式的、解释型的、健壮的、安全的、结构中立的、可移植的、高效的、多线程的以及动态的等。多线程的以及动态的等。1.Java是简单的是简单的任何一门计算机语言都不是简单的,任何一门计算机语言都不是简单的,67因为他们都具有进行程序设计所需要的基本功能和基本成份,需要完成常规程序设计。但是与程因
48、为他们都具有进行程序设计所需要的基本功能和基本成份,需要完成常规程序设计。但是与程序设计语言序设计语言C+相比,相比,Java要显得简单一些。要显得简单一些。Java部分地模仿了部分地模仿了C+,但是进行了极大的简化和,但是进行了极大的简化和改进。例如,改进。例如,C+中的指针和多重继续常常使程序复杂化,而中的指针和多重继续常常使程序复杂化,而Java丢弃了指针,并使用一种所谓丢弃了指针,并使用一种所谓接口(接口(interface)的简单概念代替了多重继续。)的简单概念代替了多重继续。68C+要求程序员自己去进行内存的分配与回收,而要求程序员自己去进行内存的分配与回收,而Java采用自动内存
49、分配与回收。另外,采用自动内存分配与回收。另外,Java比比C+具有更少的语言概念,而功能却更强大。具有更少的语言概念,而功能却更强大。2.Java是面向对象的是面向对象的Java一开始就设计为完全面向对象的,即一开始就设计为完全面向对象的,即Java天生就是面向对象的。而许多面向对象语言如天生就是面向对象的。而许多面向对象语言如C+,包含了面向过程的特征。包含了面向过程的特征。69所谓面向过程,指程序是按照问题解决的既定过程设计而的,它在的运行过程完全符合问题解决所谓面向过程,指程序是按照问题解决的既定过程设计而的,它在的运行过程完全符合问题解决的既定过程,这就要求设计过程中必须按照(规定的
50、)解决问题过程来进行,即通过把问题分解的既定过程,这就要求设计过程中必须按照(规定的)解决问题过程来进行,即通过把问题分解为若干小问题来进行求解,也即进行所谓的功能分解。这样,设计出来的程序是由一些功能模块为若干小问题来进行求解,也即进行所谓的功能分解。这样,设计出来的程序是由一些功能模块构成构成70(这种(这种“功能模块功能模块”在在C语言中称为函数),如图语言中称为函数),如图1-5所示,该程序是用于计算规则图形面积,它所示,该程序是用于计算规则图形面积,它被分解为四个功能模块。被分解为四个功能模块。71而面向对象是指程序是由对象构成的,这种对象是问题中事物的抽象,它包含数据字段和方法;数