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.

254 Unità di Programma<br />

Un semplice esempio di applicazione delle procedure testé sviluppate potrebbe essere il seguente:<br />

PROGRAM m<br />

TYPE(grid2D) :: g<br />

...<br />

g%xmin = 0.0<br />

g%xmax = 10.0<br />

WRITE(*,*) "dx = " dx(g)<br />

...<br />

END PROGRAM m<br />

5.8.7 Procedure come argomenti<br />

E’ possibile usare una procedura come un argomento attuale in un’istruzione di chiamata ad<br />

un’altra procedura. Una procedura può essere usata come un argomento di scambio solo se è<br />

una procedura esterna oppure una procedura di modulo: pertanto non è consentito usare come<br />

argomento una procedura interna. Un esempio assai comune è il caso in cui un argomento<br />

attuale sia il risultato di una funzione:<br />

PROGRAM test_func<br />

INTERFACE<br />

FUNCTION func(x)<br />

REAL, INTENT(IN) :: x<br />

END FUNCTION func<br />

END INTERFACE<br />

...<br />

CALL sub(a,b,func(3))<br />

...<br />

END PROGRAM test_func<br />

REAL FUNCTION func(x) ! N.B.: funzione ’’esterna’’<br />

REAL, INTENT(IN) :: x<br />

func = x**2+1.0<br />

END FUNCTION func<br />

Quando la subroutine sub viene invocata, ad essa vengono passati i valori dei parametri a<br />

e b, ed il risultato della funzione func (nel caso in esame pari a 10). Pertanto, una procedura<br />

che sia usata come argomento verrà sempre eseguita prima di essere passata alla procedura<br />

chiamata. Come si è potuto evincere dall’esempio precedente, quando una procedura viene<br />

usata come argomento di un’altra procedura è necessario che abbia una interfaccia esplicita<br />

nell’unità chiamante. Naturalmente l’interfaccia è, come noto, da considerarsi esplicita per<br />

default quando si lavori con procedure di modulo.<br />

Un’altra possibilità che il <strong>Fortran</strong> mette a disposizione per utilizzare una procedura come<br />

argomento è quella di definire la procedura argomento con l’attributo EXTERNAL. Ad esempio,

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

Saved successfully!

Ooh no, something went wrong!