Fortran中有主要有两种条件结构语句,一种是通过if实现,另外一种是通过select实现。
最简单的逻辑结构为:
if(条件) 语句体
若条件成立,则执行语句体。 例子:
if(a>5) b=6
若a的数值大于5,则就给变量赋值为6。
稍复杂一些的逻辑结构为:
if(条件) then
语句体1
else
语句体2
end if
若条件成立,则实行语句体1,否则执行语句体2。
例子:
1 if(a>5) then
2 b=2
3 else
4 b=6
5 end if
判断条件不止一个的条件结构为:
if(条件1) then
语句体1
else if(条件2) then
语句体2
......
end if
若满足条件1则执行语句体1,否则判断条件2,若满足执行语句体2,否则判断......
注意这里的第二个if后面还要跟一个then,不要漏掉。
select语句有点类似C/C++中的switch语句。结构为:
select case(a)
case(数值1)
语句体1
case(数值2)
语句体2
......
case default
默认语句体
end select
select后面紧跟的那个case中放置的是用于判断的变量,这里只能为整型。若当前a的值为数值1,则会执行语句体1,否则会去匹配其他数值,执行相应的语句体。若都未匹配,则会执行case default之后的语句(可省略)。这里的数值可以是一个数,也可以是一个范围,也可以为几个离散的数。
注意这里和C/C++中switch语句不同之处在于,在C/C++中若要实现和Fortran中相同的功能,则需要在每个case语句执行完之后加上一条"break"(Fortran中对应的关键字为exit)语句,否则会顺序将剩余的case都执行,而在Fortran中执行完对应的case语句体之后就会退出整个逻辑结构。
例子:
1 select case(a)
2 case(1) ! 若a的值为1
3 b=1
4 case(2:5) ! 若a的值为2,3,4,5
5 b=2
6 case(6,8) ! 若a的值为6或8
7 b=3
8 case default ! a不等于case中的任何值
9 b=4
10 end select
条件语句也可以进行逻辑嵌套,例如if语句中的语句体中还含有if语句。
Fortran还允许使用if和goto组合进行逻辑跳转,例如其中一种结构:
if(条件) goto 1000
语句体1
1000 语句体2
这里的含义是,若满足条件,则会直接跳转到名为1000的语句体2,跳过语句体1。可以遇见的是,goto可以实现上下跳转,有时会使程序逻辑结构混乱,使得逻辑结构不再平面。从而不再建议使用goto语句。一般老代码中充斥着goto语句,看懂即可。