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.

64 Tipi ed espressioni<br />

! Definizione di un tipo di dati derivato<br />

TYPE :: obiettivo<br />

CHARACTER(15) :: name ! nome del corpo celeste<br />

REAL :: ra, dec ! coordinate celesti, in gradi<br />

INTEGER :: time ! tempo di esposizione, in secondi<br />

END TYPE obiettivo<br />

! Dichiarazione di un oggetto di questo nuovo tipo di dati<br />

TYPE(obiettivo) :: mio_obiettivo<br />

Si noti la possibilità di ”mischiare” liberamente oggetti di tipo numerico e di tipo carattere<br />

contrariamente a quanto accade per altre strutture dati come gli array. Naturalmente sarà<br />

compito del compilatore quello di provvedere ad una idonea sistemazione fisica in memoria dei<br />

diversi componenti per un più efficiente accesso ai registri.<br />

Una caratteristica peculiare dei tipi di dati definiti dall’utente è la possibilità di creare<br />

strutture ”complesse”, vale a dire un componente della struttura può, a sua volta, essere un<br />

oggetto di un tipo derivato, come illustrato nel seguente esempio:<br />

TYPE punto<br />

REAL :: x, y<br />

END TYPE punto<br />

TYPE cerchio<br />

TYPE (punto) :: centro<br />

REAL :: raggio<br />

END TYPE cerchio<br />

TYPE (cerchio) :: c<br />

Nelle righe precedenti si è definita una variabile c di tipo cerchio. Detta variabile ha formalmente<br />

due componenti: il primo componente, centro, è esso stesso un tipo di dati derivato che<br />

consiste in due componenti reali (x ed y), il secondo componente di c è una variabile ”atomica”<br />

di tipo reale (raggio). A questa variabile c può essere assegnato un valore in uno dei due<br />

possibili modi:<br />

oppure:<br />

c = cerchio(punto(0.,0.),1.)<br />

c%centro%x = 0.<br />

c%centro%y = 0.<br />

c%raggio = 1.<br />

In entrambi i casi, all’oggetto ”cerchio” c verranno assegnati un ”centro” (il punto (0.,0.))<br />

ed un ”raggio” (di valore 1.) In particolare, la prima delle due modalità di assegnazione è<br />

quella precedentemente definita come costruttore di struttura. Come si vede, essa consiste

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

Saved successfully!

Ooh no, something went wrong!