O comando switch case em C

Por: Eduardo Casavella
É uma forma de reduzir a complexidade de vários if … else encadeados.

É muito utilizado, principalmente para uso em estruturas de menu.

O conteúdo de uma variável é comparado com um valor constante, e caso a comparação seja verdadeira, um determinado comando é executado.
Pseudocódigo:

Em português estruturado o comando escolha…caso equivale ao switch…case

Veja estrutura escolha … caso

Escolha (Variável)
Inicio
   Caso (Valor1): 
      Instruções;
   
   Caso (Valor2): 
     Instruções;
   
   Caso (ValorN): 
     Instruções;
Fim;

Sintaxe do comando switch case em linguagem C

switch (variável)
{
   case constante1:
     Instruções;
   break;

   case constante2:
     Instruções;
   break;

   default
     Instruções;
}

Utilização

Vamos construir um programa para verificar o dia da semana a fim de exemplificar a utilização do switch…case.

O usuário vai digitar um número e o programa vai retornar o dia da semana equivalente ao número.

Exemplo:


#include <stdio.h>
#include <conio.h>
int main (void )
{
  int valor;

  printf ("Digite um valor de 1 a 7: ");
  scanf("%d", &valor);

  switch ( valor )
  {
     case 1 :
       printf ("Domingo\n");
     break;

     case 2 :
       printf ("Segunda\n");
     break;

     case 3 :
        printf ("Terça\n");
     break;

     case 4 :
        printf ("Quarta\n");
     break;

     case 5 :
        printf ("Quinta\n");
     break;

     case 6 :
        printf ("Sexta\n");
     break;

     case 7 :
        printf ("Sabado\n");
     break;

     default :
       printf ("Valor invalido!\n");
  }

  getch();
  return 0;
}

 

Tela de execução

Tela execução comando Switch

Tela de execução do comando Switch Case C

 

Explicação do código:

A instrução break termina a execução do switch e o programa continua a executar na instrução seguinte.

O uso do break evita testar as demais alternativas de forma desnecessária quando uma opção verdadeira já foi encontrada.

O comando default exibe uma mensagem, caso nenhuma das alternativas anteriores seja verdadeira.
Agora veja, como ficaria o mesmo programa usando comandos if else aninhados (encadeados).


#include <stdio.h>
#include <conio.h>
int main (void )
{
  int valor;

  printf ("Digite um valor de 1 a 7: ");
  scanf("%d", &valor);

  if (valor == 1)
       printf ("Domingo\n");
  else
     if (valor == 2)
       printf ("Segunda\n");
     else
       if (valor == 3)
          printf ("Terça\n");
       else
         if (valor == 4)
            printf ("Quarta\n");
         else
           if (valor == 5)
             printf ("Quinta\n");
           else
             if (valor == 6)
               printf ("Sexta\n");
             else
               if (valor == 7)
                  printf ("Sabado\n");
               else
                  printf ("Valor invalido!\n");

  getch();
  return 0;
}

 

Importante:

Não são aceitas expressões condicionais no comando switch…case, somente são aceitos valores constantes.

Esta é um diferença bem grande quando comparado ao comando if…else.

Portanto caso tenha que testar uma condição você terá que usar if…else ao invés do switch…case.
Até a próxima!

10 respostas a O comando switch case em C