Fortran程序简例
1.2.1编程实例
为了对Fortran程序有一个初步了解,下面先介绍几个简单的Fortran源程序。
[例1.1] 输入两个数,求算数平均和几何平均值。[e_121_01.f][e_121_01.f90]
[计算例]
1.0 2.0
←键盘输入(a,b)值
1.500000 1.414214
←计算结果输出至屏幕
程序説明:
程序中第1行是注释行,对程序起说明作用。F77注释行是以“C”或“*”作为该行第一个字符的,F90可在任意一行末以“!”开始作为注释符。第2行是主程序名,第3行是变量类型定义,第4行是输入语句,第5-6行是赋值部分,第7行是打印输出语句,最后是程序结束。注意F77的固定书写格式和F90的自由格式。F90中用“;”将两行并为一行。
PROGRAM语句: 宣布程序开始,其后跟程序名。可省略。
REAL语句: 定义a,b,...等变量为实数型数据。如为整数型,则用INTEGER定义。
变量名: 可用a,b等无具体意义的文字,或用average_value等英文缩写。使用的字符和文字长度有具体规定。
输入输出语句: 可以用以下任一种默认格式,注意星号(*)和逗号(,)。星号意指默认的输入输出硬件(键盘和屏幕)及格式。
READ *, 变量名
READ(*,*) 变量名
PRINT *, 变量或常数,关系式
WRITE(*,*) 变量或常数,关系式
赋值语句: 将等式右边的变量取值赋予左边的变量。
变量 = 变量、常数、关系式
例:sum = sum + x
算术运算:
2项运算:加(+),减(-),乘(*),除(/),乘方(**)。
运算的优先顺序:加,减 < 乘,除 < 乘方,括号中优先( )。
单项运算:(例 -a)
数据类型: 按定义有整数、实数、复数、双精度数等。
[例1.2] 输入圆錐底面半径r和高h,求体积和表面积。[e_121_02.f90]
[计算例]
Input
radius r and height h ? ← 提示待输入数据的物理含义
3.0
5.2
Volume = 49.00885
← 打印计算值
Area = 84.85442
数据的输入:READ * 语句执行时进入等待数据输入的状态。数个数据输入时以英文逗号、空格或换行符作区别,单个数据中间不能有空格。
字符的输出:在执行READ语句时,计算机已经进入等待数据输入的状态,但它不会给出任何提示。除了程序员以外,谁也不会知道需要输入什么数据,即使是程序员自己可能也会忘记。另外,PRINT语句打印的数据到到底是什么物理含义也需指明。因此,需要输出文字内容。
PRINT
*, 字符常量
WRITE(*,*) 字符常量
字符常量: 用' '或" "括起来的文字字符。
[例1.3] 已知放射性元素的半衰期,求给定时间后的衰减量。[e_121_03.f90]
[例1.4] 给定一整数,求其自平方至5次乗方的各次乘方。[e_121_04.f90]
[例1.5] 函数的计算。[e_121_05.f90]
[例1.6] 分别求半径R=1,3,12.5时的圆周长。此源程序由二部分组成:主程序和子程序。[e_121_06.f90]
1.2.2 Fortran程序的特点
从以上例子中可以看到:
一个Fortran程序由一个或若干个程序单位组成。主程序和辅程序分别是一个独立的程序单位。主程序单元起整体控制作用,各辅程序单元完成总问题中的一个子问题。
每一个程序单位都是以END语句结束的。END既是一个程序单位的结束标志,又是一个独立的语句(结束语句)。主程序中的END语句的作用是使程序“停止运行”。辅程序中的END语句是“使流程返回调用程序”。
一个程序单位包括若干行。
F77行分为下面两类。F77规定,一行只能写一个语句,一行中不能写几个语句。如果一个语句太长,一行内写不下的话,可以写在继续行(要用“续行标志”)
语句行。由一个Fortran语句组成, Fortran语句分为执行语句和非执行语句。执行语句使计算机在运行时产生某些操作,如赋值语句、打印语句等。非执行语句(包括说明语句,数据语句等)将有关信息通知编译系统,以便在编译时作出相应的处理,例如类型说明语句、函数子程序语句等。Fortran程序的基本成份是语句。
非语句行,即注释行。它不是Fortran语句,它不被翻译成机器目标指令。不产生任何机器操作。它仅仅是为了人们阅读程序的方便而加到程序中的。一个程序中注释行的数目不受限制,根据需要而定。但一个程序单位不能只由注释行组成。注释行的内容完全是根据程序设计人员需要而写的,一般是为程序(或程序中一部分)的作用作注释以易于理解程序。
F90行不分类。注释可以写在任一行末尾,而且一行不限语句数,可以将几个F77行合并写入一行。这样,极大地简化了程序写法,使得程序可以编写得更为清晰明了。因此F90的格式较F77有柔软性。
Fortran程序中的语句可以有标号。一个语句有否标号是根据需要而定,其作用是标志一个语句以便被其它语句引用。在同一个程序单元中不能有两个相同标号的语句。标号不影响语句的执行顺序。但在F90中因为提倡结构化程序设计,一般不使用标号。
一个程序单位中各类语句的位置是有一定规定的。例如PROGRAM语句应是主程序的第一个语句。FUNCTION语句是函数子程序的第一个语句,END语句只能是程序单位中最后一行。程序中语句执行的顺序一般依照它们在程序中的先后位置而定。
F77源程序必须按固定格式书写,即源程序中哪些内容应写在一行中的哪一列(或哪几列上)有严格的规定。而F90可采用自由格式。