位置:首页 » 文章/教程分享 » 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语句:

  • 在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