====== 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//