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.

230 Unità di Programma<br />

END MODULE def_kind<br />

Pertanto, in una qualsiasi unità di programma sede dell’istruzione:<br />

USE def_kind<br />

saranno perfettamente lecite le seguenti istruzioni di dichiarazione:<br />

INTEGER(short) :: myimage(1024,1024)<br />

INTEGER(long) :: counter<br />

REAL(double) :: processed_data(2000,2000)<br />

Chiaramente, su sistemi di elaborazione differenti le costanti short, long o double potranno<br />

avere valori diversi ma questo non condizionerà minimamente la portabilità del codice.<br />

Un interessante esempio di modulo che sposa le caratteristiche anzidette di ”archivio” di<br />

dati e di precisione portabile è riportato di seguito. Questo modulo, ben lungi dall’essere un<br />

mero esempio didattico, elenca dapprima i valori dei parametri di kind per oggetti di tipo<br />

INTEGER e REAL di differente range e precisione, quindi i valori delle principali costanti fisiche<br />

ed astronomiche di interesse.<br />

MODULE Costanti_fisiche<br />

!---------------------------------------------------------------------<br />

! Descrizione:<br />

! ==============<br />

! Questo modulo contiene i valori delle piu’ comuni costanti<br />

! fisiche ed astronomiche. Inoltre esso identifica i corretti<br />

! parametri di kind per la macchina in uso<br />

! Autore: B. Raucci<br />

! E-mail: biagio@raucci.net<br />

!---------------------------------------------------------------------<br />

IMPLICIT NONE<br />

SAVE<br />

! Determina la precisione ed il range del sistema di elaborazione in uso<br />

INTEGER,PARAMETER :: r8 = SELECTED_REAL_KIND(15,307)<br />

INTEGER,PARAMETER :: r4 = SELECTED_REAL_KIND(6,37)<br />

INTEGER,PARAMETER :: i1 = SELECTED_INT_KIND(2)<br />

INTEGER,PARAMETER :: i2 = SELECTED_INT_KIND(4)<br />

INTEGER,PARAMETER :: i4 = SELECTED_INT_KIND(8)<br />

! Identifica il numero piu’ piccolo rappresentabile in macchina<br />

! ed il numero di cifre significative per i numeri di kind r4 ed r8<br />

REAL(r4),PARAMETER :: tiny_r4 = TINY(1.0_r4)<br />

REAL(r8),PARAMETER :: tiny_r8 = TINY(1.0_r8)<br />

INTEGER, PARAMETER :: sig_fig_r4 = PRECISION(1.0_r4)<br />

INTEGER, PARAMETER :: sig_fig_r8 = PRECISION(1.0_r8)

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

Saved successfully!

Ooh no, something went wrong!