FORTRAN语言第5章(共8章).ppt_第1页
FORTRAN语言第5章(共8章).ppt_第2页
FORTRAN语言第5章(共8章).ppt_第3页
FORTRAN语言第5章(共8章).ppt_第4页
FORTRAN语言第5章(共8章).ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第五章 FORTRAN 90数据类型 数据类型的概念 整型数据 实型数据 复型数据 字符型数据 逻辑型数据 本章主要内容 5.1 数据类型的概念 数据记录了现实世界中客观事物的属性 ,它包括两个方面:数据内容(值)和数 据形式(型)。 数据内容就是数据的值; 数据形式就是数据的存储形式和操作使 用方式,也称为数据类型。 整型 实型 复型 逻辑型 字符型 内部数据类型 数值型 非数值型 派生数据类型 数据类型的性质: (1)类型的名称 (2)允许值的集合 (3)允许值(常量)的表示方法 (4)操作这些值的运算的集合 5.2 整型数据 在FORTRAN语言中,整型值的集合是数学 上整数的一个子集。每种方法用类别类型参 数来区分。整型常量的表示形式为一个数字 串,并在数字串后有一个可任选的下划线后 再跟类别类型参数。例如,373、-1024、 35792、0、32_2、1992110235764803_8 整型数据类型的字节数和取值范围 在FORTRAN90中,还可以使用二进制、 八进制和十六进制整型常量,但它只能用 于DATA语句中。 二进制常量的形式是以字母B开头,后跟用一 对撇号或双引号括起来的数字串,而且每个数字 不是0就是1。例如 B10101101、B“1011101“ 八进制常量的形式是以字母O开头,后跟用一 对撇号或双引号括起来的数字串,而且每个数字 是0到7之间的一个数字。例如,O453、O“376“ 。 十六进制常量的形式是以字母Z开头,后跟用 一对撇号或双引号括起来的数字串,而且每个数 字是0到9或字母A到F之间的一个。例如, ZFFA9、 B“9B45“ 。 INTEGER i, j, k DATA i /B110010/ DATA j /O62/ DATA k /Z32/ 整型变量的说明 基本格式为: INTEGER ( KIND = 类别参数值 ) ,属性列表 : 变量列表 其中类别参数值取1,2,4 例:INTEGER I,TOTAL INTEGER(2) : K,LIMIT INTEGER(KIND=4) : MIN,MAX INTEGER*2 : K,LIMIT INTEGER*4 : MIN,MAX 变量的属性 属性是被说明对象的所属性质。一个对象被 说明具有某一属性时,就使该对象具有某种 附加功能、特殊的使用方式与适用范围。属 性的种类有很多,这里介绍两种最常见属性 的说明格式。 INTEGER, PARAMETER : I=5,J=24 INTERGER, DIMENSION(1:10) : A 例5.1 求Fibonacci数列前30项之和。 Fibonacci数列的递推公式是: F00 F11 FiFi1Fi2 分析:设置两个变量来存放已求得的最后两项 的值:F2保存已求得的最后一项(即Fi1),F1 保存前一项(即Fi2)。这样,下一待求项就是 F1和F2之和,我们将它赋值给F,然后将原来的 F2赋值给F1,原来的F赋值给F2,又可以由F1和 F2推出一个新的F,如此可以一直推下去。 本例中,Fibonacci数列前30项之和是一个很大 的数,已经超过了类别参数为2的整数的取值范 围,只能采用类别参数为4整数。如果数超过类 别参数为4的整数取值范围,就只能采用实型数 据来处理。 5.3 实型数据 FORTRAN用类别类型参数区分不同类型的 实型数据。实型数据有单精度和双精度之分 。单精度类别类型参数值为4,双精度数类别 类型参数值为8。 一般形式为: 有效数E指数 _类别参数 有效数D指数 实型变量的说明 REAL ( KIND = 类别参数值) ,属性列表 : 变量列表 单精度用REAL(4)定义,双精度用REAL(8)或 DOUBLE PRECISION定义。缺省的类别值为4 ,即为单精度。 REAL : M12,AREA,LEN REAL(4) : DX,DY REAL*4 : DX,DY REAL(8) : D_PRE,X REAL*8 : D_PRE,X DOUBLE PRECISION : D_PRE,X 例5.2 利用双精度按下面近似公式求 直到最后一项的绝对值小于1015为止。 分析:首先找出累加项fn与fn-1的递推关系。不难 推出 f0 =x 源程序如下: Implicit none Real*8 :x,y,f Integer:n Read*,x Y=x F=x Do f=-f*(2*n-1)/(2*n)*(2*n-1)/(2*n+1)*x*x if (abs(f) .LT. 1d-15) exit y=y+f n=n+1 Enddo Print*,y=,y,f=,f end 5.4.1 复型常量 将两个实数用逗号分隔,再用括号括起来就构 成了一个FORTRAN复型常量。其中第一个实数 称为复数的实部,第二个实数称为复数的虚部。 例如(1.25,0.4)、(1E2,-3.4)分别表示复数 1.25+0.4i和100.0-3.4i,(1.0_4,4.2)。 复型数据的类别类型参数是用于说明实部和虚 部这两个实型数据的类别类型。 5.4 复型数据 5.4.2 复型变量 COMPLEX ( KIND = 类别值) ,属性列表 : 变量列表 COMPLEX Z1,Z2 COMPLEX(4) : COM_VAL COMPLEX(8) : CZ, CQ CZ = (3.0, 6.3) CQ = (8.76E+5, -67.8E-3) 如果实部和虚部都不是常数,而是表达式,则 应该用CMPLX函数将实部和虚部组成复型数据 再赋给复型变量。例如 C = CMPLX(3.0*A, 6.0+B) 例5.5 有一线段AB,A的坐标为(1,1),B的坐 标为(4.5,4.5),如图5.2所示。求AB的长度, 以及黄金分隔点C的坐标。黄金分割点在线段 的0.618处。 分析:A,B的坐标可用复数表示 :即A为(1.0,1.0),B为(4.5,4.5) 。AB的长度就是(A-B)的模,从图中 可以明显地看到,AB的长度,可用 ABS函数直接求出复数的模。黄金 分隔点C的坐标为A+0.618(B-A)。 PROGRAM COMP_3 IMPLICIT NONE COMPLEX:A,B,C REAL:L READ*,A,B C=A+0.618*(B-A) L=ABS(A-B) PRINT*,L=,L PRINT*,C=,C END PROGRAM COMP_3 用READ语句读入复型数据时,以2个实数作为一个 复型数据,第一个实数为复数的实部,第二个实数为 虚部,用括号括起来。程序的输入可以如下: ( 1.0 , 1.0 ),( 4.5 , 4.5 ) 5.5 字符型数据 5.5.1 字符型常量 字符型常量又叫字符串常量,它是用单撇号或双 撇号括起来的字符序列。例如,ABCD、CHINA 、12345678等都是FORTRAN字符型常量。字符 型常量中的字符可以是计算机系统中允许使用的任 何字符。在字符串内大小写字母均可使用,但它们 是不同的字符。单撇号和双撇号只起定界作用,它 们不是字符串的组成部分。 字符串中含有单撇号或双引号的处理 当字符串中又含有单撇号时,例如要将IM A STUDENT作为一个字符串来处理,为了区分是字符 串中的字符还是定界符,可采用两种方式表示: IM A STUDENT I“M A STUDENT 前者用双撇号作定界符,后者用单撇号作定界符, 而将字符串的单撇号用两个单撇号表示,系统会自 动将其处理为字符串的一个单撇号字符。 字符串内字符的个数称为字符串的长度。字符 串和的长度为0。在字符串内部的空格是有效 字符,并占有一个字符的位置。例如,ABC和A B C是两个不同的字符串。前者字符串的长度为 3,后者为5。 一个字符常数需要写成多行源程序时,有一条 特殊的规则:不仅每一续行都不能尾随注释,而 且每一续行必须以续行标识符(&)作为开头, 任何尾随&号之后或者前导&号之前的空格都不是 字符常数的组成部分,&号本身不是常数的组成 部分。其它的字符包括空格都是字符常数的有效 组成部分。 5.5.2 字符型变量 CHARACTER(LEN=n1,KIND=n2),属性 说明 : 变量列表 格式中的n1和n2是一个整数和整型表达式 ,n1代表被说明变量的长度,n2代表字符变 量的类别参数,各项属性说明是字符型变量 有关属性的说明。 例如: CHARACTER(LEN=25,KIND=2):A,B,C CHARACTER(KIND=3,LEN=15):VAR,CH CHARACTER(LEN=8),DIMENSION(1:10):X,Y,Z CHARACTER(LEN=10),PARAMETER:NAME=FORT RAN_90 CHARACTER(LEN=15):A CHARACTER*15:A CHARACTER(LEN=15):A,B*8,C*5 在以下两种状态下均可以采用星号来说明长度 : (1)具有PARAMETER属性的字符常量。例如以 下两个语句: CHARACTER(LEN=*),PARAMETER:PARA= FORTRAN_90 CHARACTER*(*),PARAMETER:PARA= FORTRAN_90 给出的字符串长度是确定的,因此字符符号常 数PARA的长度是可知的(等于10),可用*说明。 (2)用字符变量作虚元时 在子程序中,用字符型变量作虚元时可以不指 明其具体长度,即用*定义长度。这时它可以与 任意长度的字符型实元相结合,有利于提高子程 序的通用性。 5.5.3 子字符串 字符变量名(m:n) 其中,m和n是整数和整型表达式,表示子字符串 在字符串中的起止位置,该子字符串的长度为n- m+1(nm1)。例如有说明语句如下: CHARACTER(LEN=80):ROW 则ROW(4:7)表示ROW字符串中从第4个字符到第 7个字符组成的一个子串,其长度为4;ROW(I:I)表 示该字符型变量的第I个字符。 5.5.4 字符表达式与字符赋值语句 字符表达式是指用字符运算符把字符常数、字符变量 等字符型数据连接起来的有意义的式子。 字符运算符只有一个,就是字符连接符/,它是由 两个斜杠组合而成的,其作用是将两个字符型数据连 接起来,成为一个字符型数据。该运算符是一个双目 运算符,在其两侧应各有一个字符型操作数。 例如: HE/LLO!的值为HELLO!, FORTRAN/ /90的值为 FORTRAN 90。 PROGRAM CHAR_1 IMPLICIT NONE CHARACTER(LEN=5):A,B,C CHARACTER(LEN=11):D A=CHINA B=JAPAN C=A D=A/ /B PRINT*, A,B,C END PROGRAM CHAR_1 5.5.5 字符关系表达式 字符比较的规则是:一般按其ASCII代码的值(见附 录)进行比较。常用的字符顺序为:数字0小9大; 数字比字母小;大写字母比小写字母小;字母 A小Z大,a小z大;空格字符最小。 在进行关系运算时,遵循以下规律: (1)两个单个字符比较,以它们的代码值决定大小。 A2的值为真 (2)两个字符串比较时,将两个字符串中的字符 自左向右这个进行比较。若所有字符完全相同, 则两表达式相等;否则,以第一次出现不同字符 的比较结果为准。例如 SHANGHAI=-5.0.AND.X=1.0.AND.X=-6.0.AND.Y=2.0.AND.Y=4.0 IF(P.AND.R).OR.(P.AND.S

温馨提示

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

评论

0/150

提交评论