1、3.4 FORTRAN 字符集字符集3.5 常量常量3.6 变量变量 3.7 内部函数内部函数3.8 算术表达式算术表达式3.9 赋值语句赋值语句3.10简单的输出语句(表控输出简单的输出语句(表控输出)3.11简单的输入语句(表控输入)简单的输入语句(表控输入)3.12 PARAMETER语句语句(参数说明参数说明)3.13 PROGRAM语句语句,END语句语句,STOP语句语句,PAUSE语句语句下一页上一页停止放映不是任何一种外文字母或数字符号都能被某一计算机语不是任何一种外文字母或数字符号都能被某一计算机语言接受。每一种计算机的高级语言分别规定了它允许使言接受。每一种计算机的高级语言
2、分别规定了它允许使用的字符。用的字符。FortranFortran允许使用的字符如下允许使用的字符如下:英文字母英文字母:A B C D E F G H I J K L M N O P Q R A B C D E F G H I J K L M N O P Q R S T U V W X Y Z S T U V W X Y Z 阿拉伯数字阿拉伯数字:0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 特殊符号特殊符号:空格:空格=+-*/(),.:!%&;$!%&;$?_(F90?_(F90中新增的字符中新增的字符)3.4 FORTRAN 字符集字符集下一页上一页停
3、止放映文字字符英文字母ABCDEFGHIJKLMNOPQRSTUVWXYZ数字0123456789下划线_特殊字符图形名称图形名称空格:冒号等号!叹号十加号”引号一减号百分号*星号英语的and斜线;分号(左括号小于)右活号大于,逗号?问号小数点或句号货币符号撇号表表3-13-1基本的基本的FORTRAN 90/95FORTRAN 90/95字符集字符集 基本字符分为两大类:文字字符和特殊字符。除了货币符号基本字符分为两大类:文字字符和特殊字符。除了货币符号可以本地化之外,其他任何字符都必须依照表里的形式。可以本地化之外,其他任何字符都必须依照表里的形式。下一页上一页停止放映注意注意:一一.文字
4、字符的用处文字字符的用处 主要是命名的作用,可以用来命名语言中的一切主要是命名的作用,可以用来命名语言中的一切对象,这三种符号可以混合使用;对象,这三种符号可以混合使用;其中数字还具有它本来的含义,就是表示数目。其中数字还具有它本来的含义,就是表示数目。二二.特殊字符的用处特殊字符的用处特殊字符主要具有功能的意义,如编辑功能,运算功能,特殊字符主要具有功能的意义,如编辑功能,运算功能,语法功能等。语法功能等。FORTRAN 90/95FORTRAN 90/95标准原则上接受小写字母。因此除了以下位标准原则上接受小写字母。因此除了以下位置,大小写是等价的。置,大小写是等价的。三三.大小写必须区分
5、的位置大小写必须区分的位置 作为字符常量的字符串里面;作为字符常量的字符串里面;输入输出的纪录里面;输入输出的纪录里面;作为编辑描述符的引号或撇号里面。作为编辑描述符的引号或撇号里面。下一页上一页停止放映四四.CVF编译平台接受小写字母。编译平台接受小写字母。在在OPENOPEN或者或者INQUIREINQUIRE语句里面的语句里面的FILE=FILE=或或NAME=NAME=后面是否后面是否区分大小写,也是由编译平台指定的。区分大小写,也是由编译平台指定的。五五.如果是需要调用其他语言写的子程序,如果是需要调用其他语言写的子程序,而恰好该种语而恰好该种语言言(例如例如C C语言语言)是区分大
6、小写的,这时就需要特别小心。是区分大小写的,这时就需要特别小心。【例【例3_13_1】如果用如果用C C写了两个子程序写了两个子程序EIGENEIGEN和和eigeneigen,然后有如下,然后有如下的的FROTRANFROTRAN片断:片断:EXTERNAL EIGENEXTERNAL EIGEN .CALL EIGEN CALL EIGEN .END END这时它是该引用这时它是该引用EIGENEIGEN还是还是eigeneigen呢?如果所使用的呢?如果所使用的FROTRANFROTRAN系统正好是怪异的那种,没问题。如果是常见的系统正好是怪异的那种,没问题。如果是常见的如如CVFCVF
7、,这时它就无法区分,这时它就无法区分EIGENEIGEN和和eigeneigen,这样就必须给,这样就必须给它们更换名称了。它们更换名称了。下一页上一页停止放映六六.数字的涵义:数字的涵义:除了以下情形,数字总是表示十进位数字除了以下情形,数字总是表示十进位数字 属于二进制,八进制,十六进制的字面常量;属于二进制,八进制,十六进制的字面常量;带有带有B,O,Z编辑描述符的输入输出纪录。编辑描述符的输入输出纪录。【例【例3_23_2】以下语句当中的数字不是属于十进位数字:以下语句当中的数字不是属于十进位数字:DATA I,J,K/O1001,23.54,Z5CA2/DATA I,J,K/O100
8、1,23.54,Z5CA2/其中第一个为八进制数,第二个为十进制数,第三个为十六进制数。其中第一个为八进制数,第二个为十进制数,第三个为十六进制数。下一页上一页停止放映七七.下划线的涵义:下划线的涵义:下划线的主要作用就是置于单词之间代替空格,下划线的主要作用就是置于单词之间代替空格,使得我们在命名时使用清楚的英语词汇。使得我们在命名时使用清楚的英语词汇。下划线不能置于任意名称的前面,但是可以置下划线不能置于任意名称的前面,但是可以置于名称的最后。于名称的最后。下划线也用于在字面常量中区隔常量的值和种下划线也用于在字面常量中区隔常量的值和种别参数。别参数。无论给什么对象起名,都尽量使用完整的英
9、语单词,无论给什么对象起名,都尽量使用完整的英语单词,同时使用下划线以区隔不同的单词。所谓好记性不如同时使用下划线以区隔不同的单词。所谓好记性不如烂笔头,只有这样才能切实保证你在任何时候,在程烂笔头,只有这样才能切实保证你在任何时候,在程序代码的任意位置都知道任意变量等的含义。序代码的任意位置都知道任意变量等的含义。下一页上一页停止放映与平台有关的与平台有关的FORTRAN辅助字符集辅助字符集基本字符集是在一切基本字符集是在一切FROTRAN的编译平台都可以使用的,的编译平台都可以使用的,被被FORTRAN 95标准规定为必须使用的默认字符集。另标准规定为必须使用的默认字符集。另外还有些辅助的
10、字符则是不同的平台有不同的用法约定。外还有些辅助的字符则是不同的平台有不同的用法约定。辅助字符分两类:可打印字符和不可打印字符。辅助字符分两类:可打印字符和不可打印字符。可打印字符;可打印字符;各种本地化语言的字符,象汉字,希腊字母等,都可以应各种本地化语言的字符,象汉字,希腊字母等,都可以应用在字符串,注释,和输入输出纪录当中。用在字符串,注释,和输入输出纪录当中。下一页上一页停止放映 不可打印字符。不可打印字符。主要就是控制字符,例如制表符主要就是控制字符,例如制表符Tab键。键。制表符制表符(Tab键键)对于一个对于一个FORTRAN77FORTRAN77标准的编译系统标准的编译系统来说
11、,在固定源程序形式里的来说,在固定源程序形式里的Tab被看成是至少被看成是至少6个个空格,而在自由源程序形式里的空格,而在自由源程序形式里的Tab被看成被看成1个空格。个空格。这样如果这样如果Tab被放在文本当中用于输出格式控制,那被放在文本当中用于输出格式控制,那么这种默认的转换方式,有时就会导致输出格式的混么这种默认的转换方式,有时就会导致输出格式的混乱。乱。有关有关FORTRAN 95FORTRAN 95的辅助字符集的使用规则,请参考具的辅助字符集的使用规则,请参考具体的编译系统的说明。体的编译系统的说明。下一页上一页停止放映所谓所谓FORTRAN的词汇就是一个语句的最小的意义单位,它的
12、词汇就是一个语句的最小的意义单位,它由一个或多个由一个或多个FORTRAN字符集里的字符组成。包括两类共字符集里的字符组成。包括两类共6种,分类例举如下:种,分类例举如下:3.5 3.5 词汇词汇 由文字字符组成的词汇,包括由文字字符组成的词汇,包括4种:种:语句关键词语句关键词 名称名称 由单个词汇组成的字面常量由单个词汇组成的字面常量 标识符标识符 由特殊字符组成由特殊字符组成 算符算符:+,.OR.定界符:逗号,定界符:逗号,=,=,:,:,:,;,;,%。下一页上一页停止放映1.1.语句关键词语句关键词 标志语句本身标志语句本身 【例【例3-3】下面的】下面的DO语句中的关键词语句中的
13、关键词DO本身标志了该语句本身标志了该语句 DO I=1,500 标志选项。标志选项。【例【例3-4】下面的】下面的INTENT语句当中的语句当中的IN,OUT,或或INOUT。INTENT(IN),A。B INTENT(INOUT),X,Y,Z 用在语句当中,起分界的作用。用在语句当中,起分界的作用。【例【例3-5】如下面如下面DO语句当中的语句当中的WHILE DO WHILE(.NOT.VECTOR)并非所有的语句都必须包含关键词,在并非所有的语句都必须包含关键词,在FORTRAN里面,赋里面,赋值语句和函数都不需要关键词。值语句和函数都不需要关键词。下一页上一页停止放映在一个程序当中,
14、任何对象都需要有一个名称,给它们在一个程序当中,任何对象都需要有一个名称,给它们命名所得到的词汇,可以说就是一般语言里的名词,这命名所得到的词汇,可以说就是一般语言里的名词,这样的对象包括:变量,命名常量,程序单元,过程,公样的对象包括:变量,命名常量,程序单元,过程,公用块,构造,派生类型,哑元等。用块,构造,派生类型,哑元等。2.2.名称名称名称的拼写规则为:名称的拼写规则为:名称必须由字母开头,可以由文字字符混合组成,而名称必须由字母开头,可以由文字字符混合组成,而下划线不能作为名称的第一个字符。下划线不能作为名称的第一个字符。一个名称至多允许含有一个名称至多允许含有31个字符。个字符。
15、下一页上一页停止放映一个常量就是对一个值的合乎语法的字符标记。一个常量就是对一个值的合乎语法的字符标记。常量分为字面常量和命名常量两种:常量分为字面常量和命名常量两种:一个值如果没有在程序里面经过命名,则称为字面常一个值如果没有在程序里面经过命名,则称为字面常量,这种常量不能取派生数据类型。量,这种常量不能取派生数据类型。【例【例4-6】66953 Z5120A 2.3417 .TRUE.(33.2,5.0)3.3.常量常量下一页上一页停止放映 一个值如果在程序里面经过命名,则称为命名常量,这一个值如果在程序里面经过命名,则称为命名常量,这种常量能取派生数据类型。种常量能取派生数据类型。【例【
16、例3-73-7】在如下声明语句当中的常量在如下声明语句当中的常量UNSTABLE_POINTUNSTABLE_POINT为命名为命名常量:常量:PARAMETER (UNSTABLE_POINT=5.332)PARAMETER (UNSTABLE_POINT=5.332)对于常量的语义,将在说明数据时进一步讨论。对于常量的语义,将在说明数据时进一步讨论。下一页上一页停止放映在一个程序单元内部,对任何一条语句,都可以在该语句在一个程序单元内部,对任何一条语句,都可以在该语句的前面加上语句标签,以便在该程序单元内部的任何其他的前面加上语句标签,以便在该程序单元内部的任何其他位置引用该语句。需要引用
17、其他语句的语句包括位置引用该语句。需要引用其他语句的语句包括CALL语语句,句,DO结构,分支语句,输入输出语句等。结构,分支语句,输入输出语句等。4.4.语句标签语句标签语句标签的书写规则为:语句标签的书写规则为:语句标签由语句标签由1到到5个十进制数字组成,其中必须至少有个十进制数字组成,其中必须至少有一个数字不能是一个数字不能是0,例如,例如000不能作为标识符;不能作为标识符;标识符以标识符以0开头是没有任何意义的,例如开头是没有任何意义的,例如0034与与34没没有区别。有区别。标识符不能放置于空语句之前。标识符不能放置于空语句之前。下一页上一页停止放映算符用在表达式当中,通过运算而
18、获得某种类型的值。算符用在表达式当中,通过运算而获得某种类型的值。算符分为固有算符和自定义算符两类:算符分为固有算符和自定义算符两类:固有算符固有算符在在FORTRAN 95语法当中,语法当中,R310规定了固有算符的构成规定了固有算符的构成法则。法则。【例【例4-9】/表示字符串的连接表示字符串的连接 +表示对数值的加法表示对数值的加法 .NOT.表示逻辑否表示逻辑否 .OR.表示逻辑或表示逻辑或5.5.算符算符下一页上一页停止放映6.6.定界符定界符全部的定界符有如下全部的定界符有如下12种形式:种形式:/()(/),=:;%其中其中(和和),(/和和/)都必须成对出现都必须成对出现顾名思
19、义,这些定界符的功能就是在一个连续的源码文顾名思义,这些定界符的功能就是在一个连续的源码文本当中,用来把不同性质的源码成分区分开。它们的具本当中,用来把不同性质的源码成分区分开。它们的具体含义将在具体的语句当中说明。体含义将在具体的语句当中说明。下一页上一页停止放映数据表示的实现具有一个重要的参数,即数据表示的实现具有一个重要的参数,即存储空间存储空间,所以当问题要求的数据,不能满足于默认的存储空间所以当问题要求的数据,不能满足于默认的存储空间的时候,这时,就需要进一步给出数据的种别参数,的时候,这时,就需要进一步给出数据的种别参数,这是更加详细的数据描述。这是更加详细的数据描述。如果在真实世
20、界问题当中出现的的数据对象,不符如果在真实世界问题当中出现的的数据对象,不符合已有的固有数据类型以及数组的定义,这时就需要合已有的固有数据类型以及数组的定义,这时就需要根据用户的要求构造一个依赖于问题的特定的数据结根据用户的要求构造一个依赖于问题的特定的数据结构,这就是构,这就是数据描述时会遇到的三种情况数据描述时会遇到的三种情况。对于这三种情况,对于这三种情况,FORTRANFORTRAN的解决方式如下:的解决方式如下:数据的性质数据的性质 (数据的类型以及其他属性)数据的类型以及其他属性)3.6 3.6 常量与变量常量与变量下一页上一页停止放映第一种情况:第一种情况:确定(固有)数据的类型
21、以及相应的可能具有的属性。确定(固有)数据的类型以及相应的可能具有的属性。FORTRANFORTRAN所能辨识的数据类型首先分为两大类:所能辨识的数据类型首先分为两大类:固有数据类型固有数据类型 派生数据类型派生数据类型 所谓固有类型,是所谓固有类型,是FORTRANFORTRAN语言所定义的最基本的数据语言所定义的最基本的数据类型,每一种固有类型是和该种数据类型相应的各种运算类型,每一种固有类型是和该种数据类型相应的各种运算一起隐式定义的,也就是说一旦声明引入某种固有数据类一起隐式定义的,也就是说一旦声明引入某种固有数据类型,则系统总是默认为对它进行相应的运算是合法的,并型,则系统总是默认为
22、对它进行相应的运算是合法的,并且总是可访问的。且总是可访问的。固有类型包括五种:固有类型包括五种:整型整型(INTEGER)、实型、实型(REAL)、复型、复型(COMPLEX)、逻辑型逻辑型(LOGICAL)和字符型和字符型(CHARACTER)。下一页上一页停止放映 所谓派生类型是由用户定义的,非隐式定义的类所谓派生类型是由用户定义的,非隐式定义的类型,只要用一个类型定义来声明其成员是何种固有类型,只要用一个类型定义来声明其成员是何种固有类型,或者是何种其它已经定义过的派生类型,就能够型,或者是何种其它已经定义过的派生类型,就能够被被FORTRANFORTRAN认可为一种数据类型。认可为一
23、种数据类型。由于派生数据类型正是由固有数据类型充当成员由于派生数据类型正是由固有数据类型充当成员而构成的,因此在结构关系上,可以把固有数据类型而构成的,因此在结构关系上,可以把固有数据类型看成原子,而把派生数据类型看成分子。看成原子,而把派生数据类型看成分子。派生类型数据最重要的用途就是扩充了数组这种派生类型数据最重要的用途就是扩充了数组这种重要的数据结构。重要的数据结构。下一页上一页停止放映每一种固有数据类型的存储模式每一种固有数据类型的存储模式:在在FORTRAN77FORTRAN77中:中:整型,实型,逻辑型数据都是使用了整型,实型,逻辑型数据都是使用了一个数值存储单一个数值存储单元元,
24、复型和双精度数据则使用了,复型和双精度数据则使用了两个数值存储单元两个数值存储单元,字符型数据使用字符型数据使用一个字符存储单元一个字符存储单元。在在FORTRAN90FORTRAN90与与9595中:中:默认在默认在FORTRAN77FORTRAN77中的规定中的规定,在在FORTRAN90FORTRAN90之后的标准里,之后的标准里,开始允许在一个程序单元内,由用户定义特定的不依赖于开始允许在一个程序单元内,由用户定义特定的不依赖于固有数据存储模式的数据类型,这就是派生数据类型。固有数据存储模式的数据类型,这就是派生数据类型。下一页上一页停止放映第二种情况:第二种情况:指定固有数据类型的种
25、别参数。指定固有数据类型的种别参数。用来指定程序当中需要使用的每一种固有数据类型所用来指定程序当中需要使用的每一种固有数据类型所要求占据的内存空间大小的属性由种别参数表示。给这个要求占据的内存空间大小的属性由种别参数表示。给这个变量变量(参数参数)指定一个数值,就可以说明数据所需要的存储指定一个数值,就可以说明数据所需要的存储空间的大小,也就是程序允许的数值数据的位数和字符串空间的大小,也就是程序允许的数值数据的位数和字符串的字符数目。的字符数目。KINDKIND(种类种别参数种类种别参数)分别说明整数类型的十进分别说明整数类型的十进制制指数指数范围,实数类型和复数类型的十进制精度和指数范围,
26、字范围,实数类型和复数类型的十进制精度和指数范围,字符类型和逻辑类型的表示方法。符类型和逻辑类型的表示方法。LENLEN(长度种别参数长度种别参数)对字符类型规定了字符的个数。对字符类型规定了字符的个数。【例【例】REAL(KIND2 2):ABC,X,LONG CHARACTER(LEN40,KINDGREECE):NAME下一页上一页停止放映 如果没有声明数据的种别,那么程序就会采用默认的如果没有声明数据的种别,那么程序就会采用默认的参数,参数,FORTRANFORTRAN的早期版本没有引入种别参数,直接采用了的早期版本没有引入种别参数,直接采用了两种不同的数据类型两种不同的数据类型:RE
27、AL:REAL和和DOUBLE PRECISIONDOUBLE PRECISIONFORTRAN90FORTRAN90以来的版本里,引入种别参数,对种别参数的不以来的版本里,引入种别参数,对种别参数的不同取值,就足够表达不同的精度,同取值,就足够表达不同的精度,对于在指定种别参数的数值时,一般是以对于在指定种别参数的数值时,一般是以字或字节字或字节为单为单位,这样对于字长不同的机器而言,相互之间就会出现程序位,这样对于字长不同的机器而言,相互之间就会出现程序移植的困难,下面分情况予以说明:移植的困难,下面分情况予以说明:下一页上一页停止放映 实型实型-由于由于DOUBLE PRECISIOND
28、OUBLE PRECISION是属于老式标准的遗是属于老式标准的遗留物,因此使用留物,因此使用DOUBLE PRECISIONDOUBLE PRECISION作为数据声明的程序就作为数据声明的程序就不具备良好的可移植性,因为所谓双精度是针对具体的机不具备良好的可移植性,因为所谓双精度是针对具体的机器的字长而言的,对于器的字长而言的,对于3232位的机器,双精度就是位的机器,双精度就是6464位,而位,而对于对于6464位机器,双精度就意味着位机器,双精度就意味着128128位,这样在不同字长位,这样在不同字长的机器环境里,双精度就具有不同的位数,使得程序无法的机器环境里,双精度就具有不同的位数
29、,使得程序无法在不同字长的平台之间进行直接的移植。在不同字长的平台之间进行直接的移植。最好统一使用最好统一使用REALREAL的种别参数来表达算法所要求的实数精的种别参数来表达算法所要求的实数精度。度。整型整型-在程序应用当中会出现几乎任何大小的整型数在程序应用当中会出现几乎任何大小的整型数据,因此无法在语言标准里面统一的规定整型数据的存储据,因此无法在语言标准里面统一的规定整型数据的存储空间大小,这就同样需要依靠种别参数来指定应该给具体空间大小,这就同样需要依靠种别参数来指定应该给具体问题当中的整型数据确定多大的存储空间。具体地指定方问题当中的整型数据确定多大的存储空间。具体地指定方式属于编
30、译器设计者的选择,需要式属于编译器设计者的选择,需要参考相应编译器参考相应编译器的语言的语言说明。说明。下一页上一页停止放映 复型复型-由于所谓复型本质上就是由两个实数表达的,由于所谓复型本质上就是由两个实数表达的,因此按道理复型同样应该能够具有表达多种精度的能力,因此按道理复型同样应该能够具有表达多种精度的能力,而实际上早期的版本在这方面是有欠缺的,不过随着而实际上早期的版本在这方面是有欠缺的,不过随着FORTRAN90FORTRAN90引入种别参数,就可以在引入种别参数,就可以在COMPLEXCOMPLEX的声明语句的声明语句里通过运里通过运用种别参数来实现多种精度的表达用种别参数来实现多
31、种精度的表达,对于任何,对于任何FORTRANFORTRAN的实现,至少能表达两种精度,而一般来说是多的实现,至少能表达两种精度,而一般来说是多于两种的。于两种的。字符型字符型-对于字符,一般的机器都是用单字节对于字符,一般的机器都是用单字节8bits8bits来表示一个字符,这样就可以总共表示来表示一个字符,这样就可以总共表示2 28 8=256=256个不个不同的字符,这对于任何以字母写出来的语言都是足够的同的字符,这对于任何以字母写出来的语言都是足够的了,不过对于汉语,日语这样一些语言就不够用了,一了,不过对于汉语,日语这样一些语言就不够用了,一般得需要双字节,即般得需要双字节,即16b
32、its16bits,这样就可以表达,这样就可以表达2 21616个字符。个字符。因此字符型数据同样需要附加种别参数,以便除了使用因此字符型数据同样需要附加种别参数,以便除了使用默认的基本字符之外,还可以使用辅助字符集里的字符,默认的基本字符之外,还可以使用辅助字符集里的字符,从而实现从而实现程序的本地化程序的本地化。不过某个具体的编译器是否支。不过某个具体的编译器是否支持双字节字符,必须参考相应的手册。持双字节字符,必须参考相应的手册。下一页上一页停止放映 逻辑型逻辑型-由于一切逻辑型数据都只有两个值,因由于一切逻辑型数据都只有两个值,因此如何确定逻辑型数据的存储空间应该是非常好办的,不此如何
33、确定逻辑型数据的存储空间应该是非常好办的,不过不幸的是,过不幸的是,FORTRANFORTRAN的早期版本规定逻辑型数据使用和的早期版本规定逻辑型数据使用和实型数据一样大小的机器存储单位,这样当机器的字长很实型数据一样大小的机器存储单位,这样当机器的字长很大时,就会非常的浪费机器的存储空间。因此到了大时,就会非常的浪费机器的存储空间。因此到了FORTRAN90FORTRAN90和和FORTRAN 95FORTRAN 95,除了作为默认的情形,和旧的,除了作为默认的情形,和旧的语言标准保持兼容之外,还可以语言标准保持兼容之外,还可以通过指定种别参数,使得通过指定种别参数,使得逻辑型数据的存储空间
34、大小只有一个字,甚至一个逻辑型数据的存储空间大小只有一个字,甚至一个bitbit。当然具体的使用方法需要参考相应编译器的说明。当然具体的使用方法需要参考相应编译器的说明。下一页上一页停止放映第三种情况:第三种情况:派生数据类型。派生数据类型。在计算机语言里,把对象的在计算机语言里,把对象的每一个需要描述的性质用一每一个需要描述的性质用一个适当的基本数据类型来表示,个适当的基本数据类型来表示,这样用一组基本数据类这样用一组基本数据类型就可以描述该对象。而这一组数据可以看成是一个新型就可以描述该对象。而这一组数据可以看成是一个新的数据类型,表示了一个变量。的数据类型,表示了一个变量。这样构造出来的
35、数据类型称为派生数据类型,和固有数这样构造出来的数据类型称为派生数据类型,和固有数据类型一样,在声明派生数据类型时,需要给出名称,据类型一样,在声明派生数据类型时,需要给出名称,描述它的每一个元素的固有数据类型以及相应属性和种描述它的每一个元素的固有数据类型以及相应属性和种别参数别参数(如果非默认的话如果非默认的话),当然也需要适当地定义其运,当然也需要适当地定义其运算。算。下一页上一页停止放映派生数据类型是由一组数组成派生数据类型是由一组数组成,就会出现两种情况:,就会出现两种情况:这组数据都是属于一个数据类型这组数据都是属于一个数据类型这样构成的派生数据类型就是数组,显然对于数组的这样构成
36、的派生数据类型就是数组,显然对于数组的元素的描述就可以统一进行。具体的用法会在后面专元素的描述就可以统一进行。具体的用法会在后面专门说明。门说明。这组数据的各个元素属于不同的数据类型这组数据的各个元素属于不同的数据类型这样构成的派生数据类型称为结构,这时就需要对每这样构成的派生数据类型称为结构,这时就需要对每个数据元素进行分别的说明,个数据元素进行分别的说明,即每一个元素的数据即每一个元素的数据类型,可能有的属性,种别参数等等。类型,可能有的属性,种别参数等等。下一页上一页停止放映【例【例5-25-2】下面是一个典型的派生数据类型。下面是一个典型的派生数据类型。TYPE SAMPLETYPE
37、SAMPLE REAL CURRENT REAL CURRENT COMPLEX(KIND=QUAD)PHASE COMPLEX(KIND=QUAD)PHASE CHARACTER(LEN=50)SOURCE CHARACTER(LEN=50)SOURCE END TYPE SAMPLE END TYPE SAMPLE TYPE(SAMPLE)SI401 TYPE(SAMPLE)SI401,SI402SI402,SI403SI403,SI404SI404在上面的例子里,首先定义了一个名称为在上面的例子里,首先定义了一个名称为SAMPLESAMPLE的数据类型,每一的数据类型,每一个个SAMPL
38、ESAMPLE类型的数据由三个分量组成,它们的名称分别为类型的数据由三个分量组成,它们的名称分别为CURRENTCURRENT,PHASEPHASE,SOURCESOURCE,分别属于实型,复型和字符型,其中复型和字符型,分别属于实型,复型和字符型,其中复型和字符型还分别说明了种别参数和字符长度属性,然后给出了程序当中需要还分别说明了种别参数和字符长度属性,然后给出了程序当中需要使用的四个属于该种数据类型的变量:使用的四个属于该种数据类型的变量:SI401SI401,SI402SI402,SI403SI403,SI404SI404。下一页上一页停止放映数据不同种类的存储模式数据不同种类的存储模
39、式对于计算机来说,数据分类的第一个反应就是针对不同对于计算机来说,数据分类的第一个反应就是针对不同类型的数据约定不同的存储模式。类型的数据约定不同的存储模式。由于存储模式的规定涉及到编译环境的设置,因此存储由于存储模式的规定涉及到编译环境的设置,因此存储模式的约定是与系统环境相关的,鉴于模式的约定是与系统环境相关的,鉴于Compaq Visual Compaq Visual FortranFortran的广泛应用,本节特别针对的广泛应用,本节特别针对Compaq Visual Compaq Visual FortranFortran系统而言的说明了数据的各种存储模式。系统而言的说明了数据的各种
40、存储模式。下表下表5-15-1列出了列出了Compaq Visual FortranCompaq Visual Fortran所有的固有数据所有的固有数据类型的存储空间要求,和相应的能够在这个空间里表达类型的存储空间要求,和相应的能够在这个空间里表达的数据规模。的数据规模。下一页上一页停止放映数据类型单位存储空间能表示的数据规模B Y T EINTEGER(1)1byte(8bits)BYTE表示等价于INTEGER(1)的带符号的整型数据类型。INTEGER参见INTEGER(2),INTEGER(4),以及INTEGER(8).带符号的整型数据,包括INTEGER(2),INTEGER(4
41、),orINTEGER(8)。数据规模由编译器选项/integer_size:nn控制。默认的规模控制 选 项 为/i n t e g e r _ s i z e:3 2 (等 价 于INTEGER(4)。INTEGER(1)1byte(8bits)从-128到127带符号的整数。INTEGER(2)2bytes(16bits)从-32,768到32,767带符号的整数。INTEGER(4)4bytes(32bits)从-2,147,483,648到2,147,483,647带符号的整型数据。INTEGER(8)8bytes(64bits)从-9,2 2 3,3 7 2,0 3 6,8 5 4
42、,7 7 5,8 0 8 到9,223,372,036,854,775,807带符号的整型数据。下一页上一页停止放映R E A L(4)REAL4bytes(32bits)从1.17549435E-38到3.40282347E38的按照IEEES_floating格式的单精度实型浮点值。在1.17549429E-38和1.40129846E-45之间的值是非常态的。R E A L(8)D O U B L EPRECISION8bytes(64bits)从 2.2 2 5 0 7 3 8 5 8 5 0 7 2 0 1 3 D-3 0 8 到1.7976931348623158D308的按照IE
43、EET_floating格式的双精度实型浮点值。在2.2 2 5 0 7 3 8 5 8 5 0 7 2 0 0 8 D-3 0 8 和4.94065645841246544D-324之间的值是非常态的。COMPLEX(4)COMPLEX8bytes(64bits)由一对从1.17549435E-38到3.40282347E38的按照IEEES_floating格式的单精度实型浮点 值 组 成 的 单 精 度 复 型 浮 点 值。在1.17549429E-38和1.40129846E-45之间的值是非常态的。COMPLEX(8)D O U B L ECOMPLEX16bytes(128bits
44、)由一对从2.2250738585072013D-308到1.7976931348623158D308的按照IEEET_floating格式的双精度实型浮点值组成的双精度复型浮点值。在2.2 2 5 0 7 3 8 5 8 5 0 7 2 0 0 8 D-3 0 8 和4.94065645841246544D-324之间的值是非常态的。下一页上一页停止放映LOGICAL参见LOGICAL(2),LOGICAL(4),以及LOGICAL(8).逻辑型值,包括LOGICAL(2),LOGICAL(4),以及LOGICAL(8).数据规模由编译器选项/integer_size:nn控制。默认的规模控
45、制选项为/integer_size:32(等价于LOGICAL(4)。LOGICAL(1)1byte(8bits)逻辑型值.TRUE.或.FALSE.LOGICAL(2)2bytes(16bits)逻辑型值.TRUE.或.FALSE.LOGICAL(4)4bytes(32bits)逻辑型值.TRUE.或.FALSE.LOGICAL(8)8bytes(64bits)逻辑型值.TRUE.或.FALSE.CHARACTER每个字符1byte(8bits)根据约定的字符编码表示的字符数据,通过 字 符 数 据 的 声 明 形 式:CHARACTER(LEN=n)或CHARACTER*n,其中n表示by
46、te数,来表示数据规模。HOLLERITH每个Hollerith字符1byte(8bits)Hollerith常量。下一页上一页停止放映 对于字符型数据来说,它的存储空间完全和字符串对于字符型数据来说,它的存储空间完全和字符串长度成正比,因此只要直接规定字符串的字符个数,就长度成正比,因此只要直接规定字符串的字符个数,就可以一致地得到其存储空间分配标准。可以一致地得到其存储空间分配标准。至于复型和派生类型,则完全以其他数据类型作为成至于复型和派生类型,则完全以其他数据类型作为成员,自身没有什么特别的规定,因此也就没有独特的针员,自身没有什么特别的规定,因此也就没有独特的针对这两种数据类型的种别
47、参数。对这两种数据类型的种别参数。显然,显然,FORTRANFORTRAN通过运用种别参数来明确地规定数据的表通过运用种别参数来明确地规定数据的表示,使得示,使得FortranFortran的标准化程度得到了进一步提高,从而的标准化程度得到了进一步提高,从而提高了程序的可移植性。提高了程序的可移植性。下一页上一页停止放映 数据的基本(固有)类型数据的基本(固有)类型 对于计算机来说,数据的意义无非就是要知道在存储对于计算机来说,数据的意义无非就是要知道在存储空间为一个特定的数据划出多大的空间来装载它。空间为一个特定的数据划出多大的空间来装载它。FORTRAN早期的做法统一地给一类数据指定固定的
48、存早期的做法统一地给一类数据指定固定的存储模式。储模式。FORTRAN90引进的种别参数,这样就扩充了固有数引进的种别参数,这样就扩充了固有数据类型的存储模式。据类型的存储模式。整型整型(INTEGER)实型实型(REAL)双精度型双精度型(DOUBLE PRECISION)复型复型(COMPLEX)逻辑型逻辑型(LOGICAL)字符型字符型(CHARACTER)隐含说明隐含说明IMPLICIT固有数据类型固有数据类型:Fortran中有七种类型说明语句:中有七种类型说明语句:类型说明类型说明 1 1隐式类型描述法隐式类型描述法 当初当初FORTRAN使用隐式类型声明方法,是与语言的简朴使用隐
49、式类型声明方法,是与语言的简朴形态相适应的除非首先声明了形态相适应的除非首先声明了IMPLICIT语句。语句。隐式类型声明方法的约定,就是让名称的第一个字母来标隐式类型声明方法的约定,就是让名称的第一个字母来标记它的类型,隐含说明记它的类型,隐含说明(I-N规则规则)I-N规则规则:若不加说明,以字母若不加说明,以字母I,J,K,L,M,N六个字母开头的六个字母开头的所有变量名,其变量类型为整型,以其他字母开头的为实型所有变量名,其变量类型为整型,以其他字母开头的为实型变量。变量。例如:例如:I,J,IMAX,NUMBER,LINE,JOB Kl为整型变量为整型变量A,Bl,COUNT,AMO
50、UNT,TOTAL 为实型变量为实型变量 FORTRAN沿用了数学里的很多习惯,这里使用沿用了数学里的很多习惯,这里使用I,J,K,L,M,N来表来表述整数,就是一个明显的数学习惯。述整数,就是一个明显的数学习惯。下一页上一页停止放映 利用利用IMPLICIT语句来自定义字母分配模式,一般的语句来自定义字母分配模式,一般的 IMPLICIT语句的句法形式有语句的句法形式有2种,分别行使不同的功能:种,分别行使不同的功能:IMPLICIT type-specification(letter-specification-list)IMPLICIT NONE (f90)其中的字母分配说明列表的句法形
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。