25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

224 Unità di Programma<br />

PROGRAM main<br />

IMPLICIT NONE<br />

REAL :: a, b, c, mainsum<br />

...<br />

mainsum = somma()<br />

...<br />

CONTAINS<br />

FUNCTION somma()<br />

IMPLICIT NONE<br />

REAL :: somma ! N.B.: Le variabili a, b, c sono definite nel main<br />

somma = a+b+c<br />

END FUNCTION<br />

END PROGRAM<br />

Tutte le procedure interne hanno totale visibilità delle variabili definite nell’unità ospite<br />

pertanto non è necessario ridefinirle. Si dice che le variabili dell’unità ospite sono accessibili<br />

all’unità interna per host association. Allo stesso modo non sarebbe necessario ripetere l’istruzione<br />

IMPLICIT NONE nelle unità interne, tuttavia, per motivi di chiarezza è sempre preferibile<br />

farlo. Viceversa, l’unità ospite non ha visibilità alcuna sulle variabili definite localmente alla<br />

procedura interna.<br />

Oltre che per host association, le variabili dell’unità ospite possono essere passate alla procedura<br />

interna a mezzo della comune associazione per argomento. Non c’è differenza sostanziale<br />

tra i due meccanismi, che possono anche essere combinati, come nel seguente esempio:<br />

PROGRAM main<br />

IMPLICIT NONE<br />

REAL :: x, y, z1, z2<br />

...<br />

CALL sub(z1,z2)<br />

...<br />

CONTAINS<br />

SUBROUTINE sub(z1,z2)<br />

IMPLICIT NONE<br />

REAL, INTENT(OUT) :: z1, z2<br />

z1 = 2*x-y<br />

z2 = x**2<br />

END SUBROUTINE<br />

END PROGRAM main<br />

Come ulteriore esempio, si guardi il programma seguente il quale invoca due funzioni interne,<br />

entrambe facenti uso delle stesse variabili a, b e c definite nel main, con la differenza che alla<br />

prima procedura le variabili vengono passate attraverso una lista di parametri attuali, alla<br />

seconda per associazione di host:<br />

PROGRAM HeronFormula

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

Saved successfully!

Ooh no, something went wrong!