select case 语句允许一个变量,列表进行相等测试。每个值被称为一个情况,在该变量上检查每个选择的情况 select case 。
select case结构的语法如下:
[name:] select case (expression) case (selector1) ! some statements ... case (selector2) ! other statements ... case default ! more statements ... end select [name]
以下规则适用于select语句:
在select 语句中使用的逻辑表达式可以是逻辑型,字符型或整型(但不是实型)的表达式。
可以有任意数量的范围内选择一个case语句。每一种情况下后跟的值进行比较,以及可能是合乎逻辑的,字符或整数(但不是真正的)的表达,并确定哪个语句被执行。
恒定表达的情况下,必须具有相同的数据类型,如在选择的变量,并且它必须是一个常量或文字。
当被选择的变量等于以下这种情况的某一情况,该语句将执行,如果没有匹配,那直到下一个case语句为止。
如果在选择的情况下(表达式)表达式不匹配任何的选择了,那么 default 块被执行。
流程图
示例 1
program selectCaseProg
implicit none
! local variable declaration
character :: grade = 'B'
select case (grade)
case ('A')
print*, "Excellent!"
case ('B')
case ('C')
print*, "Well done"
case ('D')
print*, "You passed"
case ('F')
print*, "Better try again"
case default
print*, "Invalid grade"
end select
print*, "Your grade is ", grade
end program selectCaseProg
当上述代码被编译和执行时,它产生了以下结果:
Your grade is B
可以选择指定一个范围,通过指定上限和下限由冒号分隔:
case (low:high)
下面的例子说明了这一点:
示例 2
program selectCaseProg
implicit none
! local variable declaration
integer :: marks = 78
select case (marks)
case (91:100)
print*, "Excellent!"
case (81:90)
print*, "Very good!"
case (71:80)
print*, "Well done!"
case (61:70)
print*, "Not bad!"
case (41:60)
print*, "You passed!"
case (:40)
print*, "Better try again!"
case default
print*, "Invalid marks"
end select
print*, "Your marks is ", marks
end program selectCaseProg
当上述代码被编译和执行时,它产生了以下结果:
Well done! Your marks is 78