Fortran教程第六章格式输入输出.ppt

上传人:xt****7 文档编号:14778343 上传时间:2020-07-30 格式:PPT 页数:50 大小:397.47KB
收藏 版权申诉 举报 下载
Fortran教程第六章格式输入输出.ppt_第1页
第1页 / 共50页
Fortran教程第六章格式输入输出.ppt_第2页
第2页 / 共50页
Fortran教程第六章格式输入输出.ppt_第3页
第3页 / 共50页
资源描述:

《Fortran教程第六章格式输入输出.ppt》由会员分享,可在线阅读,更多相关《Fortran教程第六章格式输入输出.ppt(50页珍藏版)》请在装配图网上搜索。

1、第六章 格式输入输出,6.1 输入输出概述,6.2 格式输入输出语句,6.3 格式说明语句,6.4常用的编辑描述符,6.5 输入输出项与编辑符的相互作用,6.1 输入输出概述,输入输出是指在计算机内存与外部设备之间传送数据的过程。从外部设备将数据传送到计算机内存称为输入。将计算机内部的数据传送到外部设备称为输出。要顺利地传送数据,一般应在输入输出语句中给计算机提供三方面的信息: (1) 通过什么设备来进行输入输出。 (2) 采用什么样的格式来进行输入输出。 (3) 输入输出的具体内容。,每一种计算机系统都隐含指定一种输入设备和输出设备。在微机中,隐含指定键盘为输入设备,显示器为输出设备。在输入

2、输出数据较多时,也可以使用磁盘作为输入输出设备,即从已经建立的磁盘文件中去读取数据,将处理结果写入到磁盘文件中去。关于文件操作将在第11章介绍。 输入输出的格式由格式编辑符来指定,不同的数据类型需要不同的格式编辑符,不同的格式编辑符确定不同的输入输出格式。 输入输出的具体内容即输入输出项,输入项只能为变量,输出项可以为常量、变量、函数和表达式,也可以是隐含的DO循环。下面先看一个格式输入输出的例子。,程序输出为: 1 3 5 每循环一次输出循环变量J的值,每个数据占5格,INTEGER J DO J=1,5,2 WRITE(*,10) J END DO 10 FORMAT(1X,3I5) EN

3、D,再看下面的例子。,INTEGER J WRITE(*,10) (J,J=1,5,2) 10 FORMAT(1X,3I5) END,程序输出为: 1 3 5 程序中,WRITE语句的输出项“(J,J=1,5,2)”是一个隐含的DO循环,当作一个整体输出,每个数据占5格。,6.2 格式输入输出语句,6.2.1 格式输出,格式输出语句有两个:PRINT语句和WRITE语句。 1PRINT语句 PRINT语句的一般格式是: PRINT f, 输出项 其中f是格式说明符,指明了输出所用的格式。它有以下三种形式:,(1)格式说明符是一个“*”,表示输出使用表控格式。 (2)格式说明符是一个字符常量。例

4、如 PRINT (1X,2F7.3),X,Y (3)格式说明符是格式语句(FORMAT)的语句标号。这是最常用的格式输出形式。例如 PRINT 100,A,B,C 100 FORMAT(1X,F9.4,2F7.3) 输出项指定了输出的具体内容。输出项可以是变量、常量、函数以及表达式。此外,输出项还可以是隐含DO循环。,2. WRITE语句 WRITE语句的一般格式是: WRITE(u, f) 输出项 其中u是设备号,用于指明具体使用的输入输出设备。u可以是一个无符号整常量,也可以是一个整型变量或整型表达式,还可以是星号*。*表示由计算机系统预先约定的外部设备,一般为显示器。 f 是格式说明符,

5、指明了输入输出所用的格式。它也有三种形式,用法与PRINT语句相同。 输出项也可以是常量、变量、函数以及表达式,还可以是隐含的DO循环。,6.2.2格式输入,格式输入语句是指READ语句,它有两种形式: READ f,输入项 READ (u,f) 输入项 其中f指明了输入所用的格式。它有以下三种形式:,(1)格式说明符是一个“*”,表示输入使用表控格式。 (2)格式说明符是一个字符常量。例如 READ(*,(I3,2I4) I,J,K (3)格式说明符是格式语句(FORMAT)的语句标号。这是最常用的格式输入形式。 u是设备号,用于指明具体使用的输入设备。u可以是一个无符号整常量,也可以是一个

6、整型变量或整型表达式,还可以是星号“*”。 “*”表示由计算机系统预先约定的外部设备,一般为键盘。 输入项指定了输入的具体内容。输入项目可以变量,不允许是常量或表达式。此外,输入项目也可以是隐含DO循环,6.3 格式说明语句,FORTRAN用专门的格式说明来描述输入输出的格式。尽管格式说明可以直接放在输入输出语句中,但为了使程序的可读性更强,最好使用格式说明语句来进行格式说明。格式说明语句的一般格式是: n FORMAT(格式说明) 其中n是语句标号,FORMAT语句一定带有语句标号,以便同格式输入输出语句配合使用。格式说明由若干个编辑描述符组成,编辑描述符之间用逗号分隔。例如 10 FORM

7、AT(1X,I4,F5.1),格式说明语句是非执行语句,它只是给输入输出语句提供数据的格式描述。在程序运行过程中,由输入输出语句根据格式说明语句提供的数据格式描述,实现数据的格式控制。单独的格式说明语句在程序中不器任何作用。例如 10 FORMAT(1X,I4,F5.1) WRITE(*,10) 2345,67.8 格式说明包含3种编辑描述符X,I和F。分别用I4和F5.1来控制2345和67.8的输出格式,1X也有特定的用途。 格式说明语句可以放在程序单位语句(主程序语句PROGRAM,子程序语句FUNCTION或SUBROUTINE)之后,END语句之前的任何位置。,6.4常用的编辑描述符

8、,编辑描述符分成两大类:可重复编辑描述符 非重复编辑描述符。,6.4.1 可重复编辑描述符,可重复编辑描述符是用来编辑输入输出项的输入输出格式的,所以它们总是与输入输出项相对应。不同类型的输入输出项使用不同的编辑描述符。FORTRAN提供的内部数据类型有整型、实型、复型、字符型和逻辑型。相应地,编辑描述符也分五类介绍。,根据数据采用的进制不同,整型数据编辑符分为四种,I编辑符、B编辑符、O编辑符和Z编辑符。I编辑符用来描述十进制的整型数据,B编辑符用来描述二进制的整型数据,O编辑符用来描述八进制的整型数据,Z编辑符用来描述十六进制的整型数据。下面逐一介绍。,1. 整型数据编辑描述符,(1) I

9、编辑符。十进制整数的输入输出。 一般格式是: r I w 其中r是重复系数,为1时可以省略。w表示字段宽度,即与该编辑描述符对应的输入输出项所占用的字符个数。 I型输入的使用规则:在输入记录中从左往右取w个字符存入对应的输入项。注意取得的w个字符必须是整数,正负号也占一个字符位置,空格字符占一个字符位置但不起作用。 READ (*,10)I,J,K 10 FORMAT(I4,I5,I6) 语句执行时,若从键盘输入714-346-12345(代表空格),则I,J,K的值分别为:714、-346和-123。,I型输出的使用规则:在输出记录中,对应的输出项的值占w个字符宽度。当w大于输出项实际的数字

10、位数时,在输出字段中插入前导空格补足w个字符。当w小于输出项实际的数字位数时,将输出w个“*”,表示字段宽度定义小了。 WRITE(*,10)K,L 10 FORMAT(I4,I4) 当K=12,L=-7567时,输出结果为: 12*,(2)B,O,Z 编辑符。这是FORTRAN 90新增的编辑符。分别采用二进制、八进制和十六进制形式描述整型量的输入输出。其基本用法与I 编辑符相同。例如 READ(*,10)I,J WRITE(*,20) I,J,I,J 10 FORMAT(B3,B4) 20 FORMAT(I5,I4,O4,Z5) END 语句执行时,若从键盘输入1011101,则I,J的值

11、分别为二进制数101和二进制数1101。输出结果为: 5135D,有四种编辑符可以对实型数据进行操作,它们是F编辑符、E编辑符、EN编辑符、ES编辑符和G编辑符。,2. 实型数据编辑描述符,(1) F编辑符。用于实型量的输入输出(按小数形式)。 一般格式是: rFw.d 其中r为重复系数,为1时可以省略。w为字段宽度,d为输入输出项小数部分所占的位数。 F型输入规则:按编辑描述符中w指定的字段宽度从输入记录中截取数据,若w个字符中不含小数点,则系统自动按d决定小数点的位置,若w个字符中含有小数点,则按“自带小数点优先”的原则,不再按Fw.d中的d去加工该数据,此时d不起作用。例如 READ(*

12、,10)A,B 10 FORMAT(F7.2,F6.1) 语句执行时,如从键盘输入123456726.89,则A、B的值分别为12345.6和726.89。,当输入的是指数形式时,如果E前面的数字部分含有小数点,则d不起作用。如果数字部分不含有小数点,则自动按d决定数字部分小数点的位置。 例如 READ(*,10)A,B 10 FORMAT(F8.0,F7.2) 执行语句时,如从键盘输入72.48E-32E2,则A、B的值分别为0.07248、2.0。,F型输出规则:把输出项的值转换成字段宽度为w的小数形式输出,其中小数部分占d位,小数点占一位。如果输出项小数部分实际的位数小于d,则输出时小数

13、部分低位以零补足d位,否则保留d位,从d1位开始四舍五入。如果输出项实际长度小于w,则在左边用空格补足w个,否则输出w个“*”,以示w太小。例如 WRITE(*,10)A,B,C 10 FORMAT (1X,3F8.3) 当A、B、C的值分别是78.9、-0.00072、12345.678时,输出为: 78.900-.001*,(2) E编辑符。用于输入输出指数形式的实数。它的一般格式是: rEw.d 其中r是重复系数,w是字段宽度,d为数字部分小数位数。 E型输入规则:与F编辑符完全相同。 E型输出规则:采取规格化的指数形式,即数字部分小数前面为0,小数点后第一位为非零数字,指数部分占4列(

14、E、指数符号位及两位指数)。如果输出项数字部分的小数位数多于d位,保留d位,从第d1位起四舍五入,小于d位,在其右边补0。如果输出项实际的位数小于w,左补空格,否则输出w个“*”。,例如 WRITE(*,10)A,B 10 FORMAT(1X,E12.4,E13.2) 当A、B的值为128.433和-0.0008时,输出为: .1284E+03-.80E-03,(3) EN编辑符。EN编辑符与E编辑符基本用法相同。区别在于EN编辑符输出数据的非指数部分的绝对值强制在1到1000的范围内,且指数可以被3整除。例如 WRITE(*,10)128.433,-0.0008 10 FORMAT(1X,E

15、N12.4,EN13.2) 输出为: 128.4330E+00-800.00E-06,(4) ES编辑符。ES编辑符与E编辑符基本用法相同。区别在于ES编辑符输出数据的非指数部分的绝对值强制在1到10的范围内。例如 WRITE(*,10)128.433,-0.0008 10 FORMAT(1X,ES12.4,ES13.2) 输出为: 1.2843E+02-8.00E-04,(5) G编辑符。也用于实型量的输入输出。一般格式为: rGw.d G编辑符用于输入时,与F、E编辑符的功能完全相同。用于输出时,要根据输出项的大小决定用F格式输出还是用E格式输出。例如 WRITE(*,10) 123456

16、.789, 0.098765 10 FORMAT(1X,G13.7,G11.4) 输出为: 123456.8.9877E-01,3. 复型数据编辑描述符 复型数据没有专门的编辑符。对复型数据的输入输出,可以按实部和虚部分别输入输出。例如 COMPLEX CM READ(*,10)CM WRITE(*,20)CM 10 FORMAT(2F5.2) 20 FORMAT(1X,2F7.2) 语句执行时,从键盘输入1234567890,则输出为: 123.45678.90,4. 逻辑型数据编辑描述符 逻辑型数据的输入输出用L编辑符。其一般格式是: rLw 逻辑值只有两个:真(.TRUE.)和假(.FA

17、LSE.)。在输入时,输入的数据可以是.TRUE.或.FALSE.,也可以是头一个字母为T或F的任何字符串(T或F前面可以接“.”或空格,后面可以是任意字符),例如 LOGICAL L1,L2 READ(*,10)L1,L2 10 FORMAT(L6,L3) 语句执行时,从键盘输入.TRUE.FT,则L1、L2的值分别是.TRUE.、.FALSE.。 在输出时,对逻辑真(.TRUE.),输出一个字母T,对逻辑假(.FALSE.),输出字母F,且在左边补w-1个空格。例如 WRITE(*,10).FALSE.,A.LT.B.OR.1.GT.2 10 FORMAT(1X,L3,L4) 输出为: F

18、T,5. 字符型数据编辑描述符 字符型数据的输入输出用A编辑符。其一般格式是: rAw 其中字段宽度w可以省略,省略时,输入输出项的字段宽度隐含为对应的字符型输入输出项的长度l。,A编辑符的输入规则:从输入记录中取w个字符,但这w个字符能否全部存入对应的输入项,还取决于输入项的长度l。当w等于l时,w个字符全部送给输入项。当wl时,从w个字符中取出最右边l个字符送给对应的输入项。这一点与字符赋值语句的赋值规则刚好相反。当wl时,当w个字符全部送入输入项,并靠左对齐,右边补l-w个空格。这一点同字符赋值语句的规则是相同的。例如 CHARACTER*5 C1,C2,C3 READ(*,10)C1,

19、C2,C3 10 FORMAT(A5,A2,A7) 语句执行时,从键盘输入abcdefghijklmn,则C1、C2、C3的值分别为abcde、fg、jklmn。 用A编辑符输入字符串时,不能有字符串的定界符,如果加了撇号,则撇号也作为字符串的一个字符。而在表控格式输入时,字符常量要加撇号定界符。,A编辑符的输出规则:在输出记录中,Aw编辑符所对应的输出项一定占w个字符的宽度,但输出项实际包含字符的个数l可能与w不一致。当w=l时,输出项所有的字符全部输出。当wl时,输出项所有的字符全部输出,并且靠右对齐,左补w-l个空格。当wl时,输出项最左边w个字符输出。当w省略时,按输出项的长度输出,这

20、是最方便的形式。例如 WRITE(*,10)FORTRAN90,PROGRAM 10 FORMAT(1X,A7,A8) 输出为: FORTRANPROGRAM,最后我们对上面讨论的编辑描述符作一个总结: FORTRAN 90提供的编辑描述符很多,这给初学者学习带来了困难,但一些编辑描述符也有共同特点,把握这些特点以后也就不难掌握了。 可重复编辑描述符是用来决定对应输入输出项的输入输出格式的,其中都有字段宽度w,而且对于输入都是从输入记录中取w个字符,对于输出都是在输出记录中输出w个字符。但问题是,在输入时,取得的w个字符按什么规则加工后传送到对应的输入项。在输出时,当输出项实际包括的字符的个数

21、和编辑符中所确定的字段宽度(对于数值型数据还有小数位数)之间不相符时,如何输出?读者可以分数值型、逻辑型、字符型进行总结。,非重复编辑描述符直接向当前输出记录传递信息,因此不需要输入输出项与其对应。非重复编辑描述符有: (1) X编辑符。用于在输入输出的常数之间插入空格。它的一般格式是: nX 其中n是正数,用于指明从当前位置向右跳过n个字符位置。这里n不能省略,即使n为1,也要写成1X。例如 READ(*,10)K,J,A 10 FORMAT(2I3,3X),E5.2) 执行语句时,从键盘输入:876-42193671E4后,K、J、A的值分别为876、-42、67100.0。其中非重复编辑

22、符3X,跳过193这三个字符。,6.4.2 非重复编辑描述符,(2) H编辑符。用于输出一个字符串。其一般格式是: nHh1h2hn 其中n是正整数,表示字符串的长度,h1h2hn为n个字符。(3) 撇号编辑符。用于输出一个字符串。撇号编辑符和H编辑符作用相同,但撇号编辑符使用更为方便。例如 WRITE(*,10)345,HELLO! 10 FORMAT(1X,2HI=,I4,C=,A) 输出为: I=345C=HELLO!,(4) 斜扛编辑符:结束当前正在输入或输出的记录,并转入下一个记录开始输入输出。例如 WRITE(*,10)A,B 10 FORMAT(/2(10X,F9.2/) 语句执

23、行后将输出5个记录。,FORTRAN规定,将输出记录中的第一个字符作为纵向走纸控制符,这个字符不输出,而从输出纪录的第二个字符开始输出。常用的控制字符有:空格(走纸一行)、0(走纸二行)、1(换页)、(不走纸,返回到本行重迭打印) 例如 WRITE(*,10)123,4567 10 FORMAT(1X,I3,2X,I4) 按本来意义,1X产生一个空格,应输出: 1234567 但按FORTRAN规定,将输出记录中的第一个字符作为纵向走纸控制符,所以实际输出是在走纸一行之后,输出: 1234567,6.4.3 纵向走纸控制符,如果不在输出记录的第一个字符处增加一个空格,则系统将应该输出的第一个字

24、符作为纵向走纸控制符,从而使本来该输出的字符被“吃掉”了。例如 WRITE(*,10)123,4567 10 FORMAT(I3,2X,I4) 输出为: (空一行) 234567 输出记录的第一个字符“1”作为纵向走纸控制符用,走纸两行(字符“1”本来作分页控制用,但微机中无分页功能)。所以,在FORMAT语句中,一般都在格式说明的第一个字符位置增加一个空格作为纵向走纸控制符。,在执行输入输出语句时,要求输入输出项与编辑符在前后顺序和数据类型方面都一一对应,否则就会出错。要注意输入输出项和编辑符之间的相互作用关系: (1) 如果可重复编辑符的个数多于输入输出项的个数,则多余的编辑符不起作用。例

25、如 WRITE(*,10)123,4567 10 FORMAT(1X,I3,2X,I4,I5) 多余的编辑符I5不起作用。,6.5 输入输出项与编辑符的相互作用,(2) 如果可重复编辑符的个数少于输入输出项的个数,则按顺序用完最后一个可重复编辑符之后,再重复使用格式说明,但产生一个新记录。例如 WRITE(*,10)A,I,B,J 10 FORMAT(1X,F7.2,I3) 语句执行后,将产生2个输出记录。 (3) 如果在编辑描述符表中包含有重复使用的编辑符组,则当所有编辑符用完之后,返回到最右边那个编辑符组(包括其重复系数)开始使用。,分析下列程序的输出结果。 I=56 J=1247 K=5

26、126 WRITE(*,10)I,J,K 10 FORMAT(1X,2(I5,2X)/) END,在编辑描述符表中的1X,作纵向走纸控制用,(I5,2X)是一个编辑符组,重复系数为2,第一次引用时,按I5输出I值,2X产生两个空格,第二次引用时,按I5输出J值,2X产生两个空格。此后是斜扛编辑符建立一个新记录。输出K值时,格式说明已用完,返回到编辑符组(I5,2X),并产生一新记录,所以,第二行为空行。在第三行按I5输出K值,且第一个字符(为空格)作纵向走纸控制用而不输出。输出结果为: 561247 (空一行) 5126,习题 1. 有语句: INTEGER I,J REAL X,Y READ

27、(*,10)I,X,J,Y 设要求输入的值为I=87,X=67.4,J=465,Y=345.705,用下面的FORMAT语句应如何输入数据? (1) 10 FORMAT(1X,I4,F6.2,I5,F8.2) (2) 10 FORMAT(1X,2(I4,2X,F10.2) (3) 10 FORMAT(I4,F6.2/I5,F8.2) (4) 10 FORMAT(I4/F6.2/I5/F8.2) (5) 10 FORMAT(I5,F8.1) (6) 10 FORMAT(I4,F8.1,I5,F10.2,I6,F10.3),2. 程序执行时输入同样的内容: 12345678910111213141

28、51617181920 请写出下列程序的执行结果。 (1) INTEGER A REAL B,C CHARACTER*10 D READ(*,10) A,B,C,D WRITE(*,*) A,B,C,D 10 FORMAT(1X,I4,2F6.2,A3) END,(2) INTEGER A REAL B,C CHARACTER*10 D READ(*,10) A,B,C,D WRITE(*,*) A,B,C,D 10 FORMAT(1X,O4,2E6.2,A) END,(3) INTEGER A REAL B,C CHARACTER*10 D READ(*,10) A,B,C,D WRITE(

29、*,*) A,B,C,D 10 FORMAT(1X,Z4,2E8.2,A5) END,(4) INTEGER A REAL B,C CHARACTER*10 D READ(*,10) A,B,C,D WRITE(*,20) A,B,C,D 10 FORMAT(1X,Z4,2F8.2,A5) 20 FORMAT(1X,O4,2E8.2,A5) END,3请写出下列程序的执行结果。 INTEGER I,J,K I=570 J=3410 K=5069 PRINT 10,I,J,K PRINT 20,I,J,K PRINT 30,I,J,K 10 FORMAT(1X,I4) 20 FORMAT(1X,

30、2I5) 30 FORMAT(1X,2(I5/2X) END,4. 请写出下列程序的执行结果。 CHARACTER*8 A INTEGER B REAL C,D A=FORTRAN B=52 C=917.8 D=-452.6 WRITE(*,10) A,B,C,D WRITE(*,20) A,B,C,D WRITE(*,30) A,B,C,D 10 FORMAT(1X,A5,I4,2E8.2) 20 FORMAT(1X,A,B,C,D=,Z4,I4,2F7.2) 30 FORMAT(1X,A=,A/,1X,B=,B4/,1X,C=,F6.1/,1X,D=,F6.1) END,5. 请写出下列程序的执行结果。 COMPLEX A LOGICAL B A=(1.6,-4.5) B=.NOT.36.EQV.FALSE. WRITE(*,10)A,B 10 FORMAT(1X,F10.2,F10.2/L5) END,6请写出下列程序的执行结果。 (1) WRITE(*,10)(3,4,I=1,2) 10 FORMAT(1X,3I3) END (2) READ(*,10) K,A,A WRITE(*,20) K,A 10 FORMAT(I5,F6.1,F7.2) 20 FORMAT(1X,I7,2F9.2) END 输入为:123456789.0123456789。,

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

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

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


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