Skip to content

Latest commit

 

History

History
89 lines (77 loc) · 2.66 KB

07. 条件语句.md

File metadata and controls

89 lines (77 loc) · 2.66 KB

Fortran中有主要有两种条件结构语句,一种是通过if实现,另外一种是通过select实现。

if 语句

最简单的逻辑结构为:

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 语句

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的值为68
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语句,看懂即可。