Fortran - select case 构造
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 语句t −
select 语句中使用的逻辑表达式可以是逻辑表达式、字符表达式或整数(但不是实数)表达式。
在一个 select 中可以有任意数量的 case 语句。 每个 case 后跟要比较的值,可以是逻辑、字符或整数(但不是实数)表达式,并确定执行哪些语句。
case 的常量表达式必须与 select 中的变量具有相同的数据类型,并且必须是常量或文字。
当选择的变量等于一个 case 时,该 case 后面的语句将执行,直到到达下一个 case 语句。
如果 select case (expression) 中的表达式与任何选择器都不匹配,则执行 case default 块。
流程图
示例 1
program selectCaseProg implicit none ! 局部变量声明 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 ! 局部变量声明 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