Ferramentas do usuário

Ferramentas do site


switch

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.


switch [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1
Linha 1: Linha 1:
 +====== Comando switch...case ======
  
 +Sintaxe:
 +<code c>
 +   switch (expressão) 
 +   {
 +      case constante 1:
 +      { bloco de comandos 1...;
 +        break;
 +      }
 +      case constante 2:
 +      { bloco de comandos 2...;
 +        break;
 +      }
 +      .......
 +      default : 
 +      { 
 +         bloco de comandos n... 
 +      }
 +   }
 +</code>
 +
 +----
 +
 +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:
 +
 +<code c>
 +#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;
 +}
 +</code>
 +
 +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:
 +<code c>
 +#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;
 +}
 +</code>
 +
 +Sabendo disto, é possível realizar [[operadores|OU lógicos]] com o ''switch''.
 +
 +<code c>
 +#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;
 +}
 +</code>
 +
 + --- //[[marcos@laureano.eti.br|Marcos Laureano]] 2008/05/04 04:31//
switch.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1