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

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