|
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.
|
|