Array allocabili nel Fortran


FORTRANLe funzionalità di elaborazione degli Array nel Fortran 90 rappresentano i più significativi miglioramenti del linguaggio offerti dal nuovo standard. Tra queste assumono particolare importanza gli Array allocabili nel Fortran, cioè la possibilità di dichiarare un array con l’attributo ALLOCATABLE. Tale attributo indica che lo spazio per quell’array non viene riservato all’inizio dell’esecuzione del programma ma solo dopo l’esecuzione dell’istruzione ALLOCATE(), in cui si determina anche la dimensione dell’array.

Gli array possono essere molto grandi, in tal caso, richiedono molta memoria; pertanto, è spesso utile riservare questo spazio solo durante i tempi in cui è richiesto l’utilizzo dell’array. Questo non può essere fatto quando la dimensione dell’array è dichiarato durante la compilazione. Per questo motivo è conveniente utilizzare, per tali risorse, la cosiddetta ”free store” una memoria di run time per allocare così tale memoria solo durante l’esecuzione del programma. Questa memoria può essere utilizzata e ripristinata utilizzando i seguenti comandi.

Per dichiarare un array come allocabile utilizzeremo la seguente sintassi:

type, DIMENSION(:), ALLOCATABLE ::nome_array

Ad esempio scriveremo:

INTEGER, DIMENSION(:), ALLOCATABLE :: VETTORE

che crea un array intero di nome  VETTORE  a cui sarà allocata della memoria solo durante l’esecuzione ed in misura della sua grandezza.

Una volta che l’array non risulta più necessario, è importante deallocare la memoria in modo che possa essere utilizzata per altre risorse. Per fare questo utilizzeremo il comando DEALLOCATE. Quindi sarà importante utilizzare l’opzione STAT onde verificare che la deallocazione abbia avuto successo.

 DEALLOCATE (VETTORE)

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>