鍍金池/ 教程/ Java/ Fortran select case結(jié)構(gòu)
Fortran還原功能
Fortran關(guān)系運(yùn)算符
Fortran運(yùn)算符優(yōu)先級(jí)
Fortran基本語(yǔ)法
Fortran文件輸入輸出
Fortran嵌套select case結(jié)構(gòu)
Fortran變量
Fortran Cycle語(yǔ)句
Fortran語(yǔ)言環(huán)境設(shè)置
Fortran數(shù)據(jù)類型
Fortran數(shù)組
Fortran字符
Fortran if...else if...else 語(yǔ)句
Fortran調(diào)試程序
Fortran編程風(fēng)格
Fortran if...then語(yǔ)句結(jié)構(gòu)
Fortran嵌套循環(huán)
Fortran常量
Fortran循環(huán)
Fortran導(dǎo)出數(shù)據(jù)類型
Fortran字符串
Fortran操作函數(shù)
Fortran do...while循環(huán)結(jié)構(gòu)
Fortran內(nèi)部函數(shù)
Fortran數(shù)字精度
Fortran選擇決策
Fortran重塑函數(shù)
Fortran運(yùn)算符
Fortran構(gòu)造函數(shù)
Fortran模塊
Fortran位置函數(shù)
Fortran數(shù)字
Fortran指針
Fortran算術(shù)運(yùn)算符
Fortran exit語(yǔ)句
Fortran動(dòng)態(tài)數(shù)組
Fortran嵌套if結(jié)構(gòu)
Fortran select case結(jié)構(gòu)
Fortran向量和矩陣乘法函數(shù)
Fortran邏輯運(yùn)算符
Fortran if...then...else 結(jié)構(gòu)
Fortran教程
Fortran過(guò)程
Fortran Stop語(yǔ)句
Fortran基本輸入輸出
Fortran do循環(huán)結(jié)構(gòu)
Fortran查詢函數(shù)

Fortran select case結(jié)構(gòu)

select case 語(yǔ)句允許一個(gè)變量,列表進(jìn)行相等測(cè)試。每個(gè)值被稱為一個(gè)情況,在該變量上檢查每個(gè)選擇的情況 select case 。

語(yǔ)法

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í)行。

流程圖

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

當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:

Your grade is B

指定一個(gè)范圍的選擇

可以選擇指定一個(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