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