Comando switch...case
Sintaxe:
switch (expressão) { case constante 1: { bloco de comandos 1...; break; } case constante 2: { bloco de comandos 2...; break; } ....... default : { bloco de comandos n... } }
Caso seja necessário realizar operações baseadas em um valor de uma expressão ou variável em vez de se construir para isto uma cadeia de if...else...if...else..if...else pode-se utilizar o comando de seleção múltipla switch…case
.
Inicialmente o valor da expressão é avaliado. Depois é feita uma comparação com cada valor colocado na seção case
. Caso o valor seja coincidente o bloco ligado ao case
será executado. Convém ressaltar que a execução continuará na ordem que os comandos aparecem, indiferentemente se eles fazem parte de outro case
. Para interromper a execução deve-se utilizar a cláusula break
, indicando que deve ser interrompido a execução e passar a executar os comandos após o switch
.
Existe a possibilidade de colocar uma condição para que, se nenhum case
foi selecionado, um bloco seja executado. A palavra default
indicará este bloco padrão a ser executado.
Veja o exemplo:
#include <stdio.h> int main (void) { int iValor_01; printf("Entre com um numero : "); scanf("%d", &iValor_01); switch (iValor_01) /* aqui a variável vai ser avaliada */ { case 1: /* aqui o valor (constante) que será utilizada na comparação */ { printf("Um\n"); break; } case 2: { printf("Dois\n"); break; } case 3: { printf("Tres\n"); break; } case 4: { printf("Quatro\n"); break; } case 5: { printf("Cinco\n"); break; } case 6: { printf("Seis\n"); break; } case 7: { printf("Sete\n"); break; } case 8: { printf("Oito\n"); break; } case 9: { printf("Nove\n"); break; } default: /* Se nenhuma opção anterior corresponder a variável informada. */ { printf("Valor nao associado\n"); break; /* Não precisa deste comando aqui, afinal não existem mais condições para serem avaliadas dentro do switch */ } } return 0; }
Caso não seja utilizado o comando break
, todos os demais comandos/instruções serão executados, até encontrar o próximo comando break
, após a primeira condição verdadeira.
Veja o exemplo:
#include <stdio.h> int main (void) { int iValor_01; printf("Entre com um numero : "); scanf("%d", &iValor_01); switch (iValor_01) /* aqui a variável vai ser avaliada */ { case 1: /* aqui o valor (constante) que será utilizada na comparação */ { printf("Um\n"); break; } case 2: { printf("Dois\n"); break; } case 3: { printf("Tres\n"); break; } case 4: { printf("Quatro\n"); break; } case 5: { printf("Cinco\n"); break; } case 6: { printf("Seis\n"); break; } case 7: { printf("Sete\n"); /* Não colocado o comando break. Todos os comandos serão avaliados até o próximo break. */ } case 8: { printf("Oito\n"); /* Não colocado o comando break. Todos os comandos serão avaliados até o próximo break. */ } case 9: { printf("Nove\n"); break; } default: /* Se nenhuma opção anterior corresponder a variável informada. */ { printf("Valor nao associado\n"); break; /* Não precisa deste comando aqui, afinal não existem mais condições para serem avaliadas dentro do switch */ } } return 0; }
Sabendo disto, é possível realizar OU lógicos com o switch
.
#include <stdio.h> int main(void) { int iValor_01; printf("\nEntre com um número:"); scanf("%d", &iValor_01); /* este bloco de instruções, faz a mesma coisa que o switch a seguite */ if( iValor_01 == 1 || iValor_01 == 3 || iValor_01 == 5 || iValor_01 == 7 || iValor_01 == 9 ) { printf("Você digitou 1,3,5,7 ou 9.\n"); } else if( iValor_01 == 0 || iValor_01 == 2 || iValor_01 == 4 || iValor_01 == 6 || iValor_01 == 8 ) { printf("Você digitou 0,2,4,6 ou 8.\n"); } else { printf("Você digitou um número >= 10.\n"); } /* operações || com switch */ switch( iValor_01 ) { case 1: case 3: case 5: case 7: case 9: { printf("Você digitou 1,3,5,7 ou 9.\n"); break; } case 0: case 2: case 4: case 6: case 8: { printf("Você digitou 0,2,4,6 ou 8.\n"); break; } default: { printf("Você digitou um número >= 10.\n"); } } return 0; }
— Marcos Laureano 2008/05/04 04:31