Fortra 语言 第四章输入输出_第1页
Fortra 语言 第四章输入输出_第2页
Fortra 语言 第四章输入输出_第3页
Fortra 语言 第四章输入输出_第4页
Fortra 语言 第四章输入输出_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、Fortran 95 程序设计程序设计第三章第三章 输入输出及声明输入输出及声明程序结构程序结构 程序开始程序开始 PROGRAM MAIN MAIN是自定义名称是自定义名称 .主程序代码主程序代码 WRITE(*,*) “HELLO” 程序终止程序终止 STOP 此行可省略此行可省略主程序代码结束主程序代码结束 END END ( FORTRAN 77) END PROGRAM END PROGRAM MAIN 4.1 简单的输出简单的输出: WRITE命令命令Write(*,*) “就这么简单就这么简单“Write(unit=*, fmt=*) “就这么简单就这么简单“ ! 完整写法完整写

2、法Write(6, *) “string” !严谨一些的写法!严谨一些的写法Write(unit=6, fmt=*) “STRING” !最严谨的写法最严谨的写法WRITE(*,*) “HELLO”, “FRIENDS!”WRITE(*,*) “MY NAME IS “”PETER”.”WRITE(*,*) Thats right 注意:注意:1)每执行完一个write命令后,会自动换行2)Fortran 77只能使用单引号封装的字符串3)引号封装的字符串中含有同类的引号要连用才能输出 PRINT命令命令 print *, “hello”比比write少了一个少了一个*号,只能在屏幕输出号,只

3、能在屏幕输出 3-2 声明声明:在程序代码中,向编译器要求预留存放数据(变量和常量)的内存空间变量、常量的命名原则1)名称以使用英文字母为原则,可以内含下划线或数字,名称以使用英文字母为原则,可以内含下划线或数字,但是前缀必须是英文字母但是前缀必须是英文字母2)名称的长度,在名称的长度,在77标准中至少支持标准中至少支持6个字符长,个字符长,90标准中标准中至少支持至少支持31个字符长。个字符长。3)变量名最好不要和变量名最好不要和Fortran的执行命令同名,也不能和主的执行命令同名,也不能和主程序的名称或是前面声明过的变量同名。程序的名称或是前面声明过的变量同名。4)程序中辨认变量时,不会

4、区分它的大小写程序中辨认变量时,不会区分它的大小写。例:例:x1, va_2, 3p, program, print 主程序名为主程序名为PX 中的变量名不能有中的变量名不能有PX或或px 3-2-1 整数类型的声明赋值语句赋值语句,数值或数数值或数学表达式学表达式声明数据类型声明数据类型变量名称变量名称输出变量值输出变量值整型变量的声明形式:整型变量的声明形式:长整型(长整型(4个字节)个字节) Integer(kind=4) a !fortran 90 添加添加 integer*4 a !fortran 77 传统作法传统作法 integer(4) a !fortran 77 传统作法传统

5、作法短整型(短整型(2个字节)个字节) Integer(kind=2) a !fortran 90 添加添加 integer*2 a !fortran 77 传统作法传统作法 integer(2) a !fortran 77 传统作法传统作法未声明长度的未声明长度的变量变量,通常,通常编译器默认为长整型编译器默认为长整型;有的编译器支持;有的编译器支持1 byte的的整数变量。整数变量。另外的形式:另外的形式:integer a, b, cinteger: a, b=3 !声明语句中赋初值声明语句中赋初值 注意:整型变量只保存整数,实数的小数注意:整型变量只保存整数,实数的小数点后数据会自动省

6、略点后数据会自动省略变量名的隐含约定变量名的隐含约定 Fortran标准规定:标准规定:凡是以字母I, J, K, L, M, N六个字母开头的变量,未经声明默认为整型,其他字母开头的变量为实型。 未经声明的变量未经声明的变量 IMAX=6.6 IMAX=6 变量类型声明后,隐含约定不作用,但是声明仅在本程序单元内有效。即变量声明具有局域性(局部变量或全局变量) 3-2-2 实数(浮点数 real) 声明形式:声明形式:Real a !默认单精度(默认单精度(4 bytes) 单精度: real(kind=4) a !fortran 90 添加添加 real*4 a !fortran 77旧有

7、旧有 real(4) a !fortran 77旧有旧有双精度: real(kind=8) a !fortran 90 添加添加 real*8 a !fortran 77旧有旧有 real(8) a !fortran 77旧有旧有算式科学计数法表示科学计数法表示106, 0.1单精度的有效位数为单精度的有效位数为67位位双精度有效位数双精度有效位数15位位三角函数中三角函数中使用的角度为弧度,使用的角度为弧度,如果是变量必需是实型,不能是整型如果是变量必需是实型,不能是整型完整的数学函数完整的数学函数说明参见附录说明参见附录A注意输入参数的注意输入参数的类型要求及输出类型要求及输出的数据类型的

8、数据类型 3-2-3 复数(COMPLEX) 复数由实部和虚部组成,为浮点数保存Complex a !默认单精度默认单精度Complex(kind=4) a !单精度,单精度, fortran90添加添加Complex(kind=8) a !双精度,双精度, fortran90添加添加Complex*4 a !单精度,单精度,fortran 77旧有旧有Complex(4) a !单精度,单精度,fortran 77旧有旧有Complex*8 a !双精度,双精度,fortran 77旧有旧有Complex(8) a !双精度,双精度,fortran 77旧有旧有复数变量的赋值:复数变量的赋值

9、: a=(x,y) !a=x+yi 3-2-4字符及字符串(character) 字符类型是用来保存一个字符或一长串字符符所组成的字符类型是用来保存一个字符或一长串字符符所组成的“字符串字符串”时所使用的类型,每个字符占用一个字节。时所使用的类型,每个字符占用一个字节。Character a !单个字符单个字符Character(len=10) b !fortran 90 添加添加Character(10) c !fortran 77 旧有旧有Character*10 d !fortran 77 旧有旧有Character*(10) e !fortran 77 旧有旧有字符和字符串变量赋值:单

10、引号或双引号封装,内装内容属于数据,区分英语字母的大小写字符变量的操作:字符变量的操作:局部操作局部操作(起始位置:终止位置)(起始位置:终止位置)字符变量的操作:字符变量的操作:两个字符串连接两个字符串连接 /注意字符串的长度注意字符串的长度部分常用字符串函数部分常用字符串函数CHAR(num) 返回计算机上所使用的字符表上,与整数返回计算机上所使用的字符表上,与整数num所对应的字符所对应的字符 (PC ASCII码)码)ICHAR(char)返回字符表上与字符返回字符表上与字符char所对应的整数所对应的整数LEN(string)返回字符串返回字符串string的声明长度的声明长度LEN

11、_TRIM(string)返回字符串去除尾端的空格后,实际内容的返回字符串去除尾端的空格后,实际内容的长度长度INDEX(string, key)参数为两个字符串,返回子字符串参数为两个字符串,返回子字符串key在母在母字符串字符串string中第一次出现的位置中第一次出现的位置TRIM(string)返回把字符串返回把字符串string尾端的多余空格去除后尾端的多余空格去除后的字符串的字符串 3-2-5 逻辑变量(逻辑变量(logical) 声明(通常占用空间大小由编译器选择):声明(通常占用空间大小由编译器选择): LOGICAL a 赋值:赋值: a=.true. b=.false. !

12、注意前后分别要注意前后分别要加一个点加一个点显示 3-3 输入命令输入命令 (read) 从键盘或文件读入数据给变量从键盘或文件读入数据给变量 形式形式: read(*,*) a read(unit=5, fmt=*) a !最严谨的写法最严谨的写法 read(unit=5, *) a !键盘为默认的输入设备,输入号为键盘为默认的输入设备,输入号为5 read(*,*) a, b, c !多个变量值同时输入多个变量值同时输入数据输入注意事项:数据输入注意事项:1)输入的数据要与对应的变量的类型相一致)输入的数据要与对应的变量的类型相一致2) 多个数据同时输入可以逗号或空格(一个或多多个数据同时

13、输入可以逗号或空格(一个或多个),或者回车键,来间隔数据个),或者回车键,来间隔数据3)如果输入数据数目不足,计算机会等待直到完成;如果输入数据数目不足,计算机会等待直到完成;如果数据量超过,多余的数据不起作用如果数据量超过,多余的数据不起作用4)每个)每个read语句都是从新的输入行开始读语句都是从新的输入行开始读5)如果输入数据行中出现)如果输入数据行中出现“/”符号,表示输入终止符号,表示输入终止 3-4 格式化输入输出(格式化输入输出(FORMAT) 格式化输出的目的:把数据按照一定的格式来显格式化输出的目的:把数据按照一定的格式来显示示 某些读取数据的情况,要恰当的设置输入格式才某些

14、读取数据的情况,要恰当的设置输入格式才能得到正确的数据能得到正确的数据 设置格式采用设置格式采用FORMAT命令命令 3-4-1 格式化输出概论格式化输出概论形式:形式:Integer aWrite(*, 100) a100 format(I4) !此行可放在程序的任意位置此行可放在程序的任意位置Write(*, “(I4)”) a行号行号格式,第二种形式中格式,第二种形式中用双引号或单引号封用双引号或单引号封装装第二种形式的优缺点第二种形式的优缺点 优点:优点:1)减少程序的行数)减少程序的行数2)输出格式和)输出格式和write在一起,阅读较清楚在一起,阅读较清楚3)可以避免在程序代码中写

15、行号)可以避免在程序代码中写行号缺点:缺点:1)格式复杂时,编写很长)格式复杂时,编写很长2)在不同的输出语句使用相同格式时,程序代码重)在不同的输出语句使用相同格式时,程序代码重复复 3-4-2 详论格式化输出详论格式化输出 最常用的格式控制字符最常用的格式控制字符“I, F, E, A, X”Iw.m 整数的输出格式,总共占整数的输出格式,总共占w个字符宽度,至少有个字符宽度,至少有m个数字个数字Write(*, “(I5)”) 100 100Write(*, “(I3)”) 10000 *Write(*, “(I5.3)”) 10 010Fw.d 浮点数输出浮点数输出,总共占总共占w个字

16、符宽度,小数部分占个字符宽度,小数部分占m个字符宽个字符宽Write(*,”(F9.3)”) 124.45 124.450 Ew.dEe 科学计数法输出浮点数,总宽度科学计数法输出浮点数,总宽度w个字符,小数部分占个字符,小数部分占d个,个, 指数部分至少输出指数部分至少输出e个数字个数字Write(*, “(E15.7)”) 124.45 0.1234500E+03Write(*, “(E9.2E3)”) 12.34 0.12E+002Dw.d 与与Ew.d用法同,只是用法同,只是E换成换成DWrite(*, “(D9.2)”) 12.34 0.12D+02Aw 以以w个字符宽度来输出字符串

17、个字符宽度来输出字符串Write(*, “(A10)”) “Hello” HelloWrite(*, “(A10)”) a !和声明长度有关和声明长度有关 HelloWrite(*, “(A3”) “Hello” HelnX 输出位置向右移输出位置向右移n位位Write(*, “(5X, I3)”) 100 100Lw 以以w个字符宽输出个字符宽输出T或或FWrite(*, “(L4)”) .true. T 3-4-2 详论格式化输出详论格式化输出 3-4-2 详论格式化输出详论格式化输出/ 换行输出换行输出 write(*, “(I3/I3)” 10, 10 10 10Tc 把输出的位置移动

18、到本行的第把输出的位置移动到本行的第c个字节处个字节处Write(*,”(T3, I3)”) 100 100Write(*, “(10X, T3, I3)”) 100 100An 输出输出n个字符个字符write(*, “(A4, I3)”) ANS=, 10 !输出字符不足前面以空格添加,超过则舍弃输出字符不足前面以空格添加,超过则舍弃Write(*, 100) 10 !可以在!可以在format里直接写出里直接写出100 FORMAT(ANS=, I3) ANS= 10WRITE(*, “(ANS=, I3) ”) 10 !用双引号封装的用双引号封装的format, 字符串用单引号字符串用

19、单引号 ! 反之亦然反之亦然输出格式的写法技巧及注意事项输出格式的写法技巧及注意事项 一个输出语句中的重复格式一个输出语句中的重复格式 n(fmt) WRITE(*, “( 3(1XF5.2) )”) A, B, C 将输出格式存储在字符变量中将输出格式存储在字符变量中 格式设置要与输出数据的类型对应格式设置要与输出数据的类型对应 3-4-2 详论格式化输出详论格式化输出 格式化输出格式化输出print 与与write类似,只是不能只定输出位置类似,只是不能只定输出位置Print 100, a !使用行代码使用行代码100的的format语句来输出语句来输出print “(A10)”, “He

20、llo” !直接把格式字符串写在直接把格式字符串写在print中中 格式也用在输入语句(格式也用在输入语句(read)中中特别是:特别是:1)输入内容包含空格、逗号或)输入内容包含空格、逗号或/号号 2)从文件读入数据)从文件读入数据 3-5 声明的其他事项声明的其他事项 IMPLICIT 命令改变命令改变Fortran标准默认类型标准默认类型 FORTRAN中的变量可以不必声明直接使用,第一个字母为中的变量可以不必声明直接使用,第一个字母为I, J, K, L, M, N的被视为整型,其他视为浮点数的被视为整型,其他视为浮点数IMPLICIT NONE!加在所有声明语句之前,则所有变量都必须

21、声明再用!加在所有声明语句之前,则所有变量都必须声明再用IMPLICIT 类型类型(字母)字母)Implicit integer(a, b, c) !a, b,c开始的变量都为整型开始的变量都为整型Implicit integer(a-f, i) ! a-f, i开始的变量都为整型开始的变量都为整型Implicit real(m-p) ! M-p开始的变量都为浮点数开始的变量都为浮点数 IMPLICIT命令必须接在命令必须接在program命令的下一行,其他语句之前命令的下一行,其他语句之前 3-5 声明的其他事项声明的其他事项 常数的声明方法(常数的声明方法(PARAMETER)1) 常用的

22、参数设为常数参量,在程序中不能被改变,常用的参数设为常数参量,在程序中不能被改变,避免错误避免错误2)把不变的数据设为常数,可以增加执行速度)把不变的数据设为常数,可以增加执行速度 Real, parameter: pi=4.14159 !双冒号不能省略双冒号不能省略形容词形容词 3-5 声明的其他事项声明的其他事项 设置变量的初值设置变量的初值Fortran 90可在声明变量类型时,可在声明变量类型时,fortran 77用用DATA语句语句 3-5 声明的其他事项声明的其他事项 DATA语句在声明语句之后,语句中在变量名之后语句在声明语句之后,语句中在变量名之后用两个斜杠包罗数值,数值之间

23、以逗号相隔,并用两个斜杠包罗数值,数值之间以逗号相隔,并与变量名一一对应与变量名一一对应 3-5 声明的其他事项声明的其他事项 声明在程序中的结构声明在程序中的结构声明应放在所有可执行语句之前,声明应放在所有可执行语句之前,Data命令属于声命令属于声明的一部分;声明不被视为可执行语句。明的一部分;声明不被视为可执行语句。Program mainImplicit noneInteger aReal b, c, dData c,d /2.3, 4.5/Read (*,*) a从program或是impicit后面开始声明变量声明要在执行语句之前结束,此后不能再声明变量 3-6 混合运算混合运算类

24、型不完全相同的数值或变量之间的运算,如整数与浮点数类型不完全相同的数值或变量之间的运算,如整数与浮点数1)同类型的数值间的运算结果仍保持原类型同类型的数值间的运算结果仍保持原类型 1/2 0 ; 1.0/2.0 0.52) 不同类型的数值间的运算,低级类型转成高级类型不同类型的数值间的运算,低级类型转成高级类型 1.0/2 0.5 整型整型浮点数浮点数3)类型转换由左向右类型转换由左向右 1/4 *2.0 0.04) 可用库函数可用库函数 INT(R) 和和 REAL(I)改变数值类型改变数值类型 integer I=2 write(*,*) sin(real(i) 3-7 Fortran 9

25、0 的自定义数据类型自定义类型:用自定义类型:用type 命令创造命令创造 组合型数据组合型数据赋值可以整体设置 :a=person(“Peter”, 18, 180, 80, “Hefei, Anhui”)依顺序依顺序 name age height weight address 3-8 KIND的使用的使用声明中声明中KIND用来为变量向计算机申请内存字节空间用来为变量向计算机申请内存字节空间PC的编译器中,各类变量所保存的值域范围如下:的编译器中,各类变量所保存的值域范围如下:Integer(kind=1) -128127Integer(kind=2) -3276832767Intege

26、r(kind=4) -2147483648 2147483647Real(kind=4) 1.18*10-38 4.40*1038Real(kind=8) 2.23*10-308 1.79*10308FORTRAN 90有关有关kind的库函数,可以增加程序代的库函数,可以增加程序代码的跨平台能力码的跨平台能力 3-8 KIND的使用的使用SELECTED_INT_KIND(n)返回对应于记录返回对应于记录n位整数所需声明的位整数所需声明的kind值。超出值域,值。超出值域, 返回返回1。SELECTED_REAL_KIND(n, e)返回对应于记录返回对应于记录n位有效位数、指数达到位有效位

27、数、指数达到e位的浮点数说需要的位的浮点数说需要的kind值。有值。有效位数无法满足,返回效位数无法满足,返回-1;指数范围无法满足,返回指数范围无法满足,返回2;都无法满足,;都无法满足,返回返回-4. 在不同的机器或编译器上,保存同样有效位数的数值,所在不同的机器或编译器上,保存同样有效位数的数值,所使用的使用的kind值不一定相同;不同机型(值不一定相同;不同机型(PC或工作站)所能或工作站)所能保存的值域也可能不同。保存的值域也可能不同。 查询出各种数值的范围所需的查询出各种数值的范围所需的kind值,可以有效地使用内值,可以有效地使用内存空间存空间;保证程序代码的通用性保证程序代码的通用性 3-8 KIND的使用的使用1. 下面哪些为有效的变量名或程序名?下面哪些为有效的变量名或程序名?Name address phone_# real main 4.1Iou iou_2 4gotten packet for/22. 判断下列输入、输出语句是否正确,如果不正确,请说明

温馨提示

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

评论

0/150

提交评论