欢迎来到天天文库
浏览记录
ID:52564862
大小:91.28 KB
页数:40页
时间:2020-03-28
《Fortran95第7章-属性的声明.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章 属性的声明最后,对于数据我们剩下的工作,就是如何运用FROTRAN语言来完整地加以描述。FORTRAN语言完成对数据的描述的语法单位是数据声明语句,在前面2章里面,我们整理好问题当中需要涉及的数据及其结构之后,要以FORTRAN语言写下来,就是使用FORTRAN的声明语句,这些语句的句法设计保证能够完备的描述我们关于数据所需要说明的一切属性。数据对象首先需要予以说明的当然就是它的类型,因此我们首先给出对象的类型声明语句,特别地,需要说明在最初FORTRAN标准里面遗留下来的一种数据类型描述方法——隐式类型描述法,然后讨论各种数据对象所可能具有的属性。●数组属性;●指针
2、属性;●值特征;●对象可访问性与使用属性;●特征兼容性;●自动数据对象;●存储关联。由于本章集中讨论FORTRAN的声明语句,而声明的对象除了数据之外,其他的程序对象,例如函数,过程等也需要声明其类型或属性,因此本章一并讨论对其他程序对象的声明:●过程属性;●NAMELIST语句;7.1 属性及其声明方式所谓一个对象的属性,就是程序使用该对象的方式。本章所讨论的属性的大体分类与作为其名称的关键词见表7-1: 表7-1属性的分类及其关键词数据类型 INTEGER REAL(以及DOUBLEPRECISION) COMPLEX LOGICAL CH
3、ARACTER TYPE(派生类型的名称由用户命名)数组属性 DIMENSION ALLOCATABLE指针属性 POINTER TARGET值设置 DATA PARAMETER对象可访问性与调用 PUBLIC PRIVATE INTENT OPTIONAL SAVE过程属性 EXTERNAL INTRINSIC对象关系属性 NAMELIST EQUIVALENCE COMMON 这些
4、关键词的使用,或者说属性的声明有2种方式:● 在类型声明时附加属性说明,这种语句形式侧重在给出数据对象,属性说明是附加的;● 使用单独的属性声明语句,这种语句形式侧重在说明属性本身。之所以会出现2种声明方式,完全是历史的缘故。FORTRAN的早期版本里,任何的对象属性说明,都是运用单独的属性声明语句,如果一个数据对象同时具有多种属性,就需要使用相应的多个属性声明语句,从程序阅读的角度来看,会显得很烦琐,因此到了FORTRAN90和95版本,只要在程序单元当中需要声明一个数据对象的类型,那么就可以把它的其他所有属性都附加到它的类型声明语句当中,使得程序显得更加紧凑。【例
5、7-1】我们要定义2个实型变量X,Y,同时还要声明它们都具有指针属性,在早期FORTRAN语言里写为: REALX,Y POINTERX,Y换一种更加紧凑的写法就是把这2条语句写为1句: REALPOINTER::X,Y之所以我们还需要讨论单独的属性语句,主要是有时候需要保持源码的向前兼容性,而且在少数情况下,这2种形式也并完全等价。因此在本章在讨论各种属性的声明方式的时候,将首先给出面向数据对象的声明方式,然后给出等价的面向属性的声明方式。在这2种表示属性的方式里,同样由于历史的缘故,数组的维度属性DIMENSION既可以附加在类型声明语句当中表述,也可以单独声
6、明,实际上DIMENSION这个关键词属于老式FORTRAN的遗留物,在新的表述方式里面,完全可以省略它。【例7-2】 COMPLEXX DIMENSIONX(35) SAVEX COMPLEXX(35) SAVEX COMPLEX,DIMENSION(35),SAVE::X COMPLEX,SAVE::X(35)以上4种表述方式是完全等价的,显然最后一种最简洁。在一个程序单元里面,引用一个数据对象的前提是已经声明了它的种种必需属性,数据对象的各种属性里面,最为基本的当然是数据对象的类型,然后还需要声明其各种必需的属性,这样该数据对象才能被程
7、序正确地调用访问。然而在一个实际的程序里面,数据对象的声明在表面上可能并不是完备的,同时又不是非法的语法,出现这种情况的原因如下:● 在FORTRAN的早期版本里,为了求简化的缘故,使用了一种隐式约定数据类型的方式,即通过数据对象的名称的第一个字母来分辨其所属类型,这种类型声明方式被后来的FORTRAN版本一直沿用下来了,因此如果一个程序单元里出现的数据对象没有经过类型声明语句的专门声明,则需要考虑其是否属于隐式声明。相反,如果想排除这种隐式声明的影响,则需要另外单独加以IMPLICITNONE语句
此文档下载收益归作者所有