【Fortran】分支结构(IF语句和SELECT CASE结构)
程序员文章站
2022-05-03 08:24:47
...
【Fortran】分支结构
目录
【1】IF语句
1) 使用方式
使用1(最常规)
IF(logical_expression) THEN
expression_1
expression_2
...
END IF
注意事项:
-
IF( * )THEN....END IF
是固定结构; -
logical_expression
为真时,才执行expression_1
、expression_2
等语句; -
expression_1
等执行语句的缩进不是必须的,只是为了提高可读性。
使用2(复杂)
IF(logical_expression_1) THEN
expression_1
expression_2
...
ELSE IF(logical_expression_2) THEN
expression_3
expression_4
...
ELSE
expression_5
expression_6
...
END IF
注意事项:
-
IF( * )THEN....END IF
是固定结构; - 可以有多个
ELSE IF
子句,ELSE
子句只有一个; - 当
logical_expression_1
为真时,执行expression_1
等语句,当logical_expression_1
为假时,对logical_expression_2
进行判断,为真时执行expression_3
等语句,为假则跳至ELSE
中,执行expression_5
等语句; - 执行语句的缩进不是必须的,只是为了提高可读性。
使用3(仅适于单条执行语句)
IF(logical_expression) expression
2) 命名方式(可选)
用途:在大型项目中,能够一眼看出ELSE IF
或ELSE
子句数是属于哪一结构块的。
[name:]IF(logical_expression_1) THEN
expression_1
expression_2
...
ELSE IF(logical_expression_2) THEN [name]
expression_3
expression_4
...
ELSE [name]
expression_5
expression_6
...
END IF [name]
3) 嵌套
IF(logical_expression_1) THEN
expression_1
expression_2
...
IF(logical_expression_2) THEN
expression_3
expression_4
...
END IF !判断表达式2的结构块
END IF !判断表达式1的结构块
注意事项:
- 最好指定名字,不然出现错误会很难排查。
由于IF语句
很好理解,就不一一举例子了。
【2】SELECT CASE结构
1) 使用方式
[name:] SELECT CASE( case_expression )
CASE(status_1) [name]
expression_1
CASE(status_2) [name]
expression_1
...
CASE(status_n) [name]
expression_n
CASE DEFAULT [name]
expression_m
END SELECT [name]
注意事项:
-
case_expression
是研究对象,status
是必须满足的条件,如果研究对象满足条件,则执行相应的子块; - 从上往下一直对
case_expression
进行条件status
判断,当各个status
均不满足时,执行DEFAULT
子块,最终结束该模块; -
DEFAULT
子块不是必须要有的,但尽量留有,一方面保持结构的完整性,另一方面可以用来建立警告信息(即当case_expression
均不满足条件时,返回一个判断信息) -
case_expression
可以是整数、字符或逻辑表达式,不能是实数型; -
status
的类型要与case_expression
相对应,可以是整数、字符或逻辑表达式,还可以是数值范围,如(a:)
、(:b)
、(a:b)
(表示 a≤数值≤b),或集合,如(a,b,c,d)
,要用逗号隔开。同时,要求各个status
相互独立,没有交集;
2) 例子
例子通俗易懂,程序运行一遍可知,不过多解释了。
PROGRAM my_test
IMPLICIT NONE
CHARACTER(len=10)::human_stage
INTEGER::year
WRITE(*,*) "年龄大小,整数形式"
READ(*,*) year
abc:SELECT CASE( year )
CASE(0:44) abc ! 0~44岁为青年人
human_stage = '青年人'
CASE(45:59) abc ! 45~59岁为中年人
human_stage = '中年人'
CASE(60:) abc ! 60岁之后为老年人
human_stage = '老年人'
CASE DEFAULT abc
human_stage = '输入错误' ! 返回信息
END SELECT abc
WRITE(*,*) 'human = ',human_stage
STOP
END PROGRAM my_test
上一篇: Python学习之:判断语句和循环语句
下一篇: JaValid 1.0-rc1 版本发布