Fortran程序简例

1.2.1编程实例

为了对Fortran程序有一个初步了解,下面先介绍几个简单的Fortran源程序。

a)    基本语句

[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行是输入语句,第56行是赋值部分,第7行是打印输出语句,最后是程序结束。注意F77的固定书写格式和F90的自由格式。F90中用“;”将两行并为一行。

 

PROGRAM语句  宣布程序开始,其后跟程序名。可省略。

REAL语句            定义a,b,...等变量为实数型数据。如为整数型,则用INTEGER定义。

变量名                  可用a,b等无具体意义的文字,或用average_value等英文缩写。使用的字符和文字长度有具体规定。

输入输出语句      可以用以下任一种默认格式,注意星号(*)和逗号(,)。星号意指默认的输入输出硬件(键盘和屏幕)及格式。

READ *,       变量名

READ(*,*)    变量名

PRINT *,      变量或常数,关系式

WRITE(*,*)  变量或常数,关系式

赋值语句 将等式右边的变量取值赋予左边的变量。

变量 = 变量、常数、关系式

例:sum = sum + x

算术运算

2项运算:加(+),减(-),乘(*),除(/),乘方(**)

运算的优先顺序:加,减 乘,除 乘方,括号中优先( )

单项运算:(例 -a

数据类型 按定义有整数、实数、复数、双精度数等。

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=1312.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可采用自由格式。