====== 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|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 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 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 [[operadores|OU lógicos]] com o ''switch''. #include 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.eti.br|Marcos Laureano]] 2008/05/04 04:31//