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.