Fortran教程第六章格式输入输出.ppt_第1页
Fortran教程第六章格式输入输出.ppt_第2页
Fortran教程第六章格式输入输出.ppt_第3页
Fortran教程第六章格式输入输出.ppt_第4页
Fortran教程第六章格式输入输出.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章格式输入输出 6 1输入输出概述 6 2格式输入输出语句 6 3格式说明语句 6 4常用的编辑描述符 6 5输入输出项与编辑符的相互作用 6 1输入输出概述 输入输出是指在计算机内存与外部设备之间传送数据的过程 从外部设备将数据传送到计算机内存称为输入 将计算机内部的数据传送到外部设备称为输出 要顺利地传送数据 一般应在输入输出语句中给计算机提供三方面的信息 1 通过什么设备来进行输入输出 2 采用什么样的格式来进行输入输出 3 输入输出的具体内容 每一种计算机系统都隐含指定一种输入设备和输出设备 在微机中 隐含指定键盘为输入设备 显示器为输出设备 在输入输出数据较多时 也可以使用磁盘作为输入输出设备 即从已经建立的磁盘文件中去读取数据 将处理结果写入到磁盘文件中去 关于文件操作将在第11章介绍 输入输出的格式由格式编辑符来指定 不同的数据类型需要不同的格式编辑符 不同的格式编辑符确定不同的输入输出格式 输入输出的具体内容即输入输出项 输入项只能为变量 输出项可以为常量 变量 函数和表达式 也可以是隐含的DO循环 下面先看一个格式输入输出的例子 程序输出为 135每循环一次输出循环变量J的值 每个数据占5格 INTEGERJDOJ 1 5 2WRITE 10 JENDDO10FORMAT 1X 3I5 END 再看下面的例子 INTEGERJWRITE 10 J J 1 5 2 10FORMAT 1X 3I5 END 程序输出为 135程序中 WRITE语句的输出项 J J 1 5 2 是一个隐含的DO循环 当作一个整体输出 每个数据占5格 6 2格式输入输出语句 6 2 1格式输出 格式输出语句有两个 PRINT语句和WRITE语句 1 PRINT语句PRINT语句的一般格式是 PRINTf 输出项其中f是格式说明符 指明了输出所用的格式 它有以下三种形式 1 格式说明符是一个 表示输出使用表控格式 2 格式说明符是一个字符常量 例如PRINT 1X 2F7 3 X Y 3 格式说明符是格式语句 FORMAT 的语句标号 这是最常用的格式输出形式 例如PRINT100 A B C100FORMAT 1X F9 4 2F7 3 输出项指定了输出的具体内容 输出项可以是变量 常量 函数以及表达式 此外 输出项还可以是隐含DO循环 2 WRITE语句WRITE语句的一般格式是 WRITE u f 输出项其中u是设备号 用于指明具体使用的输入输出设备 u可以是一个无符号整常量 也可以是一个整型变量或整型表达式 还可以是星号 表示由计算机系统预先约定的外部设备 一般为显示器 f是格式说明符 指明了输入输出所用的格式 它也有三种形式 用法与PRINT语句相同 输出项也可以是常量 变量 函数以及表达式 还可以是隐含的DO循环 6 2 2格式输入 格式输入语句是指READ语句 它有两种形式 READf 输入项READ u f 输入项其中f指明了输入所用的格式 它有以下三种形式 1 格式说明符是一个 表示输入使用表控格式 2 格式说明符是一个字符常量 例如READ I3 2I4 I J K 3 格式说明符是格式语句 FORMAT 的语句标号 这是最常用的格式输入形式 u是设备号 用于指明具体使用的输入设备 u可以是一个无符号整常量 也可以是一个整型变量或整型表达式 还可以是星号 表示由计算机系统预先约定的外部设备 一般为键盘 输入项指定了输入的具体内容 输入项目可以变量 不允许是常量或表达式 此外 输入项目也可以是隐含DO循环 6 3格式说明语句 FORTRAN用专门的格式说明来描述输入输出的格式 尽管格式说明可以直接放在输入输出语句中 但为了使程序的可读性更强 最好使用格式说明语句来进行格式说明 格式说明语句的一般格式是 nFORMAT 格式说明 其中n是语句标号 FORMAT语句一定带有语句标号 以便同格式输入输出语句配合使用 格式说明由若干个编辑描述符组成 编辑描述符之间用逗号分隔 例如10FORMAT 1X I4 F5 1 格式说明语句是非执行语句 它只是给输入输出语句提供数据的格式描述 在程序运行过程中 由输入输出语句根据格式说明语句提供的数据格式描述 实现数据的格式控制 单独的格式说明语句在程序中不器任何作用 例如10FORMAT 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常用的编辑描述符 编辑描述符分成两大类 可重复编辑描述符非重复编辑描述符 6 4 1可重复编辑描述符 可重复编辑描述符是用来编辑输入输出项的输入输出格式的 所以它们总是与输入输出项相对应 不同类型的输入输出项使用不同的编辑描述符 FORTRAN提供的内部数据类型有整型 实型 复型 字符型和逻辑型 相应地 编辑描述符也分五类介绍 根据数据采用的进制不同 整型数据编辑符分为四种 I编辑符 B编辑符 O编辑符和Z编辑符 I编辑符用来描述十进制的整型数据 B编辑符用来描述二进制的整型数据 O编辑符用来描述八进制的整型数据 Z编辑符用来描述十六进制的整型数据 下面逐一介绍 1 整型数据编辑描述符 1 I编辑符 十进制整数的输入输出 一般格式是 rIw其中r是重复系数 为1时可以省略 w表示字段宽度 即与该编辑描述符对应的输入输出项所占用的字符个数 I型输入的使用规则 在输入记录中从左往右取w个字符存入对应的输入项 注意取得的w个字符必须是整数 正负号也占一个字符位置 空格字符占一个字符位置但不起作用 READ 10 I J K10FORMAT I4 I5 I6 语句执行时 若从键盘输入71 4 346 1 2345 代表空格 则I J K的值分别为 714 346和 123 I型输出的使用规则 在输出记录中 对应的输出项的值占w个字符宽度 当w大于输出项实际的数字位数时 在输出字段中插入前导空格补足w个字符 当w小于输出项实际的数字位数时 将输出w个 表示字段宽度定义小了 WRITE 10 K L10FORMAT I4 I4 当K 12 L 7567时 输出结果为 12 2 B O Z编辑符 这是FORTRAN90新增的编辑符 分别采用二进制 八进制和十六进制形式描述整型量的输入输出 其基本用法与I编辑符相同 例如READ 10 I JWRITE 20 I J I J10FORMAT B3 B4 20FORMAT I5 I4 O4 Z5 END语句执行时 若从键盘输入1011101 则I J的值分别为二进制数101和二进制数1101 输出结果为 5 13 5 D 有四种编辑符可以对实型数据进行操作 它们是F编辑符 E编辑符 EN编辑符 ES编辑符和G编辑符 2 实型数据编辑描述符 1 F编辑符 用于实型量的输入输出 按小数形式 一般格式是 rFw d其中r为重复系数 为1时可以省略 w为字段宽度 d为输入输出项小数部分所占的位数 F型输入规则 按编辑描述符中w指定的字段宽度从输入记录中截取数据 若w个字符中不含小数点 则系统自动按d决定小数点的位置 若w个字符中含有小数点 则按 自带小数点优先 的原则 不再按Fw d中的d去加工该数据 此时d不起作用 例如READ 10 A B10FORMAT F7 2 F6 1 语句执行时 如从键盘输入123456 726 89 则A B的值分别为12345 6和726 89 当输入的是指数形式时 如果E前面的数字部分含有小数点 则d不起作用 如果数字部分不含有小数点 则自动按d决定数字部分小数点的位置 例如READ 10 A B10FORMAT F8 0 F7 2 执行语句时 如从键盘输入72 48E 3 2E2 则A B的值分别为0 07248 2 0 F型输出规则 把输出项的值转换成字段宽度为w的小数形式输出 其中小数部分占d位 小数点占一位 如果输出项小数部分实际的位数小于d 则输出时小数部分低位以零补足d位 否则保留d位 从d 1位开始四舍五入 如果输出项实际长度小于w 则在左边用空格补足w个 否则输出w个 以示w太小 例如WRITE 10 A B C10FORMAT 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列 E 指数符号位及两位指数 如果输出项数字部分的小数位数多于d位 保留d位 从第d 1位起四舍五入 小于d位 在其右边补0 如果输出项实际的位数小于w 左补空格 否则输出w个 例如WRITE 10 A B10FORMAT 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 000810FORMAT 1X EN12 4 EN13 2 输出为 128 4330E 00 800 00E 06 4 ES编辑符 ES编辑符与E编辑符基本用法相同 区别在于ES编辑符输出数据的非指数部分的绝对值强制在1到10的范围内 例如WRITE 10 128 433 0 000810FORMAT 1X ES12 4 ES13 2 输出为 1 2843E 02 8 00E 04 5 G编辑符 也用于实型量的输入输出 一般格式为 rGw dG编辑符用于输入时 与F E编辑符的功能完全相同 用于输出时 要根据输出项的大小决定用F格式输出还是用E格式输出 例如WRITE 10 123456 789 0 09876510FORMAT 1X G13 7 G11 4 输出为 123456 8 9877E 01 3 复型数据编辑描述符复型数据没有专门的编辑符 对复型数据的输入输出 可以按实部和虚部分别输入输出 例如COMPLEXCMREAD 10 CMWRITE 20 CM10FORMAT 2F5 2 20FORMAT 1X 2F7 2 语句执行时 从键盘输入1234567890 则输出为 123 45 678 90 4 逻辑型数据编辑描述符逻辑型数据的输入输出用L编辑符 其一般格式是 rLw逻辑值只有两个 真 TRUE 和假 FALSE 在输入时 输入的数据可以是 TRUE 或 FALSE 也可以是头一个字母为T或F的任何字符串 T或F前面可以接 或空格 后面可以是任意字符 例如LOGICALL1 L2READ 10 L1 L210FORMAT L6 L3 语句执行时 从键盘输入 TRUE FT 则L1 L2的值分别是 TRUE FALSE 在输出时 对逻辑真 TRUE 输出一个字母T 对逻辑假 FALSE 输出字母F 且在左边补w 1个空格 例如WRITE 10 FALSE A LT B OR 1 GT 210FORMAT 1X L3 L4 输出为 F T 5 字符型数据编辑描述符字符型数据的输入输出用A编辑符 其一般格式是 rAw其中字段宽度w可以省略 省略时 输入输出项的字段宽度隐含为对应的字符型输入输出项的长度l A编辑符的输入规则 从输入记录中取w个字符 但这w个字符能否全部存入对应的输入项 还取决于输入项的长度l 当w等于l时 w个字符全部送给输入项 当w l时 从w个字符中取出最右边l个字符送给对应的输入项 这一点与字符赋值语句的赋值规则刚好相反 当w l时 当w个字符全部送入输入项 并靠左对齐 右边补l w个空格 这一点同字符赋值语句的规则是相同的 例如CHARACTER 5C1 C2 C3READ 10 C1 C2 C310FORMAT A5 A2 A7 语句执行时 从键盘输入abcdefghijklmn 则C1 C2 C3的值分别为abcde fg jklmn 用A编辑符输入字符串时 不能有字符串的定界符 如果加了撇号 则撇号也作为字符串的一个字符 而在表控格式输入时 字符常量要加撇号定界符 A编辑符的输出规则 在输出记录中 Aw编辑符所对应的输出项一定占w个字符的宽度 但输出项实际包含字符的个数l可能与w不一致 当w l时 输出项所有的字符全部输出 当w l时 输出项所有的字符全部输出 并且靠右对齐 左补w l个空格 当w l时 输出项最左边w个字符输出 当w省略时 按输出项的长度输出 这是最方便的形式 例如WRITE 10 FORTRAN 90 PROGRAM 10FORMAT 1X A7 A8 输出为 FORTRAN PROGRAM 最后我们对上面讨论的编辑描述符作一个总结 FORTRAN90提供的编辑描述符很多 这给初学者学习带来了困难 但一些编辑描述符也有共同特点 把握这些特点以后也就不难掌握了 可重复编辑描述符是用来决定对应输入输出项的输入输出格式的 其中都有字段宽度w 而且对于输入都是从输入记录中取w个字符 对于输出都是在输出记录中输出w个字符 但问题是 在输入时 取得的w个字符按什么规则加工后传送到对应的输入项 在输出时 当输出项实际包括的字符的个数和编辑符中所确定的字段宽度 对于数值型数据还有小数位数 之间不相符时 如何输出 读者可以分数值型 逻辑型 字符型进行总结 非重复编辑描述符直接向当前输出记录传递信息 因此不需要输入输出项与其对应 非重复编辑描述符有 1 X编辑符 用于在输入输出的常数之间插入空格 它的一般格式是 nX其中n是正数 用于指明从当前位置向右跳过n个字符位置 这里n不能省略 即使n为1 也要写成1X 例如READ 10 K J A10FORMAT 2I3 3X E5 2 执行语句时 从键盘输入 876 42193671E4后 K J A的值分别为876 42 67100 0 其中非重复编辑符3X 跳过193这三个字符 6 4 2非重复编辑描述符 2 H编辑符 用于输出一个字符串 其一般格式是 nHh1h2 hn其中n是正整数 表示字符串的长度 h1h2 hn为n个字符 3 撇号编辑符 用于输出一个字符串 撇号编辑符和H编辑符作用相同 但撇号编辑符使用更为方便 例如WRITE 10 345 HELLO 10FORMAT 1X 2HI I4 C A 输出为 I 345C HELLO 4 斜扛编辑符 结束当前正在输入或输出的记录 并转入下一个记录开始输入输出 例如WRITE 10 A B10FORMAT 2 10X F9 2 语句执行后将输出5个记录 FORTRAN规定 将输出记录中的第一个字符作为纵向走纸控制符 这个字符不输出 而从输出纪录的第二个字符开始输出 常用的控制字符有 空格 走纸一行 0 走纸二行 1 换页 不走纸 返回到本行重迭打印 例如WRITE 10 123 456710FORMAT 1X I3 2X I4 按本来意义 1X产生一个空格 应输出 123 4567但按FORTRAN规定 将输出记录中的第一个字符作为纵向走纸控制符 所以实际输出是在走纸一行之后 输出 123 4567 6 4 3纵向走纸控制符 如果不在输出记录的第一个字符处增加一个空格 则系统将应该输出的第一个字符作为纵向走纸控制符 从而使本来该输出的字符被 吃掉 了 例如WRITE 10 123 456710FORMAT I3 2X I4 输出为 空一行 23 4567输出记录的第一个字符 1 作为纵向走纸控制符用 走纸两行 字符 1 本来作分页控制用 但微机中无分页功能 所以 在FORMAT语句中 一般都在格式说明的第一个字符位置增加一个空格作为纵向走纸控制符 在执行输入输出语句时 要求输入输出项与编辑符在前后顺序和数据类型方面都一一对应 否则就会出错 要注意输入输出项和编辑符之间的相互作用关系 1 如果可重复编辑符的个数多于输入输出项的个数 则多余的编辑符不起作用 例如WRITE 10 123 456710FORMAT 1X I3 2X I4 I5 多余的编辑符I5不起作用 6 5输入输出项与编辑符的相互作用 2 如果可重复编辑符的个数少于输入输出项的个数 则按顺序用完最后一个可重复编辑符之后 再重复使用格式说明 但产生一个新记录 例如WRITE 10 A I B J10FORMAT 1X F7 2 I3 语句执行后 将产生2个输出记录 3 如果在编辑描述符表中包含有重复使用的编辑符组 则当所有编辑符用完之后 返回到最右边那个编辑符组 包括其重复系数 开始使用 分析下列程序的输出结果 I 56J 1247K 5126WRITE 10 I J K10FORMAT 1X 2 I5 2X END 在编辑描述符表中的1X 作纵向走纸控制用 I5 2X 是一个编辑符组 重复系数为2 第一次引用时 按I5输出I值 2X产生两个空格 第二次引用时 按I5输出J值 2X产生两个空格 此后是斜扛编辑符建立一个新记录 输出K值时 格式说明已用完 返回到编辑符组 I5 2X 并产生一新记录 所以 第二行为空行 在第三行按I5输出K值 且第一个字符 为空格 作纵向走纸控制用而不输出 输出结果为 56 1247 空一行 5126 习题1 有语句 INTEGERI JREALX YREAD 10 I X J Y设要求输入的值为I 87 X 67 4 J 465 Y 345 705 用下面的FORMAT语句应如何输入数据 1 10FORMAT 1X I4 F6 2 I5 F8 2 2 10FORMAT 1X 2 I4 2X F10 2 3 10FORMAT I4 F6 2 I5 F8 2 4 10FORMAT I4 F6 2 I5 F8 2 5 10FORMAT I5 F8 1 6 10FORMAT I4 F8 1 I5 F10 2 I6 F10 3 2 程序执行时输入同样的内容 1234567891011121314151617181920请写出下列程序的执行结果 1 INTEGERAREALB CCHARACTER 10DREAD 10 A B C DWRITE A B C D10FORMAT 1X I4 2F6 2 A3 END 2 INTEGERAREALB CCHARACTER 10DREAD 10

温馨提示

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

评论

0/150

提交评论