25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!