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!

23 respostas a O comando switch case em C