select case 語(yǔ)句允許一個(gè)變量,列表進(jìn)行相等測(cè)試。每個(gè)值被稱為一個(gè)情況,在該變量上檢查每個(gè)選擇的情況 select case 。
select case結(jié)構(gòu)的語(yǔ)法如下:
[name:] select case (expression) case (selector1) ! some statements ... case (selector2) ! other statements ... case default ! more statements ... end select [name]
以下規(guī)則適用于select語(yǔ)句:
在select 語(yǔ)句中使用的邏輯表達(dá)式可以是邏輯型,字符型或整型(但不是實(shí)型)的表達(dá)式。
可以有任意數(shù)量的范圍內(nèi)選擇一個(gè)case語(yǔ)句。每一種情況下后跟的值進(jìn)行比較,以及可能是合乎邏輯的,字符或整數(shù)(但不是真正的)的表達(dá),并確定哪個(gè)語(yǔ)句被執(zhí)行。
恒定表達(dá)的情況下,必須具有相同的數(shù)據(jù)類型,如在選擇的變量,并且它必須是一個(gè)常量或文字。
當(dāng)被選擇的變量等于以下這種情況的某一情況,該語(yǔ)句將執(zhí)行,如果沒(méi)有匹配,那直到下一個(gè)case語(yǔ)句為止。
如果在選擇的情況下(表達(dá)式)表達(dá)式不匹配任何的選擇了,那么 default 塊被執(zhí)行。
流程圖
示例 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
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Your grade is B
可以選擇指定一個(gè)范圍,通過(guò)指定上限和下限由冒號(hào)分隔:
case (low:high)
下面的例子說(shuō)明了這一點(diǎn):
示例 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
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Well done! Your marks is 78