第一部分基本内容包括了变量的声明,输入输出语句,接下来是条件语句和循环语句等运算的流程控制。

if 条件语句

无需多言,例子即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(a > 10) then
! do something
end if

if(a > 10) then
! do 1
else
! do 2
end if

if(a > 10) then
! do 1
else if(a > 5) then
! do 2
else
! do 3
end if

在 if 后面必须接 then,if 和 end if 构成一个标准的条件结构。支持 if 结构的嵌套。可以使用简单的单行 if,不需要 end 和 then。

1
if(a>10) b=a

逻辑语句和逻辑运算

在 if 语句之后,顺便介绍逻辑类型和运算。逻辑类型:.true.,.false.。0 被视作 false,1 被视作 true。

1
2
logical var
var = (a>10)

逻辑运算:

  • Fortran 77:.EQ.,.NE.,.GT.,.GE.,.LT.,.LE.。
  • Fortran 90:==,/=,>,>=,<,<=。 注意不等号和 c 语言不同。

集合运算:优先级比上面的逻辑运算更低,.AND.,.OR.,.NOT.,.EQV.,.NEQV.。例如

1
2
3
if(a>=80 .and. a<90) then
! do something
end if

select 语句

例如

1
2
3
4
5
6
7
8
9
10
select case(a)
case(1)
! do 1
case(2)
! do 2
case(3:6) ! a=3,4,5
! do 3
case default
do default
end select

相当于 c 语言的 switch,每个分支自带 break。select 判断的变量 a 只能是整数,字符或者逻辑变量,不允许实数复数。case 里面只支持常量,支持语法糖(3:5),表示在这两个值的闭区间内均可。

特殊命令

  • pause: 程序暂停,等待用户按下 enter 键后继续执行。
  • stop: 程序直接退出。
  • continue: 不大有用,相当于无效语句。
  • goto: 强制跳转(垃圾语句)。
  • cycle: 在循环中相当于 c 语言的 continue;
  • exit: 在循环中相当于 c 语言的 break。

do 循环语句

例如

1
2
3
4
do count=1,10,2
! count 从1开始,每次增加2,若<=10继续执行,否则结束循环
! do something
end do

相当于 c 语言的 for 循环,其中最后的步长可缺省,默认为 1,步长可以为负数。Fortran 77 更麻烦,它的 do 循环不使用 end do 而需要指定行号来标记循环块的结束行。

1
2
do 12138,counter=1, b, 2
12138 ! do something

行号称作行的标记更合适,不是第几行的含义。

do while 循环语句

例如

1
2
3
4
do while(a<10)
! do something
a = a+1
end do

类比到 c 语言中,不是 do-while 语句,而是 while 语句,在第一次进入代码块之前就会进行逻辑判断。