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
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!

23 respostas a O comando switch case em C