程序设计辅导材料_第1页
程序设计辅导材料_第2页
程序设计辅导材料_第3页
程序设计辅导材料_第4页
程序设计辅导材料_第5页
全文预览已结束

下载本文档

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

文档简介

1、第三章 程序设计语言简述计算机是无知觉无生命的机器,它能为人们工作就是因为让它执行相应程序,程序规定了需要执行的动作和动作的执行顺序。编制程序的工作就是程序设计(programming)。程序的表达手段就是程序设计语言。3.1高级程序设计语言的实现从程序设计语言的发展可以看到,计算机只能根据机器语言指令来执行程序,高级语言程序必须通过翻译变成机器语言程序,这个工作一般是由翻译程序自动完成的。把一种语言翻译成另一种语言的程序叫做翻译器。把高级语言程序翻译成机器语言程序一般有两种做法:编译和解释,相应的翻译工具也分别叫做编译程序和解释程序。3.1.1编译程序的工作原理一个高级语言程序当采用编译程序

2、处理时,输入到编译程序的高级语言源程序经编译后得到目标码程序,但目标代码还不能立即装入机器执行,因为一般情况下它是不够完整的。所以,编译后得到的目标模块还需进行连接。连接程序找出需要连接的外部模块并到模块库中找出被调用的模块,调入内存并连接到目标模块上,形成可执行程序。执行时,把可执行程序加载到内存中合适的位置(此时得到的是内存中的绝对地址),就可执行了。源程序目标程序可执行程序结果 编译 连接 执行程序的编译与执行编译型语言由于可进行优化(有的编译程序可作多次优化),目标码效率很高,是目前软件实现的主要方式。常见的程序设计语言,如CC+、Pascal、Ada、Fortran等都是编译型语言。

3、用这些语言编写的源程序,都需要进行编译、连接,才能生成可执行程序。这对于大型程序、系统程序、频繁使用的支持程序来说是十分有利的。3.1.2高级语言程序的解释执行解释执行需要有一个解释程序,它将源代码程序逐句读入,通过一边分析源程序一边执行程序。解释器不大,工作空间也不大,能根据程序执行情况决定下一步做什么(人工智能经常是这样的)是它的优点,不过,解释执行难于优化、效率较低,这是该类语言的致命缺点。3.2 高级程序设计语言的基本特征计算机程序的基本构成要素有常量、变量、表达式、语句和函数等。3.2.1常量、变量、表达式程序是用来处理数据的,因此,数据是程序的重要组成部分。常量所谓常量是指在程序运

4、行过程中其值始终不发生变化,通常就是固定的数值或字符串。变量变量是指在程序运行过程中其值可以发生变化的量。在程序设计语言中,变量也可以用指定的名字来代表,换句话说,变量由两部分组成:变量的“标识符”(又称“名字”),以及变量的“内容”(又称“值”)。变量的内容在程序运行过程中是可以变化的。变量在使用前需要首先进行定义。因为变量代表不同的值,所以在定义时只说明类型就可以了,数据类别指明了保存在变量中的数据的类别。表达式表达式是常量、变量、函数调用或者由它们和运算符组成的序列。3.2.2语句和函数一个程序的主体是由语句组成的,语句是构成程序的基本单位,语句决定了如何对数据进行处理并且根据运算结果决

5、定程序执行下一步的语句。在高级程序设计语言中语句分两大类:可执行语句和说明语句。可执行语句是指那些在执行时,要完成特定的操作(或动作),并且在可执行程序中构成执行序列的语句。例如赋值语句、结构控制语句、输入输出语句都是可执行语句。说明语句,也称为非执行语句或不可执行语句,不是程序执行序列的部分。它们只是用来描述某些对象(如数据、子程序等)的特征,将这些有关的信息通知编译系统,使编译系统在编译源程序时,按照所给的信息对对象作相应的处理。赋值语句变量可以在使用过程中予以赋值。赋值是用一个等号来连接一个变量名和一个值。变量名写在等号的左侧,欲赋给变量的值写在等号的右侧,表示将值赋给变量,此时等号称为

6、赋值符号。输入输出语句输入输出语句在某些高级语言中有定义,有的则没有,如C语言,是通过输入和输出函数来完成。程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语句就是一条赋值命令。程序就是有多个语句组成的序列,但由于程序并不是简单的顺序执行,常常要根据判断转到不同的地方运行或在一定的部位重复运行,因此,在程序语言里还要有一些控制结构语句,以便对程序的走向实施控制。因此,语句的主要作用就是对程序进行控制,控制语句是语言中的主要部分。程序的控制结构语句程序约定自上向下自左向右地执行,也就是顺序地执行语句(或表达式)。如果只能这样,计算机无异于计算器。计算机之所以能自动计算,

7、就是因为它能通过判断将程序转到应该执行的地方。人们就是通过巧妙地安排控制转移,使计算机实施算法。控制语句的数量不算多,很容易就记住了。控制语句可以分为下面几类: 选择控制语句; 循环控制语句; 转移控制语句; 子程序调用和返回语句等。最基本的程序控制有以下三种:顺序执行、分支控制和循环控制。这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的程序。函数函数是程序设计语言也就是系统提供给用户的一系列现成的程序,用户只需要给出参数,引用这个函数即可。有时函数也可以是用户自己编制的一段子程序,在C语言就是这样,把所有的子程序都用函数来实现。3.3面向过程式语言及基本特征331过程式语言与过程程序

8、设计一、过程语言过程式语言,也叫命令式语言或强制式语言,它是通过指明一列可执行的运算及运算的次序来描述计算过程的语言。命令式语言以冯诺依曼式计算机体系结构为背景。机器语言与汇编语言是最早问世的命令式语言。FORTRAN,ALGOL,COBOL,PASCAL,C,Ada等高级语言也属过程式语言,其变量对应于存储单元,对变量的访问就是对相应存储单元的访问。各个语句在程序中的顺序以及转向语句等控制语句则明确规定了机器的执行步骤,这就是冯诺依曼式体系结构的思维方式在程序设计中的反映。高级语言中每种语句几乎都要翻译成若干个低级机器指令。由于存储器空间有限,几乎所有程序都要用重复语句重复执行某些语句,语句

9、的重复执行使过程式语言程序的层次性受到很大的影响。过程式语言程序的本质是重复地、按步地计算低级(非抽象)值并将之赋给变量(对象),这就迫使程序人员去关心比较低级的细节,而这不适用于设计复杂算法。因此,几十年来过程式语言一直向着隐蔽低级机器属性、提高程序层次与抽象性的方向发展。但过程式语言无论如何发展,都是基于冯诺依曼式体系结构的。例如,几乎所有命令式语言都要涉及全程变量、传地址参数(或变量参数、引用参数等),它们一方面可以提高程序的执行效率,另一方面也降低了程序的层次性与抽象性,使程序难以编写、阅读、分析与修改,也使得程序的正确性证明难以进行。随着在非冯诺依曼式体系结构、基础理论、元器件、人工

10、智能与软件工程等方面的不断发展,已有一些非过程式语言问世,函数式语言与逻辑语言就是其中的代表。但几乎每种非过程式语言其中都或多或少要掺入一些具有过程式语言特征的成分。而且,由于非过程式语言在效率、应用等方面所存在的诸多问题,过程式语言在相当长的时期内仍会占据主导地位。二、过程式程序设计使用过程语言设计、编写和测试问题求解程序的活动称为过程式程序设计。过程式程序设计中主要涉及到数据结构的确定、求解算法的设计、代码文档的组织和测试等活动。前面在数据结构概述里我们已经知道,程序的处理对象是数据,这些数据或者是简单数据元素,或者是由一些数据元素构成的复杂数据,这些数据的逻辑结构统称为数据结构。因此,确

11、定数据结构是过程式程序设计的首要任务。简单数据元素通常有整数、实数、布尔值、字符、枚举值和指针等,复杂数据有字符串、数组、记录、集合、链表、树和图等。为描述数据结构,程序中需要定义数据类型和变量。数据类型可分为简单数据类型和结构数据类型,分别对应于简单数据元素和复杂数据。根据变量在程序中的作用域的大小,变量可分为局部变量和全局变量。局部变量的有效范围只在程序的一小部分,全局变量则在程序的任何地方都可以进行存取。为提高程序的可读性和可修改性,程序中应该尽可能地减小变量的作用域。求解算法的设计是指利用程序语言提供的控制结构描述求解步骤的活动。过程语言均提供顺序、选择和循环等三种控制结构。顺序结构是

12、指按先后顺序从前到后执行的语句序列。选择结构是指根据判定条件控制一些语句是否执行的语句。循环结构是指可重复执行一组语句(称为循环体)的程序语句。在过程程序设计中,主要是用程序语言描述解决问题的步骤即算法。而采用的程序设计方法比较多是自顶向下、逐步求精的程序设计方法。其基本思想是从最能直接反映问题体系结构的概念出发,逐步精细化、具体化、逐步补充细节,直到可用程序设计语言直接描述为止。332 过程式语言采用高级语言编写的程序在不同型号的计算机上只需做某些微小的改动便可运行,只要采用这些计算机上的编译程序重新编译即可。典型的过程式语言包括:l FORTRAN语言l ALGOL60语言l Pascal

13、语言l BASIC语言l C语言3.4面向对象语言及基本特征341面向对象的基本概念到今天,结构化程序设计已无处不在,几乎每种程序设计语言都具备支持结构化程序设计的机制。然而,随着程序规模与复杂性的增长,程序中的数据结构变得与这些数据上的操作同样重要。在大型结构化程序中,一个数据结构可能被许多过程处理,修改此数据结构将影响到所有这些过程。在由几百个过程组成的成千上万行结构化程序中,这相当麻烦,并且容易产生错误。从80年代中期开始,计算机科学的许多领域如程序设计语言、程序设计方法学、人工智能、数据库及操作系统等等,都出现了面向对象热。面向对象编程已成为90年代软件设计的趋势。面向对象程序设计是当今众多的计算机语言中最具有特色且别具一格的一种程序设计范例,它与其它计算机语言的程序设计风格迥然不同。面向对象程序设计同样能满足结构程序设计特点的需要:可用于设计和维护越来越庞大和越来越复杂的程序。这些程序由于通过建立一致的、易于操作的实体,即对象,而更加模块化了。此外,面向对象语言打破了“数据”与“算法”之间的传统的二分法。它汇集了与同一种概念相联系的所有知识,其汇集方式有如烹调技术既包括佐料又包括加工方法一样。这种程序设计风格使软件

温馨提示

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

评论

0/150

提交评论