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.

  1. 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;
  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;
  3. O comando 'default' é equivalente ao 'else'. Não tem um 'break' pois ele sempre é verificado por último;
  4. 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.