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.

7.2 Istruzioni di assegnazione di puntatori 363<br />

REAL, POINTER :: pt<br />

REAL, TARGET :: a=3<br />

INTEGER, POINTER, DIMENSION(:) :: pt1, pt2<br />

INTEGER, TARGET :: x(5), y(10), z(100)<br />

REAL, POINTER, DIMENSION(:,:,:) :: punt<br />

REAL, TARGET :: targ(:,:,:)<br />

E’, invece, illegale una dichiarazione nella quale si forniscano, oltre al rango, anche le dimensioni<br />

del puntatore ad array:<br />

REAL, POINTER, DIMENSION(5,5) :: pt ! illegale<br />

Un puntatore può anche apparire come componente di un tipo di dati derivato, contrariamente<br />

agli allocatable array ai quali questa possibilità è inibita. A titolo di esempio si può<br />

considerare il seguente frammento di programma:<br />

TYPE data<br />

REAL, POINTER :: a(:)<br />

END TYPE data<br />

TYPE(data) :: event(3)<br />

...<br />

DO i=1,3<br />

READ(*,*) n<br />

ALLOCATE(event(i)%a(n))<br />

READ(*,*) event(i)%a<br />

END DO<br />

...<br />

DO i=1,3<br />

DEALLOCATE(event(i)%a)<br />

END DO<br />

Inoltre, i puntatori che siano componenti di una variabile di tipo derivato possono puntare<br />

anche al tipo stesso di dati derivato che si sta creando: questa caratteristica è molto utile<br />

quando si vogliano creare delle strutture dati dinamiche. Un possibile esempio di applicazione<br />

di questa particolare caratteristica è il seguente:<br />

TYPE :: valore_reale<br />

REAL :: valore<br />

TYPE(valore_reale) :: pnt<br />

END TYPE<br />

7.2 Istruzioni di assegnazione di puntatori<br />

Un puntatore può essere associato ad un dato target a mezzo di una istruzione di assegnazione<br />

di puntatore:

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

Saved successfully!

Ooh no, something went wrong!