Archive for aprile 2021

il giorno della Pasqua

Posted on 4 aprile 2021. Filed under: Senza categoria |

Perché nel 2021 il giorno di Pasqua cade il 4 Aprile?

Perché non l’11 Aprile o il 18 Aprile?

Perché nel 2020 era il 12 Aprile?

Perché nel 2022 sarà il 17 Aprile e nel 2023 il 9 Aprile?

Come viene decisa la data della Pasqua.

Facciamo un gioco. Chiedetelo ai vostri amici e parenti.

Sentirete tante risposte, una più strampalata dell’altra.

Ad esempio, io mi sono sentito dire che sono le tipografie che stampano i calendari, si riuniscono e decidono la data.

Oppure che il Papa ogni anno decide a caso e poi lo comunica.

Alt. Fermiamoci un attimo.

Per sua definizione, la Pasqua avviene secondo i cicli lunari e cade la domenica successiva al primo plenilunio della stagione primaverile.

Già con questa definizione abbandoniamo l’idea della riunione tra tipografie, stile riunione di condominio, smettiamo di pensare al Papa che sfoglia la margherita per decidere il giorno.

Il fatto che ci sia la Luna in gioco, dobbiamo pensare che sia un calcolo matematico.

E’ semplicemente un calcolo astronomico e sicuramente non sapete, la formula è in una sola riga. Magari pensavate già a formule matematiche difficilissime.

E comunque dove c’è un calcolo, noi possiamo scrivere un programma dove in input gli diamo l’anno di calcolo e in output abbiamo la data Giuliana.

La formula l’ho trovata in uno dei diversi libri del grande Jean Meeus, matematico, meteorologo e astronomo, del quale ho anche 4 volumi scritti in inglese e mai usciti in Italia.

Il calcolo è dato da una serie di divisioni, dove poi si prendono quoziente e resto. Queste diventano gli input di un’altra serie di divisioni che daranno degli output, che a loro volta diventeranno degli input per altre divisioni e così via.

Il tutto lo possiamo tradurre in una funzione come questa:

Dim a = 0
Dim b = 0
Dim c = 0
Dim d = 0
Dim ee = 0
Dim M = 0
Dim N = 0
Dim GiornoPasqua = 0
Dim MesePasqua = 0

Dim ritorna As Date

 

If (annoCalcolo > 1582 And annoCalcolo < 1700) Then
    M = 22
    N = 2
End If

 

If (annoCalcolo > 1699 And annoCalcolo < 1800) Then
    M = 23
    N = 3
End If

If (annoCalcolo > 1799 And annoCalcolo < 1900) Then
    M = 24
    N = 4
End If

If (annoCalcolo > 1899 And annoCalcolo < 2100) Then
    M = 24
    N = 5
End If

If (annoCalcolo > 2099 And annoCalcolo < 2200) Then
    M = 24
    N = 6
End If

If (annoCalcolo > 2199 And annoCalcolo < 2300) Then
    M = 25
    N = 0
End If

If (annoCalcolo > 2299 And annoCalcolo < 2400) Then
    M = 26
    N = 1
End If

If (annoCalcolo > 2399 And annoCalcolo < 2500) Then
    M = 25
    N = 1
End If

a = annoCalcolo Mod 19
b = annoCalcolo Mod 4
c = annoCalcolo Mod 7

d = (19 * a + M) Mod 30
ee = (2 * b + 4 * c + 6 * d + N) Mod 7

If (d + ee < 10) Then
    GiornoPasqua = d + ee + 22
    MesePasqua = 3
Else
    GiornoPasqua = d + ee – 9
    MesePasqua = 4
End If

If (GiornoPasqua = 26 And MesePasqua = 4) Then
    GiornoPasqua = 19
End If

If (GiornoPasqua = 25 And MesePasqua = 4 And d = 28 And ee = 6 And a > 10) Then
    GiornoPasqua = 18
End If

ritorna = New Date(annoCalcolo, MesePasqua, GiornoPasqua)

 

ed ecco il risultato:

 

image

 

Questo codice è scritto in VB.NET, ma sapendo i calcoli da fare, non è difficile da tradurre nel vostro linguaggio preferito.

Ah, prima di finire l’articolo, auguro a tutti voi lettori una buona Pasqua.

Pubblicità
Leggi l'articolo intero | Make a Comment ( None so far )

Liked it here?
Why not try sites on the blogroll...