程序设计语言

上传人:第** 文档编号:51936332 上传时间:2018-08-17 格式:PPT 页数:94 大小:472KB
返回 下载 相关 举报
程序设计语言_第1页
第1页 / 共94页
程序设计语言_第2页
第2页 / 共94页
程序设计语言_第3页
第3页 / 共94页
程序设计语言_第4页
第4页 / 共94页
程序设计语言_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《程序设计语言》由会员分享,可在线阅读,更多相关《程序设计语言(94页珍藏版)》请在金锄头文库上搜索。

1、第7章 程序设计语言第7章 程序设计语言7.1 程序设计语言的发展历史 7.2 高级语言的基本元素7.3 高级语言的编译第7章 程序设计语言7.1 程序设计语言的发展历史 7.1.1 程序设计语言的断代划分程序设计语言发展到目前,共经历了三代,它们分别是机器语言时代、汇编语言时代和高级语言时代。1. 机器语言计算机刚发明时使用的程序设计语言是机器语言。机器语言的程序由指令组成,机器语言的特点是所 有指令的记号都采用符号0、1的编码组成。 第7章 程序设计语言我们在第3章中较详细地介绍了机器指令的表示方法,并给出了一个机器语言形式的程序例子。对比机器语言程序的例子和本章将要讨论的高级语言程序的例

2、子,可以发现,机器语言每条指令的功能很弱。因此,用机器语言书写程序时,程序设计人员不仅非常费力,而且编写程序的效率还非常低。另外,不同计算机的机器语言是不相同的,因此,用机器语言书写的程序在不同的计算机上不能通用。这样,当要把一个程序在另外类型的一个计算机系统上运行时,就需要重新编写程序代码。第3章我们曾讨论过一个简单的实现两个整数值相加功能的机器语言程序,其十六进制码格式的机器语言程序 如表7-1所示。第7章 程序设计语言表7-1 机器语言程序 机器语言操 作 定 义10 20从内存单元20 中取数值置于寄存器A30 21寄存器A的数值加内存单元21的数值,和存于寄存器A20 22把寄存器A

3、的数值存于内存单元22中00 00结束程序运行第7章 程序设计语言2. 汇编语言对程序设计人员来说,用机器语言书写程序的最大困难是把算法转换为由0、1符号编码表示的指令。因此,人们就试图用容易记忆和交流的符号来分别表示机器语言中的操作码和操作数,这就形成了汇编语 言。汇编语言出现于20世纪50年代初期。汇编语言是程序设计语言发展的第二代。第7章 程序设计语言机器语言中用术语机器指令来表示机器语言中某个特殊的操作。类似地,汇编语言中用术语指令来表示汇编语言中某个特殊的操作。汇编语言和机器语言基本上是一一对应的。也就是说,对大多数汇编语言中的指令来说,在机器语言中都存在一条功能相同的 机器指令。例

4、如,假设汇编语言中用LOAD表示取数操作,对应机器指令的操作码为10; 第7章 程序设计语言用STORE表示存数操作,对应机器指令的操作码为20;用ADD表示加法操作,对应机器指令的操作码为30;用HALT表示结束程序运行操作,对应机器指令的操作码为00。再假设汇编语言中用X表示内存单元地址20,用Y表示内存单元地址21,用SUM表示内存单元地址22,则上述实现两个整数值相加功能的汇编语言程序如表7-2所示。第7章 程序设计语言表7-2 汇编语言程序 汇编语言操 作 定 义LOAD X从内存单元 X 中取数值置于寄存器AADD Y寄存器A的数值加内存单元 Y 的数值,和存于寄存器ASTORE

5、SUM把寄存器A的数值存于内存单元SUM中HALT结束程序运行第7章 程序设计语言显然,和使用机器语言编写程序比较,使用汇编语言编写程序要容易许多。当然,计算机不能直接理解和执行用汇编语言编写的程序,需要进行转换。因为汇编语言的指令和机器语言的机器指令存在对应关系,所以这样的转换并不困难。汇编程序就是完成这种转换工作的一种专门的程序。汇编程序是把用汇编 语言编写的程序(术语称为源程序)翻译为等价的机器语言程序(术语称为目标程序)的一种程序。第7章 程序设计语言现在程序设计语言已发展到了第三代的高级语言,对大多数软件设计问题来说,使用高级语言编写程序是一种更为方便的选择。但是,由于在把用高级语言

6、编写的程序翻译为等价的机器语言程序的过程中,不一定能达到计算机运行效率最高,所以,在一些特定的软件设计问题中,仍然使用汇编语言编写程序。例如,目前大多数外部设备的驱动程序都是用汇编语言编写的。第7章 程序设计语言我们在第7章讨论了伪码形式的算法表示。伪码用非常接近自然语言的描述形式来描述算法。高级语言是一种在伪码形式的算法表示基础上的计算机程序设计语言,因此,和汇编语言相比,高级程序设计语言 的抽象度高,和具体计算机的相关度低(或没有相关度),求解问题的方法描述直观。由于高级语言的这些特点,所以,用高级语言设计程序的难度较以前大大降低。第7章 程序设计语言最早出现的高级语言是FORTRAN语言

7、。1957年,巴克斯领导的研究小组开发出了FORTRAN语言,其名字是FORmula TRANslator(公式翻译)的缩写。FORTRAN语言允许程序设计人员直接把计算公式书写在程序中,这就大大简化了程序设计的复杂性,提高 了程序设计的效率。而把用FORTRAN语言编写的程序转换成机器语言程序的任务由一个称为FORTRAN语言编译程序的程序来完成。FORTRAN语言编译程序的功能在某种意义上类似于汇编程序,只是由于FORTRAN语言和机器语言的对应关系复杂,所以FORTRAN语言编译程序较汇编程序复杂许多。第7章 程序设计语言FORTRAN语言受到了程序设计人员的一致好评。FORTRAN语言

8、的成功为高级语言的发展奠定了基础。随着软件技术的发展,人们对FORTRAN语言不断进行改造和更新。1958年,FORTRAN被修订为FORTRAN ,几年后又被修订为FORTRAN 。不同的FORTRAN语言软件开发商实现了FORTRAN语言的不同版本,这些版本之间互不兼容,这给程序的共享和 程序的移植造成了很大的困难。1966年,FORTRAN 以FORTRAN 66的名称成为一种标准。此后,FORTRAN语言的标准又两度更新FORTRAN 77和FORTRAN 90。第7章 程序设计语言随着FORTRAN语言的成功和不断发展,又有许多高级程序设计语言被提出,如ALGOL 语言、COBOL

9、语言等,在程序设计语言几十年的发展历程中,曾经推出的高级语言不下百种。随着程序设计语言的不断更新和发展,许多高级语言由于先天的不足,或后天没有软件商对其进行持续的更新和改造,所以,许多 高级语言逐渐被市场淘汰,如ALGOL 语言目前就不再被使用。第7章 程序设计语言7.1.2 高级语言的分类高级语言有许多种分类方法。常用的高级语言分类方法有:按照设计要求分,按照应用范围分,按照描述问题的方式分,等等。其中,按照描述问题的方式对高级语言进行分类,是最常用的分类方法。按照设计要求分,可把高级语言分成过程式语言和非过程式语言。过程式语言的主要特征是设计者通过给出一列可以顺序执行的运算步骤,来描述相应

10、的求 解过程。FORTRAN语言、COBOL 语言、ALGOL 语言等是过程式语言的典型代表。 第7章 程序设计语言非过程式语言的定义是相对于过程式语言来说的,凡是设计者无法表示出求解过程的一列可以顺序执行的运算步骤的语言都是非过程式语言。非过程式语 言的典型代表有 PROLOG 语言、GPSS语言等。例如,用 PROLOG 语言编写的程序是以逻辑推理为问题求解的基础,而不是通过给出一列可以顺序执行的运算 步骤来描述求解步骤的。PROLOG 语言程序的执行过程是按照程序语句的逻辑次序来执行的,这种逻辑次 序和FORTRAN语言描述的执行过程是完全不相同的。第7章 程序设计语言按照应用范围分,可

11、把高级语言分成通用语言和专用语言。目标专一的语言称为专用语言,目标非专 一的语言称为通用语言。专用语言有APT语言等。绝大部分高级语言都属于通用语言。按照描述问题的方式分,可把高级语言分成命令型语言、函数型语言、描述型语言和面向对象语言。 命令型语言是出现最早和曾经使用最多的高级语言。 命令型语言的特点是计算机按照该语言描述的操作步 骤来执行。换句话说,命令型语言程序中的语句就是 要求计算机执行的“命令”。FORTRAN语言、COBOL 语言、ALGOL语言、BASIC语言、C 语言、PASCAL 语言、Ada 语言、APL 语言等都属于命令型语言。 第7章 程序设计语言函数型语言的特点是把问

12、题求解过程表示成“块”结构,对调用“块”的调用者来说,每个块有输入数据和经过加工处理后的输出数据。这样,每个“块”的功能就像数学家所说的“函数”的功能,所以这种语言称为函数型语言。LISP语言、ML语言等都属于函数型语言。如果说命令型语言强调的是求解问题的步骤是什么,那么,描述型语言强调的就是问题是什么。描述型语言的特点是设计者给出的是问题的描述,计算机根据对问题描述的逻辑进行处理。由于这类高级语言 是基于逻辑的,所以也称为逻辑型语言。PROLOG语言、GPSS语言等都属于描述型语言。第7章 程序设计语言程序是要处理现实世界中的问题,如果把现实世界中的事物称作对象,那么每个对象都由一组属性和

13、一组行为组成。如“学生”这个对象的属性就有学号、姓名、年龄、性别等,“学生”这个对象的行为就有注册、登记考试成绩等。在命令型语言等程序设计语言中,一个对象的属性和该对象的行为是分离的,而面向对象语言的基础就是把对象的属性和对象的行为结 合为一体进行程序设计。Smalltalk语言、C+语言、Visual Basic语言、Java语言等都属于面向对象语言。面向对象语言是目前最为流行的程序设计语言。上述 关于四种高级语言特征和典型语言的讨论总结见表7-3。第7章 程序设计语言表7-3 四种类型高级语言一览表 语言类型特 征典 型 语 言命令型语言给出操作步骤FORTRAN、COBOL 、ALGOL

14、、BASIC、C 、 PASCAL、Ada、APL函数型语言由函数块组成LISP、ML描述型语言描述问题是什么PROLOG、GPSS面向对象语言以对象为基础Smalltalk、C+、Visual Basic、Java第7章 程序设计语言在上述四种类型的高级语言中,早期是命令型语言占主导地位,通常说的传统程序设计语言主要指的是命令型语言。由于以对象为基础的面向对象的高级语言较传统程序设计语言更符合人类思维和求解问题 的方式,所以近10年来,面向对象的高级语言有了长足的发展。面向对象的高级语言是目前程序设计语言发展的主流方向。第7章 程序设计语言7.2 高级语言的基本元素在四种类型的高级语言中,命

15、令型语言和面向对象语言在基本元素的表示和实现方法上基本一致,而函数型语言和描述型语言,在基本元素的表示和实现方法上也和其他两种类型的高级语言很不相同。考虑到函数型语言和描述型语言使用较少,本节关于高级语言基本元素的讨论,主要是针对命令型语言和面向对象语言而言。 第7章 程序设计语言6.2节我们讨论了算法的基本元素,这些基本元素是用伪码形式表示的。高级程序设计语言要做到既能 方便设计人员编程,又能方便计算机实现(即计算机能方便地最终识别、理解并运行高级语言程序),采用类似于伪码形式的、有固定格式和特定含义的语句作为程序设计的基本元素,就是一个恰当的选择。因此,高级语言的基本元素主要就是算法基本元

16、素的高级语言实现。第7章 程序设计语言7.2.1 变量在算法中,变量的定义是代表某个具体数值,并可改变其数值的符号。在高级语言中,要实现变量,就是要在使用变量前,给每个变量分配所需大小的内存单元空间。因此,高级语言中要求在使用某变量前,首先要定义该变量。从高级语言的角度看,变量代表了特定大小的内存单元空间。高级语言把变量分为全局变量和局部变量。全局变量是允许所有模块都使用的变量,局部变量是只允许在一个过程体内使用的变量。关于全局变量和局部 变量的概念我们在7.2.6节讨论过程时再进一步说明。 第7章 程序设计语言7.2.2 数据类型由于不同类型的数值占用内存单元的大小不同,所以高级语言在进行变量定义时,要具体指出该变量要存放数值的类型。高级语言中引入数据类型的概念来解决这一问题。在高级语言中,定义变量就是指明该变量的数据类型,从而为该变量分配相应数据类型的内存单元空间。例如,C语言规定,整数有三种数据类型,分别是长整数、整数和短整数,长整数用符号long(或long int)表示,整数用符号i

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

当前位置:首页 > 行业资料 > 其它行业文档

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