Fortra 语言 第四章输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
未声明长度的变量,通常编译器默认为长整型;有的编译器支持1 byte的 整数变量。
另外的形式: integer a, b, c integer:: a, b=3 !声明语句中赋初值
注意:整型变量只保存整数,实数的小数 点后数据会自动省略
变量名的隐含约定
• Fortran标准规定:凡是以字母I, J, K, L, M, N六个 字母开头的变量,未经声明默认为整型,其他字母 开头的变量为实型。
Write(*, 100) 10
!可以在format里直接写出
100 FORMAT(‘ANS=’, I3)
ANS= ■10
WRITE(*, “(‘ANS=’, I3) ”) 10 !用双引号封装的format, 字符串用单引号
! 反之亦然
输出格式的写法技巧及注意事项
• 一个输出语句中的重复格式 n(fmt)
Fortran 95 程序设计
第三章 输入输出及声明
程序结构
程序开始
PROGRAM MAIN MAIN是自定义名称
…….
主程序代码
WRITE(*,*) “HELLO”
……
程序终止
STOP
此行可省略
主程序代码结束 END
END
( FORTRAN 77)
END PROGRAM
END PROGRAM MAIN
未经声明的变量 IMAX=6.6
IMAX=6
• 变量类型声明后,隐含约定不作用,但是声明仅在 本程序单元内有效。即变量声明具有局域性(局部 变量或全局变量)
§ 3-2-2 实数(浮点数 real)
• 声明形式:
Real a
!默认单精度(4 bytes)
单精度: real(kind=4) a
!fortran 90 添加
显示
§ 3-3 输入命令 (read)
• 从键盘或文件读入数据给变量
• 形式: read(*,*) a read(unit=5, fmt=*) a !最严谨的写法
read(unit=5, *) a
!键盘为默认的输入设备,输入号为5
read(*,*) a, b, c
!多个变量值同时输入
•数据输入注意事项:
4) 程序中辨认变量时,不会区分它的大小写。 例:x1, va_2, 3p, program, print
主程序名为PX 中的变量名不能有PX或px
§ 3-2-1 整数类型的声明
变量名称 声明数据类型
赋值语句,数值或数 学表达式
输出变量值
整型变量的声明形式: 长整型(4个字节)
Integer(kind=4) a !fortran 90 添加
பைடு நூலகம்
■10
■10
Tc
把输出的位置移动到本行的第c个字节处
Write(*,”(T3, I3)”) 100
■■■100
Write(*, “(10X, T3, I3)”) 100
■■■100
An
输出n个字符
write(*, “(A4, I3)”) ‘ANS=‘, 10 !输出字符不足前面以空格添加,超过则舍弃
1)输入的数据要与对应的变量的类型相一致 2) 多个数据同时输入可以逗号或空格(一个或多
个),或者回车键,来间隔数据 3)如果输入数据数目不足,计算机会等待直到完成;
如果数据量超过,多余的数据不起作用 4)每个read语句都是从新的输入行开始读 5)如果输入数据行中出现“/”符号,表示输入终止
§ 3-4 格式化输入输出(FORMAT)
Character*10
d !fortran 77 旧有
Character*(10) e !fortran 77 旧有
字符和字符串变量赋值:单引号或双引号封装,内装 内容属于数据,区分英语字母的大小写
字符变量的操作: ★局部操作
(起始位置:终止位置)
字符变量的操作: ★两个字符串连接 //
注意字符串的长度
声明应放在所有可执行语句之前,Data命令属于声 明的一部分;声明不被视为可执行语句。
Program main
Implicit none Integer a
• 格式也用在输入语句(read)中 特别是:1)输入内容包含空格、逗号或‘/’号
2)从文件读入数据
§ 3-5 声明的其他事项
• IMPLICIT 命令--改变Fortran标准默认类型
FORTRAN中的变量可以不必声明直接使用,第一个字母为I, J, K, L, M, N的被视为整型,其他视为浮点数
integer*4
a !fortran 77 传统作法
integer(4)
a !fortran 77 传统作法
短整型(2个字节)
Integer(kind=2) a
integer*2
a
integer(2)
a
!fortran 90 添加 !fortran 77 传统作法 !fortran 77 传统作法
Write(*, “(I4)”) a
格式,第二种形式中 用双引号或单引号封
装
第二种形式的优缺点
• 优点: 1)减少程序的行数 2)输出格式和write在一起,阅读较清楚 3)可以避免在程序代码中写行号 缺点: 1)格式复杂时,编写很长 2)在不同的输出语句使用相同格式时,程序代码重
复
§ 3-4-2 详论格式化输出
§ 4.1 简单的输出: WRITE命令
Write(*,*) “就这么简单“
Write(unit=*, fmt=*) “就这么简单“ ! 完整写法
Write(6, *) “string”
!严谨一些的写法
Write(unit=6, fmt=*) “STRING”
!最严谨的写法
WRITE(*,*) “HELLO”, “FRIENDS!”
Write(*, “(A3”) “Hello”
Hel
nX
输出位置向右移n位
Write(*, “(5X, I3)”) 100
■■■■■ 100
Lw
以w个字符宽输出T或F
Write(*, “(L4)”) .true.
■■■T
§ 3-4-2 详论格式化输出
/
换行输出 write(*, “(I3//I3)” 10, 10
! M-p开始的变量都为浮点数
IMPLICIT命令必须接在program命令的下一行,其他语句之前
§ 3-5 声明的其他事项
• 常数的声明方法(PARAMETER)
1) 常用的参数设为常数参量,在程序中不能被改变, 避免错误
2)把不变的数据设为常数,可以增加执行速度
Real, parameter:: pi=4.14159 !双冒号不能省略
§ 3-2 声明
声明:在程序代码中,向编译器要求预留存放数据 (变量和常量)的内存空间
变量、常量的命名原则
1) 名称以使用英文字母为原则,可以内含下划线或数字, 但是前缀必须是英文字母
2) 名称的长度,在77标准中至少支持6个字符长,90标准中 至少支持31个字符长。
3) 变量名最好不要和Fortran的执行命令同名,也不能和主 程序的名称或是前面声明过的变量同名。
WRITE(*,*) “MY NAME IS “”PETER”.”
WRITE(*,*) ‘That’’s right’
注意:
1)每执行完一个write命令后,会自动换行 2)Fortran 77只能使用单引号封装的字符串 3)引号封装的字符串中含有同类的引号要连
用才能输出
PRINT命令
print *, “hello” 比write少了一个*号,只能在屏幕输出
IMPLICIT NONE
!加在所有声明语句之前,则所有变量都必须声明再用
IMPLICIT 类型(字母)
Implicit integer(a, b, c) !a, b,c开始的变量都为整型
Implicit integer(a-f, i)
! a-f, i开始的变量都为整型
Implicit real(m-p)
WRITE(*, “( 3(1XF5.2) )”) A, B, C
• 将输出格式存储在字符变量中
• 格式设置要与输出数据的类型对应
§ 3-4-2 详论格式化输出
• 格式化输出print 与write类似,只是不能只定输出位置
Print 100, a
!使用行代码100的format语句来输出
print “(A10)”, “Hello” !直接把格式字符串写在print中
§ 3-4-2 详论格式化输出
Dw.d
与Ew.d用法同,只是E换成D
Write(*, “(D9.2)”) 12.34
■0.12D+02
Aw
以w个字符宽度来输出字符串
Write(*, “(A10)”) “Hello” Write(*, “(A10)”) a !和声明长度有关
■■■■■Hello Hello■■■■■
返回字符串去除尾端的空格后,实际内容的 长度
参数为两个字符串,返回子字符串key在母 字符串string中第一次出现的位置
返回把字符串string尾端的多余空格去除后 的字符串
§ 3-2-5 逻辑变量(logical)
• 声明(通常占用空间大小由编译器选择): LOGICAL a
• 赋值: a=.true. b=.false. !注意前后分别要加一个点
real*4 a
!fortran 77旧有
real(4) a
!fortran 77旧有
双精度: real(kind=8) a
!fortran 90 添加
real*8 a
!fortran 77旧有
real(8) a
!fortran 77旧有
算式
科学计数法表示106, 0.1 单精度的有效位数为6~7位
部分常用字符串函数
CHAR(num) ICHAR(char)
返回计算机上所使用的字符表上,与整数 num所对应的字符 (PC ASCII码)
返回字符表上与字符char所对应的整数
LEN(string)
返回字符串string的声明长度
LEN_TRIM(string) INDEX(string, key) TRIM(string)
双精度有效位数15位
三角函数中 使用的角度为弧度, 如果是变量必需是实型,不能是整型
完整的数学函数 说明参见附录A 注意输入参数的 类型要求及输出 的数据类型
§ 3-2-3 复数(COMPLEX)
• 复数由实部和虚部组成,为浮点数保存
Complex a
!默认单精度
Complex(kind=4) a !单精度, fortran90添加
§ 3-2-4字符及字符串(character)
• 字符类型是用来保存一个字符或一长串字符符所组成的 “字符串”时所使用的类型,每个字符占用一个字节。
Character a
!单个字符
Character(len=10) b !fortran 90 添加
Character(10) c !fortran 77 旧有
形容词
§ 3-5 声明的其他事项
• 设置变量的初值
Fortran 90可在声明变量类型时,fortran 77用DATA语句
§ 3-5 声明的其他事项
• DATA语句在声明语句之后,语句中在变量名之后 用两个斜杠包罗数值,数值之间以逗号相隔,并 与变量名一一对应
§ 3-5 声明的其他事项
• 声明在程序中的结构
• 最常用的格式控制字符“I, F, E, A, X”
Iw[.m]
整数的输出格式,总共占w个字符宽度,至少有m个数字
Write(*, “(I5)”) 100
■■100
Write(*, “(I3)”) 10000
***
Write(*, “(I5.3)”) 10
■■010
Fw.d
浮点数输出,总共占w个字符宽度,小数部分占m个字符宽
Write(*,”(F9.3)”) 124.45
■■124.450
Ew.d[Ee] 科学计数法输出浮点数,总宽度w个字符,小数部分占d
个, 指数部分至少输出e个数字
Write(*, “(E15.7)”) 124.45
■■0.1234500E+03
Write(*, “(E9.2E3)”) 12.34
0.12E+002
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旧有
复数变量的赋值: a=(x,y) !a=x+yi
• 格式化输出的目的:把数据按照一定的格式来显 示
• 某些读取数据的情况,要恰当的设置输入格式才 能得到正确的数据
• 设置格式采用--FORMAT命令
§ 3-4-1 格式化输出概论
• 形式:
Integer a Write(*, 100) a 100 format(I4)
行号
!此行可放在程序的任意位置