Para fazermos escolhas da linguagem de programação C, utilizamos o comando switch que possui sua
sintaxe apresentada abaixo. O comando switch utiliza o comando break como parte de
seu corpo não sendo obrigatório em algumas situações.
Fig. 1: Fluxograma do Comando switch
 |
Sintaxe
switch(valor/expressao)
{
case 1:
//bloco de código
break;
case 2:
//bloco de código
break;
default:
//bloco de código
break;
}
Onde
valor: valor int para comparação
case 1..2: Trecho de código para execução caso o retorno da comparação do caso seja verdadeira
Quando o switch é executado, valor é comparado sequencialmente a todos os valores contidos
nas cláusulas case até que a comparação seja verdadeira. Assim, um bloco de código é executado e
e encerrado ao executar break.
O case default é executado caso nenhum case testado seja verdadeiro. O uso
desse case não é obrigatório, mas por boa prática deve ser utilizado para verificação
de erros.
Não é permitido o uso de string como valor e case do comando switch, sendo apenas
permitido o uso de valores numéricos inteiros.
Exemplo 1
#include <stdio.h>
int main()
{
int opcao = 2;
switch(opcao)
{
case 1:
printf("tipo 1");
break;
case 2:
printf("tipo 2");
break;
default:
printf(“opcao invalida”);
}
}
Saída
tipo 2
Para a execução de um mesmo trecho de código para mais de um case, basta
adicionar as cláusulas case um abaixo do outro separadas por (:) e apenas
um comando break para o encerramento.
Exemplo 2
#include <iostream>
int main ()
{
int valor = 1;
switch(valor)
{
case 1:
case 3: printf("tipo 1"); break;
default: printf("valor inválido"); break;
}
return 0;
}
Saída
tipo 1
Além os uso de mais de um case mostrado acima, C também permite que o operador de
intervalo (...) seja utilizado. Assim, podemos declarar um intervalo de dados
sem a necessidade de utilizar vários cases:
Exemplo 3
#include <stdio.h>
int main()
{
int valor = 9;
switch(valor)
{
case 0 ... 2:
printf("0...2");
break;
case 3 ... 7:
printf("3...7");
break;
case 8 ... 15:
printf("8...15");
break;
default:
printf("outro intervalo");
break;
}
return 0;
}
Saída
8...15
O uso do switch como no exemplos acima, também pode ser feito com intervalo de
dados do tipo char e enumeradores.