算法表达中的抽象机制

算法表达中的抽象机制

ID:1337322

大小:92.00 KB

页数:12页

时间:2017-11-10

算法表达中的抽象机制_第1页
算法表达中的抽象机制_第2页
算法表达中的抽象机制_第3页
算法表达中的抽象机制_第4页
算法表达中的抽象机制_第5页
资源描述:

《算法表达中的抽象机制》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、算法表达中的抽象机制傅清祥王晓东算法与数据结构,电子工业出版社,1998摘要本文介绍了算法表达中的抽象机制,引入了抽象数据类型ADT的概念,提供一种相应的自顶向下逐步求精、模块化的程序设计方法,即运用抽象数据类型来描述程序的方法。目录§简介§从机器语言到高级语言的抽象§抽象数据类型§使用抽象数据类型带来的好处§数据结构、数据类型和抽象数据类型简介要用计算机解决一个稍为复杂的实际问题,大体都要经历如下的步骤。1将实际问题数学化,即把实际问题抽象为一个带有一般性的数学问题。这一步要引入一些数学概念,精确地阐述数学问题,弄清问题的已知条件、所要求的结果、以及在已知条件和所要求的结果之间

2、存在着的隐式或显式的联系。2对于确定的数学问题,设计其求解的方法,即所谓的算法设计。这一步要建立问题的求解模型,即确定问题的数据模型并在此模型上定义一组运算,然后借助于对这组运算的调用和控制,从已知数据出发导向所要求的结果,形成算法并用自然语言来表述。这种语言还不是程序设计语言,不能被计算机所接受。3用计算机上的一种程序设计语言来表达已设计好的算法。换句话说,将非形式自然语言表达的算法转变为一种程序设计语言表达的算法。这一步叫程序设计或程序编制。4在计算机上编辑、调试和测试编制好的程序,直到输出所要求的结果。在这里,我们只关心第3步,而且把注意力集中在算法程序表达的抽象机制上,目

3、的是引人一个重要的概念--抽象数据类型,同时为大型程序设计提供一种相应的自顶向下逐步求精、模块化的具体方法,即运用抽象数据类型来描述程序的方法。从机器语言到高级语言的抽象我们知道,算法被定义为一个运算序列。这个运算序列中的所有运算定义在一类特定的数据模型上,并以解决一类特定问题为目标。这个运算序列应该具备下列四个特征。5有限性,即序列的项数有限,且每一运算项都可在有限的时间内完成;6确定性,即序列的每一项运算都有明确的定义,无二义性;7可以没有输入运算项,但一定要有输出运算项;8可行性,即对于任意给定的合法的输入都能得到相应的正确的输出。这些特征可以用来判别一个确定的运算序列是否

4、称得上是一个算法。但是,我们现在的问题不是要判别一个确定的运算序列是否称得上是一个算法,而是要对一个己经称得上是算法的运算序列,回顾我们曾经如何用程序设计语言去表达它。算法的程序表达,归根到底是算法要素的程序表达,因为一旦算法的每一项要素都用程序清楚地表达,整个算法的程序表达也就不成问题。作为运算序列的算法,有三个要素。1作为运算序列中各种运算的运算对象和运算结果的数据;2运算序列中的各种运算;3运算序列中的控制转移。这三种要素依序分别简称为数据、运算和控制。由于算法层出不穷,变化万千,其中的运算所作用的对象数据和所得到的结果数据名目繁多,不胜枚举。最简单最基本的有布尔值数据、字

5、符数据、整数和实数数据等;稍复杂的有向量、矩阵、记录等数据;更复杂的有集合、树和图,还有声音、图形、图像等数据。同样由于算法层出不穷,变化万千,其中运算的种类五花八门、多姿多彩。最基本最初等的有赋值运算、算术运算、逻辑运算和关系运算等;稍复杂的有算术表达式和逻辑表达式等;更复杂的有函数值计算、向量运算、矩阵运算、集合运算,以及表、栈、队列、树和图上的运算等:此外,还可能有以上列举的运算的复合和嵌套。关于控制转移,相对单纯。在串行计算中,它只有顺序、分支、循环、递归和无条件转移等几种。我们来回顾一下,自从计算机问世以来,算法的上述三要素的程序表达,经历过一个怎样的过程。最早的程序设

6、计语言是机器语言,即具体的计算机上的一个指令集。当时,要在计算机上运行的所有算法都必须直接用机器语言来表达,计算机才能接受。算法的运算序列包括运算对象和运算结果都必须转换为指令序列。其中的每一条指令都以编码(指令码和地址码)的形式出现。与算法语言表达的算法,相差十万八千里。对于没受过程序设计专门训练的人来说,一份程序恰似一份"天书",让人看了不知所云,可读性极差。用机器语言表达算法的运算、数据和控制十分繁杂琐碎,因为机器语言所提供的指令太初等、原始。机器语言只接受算术运算、按位逻辑运算和数的大小比较运算等。对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代

7、之。机器语言能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字中,还得一一分配它们的存储单元。对于算法中有结构的数据的表达则要麻烦得多。机器语言所提供的控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧。直接用机器语言表达算法有许多缺点。4大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。