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.

92 Istruzioni di controllo<br />

READ(*,*) radicando<br />

IF (radicando>=0.0) THEN<br />

WRITE(*,*) " La sua radice quadrata vale: "<br />

WRITE(*,*) SQRT(radicando)<br />

ELSE<br />

WRITE(*,*) " Errore: inserito valore negativo! "<br />

END IF<br />

STOP<br />

END PROGRAM radq<br />

<strong>Il</strong> programma seguente, invece, valuta il giorno dell’anno in cui cade la Pasqua sfruttando<br />

l’algoritmo proposto da Oudin e Tondering. Al fine di comprendere le istruzioni contenute<br />

nel programma giova ricordare che la Pasqua cade sempre la domenica seguente il plenilunio<br />

successivo all’equinozio di primavera (21 marzo). Si ricorda, inoltre, che si chiama età della<br />

luna a un dato momento, il numero di giorni trascorsi dall’ultimo novilunio fino a quel momento<br />

(per tutti i giorni dell’anno si può dunque esprimere l’età della luna, in generale mediante un<br />

numero intero di giorni). Si chiama, invece, epatta relativa a un determinato anno l’età della<br />

luna al primo gennaio di quell’anno. Convenedo di chiamare 0 il giorno in cui la Luna è nuova,<br />

l’epatta può variare tra 0 e 29. Infine, sovrapponendo al ciclo solare annuale il ciclo metonico<br />

di 19 anni ne consegue che ogni 19 anni, prescindendo da errori di computo, i fenomeni celesti<br />

solari e lunari devono ripetersi identicamente.<br />

PROGRAM Pasqua<br />

! Scopo: calcolare la data in cui cade la Pasqua in un dato anno<br />

IMPLICIT NONE<br />

INTEGER :: year, metcyc, century, error1, error2, day<br />

INTEGER :: epact, luna, temp<br />

!<br />

WRITE(*,*) " Inserire l’anno (successivo al 1582): "<br />

READ(*,*) year<br />

! Calcolo del ciclo metonico<br />

metcyc = MOD(year,19)+1<br />

century = (year/100)+1<br />

error1 = (3*century/4)-12<br />

error2 = ((8*century+5)/25)-5<br />

day = (5*Year/4)-error1-10<br />

temp = 11*metcyc+20+error2-error1<br />

! Calcolo dell’epatta<br />

epact = MOD(temp,30)<br />

IF(epact11).OR.epact==24) THEN<br />

epact = epact+1

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

Saved successfully!

Ooh no, something went wrong!