Fortran数据结构及输入输出.ppt

上传人:max****ui 文档编号:11549135 上传时间:2020-04-28 格式:PPT 页数:51 大小:2.31MB
返回 下载 相关 举报
Fortran数据结构及输入输出.ppt_第1页
第1页 / 共51页
Fortran数据结构及输入输出.ppt_第2页
第2页 / 共51页
Fortran数据结构及输入输出.ppt_第3页
第3页 / 共51页
点击查看更多>>
资源描述
1.Fortran数据结构2.数组3.数据有格式输入输出概述4.格式说明与格式编辑符5.整数有格式输入输出6.实数有格式输入输出7.复数有格式输入输出8.字符串有格式输入输出9.逻辑值有格式输入输出10.二、八、十六进制数据有格式输入输出11.任意类型数据有格式输入输出12.不可重复编辑符13.纵向走纸控制14.有格式输入输出应用举例15.作业,第六讲Fortran数据结构及输入、输出,第六讲Fortran数据结构及输入、输出,6.1Fortran数据结构,FORTRAN90具有丰富的数据类型,有内部数据类型、派生数据类型、数组和指针类型等。利用丰富的数据类型可设计和编写出功能强大的FORTRAN90程序。,类型复数运算字符型,6.1Fortran数据结构,第六讲Fortran数据结构及输入、输出,6.1复数型数据运算及内部函数,与实数的运算一样。有,-,/,*。并与实数一样有相应的内部函数。FORTRAN90提供了针对复数型数据的内部函数。CMPLX(x,y,kind)将参数转换为复数型。结果:C(kind)。DCMPLX(x,y)将参数转换为复数型。结果:C(8)。REAL(x)求x的实部。AIMAG(x)求x的虚部。IMAG(x)同AIMAG(x)。CONJG(x)求x的共轭复数。,复数型数据,类型复数型字符型,第六讲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字符型数据/运算符,字符运算符:/例子关系表达式:对每种机器,系统都把本机上可以使用的各种字符按先后排列成某种次序,每个字符在排序中有确定的位置,称为排序号。有了排序号,字符之间就可以比较大小及相等与否,组成关系表达式。字符作比较实际上是比较它们的序号大小。字符比较的一般形式是两端为字符表达式的关系表达式:字符表达式关系操作符字符表达式。例如:A=(XY/C2)/C3式当C1、C2、C3是字符型变量名时是合法的,要先计算两端字符表达式的值,而后比较它们是否满足关系。,programex060202character(len=6)firstcharacter(len=10)secondcharacter(len=20)addfirst=Happysecond=Birthdayadd=first/second!经由两个连续的除号!可以连接两个字符串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码。INDEX(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去掉首尾部空格后的字符数。VERIFY(s,st,b)求不在串st中字符在s中位置。b为真右起,字符型数据,子字符串运算符内部函数,第六讲Fortran数据结构及输入、输出,6.2数组/定义,6.2数组,数组是类型相同的组变量的有序集合。任何一组类型相同且有序的数据都可使用数组存储。如:保存30名学生成绩数据的一组变量:s1,s2,s3,s30REALs1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15这组变量可用数组s取代,数组元素s(1),s(2),s(15),分别取代s1,s2,s15。REALs(15)数组分静态数组和动态数组静态数组:在编译时分配存储单元,运行时数组大小不能改变。INTEGERnum(5)!在编译时分配5个数组元素存储单元(20字节)动态数组:在程序运行时分配存储单元,运行时数组大小可改变。INTEGER,ALLOCATABLE:num(:)!在编译时不分配存储单元ALLOCATE(num(5)!在运行时分配5个数组元素存储单元(20字节)数组大小为数组元素个数。数组声明有3种方式:类型声明语句、DIMENSION语句、DIMENSION属性,定义声明1声明2声明3说明,第六讲Fortran数据结构及输入、输出,6.2数组/声明1,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REALa(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REALarr(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例:INTEGERday,countCHARACTER*10countryLOGICALLDIMENSIONnum(3),day(12),ihour(5:7),count(-3:3)DIMENSIONsc(-5:-1,5:9),ar(2:5,-1:2,4)DIMENSIONcountry(15),L(5)DIMENSION语句中不能出现:,不能给数组赋初值。,6.2数组,定义声明1声明2声明3说明,第六讲Fortran数据结构及输入、输出,6.2数组/声明3,使用类型声明语句和DIMENSION属性进行数组声明。一般格式:,DIMENSION():例:INTEGER,DIMENSION(2):num,total,score(10:15),price(4,5)REAL,DIMENSION(-5:-1,5:9):sc,jpCHARACTER*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可缺省。数组声明中,维下界和维上界可以为任意整数,且维下界维上界。数组声明中,出现:,才能在声明语句中给数组赋初值。数组声明中,允许维下界维上界,且数组大小为0。使用类型声明语句声明数组时,可使数组与普通变量混合声明。使用DIMENSION语句声明数组时,可用类型声明语句在前面声明类型。声明中不能有:。使用DIMENSION属性声明数组时,声明中必须有:。,6.2数组,定义声明1声明2声明3说明,第六讲Fortran数据结构及输入、输出,6.2数组/声明1/例1,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REALa(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REALarr(2:5,-1:2,4),M=(5-2+1)(2-(-1)+1)(4-1+1)=64。,INTEGER(1)num(3),day(12)!声明KIND值为1的二个整型数组INTEGERN(4),M(5,8)!声明KIND值为4的二个整型数组REALscore(4),prices(15)!声明二个单精度实型数组REAL(8)dr(5)!声明一个双精度实型数组COMPLEXcomp(3)!声明一个单精度复型数组CHARACTER*10country(15)!声明一个长度为10的字符型数组LOGICALL(5)!声明一个KIND值为4的逻辑型数组,6.2数组,定义声明1声明2声明3说明,第六讲Fortran数据结构及输入、输出,6.2数组/声明1/例2,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REALa(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REALarr(2:5,-1:2,4),M=(5-2+1)(2-(-1)+1)(4-1+1)=64。,INTEGERcount(-3:3)!声明一个一维整型数组,有7个数组元素INTEGERweek(0:6)!声明一个一维整型数组,有7个数组元素REALsc(-5:-1,5:9)!声明一个二维实型数组,有25个数组元素REALar(2:5,-1:2,4)!声明一个三维实型数组,有64个数组元素,6.2数组,定义声明1声明2声明3说明,第六讲Fortran数据结构及输入、输出,6.2数组/声明1/例3,使用类型声明语句进行数组声明。一般格式::INTEGERREALCOMPLEXCHARACTERLOGICAL()=,()=,:(/,/)声明下界为1的数组。例声明数组下界不为1的数组。例声明赋初值的数组及动态数组。例数组元素个数计算。REALa(L1:U1,L2:U2,Ln:Un)!数组元素个数m按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:REALarr(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.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,nWRITE(*,200)m+n,m-n100FORMAT(I3,I3)200FORMAT(1X,m+n=,I4,m-n=,I4)ENDREAD(*,(I3,I3)“)m,nWRITE(*,(1X,m+n=,I4,m-n=,I4)“)m+n,m-nEND输入:987432。输出:m+n=1419m-n=555。,示例格式说明编辑符,6.4格式说明与格式编辑符,READ(*,100)m,nWRITE(*,200)m+n,m-n100FORMAT(I3,I3)200FORMAT(1X,m+n=,I4,m-n=,I4)ENDREAD(*,(I3,I3)m,nWRITE(*,(1X,m+n=,I4,m-n=,I4)m+n,m-nEND,第六讲Fortran数据结构及输入、输出,6.4格式说明与格式编辑符/格式说明,数据有格式输入输出需要给出相关的格式说明。FORMAT语句提供输入输出数据的格式说明信息。FORMAT语句既不是执行语句,也不是说明语句。FORMAT语句可出现在说明语句之后,END语句之前任何位置。格式说明表是关键字FORMAT之后的括号部分。格式说明表由若干格式编辑符组成,编辑符由“,”分隔。格式说明表可嵌入到输入输出语句中,取代FORMAT语句。格式说明一般使用FORMAT语句,简单格式使用嵌入方式。FORMAT语句语法描述:FORMAT(,/),6.4格式说明与格式编辑符,示例格式说明编辑符,第六讲Fortran数据结构及输入、输出,6.4格式说明与格式编辑符/编辑符,FORTRAN90提供了24个格式编辑符,如:I、F、E、A等。格式编辑符分为两类:可重复编辑符、不可重复编辑符。可重复编辑符可指定重复系数,与I/O表中的一个I/O项对应。不可重复编辑符不可指定重复系数,不与输入输出项相对应。如:I、F、E、A等编辑符为可重复编辑符。如:X、Q、/、等编辑符为不可重复编辑符。READ(*,100)num1,num2,price1,price2100FORMAT(2I3,F7.1,E8.2)WRITE(*,200)num1*price1+num2*price2200FORMAT(1X,totalprices=,E14.7)END输入:1252195234.57.52E+04。输出:totalprices=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为整数输入输出域宽,即整数占连续字符个数。m为输出最少位数。.m项只对整数输出有效,对输入无效。程序示例:INTEGER(2)i,j,kREAD(*,10)i,j,k10FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)WRITE(*,(1X,i+j+k=,I5)i+j+kEND,格式输入输出,6.5整数有格式输入输出,第六讲Fortran数据结构及输入、输出,6.5整数有格式输入输出/输入,输入数据间可按规定域宽紧密输入,也可用逗号间隔输入,不用空格。在域宽内,数字前后,数字之间可出现空格,这些空格一般被视为空。在域宽内,全为空格,输入整数为0。在域宽内,输入数据不能超出范围,不能是非十进制整数。I编辑符要求输入表中对应变量的类型一般是整型,否则会产生错误。示例:INTEGER(2)i,j,kREAD(*,10)i,j,k10FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)WRITE(*,(1X,i+j+k=,I5)i+j+kEND,格式输入输出,6.5整数有格式输入输出,第六讲Fortran数据结构及输入、输出,6.5整数有格式输入输出/输出,若域宽等于整数位数,则在域宽内输出该整数,与后一数据无空格间隔。若域宽大于整数位数,则在域宽内按右对齐输出该整数,前补空格。若域宽小于整数位数,则表明域宽不足,无法输出数据,域宽内填充“*”。对于Iw.m格式,m表示输出最小位数。位数小于m,补前导0至m位。示例:READ(*,*)i,j,k10FORMAT(1X,i=,I4,j=,I4,k=,I4)WRITE(*,10)i,j,kEND,6.5整数有格式输入输出,格式输入输出,第六讲Fortran数据结构及输入、输出,6.5整数有格式输入输出/输入/示例,输入数据间可按规定域宽紧密输入,也可用逗号间隔输入,不用空格。在域宽内,数字前后,数字之间可出现空格,这些空格一般被视为空。在域宽内,全为空格,输入整数为0。在域宽内,输入数据不能超出范围,不能是非十进制整数。I编辑符要求输入表中对应变量的类型一般是整型,否则会产生错误。示例:INTEGER(2)i,j,kREAD10,i,j,k10FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)PRINT(1X,i+j+k=,I5),i+j+kEND,格式输入输出,6.5整数有格式输入输出,第六讲Fortran数据结构及输入、输出,6.6实数有格式输入输出,F编辑符可用于小数型实数的有格式输入输出,一般格式是:rFw.d其中:r为F编辑符重复次数。即:rFw.d等价于Fw.d,Fw.d,Fw.d。w为小数型实数输入输出域宽,即实数占连续字符个数。d为小数位数。对于输入,无小数点,小数点由d确定,有小数点,小数点由域宽内实际位置确定。对于输出,输出数据域宽包括一个小数点。程序示例:READ(*,*)a,bWRITE(*,10)a,b10FORMAT(1X,a=,F7.3,b=,F7.3)END,6.6实数有格式输入输出,格式F输出F格式E输入E输出E格式D格式EN格式ES,第六讲Fortran数据结构及输入、输出,6.6实数有格式输入输出/输出F,6.6实数有格式输入输出,对正数,若w=t+d+1,对负数,若w=t+d+2,且d=s,则在域宽内输出该实数。对正数,若w=t+d+1,对负数,若w=t+d+2,且ds,则在域宽内左对齐输出该实数,小数部分后续补d-s个0。对正数,若w=t+d+1,对负数,若w=t+d+2,且dt+d+1,对负数,若wt+d+2,则在域宽内右对齐输出该实数,整数前补w-(t+d+1)或w-(t+d+2)个空格,小数部分按前面3种情况处理,占d位。对正数,若wd+6,则在域宽内右对齐输出该实数,整数前补w-(d+5)-1或w-(d+6)-1个空格,小数部分按前面3种情况处理。对正数,若wFortran-Compatibility选取EnableVMSCompatibility项。对于输出到文件的情形,在打开文件的OPEN语句中加上说明项CARRIAGECONTROL=FORTRAN。这时每行记录的第一个字符被当作控制符,可能产生输出的数字或字符被吃掉的情形。另外重叠印刷功能仅对于行式打印机有效,对于终端和文件的输出其效果是覆盖。,问题说明,6.14纵向走纸控制,第六讲Fortran数据结构及输入、输出,6.14有格式输入输出应用举例,6.14有格式输入输出应用举例,问题说明,输入3个同学4门课(数学、物理、化学、英语)成绩,统计每个同学总成绩和平均成绩,计算每门课平均成绩,输出每个同学每门课成绩、总成绩和平均成绩,以及数学、物理、化学、英语的平均成绩。要求按以下格式输入成绩数据:数学物理化学英语输入第1位同学四门课成绩:78.585.058.098.0输入第2位同学四门课成绩:75.088.599.045.5输入第3位同学四门课成绩:84.569.577.082.0要求按以下格式输出有关数据:数学物理化学英语总成绩平均成绩第1位同学成绩:78.585.058.098.0319.579.875第2位同学成绩:75.088.599.045.5308.077.000第3位同学成绩:84.569.577.082.0228.557.125数学平均成绩:79.333分物理平均成绩:81.000分化学平均成绩:78.000分英语平均成绩:75.167分,第六讲Fortran数据结构及输入、输出,6.14有格式输入输出应用举例/说明,6.14有格式输入输出应用举例,使用22个实型变量保存有关数据。设:s11,s12,s13,s14:分别存放第1位同学4门课成绩。total11,av11:分别存放第1位同学总成绩和平均成绩。s21,s22,s23,s24:分别存放第2位同学4门课成绩。total21,av21:分别存放第2位同学总成绩和平均成绩。s31,s32,s33,s34:分别存放第3位同学4门课成绩。total31,av31:分别存放第3位同学总成绩和平均成绩。Av1,av2,av3,av4:分别存放数学、物理、化学和英语平均成绩。(程序),问题说明,第六讲Fortran数据结构及输入、输出,有格式输入输出应用程序,PROGRAMstatisticWRITE(*,“(26X,数学物理化学英语)”)WRITE(*,“(1X,输入第1位同学四门课成绩:,)”)READ(*,*)s11,s12,s13,s14WRITE(*,“(1X,输入第2位同学四门课成绩:,)”)READ(*,*)s21,s22,s23,s24WRITE(*,“(1X,输入第3位同学四门课成绩:,)”)READ(*,*)s31,s32,s33,s34,total11=s11+s12+s13+s14;av11=total11/4total21=s21+s22+s23+s24;av21=total21/4total31=s31+s32+s33+s34;av31=total31/4av1=(s11+s21+s31)/3;av2=(s12+s22+s32)/3av3=(s13+s23+s33)/3;av4=(s14+s24+s34)/3WRITE(*,“(16X,数学物理化学英语总成绩平均成绩)”)WRITE(*,200)1,s11,s12,s13,s14,total11,av11WRITE(*,200)2,s21,s22,s23,s24,total21,av21WRITE(*,200)3,s31,s32,s33,s34,total31,av31200FORMAT(1X,第,I1,位同学成绩:,4(F4.1,2X),F6.1,2X,F7.3)WRITE(*,300)数学,av1,物理,av2,化学,av3,英语,av4300FORMAT(1X,A4,平均成绩:,F7.3,分)END,第六讲Fortran数据结构及输入、输出,6.15作业,6.15作业,1何谓格式说明表?如何在有格式输入输出数据时指定格式说明表?2FORMAT语句的功能是什么?FORMAT语句可放在程序什么位置?14已知:i=25,j=-125,k=-4725,m=-31500,a=48.57,x=-1.5E+11,y=158.895E-11。给定输出语句:WRITE(*,100)i,a,j,b,k,m,x,y对下面不同的FORMAT语句,写出输出结果:100FORMAT(1X,I3,1X,F5.2,1X,I4,1X,F9.2,I5,I6,E12.3,E12.3E3)100FORMAT(3X,I4,1X,F9.2,1X,I4,1X,F9.2,2I5,2E12.3)100FORMAT(i=,I3,a=,F5.2,j=,I4,b=,F9.2,k=,I5,m=,I6,&x=,E12.3,y=,E12.3E3)100FORMAT(2(2X,I4,2X,F9.2),2I5,2E12.3)100FORMAT(1X,I3,1X,F5.2/1X,I4,1X,F9.2/I5,I6,E12.3,E12.3E3)教材148页,第六讲Fortran数据结构及输入、输出,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!