Brazilian Flag American Flag

Back Home Page

Published
Last modified

C/C++ - Labels e GOTO

C, e consequentemente C++, são linguagens de origem procedural que tinham que utilizar meios de executar a programação de forma não totalmente linear fazendo saltos para pontos específicos do código usando rótulos e o comando GOTO.

Os rótulos (labels) e saltos (goto) são resquícios da época em que a programação era totalmente procedural, inclusive pode ser visto em blocos como o do switch. Esta forma de programar não é mais praticada com tanta frequência, mas ainda há como fazer.

Primeiramente marcamos uma linha do código com um rótulo (também conhecido como label) e toda vez que quisermos voltar ou seguir até tal linha apenas indicamos onde o programa deve seguir.

Em C/C++ para indicarmos um rótulo (label) escrevemos um nome no local que desejamos marcar. Para ir até este local usamos o comando GOTO.

O rótulo (label) é indicado pelo uso de dois pontos (:) no final da linha.

GOTO é um comando como qualquer outro. Portanto, deve-se terminar a linha com um ponto-e-vírgula (;).

Ele ficariam assim:

rotulo :
código
goto rotulo ;

Aplicado em um código ficaria assim:

#include <iostream>
#include <cstdlib>
using namespace std;

int main (void){
    char opcao;
    inicio:
    cout <<"voce deseja que este programa repita? [s/n]";
    cin >> opcao;
    cin.ignore();
    if (opcao == 's' || opcao =='S')
        goto inicio;
    else if (opcao == 'n' || opcao =='N')
        goto fim;
    else
        goto inicio;
    fim:
    return EXIT_SUCCESS;
}

Como podemos ver, isso era utilizado antigamente na programação procedural para acessar pontos definidos do código. Hoje em dia é mais comum utilizamos outras formas para programar como paradigmas conhecidos como Orientação a Objeto e Orientação a Funções.


Creative Commons License
C/C++ - Labels e GOTO by Denys Xavier is licensed under a Creative Commons Attribution 4.0 International License.