La struttura ciclica DO in Fortran
La struttura ciclica DO mi permette di realizzare un ciclo con N iterazioni predefinite. Esistono due sintassi:
DO / CONTINUE
Questa struttura ciclica è compresa tra DO e CONTINUE.
DO linea indice = inizio, fine, passo
...
linea CONTINUE
I parametri dell'istruzione DO sono:
- il numero di linea finale in cui termina il blocco delle istruzioni da eseguire in modo ricorsivo.
- il nome della variabile indice usata per contare il numero delle iterazioni.
- il valore iniziale del ciclo
- il valore finale del ciclo
- il passo (opzionale). E' l'incremento della variabile contatore dopo ogni iterazione. Se questo valore è omesso, è uguale a +1 di default.
Nota. La parola che conclude il ciclo ( CONTINUE ) non include alcun riferimento alla variabile indice. E' però molto importante che abbia lo stesso numero di linea indicato dalla struttura DO, altrimenti il loop non funziona.
Esempio
Questo programma stampa i primi numeri dispari.
DO 100 I=1,10,2
WRITE(*,*) I
100 CONTINUE
Il loop parte dal valore iniziale 1 fino a 10.
Il passo è uguale a +2. Pertato, compie 5 iterazioni.
L'output del programma è il seguente:
1
3
5
7
9
DO / END DO
In alcune versioni del Fortran la parola CONTINUE è sostituita con END DO.
DO indice = inizio, fine, passo
...
END DO
Il principio di funzionamento resta lo stesso. In questo caso non occorre indicare il numero di linea.
Esempio
Provo a realizzare lo stesso output usando la parola terminale END DO al posto di CONTINUE.
DO I=1,10,2
WRITE(*,*) I
END DO
In questo caso non devo indicare il numero di linea in cui termina il blocco delle istruzione.
L'output è sempre lo stesso.
1
3
5
7
9
E così via.