User Tools

Site Tools


comando_de_desvio_incondicional_goto

O comando de desvio incondicional é o goto e serve para desviar o fluxo de execução do programa incondicionalmente para outro ponto do código. Este outro ponto deve ser indicado por um rótulo previamente declarado na seção de rótulos (ver seção Seção de declaração de rótulos).

Sintaxe:

goto <label>

No caso <label> é um rótulo declarado com o declaração label.

Atenção: é preciso observar que o comando de desvio incondicional não faz parte dos comandos aceitos no contexto de programação estruturada. Sempre é possível reconstruir o código de maneira mais elegante (embora talvez menos eficiente) e obter o mesmo resultado.

Outra observação é que o uso do goto de dentro para fora de laços ou vice-e-versa não é algo muito razoável de se fazer, a chance de o programador estar fazendo algo errado é bastante alta.

Exemplo:

program alomamae;
 label
    alo, 100, FIM;
 begin
    goto 100;

    alo : writeln ('Alo mamae!');
          goto fim;

    100 : writeln ('Inicio!');
          goto alo;
    FIM :
 end.

Este programa inicia pelo comando que desvia o código para o rótulo 100, que imprime a mensagem “Inicio” na tela. Em seguida executa o desvio para o rótulo “alo”, que imprime na tela a mensagem “Alo mamae!”. Finalmente, desvia o código para o rótulo “fim” e o programa termina. Observe que o exemplo seguinte cumpre exatamente com a mesma finalidade.

Exemplo:

program alomamae_melhorado;
 begin
    writeln ('Inicio!');
    writeln ('Alo mamae!');
 end.
comando_de_desvio_incondicional_goto.txt · Last modified: 2019/04/24 11:39 by castilho