fortran90程序设计chapter4.doc_第1页
fortran90程序设计chapter4.doc_第2页
fortran90程序设计chapter4.doc_第3页
fortran90程序设计chapter4.doc_第4页
fortran90程序设计chapter4.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

41 常量 第四章 内部数据类型与表控输入输出 FORTRAN 90预定义五种内部数据类型:整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL),每种类型都具有参数化特性(KIND参数),通过KIND参数可对内部数据类型进行细化,它们是程序中使用最广泛的数据类型。用户可直接使用内部数据类型说明数据对象(常量、变量、数组等)。内部数据类型分为两类:数值型(整型、实型和复型)和非数值型(字符型和逻辑型)。在程序中需要选择和使用符合精度和范围要求的数据类型。FORTRAN 90内部数据类型具有参数化特性,通过KIND值参数确定数据最佳的存储开销、精度和范围。表4-1给出内部数据类型的不同KIND值参数及存储开销。表4-1 内部数据类型KIND值参数及存储开销类型子类型KIND值字节数说明整型BYTE11与INTEGER(1)等同INTEGER2、 4或 82、 4或 8与缺省有关,INTEGER有1、2、4或8个字节。初始缺省为4,缺省值可通过编译选项改变INTEGER(1)11INTEGER(2)22INTEGER(4)44INTEGER(8)88仅Alpha系统有效实型REAL4 或84 或 8与缺省有关, REAL有4或8个字节。初始缺省为4,缺省值可通过编译选项改变REAL(4)44DOUBLE PRECISION88与REAL(8)等同REAL(8)88复型COMPLEX4或88或16与缺省有关,COMPLEX有8或16个字节。初始缺省为8,缺省与实型缺省值有关(2倍)COMPLEX(4)48DOUBLE COMPLEX816与COMPLEX(8)等同COMPLEX(8)816字符型CHARACTER11CHARACTER与CHARACTER(1)等同。1是KIND值,不是字符串长度CHARACTER*len1lenlen是字符串长度。对Intel CPU有1len 65535,对Alpha CPU有1len231-1逻辑型LOGICAL2、4或82、4或8与缺省有关,LOGICAL有2、4或8个字节。初始缺省为4LOGICAL(1)11LOGICAL(2)22LOGICAL(4)44LOGICAL(8)88仅Alpha系统有效4.1 常量常量是直接写在程序中且在程序运行期间保持不变的数据,它在程序中直接生成并直接用于计算和处理,如125、12.5、(12.5,25.5)、“China”、.TRUE.等。FORTRAN 90有五种内部数据类型常量:整型常量、实型常量、复型常量、字符型常量和逻辑型常量。前三种常量称为算术型常量,又称为常数,可进行算术运算,第四种常量称为字符串,可进行相应的字符串处理,第五种常量称为逻辑值,只能进行逻辑运算,FORTRAN 90允许逻辑值在特殊情况下参与整型数据运算。4.1.1 整型常量整型常量是具有整型数据类型的常量,又称整型常数,简称整数。1语法描述 # _ 说明: 整数可前置+、-号,具有+、-号的整数为有符号整数,否则为无符号整数,无符号整数视为正整数。 通过指定基数可表示2至36进位制整数,常用进制有:2、8、10和16进制,通过指定有关基数和“#”号来指定进位制,缺省为十进制,只有“#”号为16进制。 构成整数的数字至少一个,数字中的字母不区分大小写,且字母A、 B、Z分别表示10、11、35。数字最大值与基数有关,最大数字为基数-1,如基数为17,则最大数字为16,即G。 整数0有三种表示:0、+0和-0。 整数内部不允许出现非数值字符(如“,”、“;”、空格)。符号后可以有若干空格。 整数前导0(第一个非0数值前的0)对整数值的大小没有影响。 整型KIND值确定存储开销、范围和最大位数。KIND值只对十进制有效,其它进制不使用KIND值。+-23456789101112131415161718192021222324252627282930313233343536123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ1248 2整数基数FORTRAN 90允许在程序中表示2至36进位制整数。对于R进制,组成整数的数字最大为R-1,用对应字母表示,如十进制整数3994575可在程序中按下面形式描述(输出结果相同):PRINT*,2#1111001111001111001111 !2进制整数PRINT*,7#45644664 !7进制整数PRINT*,+8#17171717 !8进制整数PRINT*,#3CF3CF !16进制整数PRINT*,+17#2DE110 !17进制整数PRINT*,3994575 !10进制整数PRINT*,36#2DM8F !36进制整数3整数范围FORTRAN 90通过KIND值确定整数的存储开销、最大位数和取值范围,如表4-2所示。缺省KIND值则取默认值4,即4字节(32位)整数。缺省KIND值可通过编译选项“/integer_size: n”改变,其中n为KIND值。表4-2 整型KIND值及存储开销、最大位数和取值范围整型KIND值字节数二进制位数取值范围118有符号整数:-128127,无符号整数:02552216有符号整数:-3276832767,无符号整数:0655354432有符号整数:-21474836482147483647无符号整数:042949672958(Alpha系统)864有符号整数: -92233720368547758089223372036854775807说明:超出取值范围的整数,不产生语法和运行错误,而产生错误的整数,如整数32771_2的实际结果是-32765。在程序中要特别注意整数取值范围。对于整数n_k,n为任意整数,k为整型KIND值。整数n_k的实际结果为:l 若n0,则实际结果为:n-28k0.5+n2-8k。l 若n0,则实际结果为:n+28k0.5-(n+1)2-8k。符号“”和“”表示对符号之间的表达式值进行取整运算。如整数1123_1的实际结果为99,整数-454_1的实际结果为58。 例4.1判定下列整数,指出哪些是合法整数?哪些是非法整数?说明原因。+0、358_5、 -128、 +32769、 -524678、 5,234、 3.1415、 23-456、 130_1、32778_2、+ 125、8#537、 8#79、 8#5,12、 8# 245、 8 #245、 8#4532_2、 #4D5E、 16#458A、 #3F7G、 解:合法整数有:+0、-128、+32769、-524678、+ 125、8#537、#4D5E、16#458A。 非法整数如表4-3所示。表4-3 非法整数及原因非法整数说明358_55不是有效整型KIND值5,234不允许出现逗号“,”3.1415不允许出现小数点“.”,它是一个合法实数23-456不允许出现减号“-”130_1超出1字节127范围32778_2超出32767范围8#798进制数字不允许出现98#5,12不允许出现逗号“,”8# 245不允许出现空格8 #245不允许出现空格8#4532_2非10进制不允许出现整型KIND值#3F7G16进制不允许出现G4.1.2 实型常量实型常量是具有实型数据类型的数值,又称实型常数,简称实数。实数有两种表示形式:小数形式和指数形式。实数语法描述: 1小数形式实数小数形式实数是人们习惯使用的实数,如:-12.5、25.78、3.1415、0.0等。小数形式实数语法描述如下:(.) _ 012345678948说明: 小数形式实数可前置+、-号,正实数的+号可取消。小数形式实数只采用十进制表示。 小数点前后可以没有数字,但不能前后都没有数字,如15.和.15均为合法实数,只有一个小数点“.”不是一个合法实数。小数形式实数有三种类型:n.m、n.、.m,其中n和m为数字串。 小数形式实数0有9种表示:0.0、0.、.0、+0.0、+0.、+.0、-0.0、-0.和-.0。 整数和小数部分内不允许出现非数值字符(如“,”、“;”、空格)。符号和整数部分间可以有空格。 整数部分前导0(第一个非0数值前的0)和小数部分后续0(最后一个非0数值后的0)被忽略。 实型KIND值确定实数的存储开销、取值范围和最大有效位数。若KIND值为4,则称该实数为单精度实数。若KIND值为8,则称该实数为双精度实数。 例4.2判定下列实数,指出哪些是合法实数?哪些是非法实数?说明原因。+0.000、 -125、 235.578、 1,435,345.25、 3.14159_4、 425._5、 -.01270、 $125.5、 -.0000、 -12 58.5_4、 -.、 + 189.解:合法实数有:+0.000、 235.578、 3.14159_4、 -.01270、 -.0000、 + 189.。 非法实数如表4-4所示。表4-4 非法实数及原因非法实数说明-125是一个合法整数,但不是一个合法实数1,435,345.25不允许出现逗号“,”425._55不是有效实型KIND值$125.5不允许出现字符“$”-12 58.5_4整数部分不允许出现空格-.小数点前后数字不能同时为空2指数形式实数指数形式实数是科学计算中常用的实数,也称科学记数法实数。指数形式实数常用来表示特大或特小实数,如中国人口为13亿5千2百万,可表示为13.52108,电子质量可表示为0.9110-30千克等。由于在计算机设备中角标无法表示,故采用字母E(英文指数单词Exponent的第一个字母)表示以10为底的指数,如13.52108在FORTRAN程序中表示为指数形式实数13.52E8或13.52E+8,0.9110-30表示为0.91E-30。指数形式实数由十进制整数或小数形式实数与指数部分组成。指数形式实数语法描述如下: _ (EeDd) 说明: 指数形式实数可前置+、-号,正实数的+号可取消。指数形式实数只能采用十进制表示。 字符E前可以是十进制整数,也可是小数形式实数,字符E后必须是十进制整数,不能是实数。E前后不能为空。指数形式实数有四种类型:n.mEk、n.Ek、.m Ek、nEk,其中n、m和k为数字串。 指数形式实数0有9种表示:0.0Ek、0.Ek、.0 Ek、+0.0 Ek、+0. Ek、+.0Ek、-0.0Ek、-0.Ek、-.0 k、0Ek、+0Ek、-0Ek。 数字之间不能出现非数值字符(如“,”、“;”、空格)。指数部分符号后不能有空格。 前导0和后续0被忽略,它们对实数值的大小没有影响。 实型KIND值确定实数的存储开销、取值范围和最大有效位数。若指数标识为D或d,则表示该实数为双精度实数,等价于KIND值为8,但不能指定KIND值。 例4.3判定下列实数,指出哪些是合法实数?哪些是非法实数?说明原因。+0.E-0、 -125E-5_8、 23.578E2.5、 1,435,345.25E+2、 3.14159E-1_3、 .125E5、 - .012E+3、 125.5E$8、 E+5、 -12E5 5_4、 18.5D58、 + 18.9D10_8解:合法实数有:+0.E-0、 -125E-5_8、 .125E5、 - .012E+3、18.5D58。 非法实数如表4-5所示。表4-5 非法实数及原因非法实数说明23.578E2.5指数部分不允许出现小数1,435,345.25E+2不允许出现逗号“,”3.14159E-1_33不是有效实型KIND值125.5E$8不允许出现字符“$”E+5E前不允许为空-12E5 5_4数字之间不允许出现空格+ 18.9D10_8D指数不允许指定实型KIND值3实数性质实数有四个性质:_l 实数可写成小数形式实数,也可写成指数形式实数。l 实数写成指数形式实数可有多种等价写法,如1.2345E1和0.12345E2为同一实数。l 指数形式实数的指数部分决定小数点的位置,指数部分为正,表示小数点向右移动若干位,指数部分为负,表示小数点向左移动若干位。l 指数形式实数数值部分决定有效数字位数(即精度),超出有效数字位数,将产生误差。指数部分决定实数大小。4实数标准化形式从实数的性质可以看出,同一个实数有多种表示形式。为了统一起见,常常采用通用的标准化形式表示,以提高程序的可读性。计算机输出实数时采用标准化形式输出。标准化形式通常有两种:l 数值部分绝对值小于1(即小数点前数字必须为0)且大于等于0.1(即小数点后第一个数字不能为0)。不符合这个标准化条件,可增大或减少指数值(移动小数点位置)来达到标准化条件。如实数125.34的标准化实数为0.12534E3。l 数值部分绝对值小于10且大于等于1(即小数点前第一个数字不能为0)。不符合这个标准化条件,可增大或减少指数值(移动小数点位置)来达到标准化条件。如实数125.34的标准化实数为1.2534E2。Digial Visual FORTRAN 5.0采用这种标准化形式。实数在程序中可以不按标准化形式表示,但程序在编译和执行时,自动转化为标准化形式进行存储或输出。实数均按标准化形式存储,不同编译系统采用标准化形式不同。4实数精度和取值范围FORTRAN 90通过KIND值确定实数存储开销(即字节数)、精度和取值范围,如表4-6所示。缺省KIND值则取默认值4,即4字节(32位)实数。缺省KIND值可通过编译选项“/real_size: n”改变,其中n为KIND值。表4-6 实型KIND值及存储开销、精度和取值范围实型KIND值字节数二进制位数精度取值范围44327位有效数字-3.40282347E+38 -1.17549435E-380+1.17549435E-38 +3.40282347E+38886415位有效数字-1.7976931348623158D+308 -2.2250738585072013D-3080+2.2250738585072013D-308 +1.7976931348623158D+308说明: 对于单精度实数(KIND值=4),若其绝对值1038,则出现上溢,系统将按数据出错处理,产生“上溢错”运行错误,若其绝对值10308,则出现上溢,系统将按数据出错处理,产生“上溢错”运行错误,若其绝对值10-308,则出现下溢,系统按0处理,不产生运行错误。4.1.3 复型常量在科学计算领域中常用复数求解实际问题。复数的代数表示式为:a+bi,其中:a称为实部,b称为虚部,a和b为整数或实数,i为-1。在FORTRAN 90中不采用这种表示,而是采用圆括号将一对整数或实数括起来表示。例如FORTRAN 90用(12,25.45)表示复数12+25.45i。复型常量是具有复型数据类型的数值,又称复型常数,简称复数。1. 语法描述(,)表4-7 复数精度转换实部类型虚部类型转换后类型复数类型整数整数单精度实数(KIND=4)单精度复数(KIND=4)整数单精度实数(KIND=4)单精度实数(KIND=4)单精度复数(KIND=4)整数双精度实数(KIND=8)双精度实数(KIND=8)双精度复数(KIND=8)单精度实数(KIND=4)整数单精度实数(KIND=4)单精度复数(KIND=4)单精度实数(KIND=4)单精度实数(KIND=4)单精度实数(KIND=4)单精度复数(KIND=4)单精度实数(KIND=4)双精度实数(KIND=8)双精度实数(KIND=8)双精度复数(KIND=8)双精度实数(KIND=8)整数双精度实数(KIND=8)双精度复数(KIND=8)双精度实数(KIND=8)单精度实数(KIND=4)双精度实数(KIND=8)双精度复数(KIND=8)双精度实数(KIND=8)双精度实数(KIND=8)双精度实数(KIND=8)双精度复数(KIND=8)2. 复数范围 复数分单精度复数和双精度复数,复数范围由其实部和虚部的范围决定。单精度复数存储开销为8字节,实部和虚部各为4字节,其范围为2个单精度实数范围。双精度复数存储开销为16字节,实部和虚部各为8字节,其范围为2个双精度实数范围。单精度复数(a,b)字节1 字节2 字节3 字节4 字节5 字节6 字节7 字节8双精度复数(a,b)字节1 字节8 字节9 字节16复数表示与存储结构的关系如图4-1所示。说明: 描述中的圆括号不是BNF中的元符号,而是属于表示复数的一个单词符号。 计算机内用两个实数表示复数。如果实部和虚部为整数,则将其转换为单精度或双精度实数。 将复数的实部和虚部按最高精度转换成同一精度的实数,转换方式如表4-7所示。图4-1 复数表示与存储结构的关系 例4.4判定下列复数的类型和字节数。(12,35)、(25,12.5)、(8#745,125_8)、(325.45_8,854)、(35.78,23.345D2)、(387.885,1.435)、(7745.35,5.4553E-12_8)解:判定结果如表4-8所示。表4-8 复数类型及存储开销复数复数类型复数字节数(12,35)单精度复数8(25,12.5)单精度复数8(8#745,125_8)单精度复数8(325.45_8,854)双精度复数16(35.78,23.345D2)双精度复数16(387.885,1.435)单精度复数8(7745.35,5.4553E-12_8)双精度复数164.1.4 字符型常量在计算机应用中经常需要处理一些非数值数据,字符及字符串文本是最常用的非数值数据。FORTRAN 90提供字符数据类型的表示和处理功能。字符型常量是具有字符型数据类型的非数值数据,又称为字符或字符串。长度为1的字符串简称为字符。说明: 字符串首尾引号称为字符串分割符,字符串分割符只能是西文单引号或西文双引号,且配对。 字符符内空格不能忽略,如字符串Double Pecision与DoublePecision是不同的两个字符串。 字符串内字母区分大小写,如Double Pecision与double pecision是不同的两个字符串。 字符串内字符可以是单引号或双引号,若是,则与分隔符发生冲突,这时有两种解决冲突的办法:l 交替使用法,即:若字符串内出现单引号,则分隔符应为双引号;若字符串内出现双引号,则分隔符应为单引号。如下面两个字符串为合法字符串: Im a student.He said:We are going to Suzhou. l 重复使用法,即:若字符串内出现单引号或双引号,则在其后在增加一个单引号或双引号,两个单引号或双引号视为一个单引号或双引号。例如下面两个字符串为合法字符串: I m a student. He said: We are going to Suzhou. 字符串是由若干FORTRAN 90字符集中字符构成的字符序列,它用单引号“”或双引号“”括住表示,单引号或双引号要配对。1. 一般字符串一般字符串语法描述如下:()()字符串中字符个数(不包括字符串分隔符)称为字符串长度。长度为0的字符串称为空串。字符串中一个西文字符分配一个字节(8位)存储空间,一个汉字分配两个字节(16位)存储空间,且按两个西文字符计算长度。 例4.5确定下列字符串的长度。Im a student. -字符串长度为14X+Y*Z100 -字符串长度为9 -字符串长度为0 -字符串长度为1ABCD EF -字符串长度为82. H字符串H字符串称为Hollerith字符串,早期标准FORTRAN字符串,在FORTRAN 90中已被废除,但在Digital Visual FORTRAN 5.0中允许使用。这里对其作简单介绍。H字符串语法描述如下:H说明:长度必须大于等于1。H编辑符后为字符串值,其字符个数必须等于长度。例如合法的H字符串有:5Hchina、1HA、14HIm a student.例如非法的H字符串有:0H、8Hchina、1H A、-5HChina3. C字符串C字符串语法描述如下:()()C说明: 一般字符串后跟一个字母C,即为C字符串。 C字符串与一般字符串有两个区别:一是在字符串中是否允许出现非打印字符,二是在字符串末尾是否添加NULL字符(即ASCII码为0的字符)。 C字符串扩大了一般字符串功能,即允许在字符串中出现非打印字符(控制符),如回车符、换行符、退格符等。C字符串中使用特殊字符“”后跟非打印字符的ASCII码或标志符来表示非打印字符。表4-9给出C字符串中非打印字符的表示形式。表4-9 非打印字符表示形式表示形式非打印字符表示形式非打印字符aBellt水平Tabb退格v垂直Tabf进格n换行xhh16进制编码为hh的任意ASCII码字符r回车ooo8进制编码为ooo的任意ASCII码字符 例4.6指出下列语句的输出结果。PRINT *,ABCbDEFC !输出结果为:ABDEFPRINT *,ABCfDEFC !输出结果为:ABC DEFPRINT *,ABCrDEFC !输出结果为:DEFPRINT *,ABCDEFC !输出结果为:ABCDEFPRINT *,ABC110DEFC !输出结果为:ABCHDEF C字符串末尾将自动添加NULL字符(即ASCII码为0的字符),C字符串长度比内容相同的一般字符串长度大1。例如一般字符串Word的长度为4,而C字符串WordC的长度为5。4.1.5 逻辑型常量在应用中经常要对一些命题进行判定,以操作方向。逻辑型常量是一种非数值数据。逻辑型常量是具有逻辑型数据类型的非数值数据,又称为逻辑值或布尔值。逻辑值非常简单,只有两个:真和假,FORTRAN 90中分别用.true.和.false.表示。逻辑值语法描述如下:(.true.false.) _ 1248说明: 逻辑值两边小数点“.”必须有。逻辑值中字母不区分大小写,如.True.和.true.是同一个逻辑值。 逻辑型KIND值确定逻辑值的存储开销,即占用存储空间多少单元(1字节、2字节、4字节或8字节)。逻辑型KIND值与整型KIND值相同,缺省为4。 对于逻辑值.true.,在其存储单元字节内每位为“1”, 可视为整数值-1,对于逻辑值.false.,在其存储单元字节内每位为“0”,可视为整数值0,它们均能参与整数运算。如5+.TRUE.结果为4。内存单元1152内存地址012100101102103104n-1numKIND=4整型变量(a)执行num=1152内存单元内存地址012100101102103104n-13345numKIND=4整型变量(b)执行num=3345图4-2 变量存储表示4.2 变量在应用中常常遇到一些不断变化的数据。FORTRAN 90通过变量手段来表示、存储和处理这些变化的数据。变量是在程序运行过程中可随时改变的数据。在任何时刻,一个变量只能有且必须有一个确定的值。FORTRAN 90在存储器中为每个变量分配若干个连续的存储单元来存放变量的值,变量名代表一组连续存储单元的首地址,通过变量名来访问变量所代表的一组连续存储单元。如KIND值为4的整型变量num的存储表示,如图4-2所示。变量在使用前需赋予正确的值,否则将产生错误。如下面语句使total变量取不同的值。total=125.5 !total变量取125.5total=345.5 !total变量取345.54.2.1 变量名称每一个变量要有一个唯一且合法的名称,称为变量名称,简称变量名。通过变量名来访问和处理变量。使用变量名要符合FORTRAN 90名称规定。11342 变量FORTRAN 90变量名长度与FORTRAN 77变量名长度要求不同。FORTRAN 90变量名最大长度为31,超过31个字符取前31个字符作为变量名,而FORTRAN 77变量名最大长度为6,如object_weight和object_color在FORTRAN 77中被认为是同一个变量object,而在FORTRAN 90中则被认为是两个不同的变量。选择变量名的时候,最好遵循“见名知意”原则,选择符合数据意义的合适英文单词作为变量名,提高可读性,如变量名count、number、total等。4.2.2 变量类型在程序中,变量应有确定的数据类型,变量的值应符合变量类型确定的取值范围。变量的值可改变,但变量的类型不能改变。FORTRAN 90规定变量有五种类型:整型变量、实型变量、复型变量、字符型变量和逻辑型变量。变量类型KIND值意义与常量类型KIND值意义相同,如表4-1所示。在程序中,变量类型需要通过类型声明语句来定义。变量类型声明有两种形式:显式声明和隐式声明(隐含约定)。1 显式声明显式声明是在程序前部(可执行语句前)通过类型声明语句对变量类型进行定义。如下面类型声明语句定义了一个整型变量no、一个实型变量book_price和一个字符型变量name。INTEGER noREAL book_priceCHARACTER name2 隐式声明隐式声明是传统FORTRAN语言预先定义且无须通过类型声明语句对变量类型进行定义,习惯称为I-N规则。I-N规则规定:在程序中,凡是变量名以字母I、J、K、L、M、N、i、j、k、l、m、n开头的变量被默认为整型变量,以其它字母开头的变量被默认为实型变量,如number为整型变量,而area为实型变量。变量类型以显式声明优先。FORTRAN 90允许通过IMPLICIT隐式声明语句禁止I-N规则或重新定义I-N规则。IMPLICIT语句语法描述如下:IMPLICIT NONE(,-), (,-)INTEGERREALCOMPLEXCHARACTERLOGICAL说明: 隐式声明表中的NONE项表示完全禁止I-N规则,即在程序中使用的所有变量必须显式声明。如语句“IMPLICIT NONE”使I-N规则在本程序中将不再适用。 隐式声明表中的项指定以该字母开头变量具有括号前给出的内部数据类型,定义新的I-N规则。一个字母不能同时出现在多个IMPLICIT语句中。下面隐式声明语句中,第2和4个视为非法。IMPLICIT INTEGER(a,b),REAL(i,j) !合法IMPLICIT REAL(a) !非法,a出现两次IMPLICIT LOGICAL(c) !合法IMPLICIT INTEGER(i) !非法,i出现两次 隐式声明表中的项之间可用逗号“,”或减号“-”分隔。“,”分隔表示以枚举方式指定变量首字母,如“a,b,c”表示3个首字母,“-”分隔表示以区间方式指定一批变量首字母,如“f-j”表示字母f、g、h、i、j五个字母。 类型声明语句比IMPLICIT语句优先级高,在IMPLICIT 语句后可用类型声明语句重新声明在前面IMPLICIT语句中隐式声明的变量。下面两条语句是合法的。IMPLICIT INTEGER(a,b),REAL(i,j) !合法REAL a,c !合法 IMPLICIT语句必须出现在所有类型声明和可执行语句之前。下面IMPLICIT语句是非法的。INTEGER a,b,c,dIMPLICIT REAL(n,m,l) !非法I-N规则会降低程序的可读性,不符合现代程序设计语言的基本特征,FORTRAN 90不推荐使用I-N规则,但为了保持与传统FORTRAN语言的兼容,FORTRAN 90保留了I-N规则。4.2.3 整型变量整型变量只能取整数值和进行整数四则运算。使用整型变量要对其类型进行声明,一般要进行显式声明。整型变量可以定义为:l INTEGER。l INTEGER(1)或INTEGER(KIND=1)。l INTEGER(2)或INTEGER(KIND=2)。l INTEGER(4)或INTEGER(KIND=4)。l INTEGER(8)或INTEGER(KIND=8)。1 整型变量显式声明语法描述说明: 通过项指定整型变量的KIND值,可取1、2、4或8。声明语句中(KIND=i)和(i)是等同的。不指定整型KIND值则取缺省整型KIND值。下列语句是合法的整型变量声明语句: INTEGER(KIND=2)a,b,c,d !声明KIND值为2的4个整型变量 INTEGER(1)e,d,e !声明KIND值为1的3个整型变量 INTEGER f !声明KIND值为4(缺省)的1个整型变量 符号:在声明中可有可无。若有,则可赋初值,否则不可赋初值,赋初值错。下列语句允许赋初值: INTEGER(KIND=2):a=15,b !a初值为15,b初值为0 INTEGER(1):c=8#127 !c初值为8进制数127,即10进制数87 INTEGER :d=125 !d初值为125 =项为给整型变量赋初值,当声明中出现符号:才能使用该项指定初值。声明语句“INTEGER d=125”是非法语句。 KIND值为1的整型变量声明可由BYTE声明取代。下面两声明语句等价: INTEGER(1):c=8#127 !c初值为8进制数127,即10进制数87 BYTE :c=8#127 !c初值为8进制数127,即10进制数87 声明“INTEGER(i)”与“INTEGER *i”等价。语句“INTEGER(2) a,b”可写成“INTEGER *2 a,b”。INTEGER(KIND=):=,=2 整型变量取值范围整型变量的存储开销与整型KIND值有关。整型变量有一个确定的取值范围,超出范围处理办法与整数处理办法相同。整型变量的取值范围由它的KIND值参数定义,声明中要明确指定整型KIND值或取缺省KIND值。整型变量KIND值、存储开销和取值范围参见表4-2。缺省KIND值可通过编译选项“/integer_size: n”定义,其中n为1、2、4或8。 假设整型变量num的KIND值为1,取值范围为-128127。下面给出语句执行后num取值。num=125 !num未超出取值范围。num取值为125num=-98 !num未超出取值范围。num取值为-98num=195 !num已超出取值范围。num取值为-61num=-150 !num已超出取值范围。num取值为1064.2.4 实型变量说明: 通过项指定实型变量的KIND值,实型KIND值可取4或8。声明语句中(KIND=i)和(i)是等同的。不指定实型KIND值则取缺省实型KIND值。下列语句是合法的实型变量声明语句: REAL(KIND=4)a,b,c,d !声明KIND值为4的4个单精度实型变量 REAL(8)e,d,e !声明KIND值为8的3个双精度实型变量 REAL f !声明KIND值为4(缺省)的1个实型变量 符号:在声明中可有可无。若有,则可赋初值,否则不可赋初值,赋初值错。下列语句允许赋初值: REAL(KIND=4):a=125.5,b !a初值为125.5,b初值为0.0 REAL(8):c=12.5E+3 !c初值为12500.0 REAL :d=12.5 !d初值为12.5 =项为给实型变量赋初值,当声明中出现符号:才能使用该项指定初值。声明语句“REAL d=12.5”是非法语句。 KIND值为8的实型变量为双精度变量,可由DOUBLE PRECISION声明取代。下面声明语句等价: REAL(8):c=12.5D-10 !c初值为12.510-10 DOUBLE PRECISION :c=12.5D-10 !c初值为12.510-10 声明“REAL(i)”与“REAL *i”等价。声明语句“REAL(4) a,b”也可写成“REAL *4 a,b”。实型变量只能取实数值和进行实数四则运算。使用实型变量要对其类型进行声明,一般要进行显式声明。实型变量可以定义为:l REALl REAL(4)或REAL(KIND=4)l REAL(8)或REAL(KIND=8)1 实型变量显式声明语法描述REAL (KIND=):=,=2 实型变量取值范围实型变量的存储开销与实型KIND值有关。实型变量有一个确定的取值范围,超出范围处理办法与实数处理办法相同。实型变量的取值范围由它的KIND值参数定义,声明中要明确指定实型KIND值或取缺省KIND值。实型变量KIND值、存储开销和取值范围参见表4-6。缺省KIND值可通过编译选项“/real_size: n”,其中n为4或8。 说明: 通过项指定复型变量的KIND值,复型KIND值可取4或8。声明语句中(KIND=i)和(i)是等同的。不指定复型KIND值则取缺省KIND值。下列语句是合法的复型变量声明语句:COMPLEX(KIND=4)a,b,c,d !声明KIND值为4的4个单精度复型变量COMPLEX(8)e,d,e !声明KIND值为8的3个双精度整型变量COMPLEX f !声明KIND值为4(缺省)的1个复型变量 符号:在声明中可有可无。若有,则可赋初值,否则不可赋初值,赋初值错。下列语句允许赋初值: COMPLEX(KIND=4):a=(5.7,8.5),b !a初值为(5.7,8.5),b初值为(0.0,0.0) COMPLEX(8):c=(278,12.5E+3) !c初值为(278.0,12500.0) COMPLEX :d=(12.5,25.3) !d初值为(12.5,25.3) =项为给复型变量赋初值,当声明中出现符号:才能使用该项指定初值。声明语句“COMPLEX d=(12.5,25.3)”是非法语句。 KIND值为8的复型变量为双精度变量,可由DOUBLE COMPLEX声明语句取代。下面声明语句等价: COMPLEX(8):c=(12.5D-10,125.8E-30) !c初值为(12.5D-10,125.8D-30) DOUBLE COMPLEX :c=(12.5D-10,125) !c初值为(12.5D-10,125D0) 声明“COMP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论