- 第一章 Fortran 语言程序设计初步
- 第二章 改变程序流程
- 第三章 循环结构
- 第四章 数据结构
- 第五章 数组
- 第六章 过程和模块
- 第七章 输入输出和文件
4.1.1 类型说明语句
a) 一般形式
第一章中我们简单地按照 F77 的传统方法介绍了数据类型和说明语句,这里将介绍具有现代特性的类型说明语句的书写形式。F90 程序中的数据都有三个特征:类型、种别、属性,由类型说明语句来定义说明。其一般形式是:
类型说明[(种别说明)][,属性说明表] :: 变量名表[=初值]
例:REAL(KIND=2), DIMENSION(1:10):: X,Y
说明变量 X,Y 都是实型,种别是 2,属性是一维数组。这样 X、Y 实际上是两个种别参数为 2 的一维实型数组,各具有 10 个元素。在某些场合下,种别说明与属性说明可以省略,此时它的一般形式是最基本形式:
类型说明:: 变量名表
下面逐一介绍变量在说明语句中说明类型、种别、属性的方法。
b) 类型说明
内部类型一共有五种,三种数值型:整数型、实数型、复数型;两种非数值型:逻辑型、字符型。三种数值型变量的定义关键字分别是:INTEGER,REAL,COMPLEX。例:
INTEGER:: X,Y
REAL:: A,B
COMPLEX:: C,D
F77 中的隐式说明不利于程序的可读性与可维护性,在 F90 中不提倡使用。在 F90 中,每个变量名都应该在说明部分中说明其类型,不应该使用隐式说明、为了抑制隐式说明发生作用,应该在程序说明部分开始就写出语句:
IMIPLlCIT NONE
既声明不使用隐式说明。
c) 赋初值
初值是指不需要在程序执行中赋值,当程序开始时变量已有初始的量,立即可以参加运算。F90 中置初值不需要专门语句,只需在类型说明语句的变量表中,把要置的初值写在指定的变量名后即可。它的形式为:
类型说明:: 变量名 1=初值 1[,变量名 2=初值 2,…]
例如,要让实型变量 X 有初值 1.1,Y 有初值 2.2,Z 不置初值,W 置初值 3.3,写类型说明语句:
REAL:: X=1.1, Y=2.2, Z, W=4.4
这样,既说明了类型,也为 X、Y、W 置了初值。变量赋初值后,其值在执行过程中仍可改变。需要注意到,在过程中这种赋初值的方法实际上是对变量赋于了 SAVE 属性,即当过程被调用以后,变量的新值将被保存下来,过程再次被调用时变量的初值不再是类型说明语句中的初值,而是上次被保留下来的值。例如,如果希望上面的变量 X 在过程每次被调用时都有相同的初值,则应该写成:
REAL, SAVE :: X, Y=2.2, Z, W=4.4
X=1.1
d) DATA 语句
在 F77 中,有一个专门给变量赋初值的说明语句,即 DATA 语句。它的一般形式为:
DATA 变量名表 1/初值表 1/[[,]变量名表 2/初值表 2/…]
变量名表可以是隐 DO 循环,初值表中的常数之间须用逗号分开,重复的常数表值可以采用如下表示方法:重复次数*常数值。在 DATA 语句中赋值的变量都有 SAVE 属性,除非变量名又出现在 COMMON 语句中,可以通过 SAVE 语句或类型说明中的 SAVE 属性对其显式说明。例如,可以对数组作以下的初始化:
DIMENSION A(10,10)
DATA A/100*1.0/ ! 按数组变量名统一初始化
DATA A(1,1), A(10,1), A(3,3) /2*2.5, 2.0/ ! 按数组元素逐个初始化
DATA ((A(I,J),I=1,5,2),J=1,5) /15*1.0/ ! 按隐 DO 循环初始化
对字符串作初始化:
CHARACTER (LEN=10) name
CHARACTER BELL, TAB, LF, FF, STARS*6
CHARACTER*8 help
DATA name,STARS /'Zhang Fei','****'/
DATA BELL,TAB,LF,FF /7,9,10,12/ ! 用 ACSII 控制字符码赋于字符变量
DATA help(1:4),help(5:8) /2*'HELP'/ ! 用字符子串分段赋值
对数值型数据作初始化:
INTEGER n, order, list(100)
REAL coef(4),eps(2),pi(5),x(5,5)
COMPLEX*8 cstuff
DATA n/0/, order/3/, list/100*0/
DATA coef/1.0,2*3.0,1.0/, eps(1)/.00001/
DATA pi/5*3.14159/
DATA ((x(j,i),i=1,j),j=1,5)/15*1.0/
DATA cstuff/(-1.0,-1.0)/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论