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 后跟要比较的值,可以是逻辑、字符或整数(但不是实数)表达式,并确定执行哪些语句。
    • case 的常量表达式必须与 select 中的变量具有相同的数据类型,并且必须是常量或文字。
    • When the variable being selected on, is equal to a case, the statements following that case will execute until the next case statement is reached.
    • 如果 select case (expression) 中的表达式不匹配任何选择器,则执行 case default 块。

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