Fortran 程序
FORTRAN程序由一个主程序或一个主程序与若干个子程序组成。主程序与子程序都是一个独立的程序单位,称为一个程序模块。
1、 基本结构
1、程序分段:一个程序由一个或若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。子程序是实现模块化的有效方法。
2、每一个程序单位都是以“END”语句结束。主程序段中的END语句作用是使程序“停止运行”;子程序段中的END语句是“使流程返回调用程序”。
3、一个程序有且仅有一个主程序段,可以有0个或若干个子程序段。
4、一个程序单位包括若干行。FORTRAN行分为两类:即语句行和非语句行。
语句行由一个FORTRAN语句组成。FORTRAN语句又可分为执行语句和非执行语句。
非语句行,即为注释行。
5、FORTRAN程序的基本成份是语句。一行只能有一个语句。若一个语句太长,一行内写不下,可分写在几行上,但要用“续行标志”。
6、FORTRAN程序中语句允许有标号,以便被其他句引用。
7、一个程序单位中各类语句的位置是有一定规则的。一般是非执行语句放在所有可执行语句之前。
2、书写格式(固定格式)
FORTRAN语言程序的书写格式要求很严格。一个程序由多行组成,但每一行上都是80列,每一行上最多可以书写80个字符。其中这80列可以分为四个区:
(1)标号区:第1列至第5列。标号最多由五位数组成。在标号区内的空格不起作用。标号的大小与所在行的位盟也无关。标号不能超越出标号区的范围。
(2)续行区:也称为续行标志区,位于第6列。如果在一行的第6列上写一个非零和非空格的任一FORTRAN字符,则表明该行是其上一行的续行。一个语句最多可以有19个续行(共1320个字符)。使用续行时,可以在上一行的任一位置中断而直接转到下一行。
(3)语句区:位于第7列到第72列。我们不必须在第7列就开始写语句,可以从第8列或第9列开始写。但在一行中,只能写一个语句,语句区内的空格是无效的。如果语句太长,一行写不下,可以使用续行。
(4)注释区:位于第73列到第80列。它是用于程序的注释或标志。当然,可以用注释行对一个FORTRAN程序作注释。注释区不是程序的一部分,编译时对这个区的内容不予翻译。
程序中的行可以分为以下几类:注释行、起始行、继续行、结束行
固定格式 | 自由格式 | |
---|---|---|
英文 | Fixed-format | Free-format |
扩展名 | .for .f … | .f90 .f95 .f03 … |
语法 | F66、F77、F90、F95、F03、F08 | F66、F77、F90、F95、F03、F08 |
格式 | 代码从第7格开始 | 任意 |
续行 | 在第6格键入一个非0字符 | 在前一行最后加入& |
行宽 | 72 | 132 |
注释 | 行首行键入C/c/* | 注释前打感叹号 |
说明 | 不推荐,已废止 | 推荐 |
3、语句分类
FORTRAN的所有语句分为可执行语句和非执行语句两大类。
可执行语句能使FORTRAN编译程序产生目的程序指令。FORTRAN主要有以下三种可执行语句:
①赋值语句;
②控制语句;
③输入/输出语句。
非执行语句为FORTRAN编译程序描述程序的数据类型和排列顺序,并为目的程序提供有关输入/输出格式和数据初始化信息。非执行语句有五种;
①说明语句;
② 数据初始化语句;
③格式(FORMAT)语句;
④函数(FUNCTION)定义语句;
⑤子程序说明语句。
下面给出语句顺序所应遵守的一般原则:
(1)程序段的段头语句,只能出现在每个程序段开始的位置。如:PROGRAM、FUNCTI0N、SUBROUTINE、BLOCK、DATA、MODULE等;
(2)如果出现USE语句,则只能出现在段头语句之后、其他语句之前;
(3)IMPLICIT NONE语句应紧跟在USE语句之后,在其他说明语句之前;
(4)FORMAT语句和DATA语句也可以放置在可执行语句中间,不过把DATA语句放置在可执行语句中间是一种过时的做法;
(5)PARAMETER语句可以出现在DATA语句和可执行语句之前、IMPLICIT NONE语句之后的任何位置上;
(6)其他说明语句应出现在DATA语句和可执行语句之前;
4、变量类型
- 整型(Integer)
- 实型(Real)
- 字符型(Character)
- Complex类型(本质是real)
- 派生型(type)
整型无误差,实型有误差
字符型接近人类语言 - 声明变量基本格式
类型(属性),形容词:变量名1=值1,变量名2=值2
注意:不用在每行语句后面加分号
Kind
- Kind正式名称叫“种别”,是区分用一种数据类型,但不同长度(精度或编码方式)的一种代号。
- Kind受编译器影响,具体数值可能会有差异。
- Kind对不同的变量类型,表达含义不同:
变量类型 | 表达含义 |
---|---|
整型 | 影响其能表达的最大范围 |
Real Complex | 影响实数的最大范围和最小精度 |
Character | 编码 |
Logical | 长度 |
implicit
implicit可以将程序中以某一字母开头的所有变量指定为所需类型。指定了以A与C字母开头的所有变量都是整型变量,以字母I至K开头的所有变量为实型变量。
类型说明语句和隐含说明语句只在本程序中有效,放在程序单位所有可执行语句的前面,IMPLICIT语句又必须在所有的类型说明语句的前面。确定变量类型的三种方法中,类型说明语句的优先级最高,**I-N规则(ijklmn开头为整型,其他为实型)**的优先级最低。
implicit none
设计任何和隐含说明语句无效,都有变量都要显式地人工声明,不能未声明就直接使用,有效地避免了可能的大量错误。