_fortran-第二章 fortran基础知识

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

没有初始化的变量可能带来 严重问题!
有三种方法初始化变量: 赋值语句、READ 语句和类型声明语句中的初始化。
2.10 IMPLICIT NONE 语句
•IMPLICIT NONE 语句出现在类型声明语句之前。
•IMPLICIT NONE 语句使默认类型功能丧失。
•当程序含有IMPLICIT NONE 语句,没有显式类型 声明语的变量被认为是错的。
Fortran95/2003程序设计
第二章 Fortran 基础知识
本章学习目标: • 了解Fortran 中的合法字符 • 了解Fortran 语句和Fortran 程序基本结构 • 了解可执行和不可执行语句之间的区别 • 了解常量与变量的区别 • 理解INTEGER、REAL 和CHARACTER 数据类 型的区别 • 掌握默认和显式类型说明的不同,理解为什么 总该使用显式类型说明 • 了解Fortran 赋值语句的结构
一些内置函数
2.8 表控(list-directed百度文库输入和输出语句
输入语句( input statement) 从输入设备读入一个或 多个数值,并将其存储到指定的变量中。输入设备 可以是交互环境中的键盘,或批处理环境中的磁盘 文件。输出语句( output statement) 写一个或多个 数值到输出设备。输出设备可以是交互环境的显示 屏幕,或批处理环境的输出设备。
输入数据
1,2,3,4 5,6,7,8
•表控输出(list-directed output )意味着输出列 表中的值类型决定输出数据的格式,如:
Program output_example Integer::ix Real :: theta ix=1 Test=.true. Theta= 3.141593 WRITE (*,*) „ix= ‟, ix WRITE (*,*) „THETA= ‟,theta WRITE (*,*) „COS(THETA)= ‟, cos(theta) WRITE (*,*) REAL(ix) , NINT(theta) END PROGRAM output_example
2.13.1 良好编程习惯
l.尽可能给变量取有意义的名字。以便一看就可以理 解变量的作用。如day, month, money 。 2. 在程序中始终用IMPLICIT NONE 语旬,以便编译 时,编译器发现打字错误。 3. 在编写的程序中明确地注释程序的每个变量,要 注意每个物理量相应的计量单位。 4. 常数的取值要始终一致。例如,不要在程序某点 π取值3.14. 而在另二个地方π又取值3.141593 。为 保证一致性,要用常数,需要的时候就引用常数名 即可。
要特别注意,以免出现不可预知的错误结果。
2.6.2 实数运算
•实数运算总是产生实型结果,如: 3.0/3.=0.75, 4./4.0=1.0, 1.0/3.0=0.333333,3.0/2=1.5 注意,在一些计算机上,由于字长所限, 会出现
3.0*(1.0 / 3.0) 1.0
但是
2.0*(1.0 / 2.0) 1.0
•终止部分由STOP 和END PROGRAM 语句组 成。STOP 语句告诉计算机停止运行。END PROGRAM 语句告诉编译器程序中不再有语 句需要编译,并自动地产生一条STOP 语句, 因此,前面的 STOP 语句可省略。
2.5 常数与变量
•Fortran 常数(constant ,也称为常量)是数据 对象,它定义在程序执行之前,且在程序执 行期间取值不可改变。
•Fortran 中有下列标准算术操作符:
+ * / ** 加法: 减法: 乘法: 除法 指数运算: a+b a-b a*b a/b a**b
•注意:
•两个操作符不可以连续出现。a*+b •乘法符号不能省略。 a(x+y) •圆括号把一组数据项按要求组合在一起。 2.6.1 整型运算 整型运算的结果始终是整型。如3/4=0, 4/4=1, 5/4=1, 9/4=2
•Fortran 变量( variable) 是一个数据对象,它 的值在程序执行期间可以改变。
•程序单元中的每个Fortran 变量有唯一的名字, 变量名是内存中特定位置的标号,该标号方便 人类记忆和使用。Fortran 95 中的变量名可以 长达31 个字符,由字母、数字和下划线字符的 任意组合构成,但是名字的第一个字符必须是 字母。 •编程时,给变 量取有意义的名 字
• 掌握整数运算和实数运算的区别 • 了解Fortran 操作符号的运算级别 • 掌握Fortran 怎样计算混合运算表达式 • 掌握什么是内置函数和怎样使用它们 • 了解怎样使用表控输入和输出语句 • 了解为什么使用IMPLICIT NONE 语句很重要
2.1 Fortran 字符集
Fortran 95字符集由86 个符号组成,Fortran 2003字符集由97 个符号组成:
•变量的类型也可以在程序开头的声明部分显式 地定义,如
INTEHER :: varl [, var2 , var3,…] REAL :: varl [, var2 , var3,…] CHARACTER (len=<len>) :: varl [, var2 , var3 , ...]
•常数命名可以在类型声明语句中用 PARAMETER 属性来创建:
•程序的每条READ 语句从输入数据的一个新 行开始读取。假如前一输入行的数据有遗留,那么这
些数据会被抛弃。
PROGRAM input example 2 INTEGER::i, j, k,l READ (*,*)i, j READ (*,*) k,l END PROGRAM input example 2
语句标号可以是1 ~99999 之间的任何一个 数字。 如果使用语句标号,它在程序单元中必须是 唯一的。 •感叹号后面跟随的字符是注释( comment) , Fortran 编译器不编译注释。
2.4 Fortran 程序结构 声明部分
执行部分
终止部分
•声明部分由不可执行语句组成,位于程序的开 头,定义程序名和程序引用的数据以及变量的 类型。 •Fortran 95 的程序名可长达31 个字符,可 以是宇母、数字和下划线( _ )任意组合, 但是第一个字符必须是字母。
当x为整数时表示x个y相乘,当x为实数时,表示
exp( x *ln y )
2.7 内置函数
•内置函数(intrinsic function,或自带函 数):许多最通用的函数直接内置在 Fortran 语言中。
•外部函数(external function) 或内部函数 (internal function):用户定义的函数。 •Fortran 函数的输入参数( argument) , 出现在函数名后紧跟随的圆括号中,函数 的输出是单个数据、逻辑值或字符串。
•整型数据类型的常数和变量常用计算机中的 单个字节存储。
•实型常数和变量
•几乎所有的计算机都支持符合IEEE 标准 754 的浮点数。
•PC 编译器既支持32 位实数也支持64 位实数.
2.5.3 字符常数和变量 •单引号或双引号之间的字符被称为字符文本 ( character context)。字符文本可以包含计算 机上的任何字符,不仅仅是86 (97)个Fortran 字符集。 •如果字符串中包含 ’,则可以用两个连续 的单引号来表示。如: ' Tom"s girl friend' “Tom"s girl friend”
2.11 程序举例
例1:设计一个Fortran 程序,读取输入的 华氏温度,转换为开氏温度。 5 o o T ( C ) T ( F ) 32.0 273.15 9
例2:编写程序,读取碳14 在样本中的剩余 百分比,计算样本的年龄,打印出计算结果, 并给出计量单位。
Q tdecay log Q0 其中,Q为当前放射性材料量,Q0为初始初 始量,碳14的衰减常数λ为0.00012097/年。
•Fortran 不区分字母大小写。
2.3 Fortran 语句结构
语句有两种基本类型:可执行语句( executable) 和不可执行语句( unexecutable) 。
•Fortran 语句可以放在一行的任意位置,每 行可以长达132 个字符。如果语句太长,不适 合放在一行,那么可以用&符号标记在下一行 继续这行的书写。
5. 保证给所有常数指定所用机器支持的相应精度。 例如, π取值3.141 593. 而不是3.14 。
6. 实际连续变化的量不该用整型数据来计算,如距 离、时间等。仅对固定值使用整型数,如计数器。
7. 除指数运算外,尽量不要使用混合模式运算。如 果在单个表达式中必须混合整数和实数,用内置函 数REAL, INI, NINI. CEILING 和FLOOR 显式转换。 8. 必要的时候用更多的圆括号来改进表达式的可读 性。 9. 总是回写用键盘输入的数据,以保证它们被正确 地键入和处理。
2.6.4 混合运算 11/ 4
1 1.0 1.25
1.0 1 / 4 1 1.0 / 4
•Fortran 95/2003 含有五种转换函数,使得 可以显式地控制整数和实数之间的转换
例如,对于实数2.9995 和-2.9995 :
2.6.5 混合运算和表达式 例如,result=y**x
2.5.4 默认和显式变量类型 •有两种方法可以定义变量的类型:默认式和显 式。 •如果在程序中没有明确指定变量类型,那么就 是默认式定义变量类型:
任何以字母i,j,k,l,m,n 开头的变量名假 定为整型,其他字母开头的变量名则 假定为实型。
•这一类型默认习惯从1954 年FORTRAN I 就开始启用。注意, 默认情况下没有变量的类型为CHARACTER,因为在 FORTRAN 1 中不存在该数据类型!
表控输出语句的输 出不是很漂亮。打 印出的值没有按整 齐的列输出,不能 控制实数显示数据 的格式。
•输出结果为:
ix= 1 THETA= 3.141593 COS(THETA)= -1.000000 1.000000 3
2.9 变量初始化
在Fortran 95/2003 中没有给未初始化的变量定 义值。一些编译器自动地设置没有初始化变量 为0 ,而有些编译器设置它们为任意值。一些旧 版的Fortran 编译器让未初始化的变量保留它所 在程序单元前面己经存在的数据值。
1
2.12 调试Fortran 程序 在调试Fortran 程序时会遇到三种错误: 1 语法错误(syntax error) 。如拼写错或标点 符号错,在编译时被编译器检测出来。 2 运行错误(run-time error) ,当程序执行时 企图做非法运算操作,则发生运行错误(例如, 除以0) 。这些错误导致程序执行时异常中断。 3 逻辑错误(logical error ),程序能够正常编译 和运行,但是结果是错误的。
PROGRAM input example INTEGER ;; i , j REAL a CHARACTER(len=12) chars READ (*,*) i , j , a , chars END PROGRAM input example 1, 2, 3.,' this one.' 1, 2,.' this one.' ,3.
type , PARAMETER name=value [, name2= value2 , ...]
type 是常数的类型(整型、实型、逻辑型或字符型)
CHARACTER, PARAMETER :: ERROR MESSAGE= 'Unknown error!'
2.6 赋值语句和算术运算
variable name = expression i=i+1
•Fortran 有5 个自带或"内置"的常数和变量数 据类型,其中三个对数字有效(INTEGRE, REAL 和COMPLEX) ,一个是逻辑的(LOGICAL) ,还 有一个是字符串组成的(CHARACTER) •除内置数据类型以外, Fortran 允许程序员定 义派生数据类型(derived data type)
相关文档
最新文档