Fortran: seleziona il costrutto del caso

UN select case consente di verificare l'uguaglianza di una variabile rispetto a un elenco di valori. Ogni valore è chiamato caso e la variabile selezionata viene controllata per ciascunoselect case.

Sintassi

La sintassi per il select case costrutto è il seguente -

[name:] select case (expression) 
   case (selector1)          
   ! some statements          
   ... case (selector2)           
   ! other statements           
   ...       
   case default          
   ! more statements          
   ...   
end select [name]

Le seguenti regole si applicano a un file select dichiarazione -

  • L'espressione logica utilizzata in un'istruzione select può essere un'espressione logica, di carattere o intera (ma non reale).

  • Puoi avere un numero qualsiasi di istruzioni case all'interno di un select. Ogni caso è seguito dal valore da confrontare e può essere un'espressione logica, di carattere o intera (ma non reale) e determina quali istruzioni vengono eseguite.

  • L'espressione costante per un caso deve essere lo stesso tipo di dati della variabile nella selezione e deve essere una costante o un valore letterale.

  • Quando la variabile selezionata su, è uguale a un caso, le istruzioni che seguono quel caso verranno eseguite fino a quando non viene raggiunta l'istruzione successiva.

  • Il blocco case default viene eseguito se l'espressione in select case (espressione) non corrisponde a nessuno dei selettori.

Diagramma di flusso

Esempio 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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Your grade is B

Specifica di un intervallo per il selettore

È possibile specificare un intervallo per il selettore, specificando un limite inferiore e superiore separati da due punti -

case (low:high)

Il seguente esempio lo dimostra:

Esempio 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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Well done!
Your marks is 78