L'istruzione GOTO in Fortran
Il linguaggio Fortran mi permette di compiere un salto incondizionato a una determinata riga di codice tramite l'istruzione GOTO.
GOTO n
L'argomento n è l'etichetta numerica in cui saltare, ossia la riga del codice sorgente.
Quando il programma trova un'istruzione GOTO prosegue l'elaborazione alla riga indicata.
Se l'etichetta numerica non esiste, il programma va in errore.
Può anche essere scritta GO TO.
Nota. I salti incondizionati sono un'eredità della vecchia programmazione procedurale e andrebbero sempre evitati perché rendono meno leggibile un programma. Inoltre, qualsiasi salto incondizionato può essere gestito in modo alternativo tramite la programmazione strutturata.
Un esempio pratico di salto incondizionato
In questo programma creo un salto incondizionato dalla seconda riga alla quarta.
Il programma non esegue la riga tre del codice sorgente.
Pertanto, il risultato in output è il seguente:
B
E così via.
Goto calcolato
Il Fortran77 consente anche il goto calcolato, dove il salto è legato al valore di una variabile intera (k).
GOTO ( label1, label2, ... ) k
In base al valore della variabile, il programma seleziona la corrispondente label di destinazione nell'elenco.
Al posto del valore k posso anche indicare un'espressione o un calcolo ( es. x*z-1 ).
E se k è zero o troppo grande? Se il valore di k è uguale a zero o è superiore all'indice della lista delle label, il programma continua l'elaborazione all'istruzione successiva.
Esempio
Se k=1 l'istruzione goto salta alla label 10 (la prima della lista).
A
B
Se k=2 salta alla label 20 (la seconda della lista).
B
E così via.
Il goto condizionato è diventato obsoleto con le versioni successive del linguaggio.
Goto assegnato
Il Fortran77 prevede anche un altro tipo di salto. Si tratta del goto assegnato.
Assegno una stringa alfanumerica a una determinata label numerica.
ASSIGN numero-linea TO nome
Dopo l'assegnazione posso effettuare dei salti alla riga utilizzando come label anche la stringa alfanumerica.
GOTO nome
E' un modo per rendere più comprensibile la stesura di un programma.
Attenzione. Nel Fortran 90 l'istruzione ASSIGN TO è diventata obsoleta. Nel Fortran 95 è stata cancellata.
Un esempio pratico
In questo programma assegno alle label numeriche 10 e 20 le stringe "primo" e "secondo".
In questo modo posso effettuare il salto con GOTO indicando la label numerica.
Il risultato in output è il seguente
B
E così via.