Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida Pascal - Le etichette e la procedure goto

Guida Pascal

Capitolo 16° - Le etichette e la procedure goto

<< Precedente Prossimo >>
Le etichette servono per separare uno spezzone di programma, che sarò usato solo in casi speciali. In pratica, una etichetta sarebbe come una procedura implementata direttamente nel programma principale, senza parametri o variabili interne. Vediamo un esempio:

Program Esempio7;
Uses Crt;
Var a,b:integer;
    label caso1,caso2;

begin
    clrscr;
    write(Inserisci un valore intero: );
    read(a);
    if a>26 then
      goto caso1
    else
      goto caso2;
    
    caso1: begin
           write(Inserisci un altro valore intero: );
      read(b);
      if b>90 then
        goto caso1
      else
        goto caso2;
           end;
    caso2: begin
      write(Inserisci un altro valore intero: );
      read(a);
      if a<87 then
        goto caso1;
           end;
    readln
end.


Questo è un programma che non ha molto senso, ma illustra bene il costrutto goto. Analizziamo.
Innanzitutto, le label (cioè le etichette) vanno dichiarate nella parte relativa alle variabili, con la seguente sintassi:

label <nome1>,<nome2>,...,<nomeN>;

Una volta dichiarate, potranno essere usate. E importantissimo che le label si trovino nello stesso segmento di codice in cui si trova la procedura goto, poiché non si può balzare dentro altre procedure o funzioni.
La label si dichiara scrivendone il nome, seguito da un punto e virgola, dopo il quale si pone il codice da eseguire.
In sostanza il programma fa questo: se a, introdotto da tastiera, è maggiore di 26, salata alla label caso1, altrimenti alla label caso2; nella label caso1, se b, introdotto da tastiera è uguale a 90, ritorna indietro a ricomincia la stessa label, altrimenti, salta alla label caso2; nella label caso2, se a, introdotto da tastiera, è maggiore o uguale a 87, allora il programma termina, altrimenti salta alla label caso1.
<< Precedente Prossimo >>
A proposito dell'autore

Programmatore e analista .NET 2005/2008/2010 (in particolare C# e VB.NET), anche nell'implementazione Mono per Linux. Conoscenze approfondite di Pascal, PHP, XML, HTML 4.01/5, CSS 2.1/3, Javascript (e jQuery). Conoscenze buone di C, LUA, GML, Ruby, XNA, AJAX e Assembly 68000. Competenze basilari di C++, SQL, Hlsl, Java.