Fortran - 选择语句



select case 语句允许将变量与值的列表进行相等性测试。每个值称为一个 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 语句中使用的逻辑表达式可以是逻辑、字符或整数表达式(但不能是实数表达式)。

  • 可以在一个 select 中包含任意数量的 case 语句。每个 case 后面跟着要比较的值,可以是逻辑、字符或整数表达式(但不能是实数表达式),并决定执行哪些语句。

  • case 的常量表达式必须与 select 中变量的数据类型相同,并且必须是常量或字面量。

  • 当被选择的变量等于某个 case 时,将执行该 case 后面的语句,直到到达下一个 case 语句。

  • 如果 select case (表达式) 中的表达式与任何选择器都不匹配,则执行 case default 块。

流程图

Flow Diagram2

示例 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
fortran_decisions.htm
广告
© . All rights reserved.