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.

5.5 Moduli 235<br />

• I componenti di un tipo di dati derivato definito in un modulo possono essere resi inaccessibili<br />

all’esterno del modulo includendo l’istruzionePRIVATE all’interno della definizione di<br />

tipo. In tal caso il tipo di dati definito può ancora essere usato al di fuori del modulo, ma<br />

solamente come entità ”unica”, non essendo accessibili separatamente i suoi componenti.<br />

In particolare, in un’unità di programma che richiami il modulo in esame sarà possibile<br />

dichiarare variabili di quel tipo ma non sarà possibile lavorare con i componenti singoli.<br />

Un esempio di tipo di dati derivato con i componenti privati è il seguente:<br />

TYPE mio_tipo<br />

PRIVATE<br />

REAL :: x<br />

REAL :: y<br />

REAL :: z<br />

END TYPE mio_tipo<br />

• Chiaramente, anche un intero tipo di dati derivato può essere dichiarato come privato,<br />

come nell’esempio seguente:<br />

TYPE, PRIVATE :: mio_tipo<br />

REAL :: x<br />

REAL :: y<br />

REAL :: z<br />

END TYPE mio_tipo<br />

In questo caso l’intero tipo di dati derivato sarà non accessibile all’esterno del modulo nel<br />

quale è definito ma sarà visibile solo all’interno del modulo stesso.<br />

• E’ possibile, infine, dichiarare come private variabili di un tipo di dati derivato anche se<br />

questo è pubblico, come è mostrato nel seguente esempio:<br />

TYPE :: mio_tipo<br />

REAL :: x<br />

REAL :: y<br />

REAL :: z<br />

END TYPE mio_tipo<br />

TYPE(mio_tipo), PRIVATE :: tripletta<br />

In questo caso il tipo di dati derivato mio_tipo è accessibile a tutte le unità di programma<br />

che facciano uso del modulo, mentre la variabile tripletta può essere usata soltanto<br />

all’interno del modulo.<br />

Si noti, inoltre, che anche un tipo di dati derivato definito con l’attributo SEQUENCE può avere<br />

componenti privati, ad esempio:<br />

TYPE :: storage<br />

PRIVATE

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

Saved successfully!

Ooh no, something went wrong!