欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6505874       资源大小:1.90MB        全文页数:51页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1.Fortran 数据结构 2.数组 3.数据有格式输入输出概述 4.格式说明与格式编辑符 5.整数有格式输入输出 6.实数有格式输入输出 7.复数有格式输入输出 8.字符串有格式输入输出 9.逻辑值有格式输入输出 10.二、八、十六进制数据有格式输入输出 11.任意类型数据有格式输入输出 12.不可重复编辑符 13.纵向走纸控制 14.有格式输入输出应用举例 15.作业,第六讲 Fortran数据结构及输入、输出,第六讲 Fortran数据结构及输入、输出,6.1 Fortran 数据结构,FORTRAN 90具有丰富的数据类型,有内部数据类型、派生数据类型、数组和指针类型等。利用丰富的数据类型可设计和编写出功能强大的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的共轭复数。,复数型数据,类型 复数型 字符型,第六讲 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是字符型变量名时是合法的,要先计算两端字符表达式的值,而后比较它们是否满足关系。,program ex060202 character(len=6)first character(len=10)second character(len=20)add first=Happy second=Birthday add=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,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)数组分静态数组和动态数组静态数组:在编译时分配存储单元,运行时数组大小不能改变。INTEGER num(5)!在编译时分配5个数组元素存储单元(20字节)动态数组:在程序运行时分配存储单元,运行时数组大小可改变。INTEGER,ALLOCATABLE:num(:)!在编译时不分配存储单元 ALLOCATE(num(5)!在运行时分配5个数组元素存储单元(20字节)数组大小为数组元素个数。数组声明有3种方式:类型声明语句、DIMENSION语句、DIMENSION属性,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明1,使用类型声明语句进行数组声明。一般格式::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。,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明2,使用DIMENSION语句进行数组声明。一般格式:DIMENSION 例: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():例:INTEGER,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可缺省。数组声明中,维下界和维上界可以为任意整数,且维下界维上界。数组声明中,出现:,才能在声明语句中给数组赋初值。数组声明中,允许维下界维上界,且数组大小为0。使用类型声明语句声明数组时,可使数组与普通变量混合声明。使用DIMENSION语句声明数组时,可用类型声明语句在前面声明类型。声明中不能有:。使用DIMENSION属性声明数组时,声明中必须有:。,6.2 数组,定义 声明1 声明2 声明3 说明,第六讲 Fortran数据结构及输入、输出,6.2 数组/声明1/例1,使用类型声明语句进行数组声明。一般格式::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(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)!声明一个单精度复型数组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-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,使用类型声明语句进行数组声明。一般格式::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.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 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,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,m-n END,第六讲 Fortran数据结构及输入、输出,6.4格式说明与格式编辑符/格式说明,数据有格式输入输出需要给出相关的格式说明。FORMAT语句提供输入输出数据的格式说明信息。FORMAT语句既不是执行语句,也不是说明语句。FORMAT语句可出现在说明语句之后,END语句之前任何位置。格式说明表是关键字FORMAT之后的括号部分。格式说明表由若干格式编辑符组成,编辑符由“,”分隔。格式说明表可嵌入到输入输出语句中,取代FORMAT语句。格式说明一般使用FORMAT语句,简单格式使用嵌入方式。FORMAT语句语法描述:FORMAT(,/),6.4 格式说明与格式编辑符,示例 格式说明 编辑符,第六讲 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 200 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为整数输入输出域宽,即整数占连续字符个数。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。在域宽内,输入数据不能超出范围,不能是非十进制整数。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.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编辑符要求输入表中对应变量的类型一般是整型,否则会产生错误。示例: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确定,有小数点,小数点由域宽内实际位置确定。对于输出,输出数据域宽包括一个小数点。程序示例:READ(*,*)a,b WRITE(*,10)a,b 10 FORMAT(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位。对正数,若wt+d+1,对负数,若wt+d+2,则域宽不足,在域宽内填充“*”。示例:READ(*,*)a,b WRITE(*,10)a,b 10 FORMAT(1X,a=,F7.3,b=,F7.3)END 设:输出数据的整数部分位数为t,小数部分位数为s。,格式F 输出F 格式E 输入E 输出E格式D 格式EN格式ES,第六讲 Fortran数据结构及输入、输出,6.6 实数有格式输入输出/格式E,E 编辑符可用于指数型实数的有格式输入输出,一般格式是:rEw.dEe其中:r为F编辑符重复次数。即:rEw.dEe 等价于Ew.dEe,Ew.dEe,Ew.dEe。w为指数型实数输入输出域宽,即实数占连续字符个数。d为小数位数,其含义同F编辑符。e为指数位数,缺省为2,不包括E和符号,指数域宽e+2。程序示例:READ(*,*)a,b WRITE(*,10)a,b 10 FORMAT(1X,a=,E10.5,b=,E11.5)END,6.6 实数有格式输入输出,格式F 输出F 格式E 输入E 输出E格式D 格式EN格式ES,第六讲 Fortran数据结构及输入、输出,格式F 输出F 格式E 输入E 输出E格式D 格式EN格式ES,6.6 实数有格式输入输出/输入E,6.6 实数有格式输入输出,对于输入,E编辑符功能类似F编辑符。在规定域宽内,可按小数型实数输入,也可按指数型实数输入。示例:READ(*,*)a,b,c 11 FORMAT(E5.2,E8.3,E8.3E3)WRITE(*,(1X,a+b+c=,E12.3)a+b+c END,第六讲 Fortran数据结构及输入、输出,格式F 输出F 格式E 输入E 输出E格式D 格式EN格式ES,6.6 实数有格式输入输出/输出E,6.6 实数有格式输入输出,对正数,若w=d+5,对负数,若w=d+6,且d=t,则在域宽内输出该实数。对正数,若w=d+5,对负数,若w=d+6,且dt,则在域宽内左对齐输出该实数,小数部分后续补d-t个0。对正数,若w=d+5,对负数,若w=d+6,且dd+5,对负数,若wd+6,则在域宽内右对齐输出该实数,整数前补w-(d+5)-1或w-(d+6)-1个空格,小数部分按前面3种情况处理。对正数,若wd+5,对负数,若wd+6,则域宽不足,在域宽内填充“*”。对双精度实数,指数有3位,指数部分的E字母省略,保持3位指数。示例:READ(*,*)a,b WRITE(*,10)a,b 10 FORMAT(1X,a=,E10.5,b=,E11.5)END 设:输出实数的有效位数为t。,第六讲 Fortran数据结构及输入、输出,6.6 实数有格式输入输出/格式D,D编辑符用于双精度数据的输出。其一般形式为:rDw.d其中:r为F编辑符重复次数。使用方法与E编辑符相仿,只是把字母“E”换成“D”。程序示例:real(8)a,b READ(*,*)a,b WRITE(*,10)a,b 10 FORMAT(1X,a=,D10.5,b=,D11.5)END,6.6 实数有格式输入输出,格式F 输出F 格式E 输入E 输出E格式D格式EN格式ES,第六讲 Fortran数据结构及输入、输出,格式F 输出F 格式E 输入E 输出E格式D格式EN格式ES,6.6 实数有格式输入输出/格式EN/ES,工程计数法(EN)和科学计数法(ES)也是F90新增的编辑描述符。EN的一般形式为:ENw.dEe。EN和E编辑描述符基本类似,区别在于EN输出数据的非指数部分的绝对值强制在1到1000的范围内,且指数可以被3整除。包括指数的区域的宽度是w个字符,小数点后d个字符,指数宽度e是可选的。ES的一般形式为:ESw.dEe。它和E编辑描述符也基本类似,区别在于ES输出数据的非指数部分的绝对值强制在l到10的范围内,而非E的0到1的范围。,6.6 实数有格式输入输出,x=-12345.6789 y=0.456789 z=7.89123e23 write(*,(3(1x,en13.5)x,y,z write(*,(3(1x,en13.2e4)x,y,z write(*,(3(1x,es13.5)x,y,z write(*,(3(1x,es13.2e4)x,y,z end 输出结果如下:-12.34568E+03 456.78899E-03 789.12303E+21-12.35E+0003 456.79E-0003 789.12E+0021-1.23457E+04 4.56789E-01 7.89123E+23-1.23E+0004 4.57E-0001 7.89E+0023,第六讲 Fortran数据结构及输入、输出,6.7 复数有格式输入输出,复数编辑符是通过两个实型编辑符实现的,第一个对应实部,第二个对应虚部。程序示例:COMPLEX c1,c2 READ(*,23)c1,c2 23 FORMAT(F5.2,E5.2,F8.3,E8.3)WRITE(*,*)C1 WRITE(*,*)C2 WRITE(*,(1X,c1+c2=,F7.2,E10.3)c1+c2 END,概述,6.7 复数有格式输入输出,输入:12345123E24321.5,1234E-1。c1和c2值:c1=(123.45,123.0),c2=(4321.5,1.23410-1)。输出:(123.4500,123.0000)(4321.500,0.1234000)c1+c2=4444.950.123E+03。c1+c2输出首尾无括号,中间无逗号,第六讲 Fortran数据结构及输入、输出,6.8 字符串有格式输入输出,6.8 字符串有格式输入输出,格式 输入 输出,A 编辑符可用于字符串的有格式输入输出,一般格式是:rAw其中:r为A编辑符重复次数。即:rAw等价于Aw,Aw,Aw。w为字符串输入输出域宽,即字符串占连续字符个数。缺省w,域宽为输入和输出表中对应字符型变量的长度。程序示例:CHARACTER str1*5,str2*4,str3*3,str4*3 READ(*,24)str1,str2,str3,str4 24 FORMAT(A5,A4,2A3)WRITE(*,*)str1/str2/str3/str4 END,第六讲 Fortran数据结构及输入、输出,6.8 字符串有格式输入输出/输入,6.8 字符串有格式输入输出,域宽等于变量长度,按域宽依次截取字符串,赋予变量,不足补空格。域宽小于变量长度,按域宽依次截取字符串,补足空格后赋于变量。域宽大于变量长度,按域宽依次截取字符串,取后部字符赋于变量。缺省域宽,域宽默认取输入表对应字符型变量长度。输入字符串不能加引号。引号、逗号和空格按一般字符对待。示例:CHARACTER s1*5,s2*4,s3*3,s4*3 READ(*,24)s1,s2,s3,s4 24 FORMAT(A5,A4,2A3)WRITE(*,*)s1/s2/s3/s4 END,格式 输入 输出,第六讲 Fortran数据结构及输入、输出,6.8 字符串有格式输入输出/输出,6.8 字符串有格式输入输出,域宽等于表达式值长度,则按域宽输出字符串,字符串中空格有效。WRITE(*,(1X,#,A15,#)ABC/DEFG/HI/JK 输出:#ABCDEFGHIJK#域宽小于表达式值长度,则按域宽截取左侧子字符串输出。WRITE(*,(1X,#,A10,#)ABC/DEFG/HI/JK 输出:#ABCDEFG#域宽大于表达式值长度,则将表达式值左补空格至域宽输出。WRITE(*,(1X,#,A18,#)ABC/DEFG/HI/JK 输出:#ABCDEFGHIJK#缺省域宽,以表达式值长度为域宽输出。WRITE(*,(1X,#,A,#)ABC/DEFG/HI/JK 输出:#ABCDEFGHIJK#,格式 输入 输出,第六讲 Fortran数据结构及输入、输出,6.9 逻辑值有格式输入输出,6.9 逻辑值有格式输入输出,格式 输入 输出,L 编辑符可用于逻辑值的有格式输入输出,一般格式是:rLw其中:r为L编辑符重复次数。即:rLw等价于Lw,Lw,Lw。w为逻辑值输入输出域宽,即逻辑值占连续字符个数。缺省w,域宽为2。程序示例:LOGICAL log1,log2,log3,log4 READ(*,26)log1,log2,log3,log4 WRITE(*,27)log1,log2,log3,log4 26 FORMAT(L,L1,L2,L3)27 FORMAT(1X,L,L1,L2,L3)END,第六讲 Fortran数据结构及输入、输出,6.9 逻辑值有格式输入输出/输入,6.9 逻辑值有格式输入输出,格式 输入 输出,域宽内首个非空格或非小数点“.”字符是“T”或“t”,则输入为.TRUE.。域宽内首个非空格或非小数点“.”字符是“F”或“f”,则输入为.FASLE.。在域宽内,字母T、t、F、f后可跟任意字符,不影响逻辑值输入。逻辑值间可用逗号分隔,不用空格。输入逻辑值.TRUE.,域宽必须大于5。输入.FASLE.,域宽必须大于6。示例:LOGICAL log1,log2,log3,log4 READ(*,26)log1,log2,log3,log4 WRITE(*,27)log1,log2,log3,log4 26 FORMAT(L,L1,L2,L3)27 FORMAT(1X,L,L1,L2,L3)END输入:TFTAFB 值:log1=.TRUE.,log2=.FASLE.,log3=.TRUE.,log4=.FASLE.,第六讲 Fortran数据结构及输入、输出,6.9 逻辑值有格式输入输出/输出,6.9 逻辑值有格式输入输出,格式 输入 输出,在指定域宽内右对齐输出T(.TRUE.)或F(.FALSE.)。示例:LOGICAL log1,log2,log3,log4 Log1=.TRUE.;log2=.TRUE.;log3=.FALSE.;log4=.FALSE.WRITE(*,27)log1,log2,log3,log4 27 FORMAT(L,L1,L2,L3)END 输出:TTFF,第六讲 Fortran数据结构及输入、输出,6.10二、八、十六进制数据有格式输入输出,二进制(B)、八进制(O)和十六进制(Z)是F90新增的编辑描述符,用于整数、实数和逻辑量的输出。其一般形式为:Bw.m,Ow.m,Zw.m。w为字段宽度。m表示需要输出的最少数字位数,缺省值为1。如果输出少于指定的宽度,则左边补空格。但对于二进制数,如果以0填补可读性会更好一些,例如O0010101显示了l0101所有的8位。可以使用类似B8.8,B16.16,B32.32等的格式强迫开始以O填补。编辑描述符不包含小数点或负号。相应进制的数据只能由允许的数字组成:B描述符允许0和1,O描述符允许0-7,Z描述符允许0-9和A-F。它们都可用于整型、字符型、实型或逻辑型。因为没有负号,所以B,O和Z的负值应根据所使用编码转换来表示。对二进制、八进制和十六进制的译码,尤其是负数的译码是和CPU有关的。使用B,O和Z编辑描述符和以B,O和Z存储数据的程序可能不能直接在计算机之间移植。示例,概述,6.10 二、八、十六进制数据有格式输入输出,第六讲 Fortran数据结构及输入、输出,6.10 示例,write(*,(B,B32.32,B1,B8)22,22,22,22 write(*,(O,O12.12,O1,O4)22,22,22,22 write(*,(Z,Z8.8,Z1,Z4)22,22,22,22 write(*,(B,B32.32,B1,B8)22系,22系,22系,22系 write(*,(O,O12.12,O1,O4)22系,22系,22系,22系 write(*,(Z,Z8.8,Z1,Z4)22系,22系,22系,22系 End,6.10 示例,输出结果如下:1011000000000000000000000000000010110*10110 26000000000026*26 1600000016*16*26563631062026563631062*B5CF3232B5CF3232*,第六讲 Fortran数据结构及输入、输出,6.11 任意类型数据有格式输入输出,G编辑符可用于任意数据类型的有格式输入输出,一般格式是:rGw.dEe其中:r为G编辑符重复次数;w为域宽;d为小数位数;e为指数位数。对于整数,上述格式等价于rIw。对于字符串,上述格式等价于rAw。对于逻辑值,上述格式等价于rLw。对于实数,上述格式等价于rFw.d或 rEw.dEe。给定下面示例程序:COMPLEX cLOGICAL logCHARACTER*5 str1READ(*,10)i,log,str1,a,c10 FORMAT(3G5.1,3G8.1)WRITE(*,(1X,3G5.1,3G8.1)i,log,str1,a,cEND,概述,6.11 任意类型数据有格式输入输出,执行上面程序时,输入数据:12345程序执行后,i、log、str1、a、c的值为:i=12345,log=.TRUE.,str1=china,a=123456.7,c=(111222.5,2.5)程序执行后,输出结果为:12345Tchina0.1E+060.1E+063.。,第六讲 Fortran数据结构及输入、输出,6.12 不可重复编辑符,第六讲 Fortran数据结构及输入、输出,6.12 不可重复编辑符/X,6.12 不可重复编辑符,X/T S:P BN Q,X编辑符用于设置输入输出数据的开始位置。对输出,从当前位置开始插入若干空格,下一输出数据从新位置开始进行。对输入,从当前位置开始右移若干字符,下一输入数据从新位置开始进行。示例:READ(*,11)i,j,k 11 FORMAT(2X,I3,3X,I3,3X,I3)WRITE(*,21)i,j,k,i+j+k21 FORMAT(1X,i=,I3,4X,j=,I3,4X,k=,I3,4X,i+j+k=,I4)END输入:i=123j=456k=789。i、j、k值:i=123,j=456,k=789。输出:i=123j=456k=789i+j+k=1368。,第六讲 Fortran数据结构及输入、输出,6.12 不可重复编辑符/,6.12 不可重复编辑符,/编辑符用于输入输出数据时结束本行操作,后面数据从下一行开始。其作用是用一个输入输出语句完成多行输入输出操作。/编辑符可替代“,”号作为说明表中编辑符间的间隔符。示例:READ(*,10)i,a,j,b WRITE(*,20)i,a,j,b 10 FORMAT(I5,3X,F5.1/I5,3X,F5.1)20 FORMAT(1X,I5,3X,F5.1/1X,I5,3X,F5.1)END,X/T S:P BN Q,第六讲 Fortran数据结构及输入、输出,6.12 不可重复编辑符/,6.12 不可重复编辑符,编辑符用于输出数据时不结束本行操作,下一输出语句接本行末输出。其作用是用多个输出语句完成一行输出操作。示例:i=125;j=234 WRITE(*,10)I WRITE(*,20)j 10 FORMAT(i=,I3,)20 FORMAT(j=,I3)END 输出:i=125j=234。,X/T S:P BN Q,第六讲 Fortran数据结构及输入、输出,6.13 纵向走纸控制,6.14 纵向走纸控制,问题 说明,在把格式记录中的信息传送到打印设备上(打印机或终端)时,格式说明中的第一个字符不被印出,这个字符作为纵向间隔控制标志,称为纵向控制符。它们的功能在下表中列出。控制字符 功能空格 换行,将光标或打印头移到下一行开头0 光标或打印头前进二行。1 换页,将光标或打印头移到下一页开头+不换行,光标或打印头回到本行开头其它字符 与空格功能相同,第六讲 Fortran数据结构及输入、输出,6.13 纵向走纸控制/说明,要使这些功能在Visual Fortran上实现,必须按以下步骤修改默认值:对于输出到终端的情形,在菜单选项中Project-Setting-Fortran-Compatibility选取Enable VMS Compatibility项。对于输出到文件的情形,在打开文件的OPEN语句中加上说明项CARRIAGECONTROL=FORTRAN。这时每行记录的第一个字符被当作控制符,可能产生输出的数字或字符被吃掉的情形。另外重叠印刷功能仅对于行式打印机有效,对于终端和文件的输出其效果是覆盖。,问题 说明,6.14 纵向走纸控制,第六讲 Fortran数据结构及输入、输出,6.14 有格式输入输出应用举例,6.14 有格式输入输出应用举例,问题 说明,输入3个同学4门课(数学、物理、化学、英语)成绩,统计每个同学总成绩和平均成绩,计算每门课平均成绩,输出每个同学每门课成绩、总成绩和平均成绩,以及数学、物理、化学、英语的平均

    注意事项

    本文(Fortran数据结构及输入输出.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开