Fortran - seleccionar construcción de caso

UNA select case La declaración permite probar la igualdad de una variable con una lista de valores. Cada valor se denomina caso, y la variable que se selecciona se comprueba para cadaselect case.

Sintaxis

La sintaxis de select case La construcción es la siguiente:

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

Las siguientes reglas se aplican a select declaración -

  • La expresión lógica utilizada en una declaración de selección podría ser una expresión lógica, de caracteres o entera (pero no real).

  • Puede tener cualquier número de declaraciones de casos dentro de una selección. A cada caso le sigue el valor con el que se va a comparar y puede ser una expresión lógica, de caracteres o entera (pero no real) y determina qué declaraciones se ejecutan.

  • La expresión-constante para un caso debe ser del mismo tipo de datos que la variable en la selección, y debe ser una constante o literal.

  • Cuando la variable que se selecciona en es igual a un caso, las declaraciones que siguen a ese caso se ejecutarán hasta que se alcance la siguiente declaración del caso.

  • El bloque de caso predeterminado se ejecuta si la expresión en el caso de selección (expresión) no coincide con ninguno de los selectores.

Diagrama de flujo

Ejemplo 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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Your grade is B

Especificar un rango para el selector

Puede especificar un rango para el selector, especificando un límite inferior y superior separados por dos puntos:

case (low:high)

El siguiente ejemplo demuestra esto:

Ejemplo 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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Well done!
Your marks is 78