Faça Sua Pesquisa.

terça-feira, 14 de fevereiro de 2012

O Comando goto LING. C


O goto é o último comando de controle de fluxo. Ele pertence a uma classe à parte: a dos comandos de salto incondicional. O gotorealiza um salto para um local especificado. Este local é determinado por um rótulo. Um rótulo, na linguagem C, é uma marca no programa. Você dá o nome que quiser a esta marca. Podemos tentar escrever uma forma geral:


nome_do_rótulo:
....
goto nome_do_rótulo; ....
Devemos declarar o nome do rótulo na posição para a qual vamos dar o salto seguido de :. O goto pode saltar para um rótulo que esteja mais à frente ou para trás no programa. Uma observação importante é que o rótulo e o goto devem estar dentro da mesmafunção. Como exemplo do uso do goto vamos reescrever o equivalente ao comando for apresentado na seção equivalente ao mesmo:


    inicialização;
início_do_loop:
    if (condição)
      { declaração; incremento; goto início_do_loop; }
O comando goto deve ser utilizado com parcimônia, pois o abuso no seu uso tende a tornar o código confuso. O goto não é um comando necessário, podendo sempre ser substituído por outras estruturas de controle. Puristas da programação estruturada recomendam que o goto nunca seja usado. Porém, em algumas situações muito específicas o comando goto pode tornar um código mais fácil de se entender se ele for bem empregado. Um caso em que ele pode ser útil é quando temos vários loops e ifs aninhados e se queira, por algum motivo, sair destes loops e ifs todos de uma vez. Neste caso um goto resolve o problema mais elegantemente que vários breaks, sem contar que os breaks exigiriam muito mais testes. Ou seja, neste caso o goto é mais elegante e mais rápido.Mas não abuse!!!
O exemplo da página anterior pode ser reescrito usando-se o goto:
#include <stdio.h>
int main()
{
 int opcao;
 while (opcao != 5)
        {
  REFAZ: printf("\n\n Escolha uma opcao entre 1 e 5: ");
         scanf("%d", &opcao);
         if ((opcao > 5)||(opcao <1)) goto REFAZ;  /* Opcao invalida: volta ao rotulo REFAZ */
         switch (opcao)
           { 
            case 1: 
                  printf("\n --> Primeira opcao..");
            break; 
            case 2: 
                  printf("\n --> Segunda opcao..");
            break; 
            case 3: 
                  printf("\n --> Terceira opcao..");
            break; 
           case 4: 
                  printf("\n --> Quarta opcao..");
            break; 
            case 5: 
                  printf("\n --> Abandonando..");
            break; 
           } 
        }
 return(0);
}


0 comentários:

Postar um comentário

TecCodigos Copyright © 2011 | Template created by O Pregador | Powered by Blogger