程序设计语言简述.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章程序设计语言简述

3.1 高级程序设计语言的实现

从程序设计语言的发展可以看到,计算机只能根据机器语言指令来执行程序,高级语言程序必须通过翻译变成机器语言程序,这个工作一般是由翻译程序自动完成的。把一种语言翻译成另一种语言的程序叫做翻译器。把高级语言程序翻译成机器语言程序一般有两种做法:编译和解释,相应的翻译工具也分别叫做编译程序和解释程序。

3.1.1 编译程序的工作原理

一个高级语言程序当采用编译程序处理时,输入到编译程序的高级语言源程序经编译后得到目标码程序,但目标代码还不能立即装入机器执行,因为一般情况下它是不够完整的。

所以,编译后得到的目标模块还需进行连接。连接程序找出需要连接的外部模块并到模块库中找出被调用的模块,调入内存并连接到目标模块上,形成可执行程序。

执行时,把可执行程序加载到内存中合适的位置(此时得到的是内存中的绝对地址),就可执行了。

程序的编译与执行

编译型语言由于可进行优化(有的编译程序可作多次优化),目标码效率很高,是目前软件实现的主要方式。常见的程序设计语言,如C/C++、Pascal、Ada、Fortran等都是编译型语言。用这些语言编写的源程序,都需要进行编译、连接,才能生成可执行程序。这对于大型程序、系统程序、频繁使用的支持程序来说是十分有利的。

3.1.2 高级语言程序的解释执行

解释执行需要有一个解释程序,它将源代码程序逐句读入,通过一边分析源程序一边执行程序。

解释器不大,工作空间也不大,能根据程序执行情况决定下一步做什么(人工智能经常是这样的)是它的优点,不过,解释执行难于优化、效率较低,这是该类语言的致命缺点。

3.2 高级程序设计语言的基本特征

计算机程序的基本构成要素有常量、变量、表达式、语句和函数等。

3.2.1 常量、变量、表达式

程序是用来处理数据的,因此,数据是程序的重要组成部分。

常量

所谓常量是指在程序运行过程中其值始终不发生变化,通常就是固定的数值或字符串。

变量

变量是指在程序运行过程中其值可以发生变化的量。在程序设计语言中,变量也可以用指定的名字来代表,换句话说,变量由两部分组成:变量的“标识符”(又称“名字”),以及变量的“内容”(又称“值”)。变量的内容在程序运行过程中是可以变化的。

变量在使用前需要首先进行定义。因为变量代表不同的值,所以在定义时只说明类型就可以了,数据类别指明了保存在变量中的数据的类别。

表达式

表达式是常量、变量、函数调用或者由它们和运算符组成的序列。

3.2.2 语句和函数

一个程序的主体是由语句组成的,语句是构成程序的基本单位,语句决定了如何对数据进行处理并且根据运算结果决定程序执行下一步的语句。在高级程序设计语言中语句分两大类:可执行语句和说明语句。

可执行语句是指那些在执行时,要完成特定的操作(或动作),并且在可执行程序中构成执行序列的语句。例如赋值语句、结构控制语句、输入输出语句都是可执行语句。

说明语句,也称为非执行语句或不可执行语句,不是程序执行序列的部分。它们只是用来描述某些对象(如数据、子程序等)的特征,将这些有关的信息通知编译系统,使编译系统在编译源程序时,按照所给的信息对对象作相应的处理。

赋值语句

变量可以在使用过程中予以赋值。赋值是用一个等号来连接一个变量名和一个值。变量名写在等号的左侧,欲赋给变量的值写在等号的右侧,表示将值赋给变量,此时等号称为赋值符号。

输入输出语句

输入输出语句在某些呒队镅灾杏卸ㄒ澹械脑蛎挥校鏑语言,是通过输入和输出函数来完成。

程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语句就是一条赋值命令。程序就是有多个语句组成的序列,但由于程序并不是简单的顺序执行,常常要根据判断转到不同的地方运行或在一定的部位重复运行,因此,在程序语言里还要有一些控制结构语句,以便对程序的走向实施控制。因此,语句的主要作用就是对程序进行控制,控制语句是语言中的主要部分。

程序的控制结构语句

程序约定自上向下自左向右地执行,也就是顺序地执行语句(或表达式)。如果只能这样,计算机无异于计算器。计算机之所以能自动计算,就是因为它能通过判断将程序转到应该执行的地方。人们就是通过巧妙地安排控制转移,使计算机实施算法。

控制语句的数量不算多,很容易就记住了。控制语句可以分为下面几类:

• 选择控制语句;

• 循环控制语句;

• 转移控制语句;

• 子程序调用和返回语句等。

最基本的程序控制有以下三种:顺序执行、分支控制和循环控制。这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的程序。

函数

函数是程序设计语言也就是系统提供给用户的一系列现成的程序,用户只需要给出参数,引用这个函数即可。有时函数也可以是用户自己编制的一段子程序,在C语言就是这样,把所有的子程序都用函数来实现

3.3 面向过程式语言及基本特征

3.3.1 过程式语言与过程程序设计

一、过程语言

过程式语言,也叫命令式语言或强制式语言,它是通过指明一列可执行的运算及运算的次序来描述计算过程的语言。

命令式语言以冯·诺依曼式计算机体系结构为背景。机器语言与汇编语言是最早问世的命令式语言。FORTRAN,ALGOL,COBOL,PASCAL,C,Ada等高级语言也属过程式语言,其变量对应于存储单元,对变量的访问就是对相应存储单元的访问。各个语句在程序中的顺序以及转向语句等控制语句则明确规定了机器的执行步骤,这就是冯·诺依曼式体系结构的思维方式在程序设计中的反映。

高级语言中每种语句几乎都要翻译成若干个低级机器指令。由于存储器空间有限,几乎所有程序都要用重复语句重复执行某些语句,语句的重复执行使过程式语言程序的层次性受到很大的影响。

过程式语言程序的本质是重复地、按步地计算低级(非抽象)值并将之赋给变量(对象),这就迫使程序人员去关心比较低级的细节,而这不适用于设计复杂算法。因此,几十年来过程式语言一直向着隐蔽低级机器属性、提高程序层次与抽象性的方向发展。

但过程式语言无论如何发展,都是基于冯·诺依曼式体系结构的。例如,几乎所有命令式语言都要涉及全程变量、传地址参数(或变量参数、引用参数等),它们一方面可以提高程序的执行效率,另一方面也降低了程序的层次性与抽象性,使程序难以编写、阅读、分析与修改,也使得程序的正确性证明难以进行。随着在非冯·诺依曼式体系结构、基础理论、元器件、人工智能与软件工程等方面的不断发展,已有一些非过程式语言问世,函数式语言与逻辑语言就是其中的代表。但几乎每种非过程式语言其中都或多或少要掺入一些具有过程式语言特征的成分。而且,由于非过程式语言在效率、应用等方面所存在的诸多问题,过程式语言在相当长的时期内仍会占据主导地位。

二、过程式程序设计

使用过程语言设计、编写和测试问题求解程序的活动称为过程式程序设计。过程式程序设计中主要涉及到数据结构的确定、求解算法的设计、代码文档的组织和测试等活动。

前面在数据结构概述里我们已经知道,程序的处理对象是数据,这些数据或者是简单数据元素,或者是由一些数据元素构成的复杂数据,这些数据的逻辑结构统称为数据结构。因此,确定数据结构是过程式程序设计的首要任务。简单数据元素通常有整数、实数、布尔值、字符、枚举值和指针等,复杂数据有字符串、数组、记录、集合、链表、树和图等。为描述数据结构,程序中需要定义数据类型和变量。数据类型可分为简单数据类型和结构数据类型,分别对应于简单数据元素和复杂数据。根据变量在程序中的作用域的大小,变量可分为局部变量和全局变量。局部变量的有效范围只在程序的一小部分,全局变量则在程序的任何地方都可以进行存取。为提高程序的可读性和可修改性,程序中应该尽可能地减小变量的作用域。

求解算法的设计是指利用程序语言提供的控制结构描述求解步骤的活动。过程语言均提供顺序、选择和循环等三种控制结构。顺序结构是指按先后顺序从前到后执行的语句序列。选择结构是指根据判定条件控制一些语句是否执行的语句。循环结构是指可重复执行一组语句(称为循环体)的程序语句。在过程程序设计中,主要是用程序语言描述解决问题的步骤即——算法。而采用的程序设计方法比较多是自顶向下、逐步求精的程序设计方法。其基本思想是从最能直接反映问题体系结构的概念出发,逐步精细化、具体化、逐步补充细节,直到可用程序设计语言直接描述为止。

相关文档
最新文档