Fortran 语法
Fortran 程序由一系列程序单元组成,如主程序、模块和外部子程序或过程。
每个程序包含一个主程序,可能包含也可能不包含其他程序单元。主程序的语法如下:
program program_name
implicit none
! type declaration statements
! executable statements
end program program_name
Fortran 中的一个简单程序
让我们编写一个程序,将两个数字相加并打印结果:
program addNumbers
! This simple program adds two numbers
implicit none
! Type declarations
real :: a, b, result
! Executable statements
a = 12.0
b = 15.0
result = a + b
print *, 'The total is ', result
end program addNumbers
当你编译并执行上述程序时,它会产生以下结果:
The total is 27.0000000
要注意
- 所有 Fortran 程序都以关键字 program 开头,以关键字 end program 结尾,后跟程序名称。
- 隐式 none 语句允许编译器检查是否正确声明了所有变量类型。您必须在每个程序的开头始终使用隐式 none。
- Fortran 中的注释以感叹号(!)开头,因为编译器会忽略其后的所有字符(字符串中除外)。
- print* 命令在屏幕上显示数据。
- 代码行的缩进是保持程序可读性的良好做法。
- Fortran 允许大写和小写字母。Fortran 不区分大小写,s 除外
基础
Fortran 的基本字符集包含:
- 字母 A…Z 和 a…z
- 数字 0…9
- 下划线(_)字符
- 特殊字符 = : + blank - * / ( ) [ ] , . $ ‘ ! “ % & ; < > ?
token 由基本字符集中的字符组成。token 可以是关键字、标识符、常量、字符串文字或符号。
程序语句由 token 组成。
标识符
标识符是用于标识变量、过程或任何其他用户定义项的名称。Fortran中的名称必须遵循以下规则:
- 它不能超过 31 个字符。
- 它必须由字母数字字符(字母表中的所有字母以及数字 0 到 9)和下划线(_)组成。
- 名字的第一个字符必须是字母。
- 名称不区分大小写
关键词
关键字是为语言保留的特殊单词。这些保留字不能用作标识符或名称。
下表列出了 Fortran 关键字
non-I/O 关键字 | ||||
---|---|---|---|---|
allocatable | allocate | assign | assignment | block data |
call | case | character | common | complex |
contains | continue | cycle | data | deallocate |
default | do | double precision | else | else if |
elsewhere | end block data | end do | end function | end if |
end interface | end module | end program | end select | end subroutine |
end type | end where | entry | equivalence | exit |
external | function | go to | if | implicit |
in | inout | integer | intent | interface |
intrinsic | kind | len | logical | module |
namelist | nullify | only | operator | optional |
out | parameter | pause | pointer | private |
program | public | real | recursive | result |
return | save | select case | stop | subroutine |
target | then | type | type() | use |
Where | While | |||
I/O 关联关键字 | ||||
backspace | close | endfile | format | inquire |
open | read | rewind | Write |