25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.2 Istruzioni di diramazione 91<br />

x1 = (-b-SQRT(d))/(2.*a)<br />

x2 = (-b+SQRT(d))/(2.*a)<br />

END IF<br />

La forma più completa di costrutto IF va sotto il nome di costrutto IF THEN ELSE. Questo<br />

costrutto permette di eseguire un blocco di istruzioni se una certa condizione è verificata,<br />

oppure un altro blocco se risultano verificate altre condizioni. La struttura di un costrutto IF<br />

THEN ELSE dipende dal numero di condizioni da considerare, e si presenta nella seguente forma<br />

generale:<br />

[nome:] IF (espressione_logica_1) THEN<br />

blocco_1<br />

ELSE IF (espressione_logica_2) THEN [nome]<br />

blocco_2<br />

...<br />

[ELSE [nome]<br />

blocco]<br />

END IF [nome]<br />

in cuiespressione_logica_i può essere una qualunque variabile o espressione di tipoLOGICAL.<br />

Chiaramente ciascun blocco può contenere più istruzioni e, quindi, prevedere più azioni. <strong>Il</strong> nome<br />

opzionalmente associato al costrutto può avere una lunghezza massima di 31 caratteri, deve<br />

essere unico all’interno di ogni unità di programma e non può coincidere con il nome di una<br />

costante o di una variabile all’interno della stessa unità di programma. Se ad un costrutto IF<br />

è associato un nome, lo stesso nome deve comparire anche nell’istruzione END IF, mentre esso<br />

è facoltativo nelle clausole ELSE ed ELSE IF.<br />

Questa forma di costrutto viene usata quando un certo numero di istruzioni dipende dalla<br />

medesima condizione. Se espressione_logica_1 è vera il programma esegue le istruzioni<br />

del blocco_1 per poi saltare alla prima istruzione eseguibile che segue END IF; altrimenti il<br />

programma verifica lo stato di espressione_logica_2 e, se questa è vera, esegue le istruzioni<br />

del blocco_2 per saltare alla prima istruzione eseguibile che segue END IF. Questo ”percorso”<br />

si può estendere a un qualsivoglia numero di clausole ELSE IF. Se tutte le espressioni logiche<br />

sono false, il programma esegue le istruzioni del gruppo ELSE per cui la parte ELSE agisce come<br />

una possibilità di riserva (o di default) allo scopo di coprire tutte le altre eventualità.<br />

Le istruzioni ELSE ed ELSE IF, così come END IF, devono occupare righe separate e non<br />

possono avere un’etichetta.<br />

Un esempio di uso del costrutto IF THEN ELSE è fornito dal seguente programma che valuta<br />

la radice quadrata di un numero reale a patto che il radicando sia non minore di zero:<br />

PROGRAM radq<br />

! Calcola la radice quadrata di un numero con test sul segno<br />

IMPLICIT NONE<br />

REAL :: radicando<br />

!<br />

WRITE(*,*) " Inserisci un valore: "

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!