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