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.

232 Unità di Programma<br />

REAL(r8),PARAMETER :: day = 24*hr !1 giorno solare(in s)<br />

REAL(r8),PARAMETER :: yr = 3.155815E7_r8 !1 anno siderale (in s)<br />

REAL(r8),PARAMETER :: J_yr = 365.25*day !1 anno giuliano (in s)<br />

! Costanti di distanze astronomiche (in unita’ del SI)<br />

REAL(r8),PARAMETER :: AU = 1.4<strong>95</strong>9787066E11_r8 !Unita’ astronomica (m)<br />

REAL(r8),PARAMETER :: pc = 206264.806_r8*AU !Parsec (m)<br />

REAL(r8),PARAMETER :: ly = c*J_yr !Anno luce (giuliano; m)<br />

! Costanti di interesse astronomico (in unita’ del SI)<br />

REAL(r4),PARAMETER :: M_Sun = 1.9891E30_r4 !Massa del Sole (kg)<br />

REAL(r4),PARAMETER :: R_Sun = 6.<strong>95</strong>508E8_r4 !Raggio del Sole (m)<br />

REAL(r4),PARAMETER :: S_Sun = 1.365E3_r4 !Radiazione solare(J/m^2/s)<br />

REAL(r4),PARAMETER :: L_Sun = &<br />

four_pi*AU**2*S_Sun !Luminosita’ del Sole (W)<br />

REAL(r4),PARAMETER :: Te_Sun = &<br />

(L_Sun/(four_pi*R_Sun**2*sigma))**(0.25) !Temperature del Sole (K)<br />

REAL(r4),PARAMETER :: M_Earth = 5.9736E24_r8 !Massa della Terra (kg)<br />

REAL(r8),PARAMETER :: R_Earth = 6.378136E6_r8 !Raggio della Terra (m)<br />

END MODULE Costanti_fisiche<br />

Come visto, i moduli sono particolarmente utili per condividere grandi quantità di dati<br />

fra più unità di programma e fra un gruppo di procedure correlate, nascondendoli a tutte le<br />

altre unità. In questo modo si creano delle variabili globali. Tuttavia, è possibile (e talvolta<br />

opportuno) limitare il numero delle variabili definite in un modulo a cui una unità di programma<br />

può avere accesso. Questa peculiarità aumenta la ”sicurezza” di un codice assicurando che<br />

un’unità di programma che usi un modulo non ne cambi accidentalmente il valore di una<br />

variabile. A tale scopo è possibile associare all’istruzione USE il qualificatore ONLY:<br />

USE nome_modulo, ONLY: lista_di_variabili<br />

Ad esempio, se all’istruzione:<br />

USE global<br />

si sostituisce l’istruzione:<br />

USE global, ONLY: a, b, c<br />

l’unità di programma in cui questa istruzione è posta può avere accesso alle variabili a, b, c,<br />

quali che siano le altre variabili definite nel modulo global.<br />

L’uso dello specificatore ONLY previene la possibilità che l’unità di programma che usi un<br />

modulo possa modificare per errore quei dati (contenuti nel modulo) dei quali, peraltro, non<br />

necessita. Come è noto, la maggior parte degli errori di battitura sono individuati dal compilatore<br />

grazie all’istruzione IMPLICIT NONE la quale rende illegale l’uso di variabili non dichiarate.

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

Saved successfully!

Ooh no, something went wrong!