Fortran - selecionar construção de caso

UMA select case instrução permite que uma variável seja testada quanto à igualdade em relação a uma lista de valores. Cada valor é chamado de caso, e a variável que está sendo selecionada é verificada para cadaselect case.

Sintaxe

A sintaxe para o select case construção é a seguinte -

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

As seguintes regras se aplicam a um select declaração -

  • A expressão lógica usada em uma instrução de seleção pode ser uma expressão lógica, de caracteres ou inteira (mas não real).

  • Você pode ter qualquer número de declarações de caso dentro de um select. Cada caso é seguido pelo valor a ser comparado e pode ser uma expressão lógica, de caractere ou de número inteiro (mas não real) e determina quais instruções são executadas.

  • A expressão constante para um caso deve ser do mesmo tipo de dados da variável no select e deve ser uma constante ou literal.

  • Quando a variável sendo selecionada em, é igual a um caso, as instruções seguintes a esse caso serão executadas até que a próxima instrução de caso seja alcançada.

  • O bloco padrão de caso é executado se a expressão em caso de seleção (expressão) não corresponder a nenhum dos seletores.

Diagrama de fluxo

Exemplo 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 o código acima é compilado e executado, ele produz o seguinte resultado -

Your grade is B

Especificando um intervalo para o seletor

Você pode especificar um intervalo para o seletor, especificando um limite inferior e superior separados por dois pontos -

case (low:high)

O exemplo a seguir demonstra isso -

Exemplo 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 o código acima é compilado e executado, ele produz o seguinte resultado -

Well done!
Your marks is 78