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.

226 Unità di Programma<br />

REAL FUNCTION Area()<br />

IMPLICIT NONE<br />

REAL :: s<br />

s = (a+b+c)/2.0<br />

Area = SQRT(s*(s-a)*(s-b)*(s-c))<br />

END FUNCTION Area<br />

END PROGRAM HeronFormula<br />

Se una procedura interna dichiara un oggetto con lo stesso nome di una variabile già dichiarata<br />

nell’unità di programma ospite, questa nuova variabile si ”sovrappone” a quella dichiarata<br />

nell’unità esterna per tutta la durata dell’esecuzione della procedura. Ad esempio, nel seguente<br />

programma le due variabili x dichiarate, rispettivamente, nel main e nella procedura interna,<br />

sono totalmente diverse ed indipendenti l’una dall’altra.<br />

PROGRAM prog<br />

IMPLICIT NONE<br />

REAL :: x, y, z<br />

...<br />

CONTAINS<br />

REAL FUNCTION func()<br />

IMPLICIT NONE<br />

REAL :: a, b, x<br />

...<br />

END FUNCTION func<br />

END PROGRAM prog<br />

5.4 Variabili locali<br />

Vengono definite come locali tutte le variabili dichiarate all’interno di una procedura e che non<br />

facciano parte della lista di argomenti formali. Ad esempio, nella seguente procedura:<br />

SUBROUTINE mia_sub(m,n)<br />

IMPLICIT NONE<br />

INTEGER, INTENT(IN) :: m, n<br />

REAL :: a<br />

REAL, DIMENSION(m,n) :: x<br />

...<br />

END SUBROUTINE mia_sub<br />

le variabili a ed x sono oggetti locali. Essi si caratterizzano per il fatto che:<br />

• Sono creati ogni qualvolta la procedura è invocata.<br />

• Sono distrutti quando termina l’esecuzione della procedura.

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

Saved successfully!

Ooh no, something went wrong!