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

示例 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

❮ fortran_decisions.htm