Seleção caso
From Applied Science
- Estruturas de seleção com SWITCH e CASE:
int escolha; switch (escolha) { case 1: printf("Voce escolheu 1"); break; case 2: printf("Voce escolheu 2"); break; case 3: printf("Voce escolheu 3"); break; default: printf("Voce escolheu %d (nenhuma das anteriores)", escolha); }
Diferença entre switch case para if else. Não há diferenças quanto ao comportamento do programa. O que muda é a sintaxe e o desempenho em algumas situações (desempenho não é uma preocupação na introdução). A grande diferença está no uso. Com switch case não há operadores booleanos and, or e not. Também não há expressões como "maior ou igual" e "menor ou igual". Ele funciona como uma lista de opções, onde cada opção é um valor inteiro. switch case é melhor de entender quando há escolhas mutuamente exclusivas. Isto é, uma não tem relação de dependência com as demais.
- Mais de um caso pode corresponder à mesma escolha, por exemplo: deixe um 'case 1:' logo na linha acima do 'case 2:' Isso fará o printf() ser executado tanto no caso 1 quanto no 2;
- Sem o comando 'break' o programa não termina a execução no caso satisfeito e continua para o próximo caso logo abaixo. É estranho comparado a else if, mas na linguagem funciona assim mesmo. Numa introdução não são feitos programas que se utilizem deste fato;
- O comando 'default' é equivalente ao 'else'. Não tem um 'break' pois ele sempre é verificado por último.
- Comparações compostas com mais de uma variável não são usadas com blocos switch case. Seria muito custoso reescrever if else com comparações compostas para o formato switch case. Quando mais de um valor corresponde a uma escolha, seria loucura cobrir todos os casos um por um.