返回介绍

4.1.1 类型说明语句

发布于 2025-03-08 16:28:33 字数 2267 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文