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 块。
流程图
![Flow Diagram2](/fortran/images/select_case_flow_diagram.jpg)
示例 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