第2章 程序设计基础
2.1.4 4GL语言
4GL语言的出现,将语言的抽象层次又提高到一个新的高度。同其他人工语言 一样,也采用不同的文法表示程序结构和数据结构,但它是在更高一级抽象的层次 上表示这些结构,它不再需要规定算法的细节。关系数据库的标准语言SQL即属于 该类语言。 4GL语言兼有过程性和非过程性的两重特性。程序员规定条件和相应的动作, 这是过程性的部分,并且指出想要的结果,这是非过程部分。然后由4GL语言系统 运用它的专门领域的知识来填充过程细节。
的高级语言产生了深刻的影响。
1960年出现的COBOL是商用数据处理应用中广泛使用的标准语言。COBOL通用性强, 容易移植,并提供了与事务处理有关的大范围的过程化技术。COBOL是世界上最早实现标 准化的语言,它的出现、应用与发展,改变了人们“计算机只能用于数值计算”的观点。 1964年,汤姆·库斯和约翰·凯孟尼创建了一种新的计算机高级语言,这种语言语句简洁、 语法简单,风格轻松活泼,又简便易学,被称为“初学者通用符号指令代码”,这就是著 名的Basic语言。该语言在微型计算机上得到广泛应用。目前Basic语言有多种版本,如 Borland公司的Turbo Basic、Microsoft公司的Visual Basic等。Microsoft Visual Basic 是目前使用最广泛的Basic语言开发工具,它提供了一个可视的开发环境,具有图形设计工 具、面向对象的结构化的事件驱动编程模式、开放的环境,使用户可以既快又简便的编制 出Windows的各种应用程序。
Prolog是另一种广泛用于专家系统构造的程序设计语言。和Lisp一样,Prolog提供了支持知识表示
的特性。这种语言用一种称为term的统一的数据结构来构造所有的数据和程序。每一个程序都由一组 代表事实、规划和推理的子句组成。Lisp和Prolog都特别适合于处理对象及其相互关系的问题。 Smalltalk是首先真正实现面向对象的程序设计语言之一。它引入了与传统程序设计语言根本不同
传统的RTRAN是最早出现的高级程序设计
语言,主要应用在科学、工程计算领域。 1958年,在FORTRAN基础上改进的ALGOL语言诞生了,与FORTRAN相比,ALGOL 的优点引入了局部变量和递归过程概念,提供了较为丰富的控制结构和数据类型,对后来
2.2.3 面向对象程序设计简介
面向对象的方法,实质上是面向功能的方法在新形势下(由功能重用发展到 代码重用)的回归与再现,是在一种高层次上(代码级重用)新的面向功能的方 法论,它设计的“基本功能对象(类或构件)”,不仅包括属性(数据),而且
通用的结构化程序设计语言
结构化程序设计语言的特点是具有很强的过程功能和数据结构功能,并提供结构化的
逻辑构造。这一类语言的代表有Pascal、C和Ada等,它们都是从ALGOL语言派生出来的。 20世纪60年代末研制的Pascal语言体现了结构化程序设计的思想,以系统、精确、合 理的方式表达了程序设计的基本概念,特别适合用来进行程序设计原理和高级语言的教学。 Borland公司的Turbo Pascal是使用比较广泛的版本。 1972年,美国贝尔实验室的Dennis Ritchie发明了C语言,它既有高级语言的特点,又 可以实现汇编语言的许多功能,因此它适用于编写系统软件和应用软件。C语言主要特点 是具有丰富的数据结构;基本程序结构是函数调用,支持用户自定义函数以扩充语言的功 能;与汇编语言接口好;具有丰富的函数库;具有比较强的图形处理能力。Borland公司 的Turbo C是早期使用广泛的C语言开发工具。 Ada语言是由美国国防部出资开发的,作为一种用于嵌入式实时计算机设计的标准语言。
2.2.2 结构化程序设计方法
结构化程序设计方法的基本原则可以概括为自顶向下、逐步求精、模块化、 限制使用goto语句。
自顶向下 程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。 开始时不过多追求众多的细节,先从最上层总体目标开始设计,逐步使问题具体化, 层次分明,结构清晰。 逐步求精 对复杂问题,应设计一些子目标作过渡,逐步细化。针对某个功能的宏观描述, 进行不断分解,逐步确立过程细节,直到该功能用程序语言的算法实现为止。 模块化 将一个复杂问题,分解为若干个简单的问题。每个模块只有一个入口和一个出口, 使程序有良好的结构特征,能降低程序的复杂度,增强程序的可读性、可维护性。 限制使用goto语句 因为使用goto语句会破坏程序的结构化,降低了程序的可读性,因而不提倡使用 goto语句。
2.1.2 汇编语言
为了克服机器语言的缺点,人们采用与代码指令实际含义相近的英文缩写词、 字母和数字等符号来取代指令代码,产生了汇编语言(也称为符号语言)。汇编语 言是由一条条助记符所组成的指令系统。使用汇编语言编写的程序(汇编语言源程 序),计算机不能直接识别,需要由一种起翻译作用的程序(汇编程序),将其翻 译成机器语言程序(目标程序),计算机方可执行,这一翻译过程称之为“汇编”。
2.2 结构化程序设计
由于软件危机的出现,人们开始研究程序设计方法,其中最受关注的是结构化 程序设计方法。20世纪70年代提出了“结构化程序设计(Structured Programming)”的思想和方法,该方法引入了工程思想和结构化思想,使大型 软件的开发和编程都得到了极大的改善。
2.2.1 结构化程序设计思想
顺序结构
顺序结构是最基本、最常用的结构,如图2-1所示。顺序结构就是按 照程序语句行的自然顺序依次执行程序。
图2-1 顺序结构
选择结构
选择结构又称为分支结构,这种结构可以根据设定的条件,判断应 该选择哪一条分支来执行相应的语句序列。如图2-2所示。
图2-2 选择结构
循环结构
循环结构是根据给定的条件,判断是否需要重复执行某一程序段。 在程序设计语言中,循环结构对应两类循环语句,对先判断后执行循环
2.1.5 程序设计语言的比较
应用领域。 算法和计算复杂性。 软件运行环境。 用户需求中关于性能方面的需要。 数据结构的复杂性。 软件开发人员的知识水平和心理因素等。
汇编语言
程序执行占用较短的时间,或者占用较小存储容量的场合。 程序与计算机硬件密切相关,程序直接控制硬件的场合。 需提高大型软件性能的场合。 没有合适的高级语言的场合。
修改。它不再支持运算符重载、多继承及许多自动强制等易混淆和较少使用的特性,增加
了内存空间自动垃圾收集的功能。Java是面向对象语言,基本功能类似于C++,但增加了 Objective C的扩充,可提供更多的动态解决方法。Java中提供了附加的例程库,通过它们 的支持,Java应用程序能够自由地打开和访问网络上的对象,就像在本地文件系统中一样。 Java有建立在公共密钥技术上的确认技术,指示器语义的改变将使应用程序不能再去访问 以前的数据结构或私有数据,这样大多数病毒也就无法破坏数据。因而,使用Java可以构 造出无病毒、安全的系统。
若干个基本模块,这些模块形成一个树状结构,各模块之间的关系尽可能简单, 且功能相对独立,每个模块内部均是由顺序、选择、循环三种基本结构组成,其 模块化实现的具体方法是使用子程序(函数或过程)。结构化程序设计由于采用 了模块化与功能分解、自顶向下、分而治之的方法,因而可将一个较为复杂的问 题分解为若干个子问题,各个子问题分别由不同的人员解决,从而提高了程序开 发速度,并且便于程序的调试,有利于软件的开发和维护。
结构化程序设计方法是程序设计的先进方法和工具。采用结构化程序设计方法 编写程序,可使程序结构清晰、易读、易理解、易维护。结构化程序设计具有三种 基本结构:顺序结构、选择结构和循环结构。1966年,Boehm和Jacopini证明了 任何单入口单出口没有“死循环”的程序都能由顺序、选择和循环三种最基本的控 制结构构造出来。
2.2.3 面向对象程序设计简介
面向对象程序设计,是当前程序设计的主流方向,是程序设计方式在思维
上和方法上的一次飞跃。面向对象程序设计方式是一种模仿人们建立现实世界模 型的程序设计方式,是对程序设计的一种全新的认识。
面向对象程序设计的基本思想,一是从现实世界中客观存在的事物(即对
象)出发,尽可能运用人类的自然思维方式去构造软件系统,也就是直接以客观 世界的事务为中心来思考问题、认识问题、分析问题和解决问题。二是将事物的 本质特征经抽象后表示为软件系统的对象,以此作为系统构造的基本单位。三是 使软件系统能直接映射问题,并保持问题中事物及其相互关系的本来面貌。因此, 面向对象方法强调按照人类思维方法中的抽象、分类、继承、组合、封装等原则 去解决问题。这样,软件开发人员便能更有效地思考问题,更容易与客户沟通。
Ada语言在结构和符号方面类似于Pascal语言。
专用语言
专用语言是为特殊的应用而设计的语言。通常具有自己特殊的语法形式,面对特定的问题,输入结 构及词汇与该问题的相应范围密切相关。有代表性的专用语言有APL、Lisp、Prolog、Smalltalk、 C++、Java等。 APL是一种简单的对数组和向量处理非常有效的语言。它几乎不支持结构化设计和数据类型划分, 但它拥有丰富的操作运算符。主要用来解决一些数学计算问题。 Lisp是一种人工智能领域专用的语言,它特别适用于组合问题中常见的符号运算和表处理。
高等院校信息技术规划教材
高级汇编语言程序设计 实用教程(第2版)
任向民 王克朝 王喜德 冯阿芳 编著
清华大学出版社
2.1 程序语言设计
根据程序设计语言发展的历程,可将其大致分为 1. 机器语言 2. 汇编语言 3. 高级语言 4. 4GL语言
2.1.1 机器语言
机器语言是用二进制代码表示的计算机能直接识别和执行的机器指令的集合, 即处理器的指令系统。不同类型处理器的计算机,其机器语言是不同的,按照一种 计算机的机器指令编制的程序,不能在指令系统不同的计算机上执行。机器语言的 优点是能够被计算机直接识别、执行速度快、占用内存空间少。其缺点是难记忆、 难书写、难编程、易出错、可读性差、可移植性差。