Estrutura de seleção multipla ESCOLHA-CASO

A estrutura ESCOLHA-CASO (em inglês SWITCH-CASE), é uma solução elegante quanto se tem várias estruturas de decisão (SE-ENTÃO-SENÃO) aninhadas. Isto é, quando outras verificações são feitas caso a anterior tenha falhado (ou seja, o fluxo do algoritmo entrou no bloco SENÃO). A proposta da estrutura ESCOLHA-CASO é permitir ir direto no bloco de código desejado, dependendo do valor de uma variável de verificação. Veja o esquema abaixo.

ESCOLHA <variável de verificação>

CASO <valor1> FAÇA

"instruções a serem executadas caso <variável de verificação> = <valor1>"

CASO <valor2> FAÇA

"instruções a serem executadas caso <variável de verificação> = <valor2>"

CASO <valor3> FAÇA

"instruções a serem executadas caso <variável de verificação> = <valor3>"

...

FIM-ESCOLHA

Veja o esquema desta estrutura de seleção.

estrutura-ESCOLHA

ESCOLHA-CASO na prática!

Para exemplificar a melhoria oferecida por essa estrutura, imagine a seguinte situação: Você deseja criar um algoritmo para uma calculadora, o usuário digita o primeiro número, a operação que deseja executar e o segundo número. Dependendo do que o usuário informar como operador, o algoritmo executará um cálculo diferente (soma, subtração, multiplicação ou divisão). Vejamos como seria esse algoritmo implementado no VisuAlg com SE-ENTÃO-SENÃO.

algoritmo "CalculadoraBasicaComSE"
var
   numero1 : REAL
   numero2 : REAL
   operacao : CARACTERE
   resultado : REAL
inicio

      ESCREVA ("Digite o primeiro número: ")
      LEIA (numero1)
      ESCREVA ("Digite a operação: ")
      LEIA (operacao)
      ESCREVA ("Digite o segundo número: ")
      LEIA (numero2)

      SE operacao = "+" ENTAO
         resultado := numero1 + numero2
      SENAO
         SE operacao = "-" ENTAO
            resultado := numero1 - numero2
         SENAO
            SE operacao = "*" ENTAO
               resultado := numero1 * numero2
            SENAO
               SE operacao = "/" ENTAO
                  resultado := numero1 / numero2
               FIMSE
            FIMSE
         FIMSE
      FIMSE

      ESCREVA ("Resultado: ", resultado)

fimalgoritmo

Veja como os SEs aninhados (dentro dos SENÃOs) deixam o código mais complexo. Dá pra entender a lógica, mas não é muito elegante. Agora vamos ver como ficaria a mesma lógica com a estrutura ESCOLHA-CASO.

algoritmo "CalculadoraBasicaComSE"
var
   numero1 : REAL
   numero2 : REAL
   operacao : CARACTERE
   resultado : REAL
inicio

      ESCREVA ("Digite o primeiro número: ")
      LEIA (numero1)
      ESCREVA ("Digite a operação: ")
      LEIA (operacao)
      ESCREVA ("Digite o segundo número: ")
      LEIA (numero2)

      ESCOLHA operacao
         CASO "+"
            resultado := numero1 + numero2
         CASO "-"
            resultado := numero1 - numero2
         CASO "*"
            resultado := numero1 * numero2
         CASO "/"
            resultado := numero1 / numero2
      FIMESCOLHA

      ESCREVA ("Resultado: ", resultado)

fimalgoritmo

Bem mais bonito! Agora a lógica tá mais visível e elegante. O resultado dos dois algoritmos é o mesmo, veja um exemplo de execução deste programa.

Resultado do Algoritmo de Calculadora
básica

Caso não tratado na estrutura (OUTROCASO)

Existe uma opção a mais nessa estrutura, justamente para tratar quando o valor da variável não é equivalente a nenhum valor informado como opção nos CASOs, ou seja, é um "OUTROCASO". No algoritmo listado anteriormente, imagine se o usuário digitasse um valor diferente de "+", "-", "*" e "/". Caso quiséssemos apresentar uma mensagem para o usuário informando que ele digitou uma opção inválida, utilizaríamos esse recurso da estrutura ESCOLHA-CASO. Veja.

      ESCOLHA operacao
         CASO "+"
            resultado := numero1 + numero2
         CASO "-"
            resultado := numero1 - numero2
         CASO "*"
            resultado := numero1 * numero2
         CASO "/"
            resultado := numero1 / numero2
         OUTROCASO
            ESCREVA("A operação digitada é inválida!")
      FIMESCOLHA

Como pudemos observar, em termos de organização de código a estrutura ESCOLHA-CASO é uma opção muito elegante quando se tem muitos SE-ENTÃO-SENÃO para verificar a mesma variável. Facilita a leitura do algoritmo e a manutenção do código.

Como exercício para praticar essa estrutura de controle de fluxo, crie um algoritmo em que o usuário digita uma letra qualquer, e o programa verifica qual a ordem dessa letra no alfabeto, por exemplo: se o usuário digitar a letra 'G' o programa deve imprimir na tela, "G é a sétima letra do alfabeto". Implemente com a estrutura ESCOLHA-CASO e depois com a estrutura SE-ENTÃO-SENÃO para perceber a diferença. Qualquer dúvida deixe nos comentários aqui em baixo.

Twitter
Google
Facebook
LinkedIn
Email