收藏 分享(赏)

FORTRAN语言第6章(共8章).ppt

上传人:buyk185 文档编号:6545205 上传时间:2019-04-16 格式:PPT 页数:34 大小:1.65MB
下载 相关 举报
FORTRAN语言第6章(共8章).ppt_第1页
第1页 / 共34页
FORTRAN语言第6章(共8章).ppt_第2页
第2页 / 共34页
FORTRAN语言第6章(共8章).ppt_第3页
第3页 / 共34页
FORTRAN语言第6章(共8章).ppt_第4页
第4页 / 共34页
FORTRAN语言第6章(共8章).ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、第六讲 格式输入输出,输入输出的三种不同的格式: 1表控格式的输入输出 2有格式的输入输出 3. 无格式的输入输出 要素: 1在什么外部设备上输入或输出 2用什么格式输入输出 3输入输出哪些数据,按照系统隐含的标准格式在默认的I/O设备上进行I/O操作。,按照用户要求的格式在指定的I/O设备上进行数据I/O操作。,不管数据的具体类型,一律以二进制的形式进行I/O操作 。,REAL*4 I,J,K I=12345.67890 J=98765.4321 K=I*J WRITE(*,*)“I=“,I,“7788J=“,J,“K=“,K END,第三讲 格式输入输出,第一节 格式输入输出语句,格式输出

2、语句有两个:PRINT语句和WRITE语句,第三讲 格式输入输出,格式输出语句有两个:PRINT语句和WRITE语句,FORTRAN语言用专门的格式说明来描述输入输出的格式。尽管格式说明可以直接放在输入输出语句中,但为了使程序的可读性更强,最好使用格式说明语句来进行格式说明。格式说明语句的一般格式是:,第二节 格式说明语句,n FORMAT(格式说明),n是语句标号,FORMAT语句一定带有语句标号,以便同格式输入输出语句配合使用;格式说明由若干个编辑描述符组成,编辑描述符之间用逗号分隔。如,10 FORMAT(1X,I4,F5.1),格式说明语句(FORMAT语句)是非执行语句,它只是给输入

3、输出语句提供数据的格式描述。在程序运行过程中,由输入输出语句根据格式说明语句提供的数据格式描述,实现数据的格式控制。单独的格式说明语句在程序中不起任何作用。 格式说明语句可以放在程序单位语句(PROGRAM语句或子程序FUNCTION或SUBROUTINE语句)之后,END语句之前的任何位置。,第二节 格式说明语句,编辑描述符可分成两大类:,第三节 常用的编辑描述符,可重复编辑 描述符,非重复编辑 描述符,用来编辑输入输出项的输入输出格式,所以总是与输入输出项相对应。不同类型的输入输出项使用不同的编辑描述符。FORTRAN提供的内部数据类型有整型、实型、复型、逻辑型和字符型。相应地,编辑描述符

4、也分5类。,编辑描述符可分成两大类:,第三节 常用的编辑描述符,非重复编辑 描述符,直接向当前输出记录传递信息,因此不需要输入输出项与其对应。 非重复编辑描述符有:X编辑符、撇号编辑符、斜杆编辑符。,一、可重复编辑描述符,第三节 常用的编辑描述符,1、I编辑符,I编辑符用于规定整型数据的输入输出格式,其一般形式为:I或I.m 用I编辑符进行整型数据输出时,遵循下列规则:1)如果实际输出的整数数字位数小于,则在输出整数的所有数字的左边用空格来补满整个场宽;,M=10;N=100WRITE(*,10)M,N 10 FORMAT(1x,I3, I5)END,10,100,1、I编辑符,用I编辑符进行

5、整型数据输出时,遵循下列规则:2)如果实际输出的整数数字位数小于m,则在输出整数的所有数字的左边用“0”来补足到m位数字;如果数字的位数超过了m,则按实际应输出的位数输出(但条件是不能超过)。m不包括负号所占的一列;,M=10;N=100WRITE(*,10)M,N 10 FORMAT(1x,I3, I5.4)END,10,0100,1、I编辑符,用I编辑符进行整型数据输出时,遵循下列规则:3)如果实际输出的整数数字位数大于,则在字段宽度范围内均用“*”输出,以表示规定的场宽不够,无法正常输出该整数。,M=10;N=1000WRITE(*,10)M,N 10 FORMAT(1x,I3, I3)

6、END,10,*,10 FORMAT(1x,I3, I4),10,1000,数据首尾相连 W不够大,宽度不够 输出W个*,2、F编辑符,F编辑符用来规定实型数据的输入输出格式,其一般形式为:F.d F编辑符用于输出小数形式的实数时,遵循下列规则:1)在实际输出一个实数时,由于实数的符号和小数点均要单独占一位,并且,小数点前面还可能有若干位整数部分的数字,因此,在编辑符中要求b + d + 2,其中b为整数部分的位数;2)如果d小于实际需要输出的实数小数部分的位数,则小数部分最右边的多余数字将被截去;如果d大于实际需要输出的实数小数部分的位数,则在小数部分的最右边用0来补足所规定的位数;,A=2

7、.0B=3.14S=A*BWRITE(*,10)A,B,S 10 FORMAT(1x,F6.2,F6.2,F6.2)END, 3.14, 6.28, 2.00,F编辑符应用实例,A=2.0B=3.145S=A*BWRITE(*,10)A,B,S 10 FORMAT(1x,F6.2,F6.2,F6.2)END, 3.15, 6.29, 2.00,F编辑符应用实例,2、F编辑符,F编辑符用于输出小数形式的实数时,遵循下列规则:1) 如果大于实际输出数据的数字位数(包括在小数部分最右边所补的数字0),则在输出数据的左边用空格补足;如果小于实际输出数据的数字位数,则在字段宽度(即)范围内均输出“*”号

8、 。,A=2.0B=3.145WRITE(*,10)A,B 10 FORMAT(1x,F6.2,F6.4)END,*, 2.00,E编辑符也是用来规定实型数据的输入输出格式,其一般形式为:E.d; E编辑符用于输出格式化的0.X XE XX指数形式,输出规则: 数字部分小数前面为0,小数点后面第一位为非零数字,指数部分需占4列(E和指数符号位及两位指数)。符号位、小数点前面的前导零和小数点也要各占1列。因此,在E编辑符的格式中,要求d6; 如果输出项数字部分的小数位数多于d位,保留d位,从d+1位四舍五入;小于d位,在其右边补0。 如果不够大,即d6,则在字段宽度的范围内均输出“*”号,以表示

9、无法输出该实数;如果d7,则在所有数字的左边用空格补足 。,3、E编辑符,READ(*,*)A,BS=A*BWRITE(*,10)A,B,S 10 FORMAT(1x,3E10.2)END,2.0,3.2, .32E+01, .64E+01, .20E+01,E编辑符应用实例,Aw编辑符所对应的输出项一定占w个字符的宽度,但输出项实际包含字符的个数L可能与w不一致。当w=L时,输出项所有的字符全部输出;当wL时,输出项所有的字符全部输出,并且靠右对齐,左补w-L个空格;若wL输出项最左边w个字符输出。当w省略时,按输出项的长度输出,这是最方便的形式。CHARATER X*4,Y*10X=BAS

10、ICY=FORTRANWRITE(*,10)X,Y10 FORMAT(1X, A7,A4)END,输出: BASIFORTA7 A4,4、A编辑符,字符型数据的输入输出格式用A编辑符,其一般形式为:A,二、非重复编辑描述符,第三节 常用的编辑描述符,1、X编辑符,用于在输入输出的常数之间插入空格。其一般形式是:,nX其中n是正数,用于指明从当前位置向右跳过n个字符位置。这里n不能省略,即使n为1,也要写成1X。,READ(*,*)A,BS=A*BWRITE(*,10)A,B,S 10 FORMAT(1x,F6.2,2x,F6.2,2x,F6.2)END,2.0,3.142, 3.14, 6.2

11、8, 2.00, , ,用于输出一个字符串。,例READ(*,*)A,BS=A*BWRITE(*,10)A,B,S 10 FORMAT(1x,A=,F6.2,2x,A B=,F6.2,2x,S=,F6.2)END,2.0,3.142, B= 3.14, S= 6.28,注:如果输出的字符中包含撇号,则用两个连续的撇号代表一个要输出的撇号。,二、非重复编辑描述符,2、撇号编辑符,3、斜杆描述符(/),作用:,结束当前正在输出的记录,并转入下一记录开始输出。,例READ(*,*)A,BS=A*BWRITE(*,10)A,B,S 10 FORMAT(1x,A=,F6.2/1x,B=,F6.2/1x,

12、S=,F6.2)END,2.0,3.142,B= 3.14,S= 6.28,A= 2.00,记录1,一个WRITE语句输出打印了三行信息,这是由于FORMAT语句中有两处斜杠,使之产生三个输出记录(注意,斜杠之后也有一个“1X”,使第二个记录的第一个字符为“空格”,作为纵向走纸符)。,二、非重复编辑描述符,3、斜杆描述符(/),例:I=246; A=12.36; J=35; B=173.5 WRITE(*,100)I,A,J,B 100 FORMAT(1X,I3,F6.1/1X,I3,F6.1) END,如果有两个连续的斜杠,如:,输出完第一行后,空一行,再输出第二行。即:,246 12.4

13、(空一行) 35 173.5,如果在编辑符的最后出现斜杠,如:,100 FORMAT(1X,I3,F6.1/1X,I3,F6.1/),输出完第二个记录后,再输出一个空行。即: 246 12.4 35 173.5 (空一行),FORTRAN规定,将输出记录中的第一个字符作为纵向 走纸控制符,这个字符不输出,而从输出记录的第二 个字符开始输出。,三、打印机的走纸控制,WRITE(*,10)olist 10 FORMAT(1x, ) 10 FORMAT(0, ) 10 FORMAT(1, ) 10 FORMAT(+, ),WRITE(*,10)123, 456710 FORMAT(1x, I3, 2

14、X, I4),按本来意义,1X产生一个空格,应输出:1234567 但按FORTRAN规定,将将输出记录中的第一个字符作为 纵向走纸控制符,所以实际输出是在走纸一行之后,输出1234567 若不在输出记录的第一个字符处增加一个空格,则系统将 应该输出的第一个字符作为纵向走纸控制符,从而使本来 应该输出的字符被“吃掉”了。,234567,单个描述符的重复 (如rIw或rFw.d等),例如:2I5,等价于I5,I5,例如:3F6.2,等价于F6.2,F6.2,F6.2,H的撇号编辑符前不能再加重复系数,但必需时可先 加一括号,然后再加重复系数。,例如:WRITE(*,200) 200 FORMAT

15、(1X,5(*),3($),*$,第四节 格式编辑符的重复使用,描述符组的重复 (如:r(描述符组),例1:WRITE(*,10)A,B 10 FORMAT(1X,2(F6.2,2X),例2: WRITE(*,20)I1,J1,P1,I2,J2,P2,S 20 FORMAT(1X,2(2I3,F6.2),F6.2),1X,2(I3,I3,F6.2),F6.2,1X,I3,I3,F6.2, I3,I3,F6.2, F6.2,第四节 格式编辑符的重复使用,如果输出表项个数少于格式说明中可重复编辑描述符的个数,则多余的编辑符不起作用;但X、H及撇号编辑符除外;,第五节 输入输出语句与格式语句的相互作

16、用,WRITE(*,30)I,J 30 FORMAT(1X,I4,I5,I6),WRITE(*,30)I,A 30 FORMAT(1X,I3,3x,F6.1,end,F8.3),如果输出表项个数多于格式说明中可重复编辑符的个数,则当格式说明中的编辑符用完后,将重复使用该格式说明,并产生一个新的记录;,第五节 输入输出语句与格式语句的相互作用,WRITE(*,30)A,I,B,J 30 FORMAT(1X,F7.2,I4),如果WRITE语句中有输出项,而在格式说明中没有对应的格式编辑符,则输出操作将永不停止;,第五节 输入输出语句与格式语句的相互作用,本应写成FORMAT(1X,I=,I4),

17、但漏写了I4,结果会输出一个又一个的记录,每个记录(行)中都只有I=。因此如果WRITE语句有一个或一个以上的输出变量的话,则格式说明至少应该有一个非X、非H型(或撇号)的相应编辑符。,WRITE(*,50) I 50 FORMAT(1X,I=),如果WRITE语句中没有输出表项,且FORMAT语句中也没有格式说明,则将输出一个空行;如FORMAT()即“空格式说明”,第五节 输入输出语句与格式语句的相互作用,遇格式说明的右括号(即最后面一外括号)或斜杠“/”时,结束本记录的输出,但不意味停止全部输出。只要输出表列中还有未输出的量,将重复使用格式说明或按斜杠右面的格式说明组织输出。 右括号的作用与斜杠有一点不同:当扫描到右括弧而输出表列中已无输出变量时,输出即告结束。而斜杠只表示结束本行输出,即使此时已列输出变量要输出,输出并未停止,它会重新开始一个新记录,直到遇到右括号或非X、H、撇号编辑符为止。,FORMAT语句可以与WRITE语句相邻,也可以放在程序任何地方(在PROGRAM语句或子程序语句之后,END语句之前),习惯上将程序中全部FORMAT语句集中放在最前或最后,并给FORMAT语句以较大的标号(如100以上或者说1000以上),以使程序清晰。,第五节 输入输出语句与格式语句的相互作用,小结:,谢谢观看!,更多网络共享资源:http:/,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报