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.

234 Unità di Programma<br />

definite in un modulo facendo sì che le unità di programma che siano sede dell’associazione di<br />

USE vedano soltanto le entità strettamente necessarie. Restringere l’accesso al contenuto di un<br />

modulo porta, di norma, a scrivere programmi più facili da comprendere e mantenere. Questa<br />

operazione (detta di data hiding) può effettuarsi attraverso un uso, spesso combinato, degli<br />

attributi (o delle istruzioni) PUBLIC e PRIVATE. La sintassi degli attributi PUBLIC e PRIVATE è:<br />

tipo, PRIVATE :: lista_delle_variabili_”private”<br />

tipo, PUBLIC :: lista_delle_variabili_”pubbliche”<br />

mentre la forma delle corrispondenti istruzioni PUBLIC e PRIVATE è:<br />

tipo :: lista_delle_variabili<br />

PRIVATE [::] lista_delle_variabili_”private”<br />

PUBLIC [::] lista_delle_variabili_”pubbliche”<br />

Se ad una entità del modulo è applicato l’attributo (o l’istruzione) PUBLIC, allora detta<br />

entità sarà disponibile all’esterno del modulo a ciascuna unità di programma che usi il modulo.<br />

Viceversa, se ad una entità del modulo è applicato l’attributo (o l’istruzione) PUBLIC, allora<br />

detta entità non sarà visibile all’esterno del modulo ma sarà disponibile esclusivamente alle<br />

procedure interne al modulo. Si noti che tutte le entità di un modulo sono da ritenersi pubbliche<br />

per default sicché, in mancanza di una specifica di PRIVATE, tutte le variabili e le procedure di<br />

un modulo saranno accessibili esternamente. Le seguenti righe di programma rappresentano<br />

esempi di uso corretto degli attributi e delle istruzioni PUBLIC e PRIVATE:<br />

INTEGER, PRIVATE :: m, n<br />

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

INTEGER :: i, j<br />

PRIVATE i, j<br />

Se un modulo contiene una istruzionePRIVATE senza specificare una lista di variabili, allora tutte<br />

le variabili e le procedure definite nel modulo saranno da considerarsi locali al modulo. Ogni<br />

variabile o procedura che, invece, si vuole rendere accessibile all’esterno dovrà essere specificata<br />

appositamente con l’attributo o con un’istruzione PUBLIC. A chiarimento di quanto detto, si<br />

consideri il seguente esempio:<br />

MODULE dati<br />

IMPLICIT NONE<br />

PRIVATE<br />

PUBLIC :: a, b, c<br />

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

...<br />

END MODULE dati<br />

Particolare attenzione merita l’uso delle dichiarazioni PUBLIC e PRIVATE con oggetti di tipo<br />

derivato, come schematizzato di seguito.

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

Saved successfully!

Ooh no, something went wrong!