Fortran95第5章-准备数据

上传人:206****923 文档编号:91567043 上传时间:2019-06-29 格式:DOCX 页数:34 大小:77.85KB
返回 下载 相关 举报
Fortran95第5章-准备数据_第1页
第1页 / 共34页
Fortran95第5章-准备数据_第2页
第2页 / 共34页
Fortran95第5章-准备数据_第3页
第3页 / 共34页
Fortran95第5章-准备数据_第4页
第4页 / 共34页
Fortran95第5章-准备数据_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《Fortran95第5章-准备数据》由会员分享,可在线阅读,更多相关《Fortran95第5章-准备数据(34页珍藏版)》请在金锄头文库上搜索。

1、第5章 准备数据从本章开始,我们将赋予语言实质性的语义,也就是规定上章所描述的语言的每一个细节所具有的涵义。这种涵义与其说是我们对于一种语言细节的定义,不如说是算法的要求,要求语言具有足够多的细节,用来表达在算法当中有可能出现的精细情节。对于任何的问题,站在计算机的角度来看,总是可以把它抽象为如下图所示的结构:输入数据 计算过程输出数据因此要准备通过计算来解决一个问题,首先要作到的是把该问题所涉及到的数据整理好,也就是列出所有的数据,然后根据数据的数学属性进行分类,这个分类的过程就是对数据施加足够的标记的过程,将来把这些数据输入到计算机,计算机将能够依据这些标记,辨识出数据所应该具有的数学属性

2、,从而施加相应的合法数学运算。所以作为向计算机描述计算问题的FORTRAN语言,它首先要作到的是约定如何给数据施加足够详细的标记。对这个标记过程的第一个要求是保证准确性,也就是说这个语言的标记系统必须正确地反映真实世界的问题里面,数据所具有的数学属性,因此这个标记系统必然是与数据的数学分类结构保持一致的。从数学的观点来看,世界上的所有数据,总是可以被表示为整数,实数,复数等等基本的数据种类,因此本章的内容就是讨论: FORTRAN语言如何把数据归结为一些基本数据类型; 然后为了足够详尽地描述每一个数据类型的属性,FORTRAN是如何施加相应的标记的; FORTRAN语言对于这些标记(语法形式)

3、所约定的语义是什么。然后我们就可以知道,要想用FORTRAN来描述一个问题的算法,并进而以问题算法的FORTRAN语言版本为媒介,通过计算机来得到计算结果,第一个步骤,就是准备好数据的FORTRAN描述。5.1 数据是什么在上一章里,据称计算机能够使用语言,而且是非常类似于人类的语言,至少从形式上看很象,这难免会令某些人(特别是看过KUBRICK的影片2001: A Space Odyssey的观众们)感到恐惧:)别怕!且先不讨论FORTRAN作为语言是否具有与人类语言等价的表达能力,至少从自然语言的语义学的角度来看,FORTRAN说出来的话其实是绝对空洞的,因为FORTRAN语言的全部语义基

4、础就只是数据,而数据对机器而言,只是意味着经过编码的符号。一台计算机其实是由以下6个部分组成: 数据-也就是基本数据元素以及数据结构; 基本操作-也就是一个对上述数据进行操作的基本操作集; 顺序控制-也就是一个控制针对数据的基本操作执行的时间顺序的机制; 数据存取-也就是一个如何给操作提供数据的机制; 存储管理-也就是一个数据存储分配机制; 操作环境-也就是一个支持程序和外部环境进行数据通讯的机制。因此一台计算机 在程序的使用者看来,就是给它输入数据,它再给你加工过的结果数据; 在程序的编制者看来,就是把对数据的处理过程表示为计算机有限的一系列基本操作(指令)的集合,使得计算机能够处理相应的数

5、据;因此,计算机的一切可以说都是围绕着数据-如何表达数据,如何处理数据。而计算机语言所要具备的两个部分的功能,首先就是完备的描述数据的性质,然后就是描述数据的处理过程。那么,什么是数据呢? 数据就是符号化了的信息!对于计算机来说,任何信息都只有表示为符号,才能被认可;反过来说,计算机只能输入符号,而不会也不能理解符号的含义,它的能力只是体现在按照既定规则来处理符号。然后,就是给出数据的表示,即如何用符号来明确而无歧义地表达数据。要使得符号具备数据的含义,需要经过这么几个步骤: 处理符号的第一步:给符号分类,并给出描述符号性质的方法。这个分类是人作为设计者给符号规定语义的第一步,因为对于人来说,

6、数据不能只是符号,而是具有来自真实世界的语义,设计者正是根据符号的这种语义,制定相应的处理符号的规则,而计算机要想能够正确地处理符号,基本的前提,就是每当引入一个数据,都得由人向机器声明这个数据是什么类型,这个数据具备什么性质,而且假设计算机已经被引入处理该种数据类型的规则。 处理符号的第二步:区分常量与变量。这一对范畴反映了最基本的人类抽象能力,也正是人类思维的基本模式。要想让机器模拟这种能力,最简单的做法就是:任何时候都必须首先声明,哪些符号表示常量,哪些符号表示变量,而变量相应的取值范围必须规定好,也就是说必须描述其取值为具有何种属性的常量值的集合;或至少已经被机器默认。 处理符号的第三

7、步:给每一类数据规定相应的合法运算。对于一种数据可以执行什么样的运算,来自于语言设计者对数据语义的规定,只有当运算被表示为相应的机器指令或指令集合,这时在表面看来,机器才开始真正“理解”了数据的“涵义”。因此可以说,数据的定义构成了计算机的“灵魂”。按照上面讨论的步骤,说明一个数据类型包括四个方面: 命名的语法 取值的范围与属性说明 该数据类型的常量的表示方法 定义合法的运算因此相应的一个数据类型的四个要素就是:(1) 名字; (2) 值的集合;(3) 表示值(相应的常量)的方法;(4) 操作值的运算的集合。对于这四个要素,FORTRAN一方面要约定它们的语法形式,从而可以构成符号描述的唯一性

8、标记,保证相应的描述语句能够被FORTRAN编译系统无歧义的辨识,另一方面就是要给出这些语法形式所对应的含义。5.2 用FORTRAN来说明数据的性质真实世界的数据显然是多种多样的,几匹马,轴承的内径,圆周长与直径的比值,电子的波函数,非各向同性电介质的电极化率,10个被试每日的最高血压等等,这些数据都具有非常不同的形式与性质,如果我们每针对一种数据形式,都把它定义为某一种新的数据类型,则肯定是烦不胜举,因此合理的途径是找到一种统一的数据描述方式,而对于科学计算问题来说,自然的数据分类方式是数学对数值数据的分类,再加上非数值型数据,会是非常适合于科学计算的数据表达方式。当然,如果是以描述其他类

9、型的问题为目的,如事务处理,符号演算等,则选用另外的数据分类方式会更有效。至少从数学的观点来看,我们常常需要处理的数据,都可以表示为一些基本数据类型的组合,例如我们知道向量实际上就是一个数组,数组的每个元素为标量,因此应用数组这种结构,就可以自然地表示向量,另外复数尽管也可表示为一个二元数组,但是这种二元数组的乘法不同于二维向量,因此为了避免这种歧义, FORTRAN把复数当成一个基本数据类型。而几种基本标量里面,整数和实数都同样必须构成基本的数据类型。由此可以建立FORTRAN的对数据的类似描述。由于真实世界问题的要求的不同,对数据的描述也有程度不等的情况,最基本的情况就是直接说明数据的类型

10、以及其他属性,又由于数据表示的实现具有一个重要的参数,即存储空间,所以当问题要求的数据,不能满足于默认的存储空间的时候,这时,就需要进一步给出数据的种别参数,这是更加详细的数据描述。如果在真实世界问题当中出现的的数据对象,干脆不符合已有的固有数据类型以及数组的定义,这时就还需要根据用户的要求构造一个依赖于问题的特定的数据结构,这就是数据描述时会遇到的第三种情况。对于这三种情况,FORTRAN的解决方式如下:第一种情况:确定数据的类型以及相应的可能具有的属性。首先,FORTRAN所能辨识的数据类型首先分为两大类: 固有数据类型 派生数据类型根据语义上的基本差别,数据首先具有一些基本的类型,这些基

11、本类型一般是和构成真实世界里的信息的那些基本元素相对应,比方说数字,字符等。然后其他情况下遇到的数据都可以由这些基本数据类型组合得到。不过一种语言具体的规定哪些基本的数据类型,往往受到该种语言主要应用的场合的影响,由于FORTRAN主要用来进行科学计算,因此它所定义的基本数据类型,正是与我们在科学计算问题当中遇到的数据类型相契合的。 所谓固有类型,是FORTRAN语言所定义的最基本的数据类型,每一种固有类型是和该种数据类型相应的各种运算一起隐式定义的,也就是说一旦声明引入某种固有数据类型,则系统总是默认为对它进行相应的运算是合法的,并且总是可访问的。这样就做到了每种数据类型都和它相应的运算捆绑

12、在一起,使得问题的描述非常自然。 固有类型包括五种:整型(INTEGER)、实型(REAL)、复型(COMPLEX)、逻辑型(LOGICAL)和字符型(CHARACTER)。这个分类完全是遵循数据的数学分类,即整型指整数,实型指实数,复型指复数,逻辑型指逻辑值,字符型则是语言的基本元素。这样就可以把基本的数学语言一一对应的直接翻译为FORTRAN语言。 所谓派生类型是由用户定义的,非隐式定义的类型,只要用一个类型定义来声明其成员是何种固有类型,或者是何种其它已经定义过的派生类型,就能够被FORTRAN认可为一种数据类型。 由于派生数据类型正是由固有数据类型充当成员而构成的,因此在结构关系上,可

13、以把固有数据类型看成原子,而把派生数据类型看成分子。由于语言的根本目的就是为描述算法服务的,因此从这个角度出发,派生数据类型本质上体现了非常重要的数据抽象与数组合的思想,由于我们需要运用语言来描述的问题是开放性,我们很难划定需要FORTRAN来描述的问题的范围,因此通过构造派生数据类型,使得我们可以很自然而简洁地建立新的数据类型。这是FORTRAN在FORTRAN77标准之后的一个重大进步。派生类型数据最重要的用途就是扩充了数组这种重要的数据结构,由于数组在科学计算领域,是一种极端重要的数据结构类型,FORTRAN除了能够直接描述数组,同时还能描述更为广泛的派生数据类型,也就可以直接对一个数据

14、集合的各个成员同时施加运算,拥有了这种自然的数据类型,就避免了象FORTRAN的早期版本那样,需要通过特别设计的算法来实现这种运算。所谓固有数据类型的固有,对于FORTRAN来说,就是为每一种固有数据类型规定了它的存储模式。在FORTRAN77及其之前的标准里,整型,实型,逻辑型数据都是使用了一个数值存储单元,而复型和双精度数据则使用了两个数值存储单元,字符型数据使用一个字符存储单元。由于存储模式是非常底层的语言实现结构,因此FORTRAN后续的标准要想保持兼容,只有继承这个约定。因此在FORTRAN90与95当中,默认的整型,实型,逻辑型数据都是使用了一个数值存储单元,而默认的复型和双精度数

15、据则使用了两个数值存储单元,默认的字符型数据使用一个字符存储单元。而作为语言的一个发展,在FORTRAN90之后的标准里,开始允许在一个程序单元内,由用户定义特定的不依赖于固有数据存储模式的数据类型,这就是第6章的派生数据类型。建立一种数据类型,最大的好处就是可以把相关的运算和数据捆绑在一起,对于一个特定问题当中的数据对象,是否应该被明确地看成数据类型,属于语言设计的权宜,因为建立一种数据类型所能带来的好处可以用算法来补偿,而FORTRAN77之后的版本的选择是增加派生数据类型,这样使得我们可以在进行科学计算时,有更为自然的描述方式。数据类型的全部分类总结如下:固有数据类型 数值型数据 整型 实型 复型 非数值型数据 逻辑型 字符型 派生数据类型就数据的属性而言,类型当然是最重要的属性了。在指定类型之后,紧接着的就是根据实际情况,看需要描述的数据是否还具有其他需要说明的属性。对于数组来说,具有一个基本的属性,就是数组的大小,相应的就是如何指定数组的存储空间的大小的问题。由

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

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