Fortran数据结构及输入输出.ppt
《Fortran数据结构及输入输出.ppt》由会员分享,可在线阅读,更多相关《Fortran数据结构及输入输出.ppt(51页珍藏版)》请在三一办公上搜索。
1、1.Fortran 数据结构 2.数组 3.数据有格式输入输出概述 4.格式说明与格式编辑符 5.整数有格式输入输出 6.实数有格式输入输出 7.复数有格式输入输出 8.字符串有格式输入输出 9.逻辑值有格式输入输出 10.二、八、十六进制数据有格式输入输出 11.任意类型数据有格式输入输出 12.不可重复编辑符 13.纵向走纸控制 14.有格式输入输出应用举例 15.作业,第六讲 Fortran数据结构及输入、输出,第六讲 Fortran数据结构及输入、输出,6.1 Fortran 数据结构,FORTRAN 90具有丰富的数据类型,有内部数据类型、派生数据类型、数组和指针类型等。利用丰富的数
2、据类型可设计和编写出功能强大的FORTRAN 90程序。,类型 复数运算 字符型,6.1 Fortran 数据结构,第六讲 Fortran数据结构及输入、输出,6.1 复数型数据运算及内部函数,与实数的运算一样。有,-,/,*。并与实数一样有相应的内部函数。FORTRAN 90提供了针对复数型数据的内部函数。CMPLX(x,y,kind)将参数转换为复数型。结果:C(kind)。DCMPLX(x,y)将参数转换为复数型。结果:C(8)。REAL(x)求x的实部。AIMAG(x)求x的虚部。IMAG(x)同AIMAG(x)。CONJG(x)求x的共轭复数。,复数型数据,类型 复数型 字符型,第六
3、讲 Fortran数据结构及输入、输出,6.1 字符型数据/子字符串,表示形式:字符变量名(开始位置:终止位置)例子:有字符变量A,其取值为ABCDE12345FGH,则下面的子串取值为:A(3:11)-CDE12345F,A(I+4:9)-E1234(I=1),1234(I=2)A(:5)-ABCDEA(11:)-FGHA(:)-ABCDE12345FGHA(3:3)-C,字符型数据,子字符串 运算符内部函数,第六讲 Fortran数据结构及输入、输出,6.1 字符型数据/运算符,字符运算符:/例子关系表达式:对每种机器,系统都把本机上可以使用的各种字符按先后排列成某种次序,每个字符在排序中
4、有确定的位置,称为排序号。有了排序号,字符之间就可以比较大小及相等与否,组成关系表达式。字符作比较实际上是比较它们的序号大小。字符比较的一般形式是两端为字符表达式的关系表达式:字符表达式关系操作符字符表达式。例如:A=(XY/C2)/C3 式当C1、C2、C3是字符型变量名时是合法的,要先计算两端字符表达式的值,而后比较它们是否满足关系。,program ex060202 character(len=6)first character(len=10)second character(len=20)add first=Happy second=Birthday add=first/second!
5、经由两个连续的除号!可以连接两个字符串 write(*,*)addend,字符型数据,子字符串 运算符内部函数,第六讲 Fortran数据结构及输入、输出,6.1 字符型数据/内部函数,函数名 说明ACHAR(n)将ASCII码n转换为对应字符。ADJUSTL(string)*将字符串string左对齐,即去掉左端空格ADJUSTR(string)*将字符串string右对齐,即去掉右端空格。string:CH(*),结果类型同stringCHAR(n)*将ASCII码n转换为对应字符。IACHAR(c)*将字符c转换为对应的ASCII码。ICHAR(c)*将字符c转换为对应的ASCII码。I
6、NDEX(s,ss,b)*求子串ss在串s中起始位置。b为真从右起LEN(s)*求字符串s的长度。LEN_TRIM(s)*求字符串s去掉尾部空格后的字符数。,LGE(s1,s2)*按ASCII码值判定字符串s1大于等于字符串s2。LGT(s1,s2)*按ASCII码值判定字符串s1大于字符串s2。LLE(s1,s2)*按ASCII码值判定字符串s1小于等于字符串s2。LLT(s1,s2)*按ASCII码值判定字符串s1小于字符串s2。REPEAT(s,n)*求字符串s重复n次的新字符串。SCAN(s,st,b)求串st中任一字符在串s中的位置。TRIM(s)*求字符串s去掉首尾部空格后的字符数
7、。VERIFY(s,st,b)求不在串st中字符在s中位置。b为真右起,字符型数据,子字符串 运算符内部函数,第六讲 Fortran数据结构及输入、输出,6.2 数组/定义,6.2 数组,数组是类型相同的组变量的有序集合。任何一组类型相同且有序的数据都可使用数组存储。如:保存30名学生成绩数据的一组变量:s1,s2,s3,s30 REAL s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15 这组变量可用数组s取代,数组元素s(1),s(2),s(15),分别取代s1,s2,s15。REAL s(15)数组分静态数组和动态数组静态数组:在编译时分
8、配存储单元,运行时数组大小不能改变。INTEGER num(5)!在编译时分配5个数组元素存储单元(20字节)动态数组:在程序运行时分配存储单元,运行时数组大小可改变。INTEGER,ALLOCATABLE:num(:)!在编译时不分配存储单元 ALLOCATE(num(5)!在运行时分配5个数组元素存储单元(20字节)数组大小为数组元素个数。数组声明有3种方式:类型声明语句、DIMENSION语句、DIMENSION属性,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明1,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOM
9、PLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REAL arr(2:5,-1:2,4),M=(5-2+1)(2-(-1)+1)(4-1+1)=64。,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明2,使用DIMENSION语句进行数组声明。一般格式:DIMENSION
10、例:INTEGER day,count CHARACTER*10 country LOGICAL L DIMENSION num(3),day(12),ihour(5:7),count(-3:3)DIMENSION sc(-5:-1,5:9),ar(2:5,-1:2,4)DIMENSION country(15),L(5)DIMENSION语句中不能出现:,不能给数组赋初值。,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明3,使用类型声明语句和DIMENSION属性进行数组声明。一般格式:,DIMENSION():例:INTEG
11、ER,DIMENSION(2):num,total,score(10:15),price(4,5)REAL,DIMENSION(-5:-1,5:9):sc,jp CHARACTER*10,DIMENSION(15):country,name(10)INTEGER,DIMENSION(5):S=(/45,78,85,55,95/)必须出现:,可给数组赋初值。,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/说明,数组声明中,维下界可以为1,维下界为1可缺省。数组声明中,维下界和维上界可以为任意整数,且维下界维上界。数组声明中,出现:,才
12、能在声明语句中给数组赋初值。数组声明中,允许维下界维上界,且数组大小为0。使用类型声明语句声明数组时,可使数组与普通变量混合声明。使用DIMENSION语句声明数组时,可用类型声明语句在前面声明类型。声明中不能有:。使用DIMENSION属性声明数组时,声明中必须有:。,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明1/例1,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及
13、动态数组。例数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REAL arr(2:5,-1:2,4),M=(5-2+1)(2-(-1)+1)(4-1+1)=64。,INTEGER(1)num(3),day(12)!声明KIND值为1的二个整型数组INTEGER N(4),M(5,8)!声明KIND值为4的二个整型数组REAL score(4),prices(15)!声明二个单精度实型数组REAL(8)dr(5)!声明一个双精度实型数组COMPLEX comp(3)!声明一个单精度复
14、型数组CHARACTER*10 country(15)!声明一个长度为10的字符型数组LOGICAL L(5)!声明一个KIND值为4的逻辑型数组,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明1/例2,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-
15、L1+1)(U2-L2+1)(Un-Ln+1)如:REAL arr(2:5,-1:2,4),M=(5-2+1)(2-(-1)+1)(4-1+1)=64。,INTEGER count(-3:3)!声明一个一维整型数组,有7个数组元素INTEGER week(0:6)!声明一个一维整型数组,有7个数组元素REAL sc(-5:-1,5:9)!声明一个二维实型数组,有25个数组元素REAL ar(2:5,-1:2,4)!声明一个三维实型数组,有64个数组元素,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明1/例3,使用类型声明语句进行
16、数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REAL arr(2:5,-1:2,4),M=(5-2+1)(2-(-1)+1)(4-1+1)=64。,INTEGER:num(3)=(/12,23,34/),day(12)REAL:a(-1:3)=(/1.5,2.5,3.5,4.5,5.
17、5/)INTEGER:X(3,4)=(/1,2,3,4,5,6,7,8,9,10,11,12/)REAL,ALLOCATABLE:SUM(:),AVER(:,:),B(:)READ(*,*)M,NALLOCATE(SUM(0:N),AVER(M,N),B(-1:M)DEALLOCATE,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.3 数据有格式输入输出概述,6.3 数据有格式输入输出概述,第六讲 Fortran数据结构及输入、输出,6.4 格式说明与格式编辑符,READ(*,100)m,n WRITE(*,200)m+n,m-n 100 F
18、ORMAT(I3,I3)200 FORMAT(1X,m+n=,I4,m-n=,I4)END READ(*,(I3,I3)“)m,n WRITE(*,(1X,m+n=,I4,m-n=,I4)“)m+n,m-n END 输入:987432。输出:m+n=1419m-n=555。,示例 格式说明 编辑符,6.4 格式说明与格式编辑符,READ(*,100)m,n WRITE(*,200)m+n,m-n 100 FORMAT(I3,I3)200 FORMAT(1X,m+n=,I4,m-n=,I4)END READ(*,(I3,I3)m,n WRITE(*,(1X,m+n=,I4,m-n=,I4)m+n
19、,m-n END,第六讲 Fortran数据结构及输入、输出,6.4格式说明与格式编辑符/格式说明,数据有格式输入输出需要给出相关的格式说明。FORMAT语句提供输入输出数据的格式说明信息。FORMAT语句既不是执行语句,也不是说明语句。FORMAT语句可出现在说明语句之后,END语句之前任何位置。格式说明表是关键字FORMAT之后的括号部分。格式说明表由若干格式编辑符组成,编辑符由“,”分隔。格式说明表可嵌入到输入输出语句中,取代FORMAT语句。格式说明一般使用FORMAT语句,简单格式使用嵌入方式。FORMAT语句语法描述:FORMAT(,/),6.4 格式说明与格式编辑符,示例 格式说
20、明 编辑符,第六讲 Fortran数据结构及输入、输出,6.4格式说明与格式编辑符/编辑符,FORTRAN 90提供了24个格式编辑符,如:I、F、E、A等。格式编辑符分为两类:可重复编辑符、不可重复编辑符。可重复编辑符可指定重复系数,与I/O表中的一个I/O项对应。不可重复编辑符不可指定重复系数,不与输入输出项相对应。如:I、F、E、A等编辑符为可重复编辑符。如:X、Q、/、等编辑符为不可重复编辑符。READ(*,100)num1,num2,price1,price2 100 FORMAT(2I3,F7.1,E8.2)WRITE(*,200)num1*price1+num2*price2 2
21、00 FORMAT(1X,total prices=,E14.7)END 输入:125E+04。输出:total prices=1.3483512E+07。,6.4 格式说明与格式编辑符,示例 格式说明 编辑符,第六讲 Fortran数据结构及输入、输出,表6-1 可重复编辑符,第六讲 Fortran数据结构及输入、输出,表6-2 不可重复编辑符,第六讲 Fortran数据结构及输入、输出,6.5 整数有格式输入输出,I 编辑符可用于整数的有格式输入输出,一般格式是:rIw.m其中:r为I编辑符重复次数。即:rIw.m等价于Iw.m,Iw.m,Iw.m。w为整数输入输出域宽,即整数占连续字符个
22、数。m为输出最少位数。.m项只对整数输出有效,对输入无效。程序示例:INTEGER(2)i,j,k READ(*,10)i,j,k 10 FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)WRITE(*,(1X,i+j+k=,I5)i+j+k END,格式 输入 输出,6.5 整数有格式输入输出,第六讲 Fortran数据结构及输入、输出,6.5 整数有格式输入输出/输入,输入数据间可按规定域宽紧密输入,也可用逗号间隔输入,不用空格。在域宽内,数字前后,数字之间可出现空格,这些空格一般被视为空。在域宽内,全为空格,输入整数为0。在域宽内,输入数据不能超出范围,不能是非十进制整
23、数。I编辑符要求输入表中对应变量的类型一般是整型,否则会产生错误。示例:INTEGER(2)i,j,k READ(*,10)i,j,k 10 FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)WRITE(*,(1X,i+j+k=,I5)i+j+k END,格式 输入 输出,6.5 整数有格式输入输出,第六讲 Fortran数据结构及输入、输出,6.5 整数有格式输入输出/输出,若域宽等于整数位数,则在域宽内输出该整数,与后一数据无空格间隔。若域宽大于整数位数,则在域宽内按右对齐输出该整数,前补空格。若域宽小于整数位数,则表明域宽不足,无法输出数据,域宽内填充“*”。对于Iw.
24、m格式,m表示输出最小位数。位数小于m,补前导0至m位。示例:READ(*,*)i,j,k 10 FORMAT(1X,i=,I4,j=,I4,k=,I4)WRITE(*,10)i,j,k END,6.5 整数有格式输入输出,格式 输入 输出,第六讲 Fortran数据结构及输入、输出,6.5 整数有格式输入输出/输入/示例,输入数据间可按规定域宽紧密输入,也可用逗号间隔输入,不用空格。在域宽内,数字前后,数字之间可出现空格,这些空格一般被视为空。在域宽内,全为空格,输入整数为0。在域宽内,输入数据不能超出范围,不能是非十进制整数。I编辑符要求输入表中对应变量的类型一般是整型,否则会产生错误。示
25、例:INTEGER(2)i,j,k READ 10,i,j,k 10 FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)PRINT(1X,i+j+k=,I5),i+j+k END,格式 输入 输出,6.5 整数有格式输入输出,第六讲 Fortran数据结构及输入、输出,6.6 实数有格式输入输出,F 编辑符可用于小数型实数的有格式输入输出,一般格式是:rFw.d其中:r为F编辑符重复次数。即:rFw.d 等价于Fw.d,Fw.d,Fw.d。w为小数型实数输入输出域宽,即实数占连续字符个数。d为小数位数。对于输入,无小数点,小数点由d确定,有小数点,小数点由域宽内实际位置确定。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran 数据结构 输入输出
链接地址:https://www.31ppt.com/p-6505874.html