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.

66 Tipi ed espressioni<br />

TYPE(isotopo) :: Temp_I = isotopo(999,999.9)<br />

! start program Assign<br />

READ(*,*) Temp_E<br />

Carbonio = Temp_E<br />

Carbonio%isotopo_principale = Temp_I<br />

WRITE(*,*) Temp_E, Carbonio<br />

STOP<br />

END PROGRAM assegn_strut<br />

Si noti che se una variabile di un tipo derivato è inclusa in una istruzione WRITE, i componenti<br />

di questa variabile saranno stampati nello stesso ordine in cui sono stati dichiarati nella<br />

definizione di tipo. Allo stesso modo, se una tale variabile è inserita in una istruzione READ, i<br />

suoi componenti devono essere inseriti nel medesimo ordine previsto dalla definizione di tipo.<br />

Ciò è particolarmente vero in presenza di istruzioni di input/output formattate. A titolo di<br />

esempio, se pers1 è la variabile precedentemente dichiarata, le seguenti istruzioni:<br />

WRITE(*,100) pers1<br />

100 FORMAT(2(1X,A,/),1X,I2,/,1X,A,/,1X,A)<br />

forniscono come output la seguente lista:<br />

Luke<br />

Skywalker<br />

28<br />

M<br />

323-6439<br />

Le variabili di un tipo di dati derivato si comportano esattamente come ogni altra variabile<br />

definita in una unità di programma per cui possono essere inizializzate, modificate ed usate in<br />

istruzioni di chiamata di procedura come parametri di scambio. Per quanto concerne la loro<br />

inizializzazione, mentre il <strong>Fortran</strong> <strong>90</strong> consente soltanto l’inizializzazione dell’intera variabile<br />

all’atto della sua dichiarazione, ad esempio:<br />

TYPE :: mio_tipo<br />

INTEGER :: m<br />

INTEGER :: n<br />

REAL :: x<br />

END TYPE mio_tipo<br />

TYPE(mio_tipo) :: mia_var=mio_tipo(5,10,3.14)<br />

il <strong>Fortran</strong> <strong>95</strong> ha introdotto anche la possibilità di inizializzarne le componenti all’atto della<br />

definizione di tipo. Così l’esempio precedente potrebbe essere riscritto in maniera perfettamente<br />

equivalente come:<br />

TYPE :: mio_tipo<br />

INTEGER :: m=5 ! NB: solo <strong>Fortran</strong> <strong>95</strong>

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

Saved successfully!

Ooh no, something went wrong!