您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第11章 高级输出与输入
第11章高级输出与输入•在第3章中,介绍了简单的输入输出操作(也称为表控输入输出、直接列表输入输出)语句READ、WRITE和PRINT。这些输入输出操作语句简单易学、使用方便。但是如果想要使输入输出的数据更为美观、易读易用或是想要实现一些特殊的效果,这些简单输入输出语句就显得力不从心了。在本章中,将介绍同高级输入输出相关的语句设置、不同种类的格式编辑符等内容。通过本章的介绍,就可以使程序在输入输出这方面显得更加专业。11.1输入输出语句的格式化设置•在第3章中,提到过简单输入输出语句同高级输入输出语句在形式上没有太大差别。高级输入输出语句之所以高级,主要因为其在于句说明中添加了丰富的格式控制说明项。正是这些格式控制说明项使输入输出语句在进行数据的输入输出操作时显得丰富多彩。本节将介绍同输入输出语句相关的一些详细设置。•在第3章中,已经介绍了三种常用的简单输入输出语句:WRITE语句、PRINT语句和READ语句。实际上高级输入输出语句也是这三个语句。只是在使用高级输入输出操作时,需要设置更多的输入输出控制选项。而简单输入输出语句无需设置这些控制选项,只要用星号“*”就可以表示系统默认的输入输出操作方式了。•要在输入输出语句中使用高级的输入输出选项,就要使用专门的语句来定义格式的形式。这个语句就是FORMAT语句,也称为格式说明语句。该语句的语法形式为:•FORMAT(format-list)11.2输入输出语句与格式语句•在前一小节中,详细介绍了FORMAY语句的相关知识。在介绍的过程中,提到了FORMAT语句必须是有标号的,以便在输入输出语句中进行引用。在这一节中,就要介绍在输入输出语句中如何引用FORMAT语句。当FORMAT语句定义完全并编上标号后,就可以在输入输出语句中通过引用标号的形式来引用格式说明语句。三种输入输出语句引用格式说明语句的形式罗列如下所述。11.2.1WRITE语句引用格式说明语句•在向外部设备输出时,语法形式如下:•WRITE(设备号,[FMT=]格式说明语句标号)[变量列表]•语句中,设备号表示要在其上输出数据的设备,当设备号为星号“*”时,表示向默认的设备输出;关键字段“FMT=”用来显示说明其后所跟的标号为格式说明语句的标号,当WRITE语句说明项中只含有一项时,“FMT=”可以省略;语句中允许变量列表为空,此时WRITE语句的作用是输出一个空白行。11.2.2PRINT语句引用格式说明语句•PRINT语句只能向计算机的默认设备(即屏幕)上输出数据。因此PRINT语句引用格式说明语句的形式中不含有设备号这样的参数。语句的语法形式如下:•PRINT格式说明语句标号[,变量列表]•需要注意的是,PRINT语句中在引用格式说明语句标号时,不允许使用关键字段“FMT=”。这和WRITE语句有一个重要的区别。语句中允许变量列表为空,作用与WRITE语句相同。11.2.3READ语句引用格式说明语句•在从外部设备中输入时,语法形式如下:•READ(设备号,[FMT=]格式说明语句标号)[变量列表]•语句中,设备号表示要在其上输入数据的设备,当设备号为星号“*”时,表示从默认的设备(一般是键盘)输入;关键字段“FMT=”用来显示说明其后所跟的标号为格式说明语句的标号,当WRITE语句说明项中只含有一项时,“FMT=”可以省略;语句中允许变量列表为空,此时READ语句将等待输入,指导用户键入回车键。11.2.4第一个输入输出综合应用•下面来看一段代码,这段代码综合应用了上述三种输入输出语句和FORMAT语句的交互作用。•TEST1101.F90•!WRITE&FORMAT语句的范例•PROGRAMTEST1101•IMPLICITNONE•!变量定义•INTEGER::I,J,K•REAL::A,B,C•!可执行段•WRITE(*,*)'Input:'•READ(*,100)I,J,K•READ(*,200)A,B,C•WRITE(*,*)'Output:'•WRITE(*,300)I,J,K•PRINT400,A,B,C•!格式说明•100FORMAT(1X,3(I3,1X))•200FORMAT(1X,3(F6.2,1X))•300FORMAT(1X,'I=',I3,'J=',I3,'K=',I3)•400FORMAT(1X,'A=',F6.2,'B=',F6.2,'C=',F6.2)••ENDPROGRAMTEST110111.3格式编辑符概述•用户在指定输出格式时,需要特定的方式向系统说明格式的“相貌”。在Fortran中,描述格式“相貌”的工作由“格式编辑符”(或“编辑描述符”)来完成。格式编辑符的作用就是将数据进行类似书报编辑对文字进行编辑排版一样的处理,使数据以更美观的形式进行显示。在Fortran中,格式编辑符按照用途可以分为数据格式编辑符、控制格式编辑符和字符串格式编辑符三大类。下面将对这三类编辑符的使用和功能进行讲解。11.4数据格式编辑符•顾名思义,数据格式编辑符主要针对程序中的整型、实型、复型、逻辑型和字符型数据的输入输出格式控制。下面将对其中最常用的几种编辑符的作用和用法进行讲解。11.4.1I编辑符•I编辑符适用于整型数据的输入输出,其一般形式为:•Iw[.m]•I是英文单词“Integer”的第一个字母,表示“整型数编辑符”。•w用来指示以w个字符的宽度来输出数据(通常称一个数据所占的宽度为“字段宽度”),负数的符号也包含在字段宽度内。如果要输出的数据实际宽度超出了w规定的宽度,则不输出有效数据,而在该字段宽度范围内用星号“*”填充。•m用来指示至少需要输出m个字符宽度的数字。如果输出数据的实际宽度小于m,则会在数据前面不足部分用0填充;如果输出数据的实际宽度超过m,则按输出数据的实际宽度进行输出(但不能超过w)。11.4.2F编辑符•F编辑符适用于实数的小数形式输出,其一般形式为:•Fw.d•F是英文单词“Fixedpointnumber”的首字母,表示“浮点数编辑符”。•w仍然表示要输出的“字段宽度”,包含一个小数点和负数的负号。如果要输出的数据实际宽度超出了w规定的宽度,则不输出有效数据,而在该字段宽度范围内用星号“*”填充。•d表示要输出数据的小数位数。如果要输出的实际数据的小数位数小于d,则会在小数后不足的部分补充0;如果要输出的实际数据的小数位数大于d,则会将实际数据中多余的小数部分按四舍五入规则去掉。11.4.3E编辑符•E编辑符用于输出指数形式的实数,其一般形式为:•Ew.d[Ee]•E是英文单词“Exponent”的首字母,表示“指数编辑符”。•w还是表示要输出的“字段宽度”,包含指数部分所占的4个字符的宽度和负数的负号。如果要输出的数据实际宽度超出了w规定的宽度,则在该字段宽度范围内用星号“*”填充;如果输出的数据实际宽度小于w规定的宽度,则在输出数据的前面用空格填充。•d表示要输出数据的小数位数。小数部分的位数可以由公式w≥d+7来确定,公式中的“7”表示一个小数点、小数点前的0、一个负号和指数部分所占的4位。如果实际数据在指数形式下的小数位数大于d,则多出的小数部分按四舍五入规则进行舍入;如果实际数在指数形式下的小数位数小于d,则不足的小数部分用0进行填充。•e表示指数部分中指数所占的位数。11.4.4D编辑符•D编辑符适用于双精度数据的输出。其一般形式为:•Dw.d•D是英文单词“DoublePrecision”的首字母,表示“双精度编辑符”。•w仍然表示输出数据所占的字段宽度;d表示指数部分所占的位数。具体的含义同E编辑符。•在使用方法上,D编辑符与E编辑符相似。只是把字母“E”换成“D”,在数据输出时,指数部分的字母“E”用“D”来代替。实际上,F编辑符也可用于双精度数据的输出,和用于实型数据输出相似。但此时可能会由于不能确切估计实际数据的大小而出现“大数印错,小数印丢”的情况。11.4.5A编辑符•E编辑符用于输出指数形式的实数,其一般形式为:•Ew.d[Ee]•E是英文单词“Exponent”的首字母,表示“指数编辑符”。•w还是表示要输出的“字段宽度”,包含指数部分所占的4个字符的宽度和负数的负号。如果要输出的数据实际宽度超出了w规定的宽度,则在该字段宽度范围内用星号“*”填充;如果输出的数据实际宽度小于w规定的宽度,则在输出数据的前面用空格填充。•d表示要输出数据的小数位数。小数部分的位数可以由公式w≥d+7来确定,公式中的“7”表示一个小数点、小数点前的0、一个负号和指数部分所占的4位。如果实际数据在指数形式下的小数位数大于d,则多出的小数部分按四舍五入规则进行舍入;如果实际数在指数形式下的小数位数小于d,则不足的小数部分用0进行填充。•e表示指数部分中指数所占的位数。11.4.6L编辑符•L编辑符适用于逻辑型数据的输出。其一般形式为:•Lw•L是英文单词“Logical”的首字母,表示“逻辑编辑符”。•w表示输出的逻辑型数据所占的字段宽度。由于逻辑型数据在输出时只显示一个字符,即.TRUE.打印为“T”,.FALSE.打印为“F”。因此,当w大于1时,字符的左端用空格进行填充。11.4.7G编辑符•既然单独使用F编辑符和E编辑符都有这样或那样的缺点,那么有没有一种编辑符足够“聪明”,可以自行判别哪种数应该用F编辑符进行输出还是用E编辑符进行输出呢?•Fortran提供了这样一种“聪明”的编辑符,即G编辑符。该编辑符对F编辑符和E编辑符的长处进行了综合,能够根据要输出的实数大小来决定用何种格式进行输出,即F型格式和E型格式。当输出的数值过大或过小时会自动采用E型格式,当输出的数值能够用小数形式表达时则用F型格式。G编辑符的一般形式为:•Gw.d[Ee]•G是英文单词“General”的首字母,表示“通用编辑符”。•w仍然表示输出数据所占的字段宽度;d表示指数部分所占的位数;e表示指数部分数字的位数。具体的含义参考E编辑符。11.4.8B、O、Z编辑符•二进制(B)、八进制(O)和十六进制(Z)编辑符是Fortran90标准中新增的编辑描述符,用于整数、实数、字符和逻辑量的输出。其一般形式为:•Bw[.m]•Ow[.m]•Zw[.m]•B、O和Z分别表示“二进制编辑符”、“八进制编辑符”和“十六进制编辑符”。•w表示输出数据的字段宽度;m表示需要输出的最少数字位数,缺省值为1。如果实际的输出数据宽度少于指定的字段宽度,则数据的左端用空格填充。但对于二进制数,如果以0填补可读性会更好一些。例如00010101显示了l0101所有的8位,此时可以令m=w的方法来强迫数据的开始以0填补。11.4.9EN、ES编辑符•工程计数法(EN)和科学计数法(ES)也是Fortran90标准中新增的编辑描述符。两种编辑符的的一般形式为:•ENw.d[Ee]•ESw.d[Ee]•其中E是英文单词“Exponent”的首字母,N是英文单词“Engineering”的第二个字母,S是英文单词“Scientific”的首字母。•EN和ES编辑符中的w、d、e与E编辑符中的基本类似,可以参考E编辑符中的相关描述。梁柱编辑符与E编辑符的区别在于:•采用EN编辑符输出数据时,数据的非指数部分的绝对值一定在1到1000的范围内(除非数据的数值为0),且指数可以被3整除。包括指数部分和负号,整个数据的输出字段宽度是w个字符,小数点后d个字符,指数宽度e是可选的。•采用ES编辑符输出数据时,数据的非指数部分的绝对值一定在l到10的范围内(除非数据的数值为0),而非E编辑符的0到1。11.5控制格式编辑描述符•控制格式描述编辑符在格式语句中的作用是确定文本的显示方式,比如数据在所在行的什么位置进行输出、统计记录中剩余的字符数目、是否输出数据的加号等。下面分别对常见控制格式编辑描述符进行介绍。11.5.1X编辑符•X编辑符是控制格式编辑描述符中最常使用的一种。该编辑符用来在输出数据时产生空格。前面的数据格式编辑描述符在输出数据时,数据之间没有空格。为了避免读数困难
本文标题:第11章 高级输出与输入
链接地址:https://www.777doc.com/doc-3334592 .html