Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.

L’algoritmo di Gauss per il calcolo della Pasqua

Autore: Giovanni Bernardo | Data pubblicazione: 15 ottobre 2009
Categorie: Matematica VB.NET

Come è noto, la festività della Pasqua Cattolica non cade mai nella stessa data in quanto è legata al ciclo lunare. Il “sistema” che fissa la data della Pasqua per ogni anno fu stabilita nell’anno 325 dal Concilio di Nicea: la Pasqua cade la domenica successiva al primo plenilunio dopo l’equinozio di Primavera (21 Marzo).

A volte capita di dover disporre di un semplice algoritmo da implementare nei propri programmi per il computo delle festività: è capitato a me per cui eccomi qui ad esporre una semplice funzione in vb.net che effettua il calcolo della data della Pasqua Cattolica.

Specifico “Cattolica” in quanto la Pasqua Ebraica segue un metodo di calcolo completamente differente e molto più complicato. La data della Pasqua Cattolica, inoltre, varia se si utilizza il calendario Gregoriano (che è quello che utilizziamo noi in Italia abitualmente e che viene utilizzato nella maggior parte del mondo) o il calendario Giuliano (utilizzato dalla Chiesa Ortodossa).

L’algoritmo più utilizzato per il calcolo della Pasqua Cattolica è sicuramente quello di Gauss. Nella funzione che segue ho implementato appunto tale algoritmo. Per utilizzare questa funzione nei vostri programmi copiate tutto il contenuto, incollatelo in un file di testo e date al file l’estensione .vb, importate quindi il tale file nel vostro progetto. La funzione va richiamata passando l’anno (parametro Year) e opzionalmente il valore dell’enumerazione per scegliere se utilizzare il calendario Gregoriano (opzione di default, per cui in questo caso non è necessario specificare) o quello Giuliano. Il valore restituito è in formato Date, per cui è indipendente dalle impostazioni internazionali in uso sul vostro pc.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Module easter_calc
 
    ' Evaluates day of Catholic Easter using Gauss algorithm
    ' by Bernardo Giovanni
    ' http://www.settorezero.com
 
    Public Enum CalendarType As Byte
        Gregorian = 0
        Julian = 1
    End Enum
 
    Public Function EasterDate(ByVal Year As Short, Optional ByVal CalendarType As CalendarType = CalendarType.Gregorian) As Date
 
        Dim a, b, c, d, e, M, N As Byte
        Dim da, mo As Byte
 
        If CalendarType = easter_calc.CalendarType.Julian Then
           M = 15
           N = 6
        Else
           If (Year >= 1583) And (Year <= 1699) Then
               M = 22
               N = 2
           ElseIf (Year >= 1700) And (Year <= 1799) Then
               M = 23
               N = 3
           ElseIf (Year >= 1800) And (Year <= 1899) Then
               M = 23
               N = 4
           ElseIf (Year >= 1900) And (Year <= 2099) Then
               M = 24
               N = 5
           ElseIf (Year >= 2100) And (Year <= 2199) Then
               M = 24
               N = 6
           ElseIf (Year >= 2200) And (Year <= 2299) Then
               M = 25
               N = 0
           ElseIf (Year >= 2300) And (Year <= 2399) Then
               M = 26
               N = 1
           ElseIf (Year >= 2400) And (Year <= 2499) Then
               M = 25
               N = 1
           Else
               Return Nothing
           End If
       End If
 
        a = Year Mod 19
        b = Year Mod 4
        c = Year Mod 7
        d = ((19 * a) + M) Mod 30
        e = ((2 * b) + (4 * c) + (6 * d) + N) Mod 7
 
        If (d + e < 10) Then
             da = d + e + 22
             mo = 3
        Else
             da = d + e - 9
             mo = 4
        End If
 
        If (da = 26 And mo = 4) Then
            da = 19
            mo = 4
        ElseIf (da = 25 And mo = 4 And d = 28 And e = 6 And a > 10) Then
            da = 18
            mo = 4
        End If
 
        Return New Date(Year, mo, da)
 
    End Function
 
End Module

Questa funzione, sfruttando l’algoritmo di Gauss, è valida per gli anni compresi tra il 1583 e il 2499, se l’anno passato non rientra in questo range, la funzione restituisce Nothing, che in termini di oggetto Date equivale alla data 01/01/0001 …

Scarica la funzione (solo per utenti iscritti) : Funzione in vb.net per il calcolo della Pasqua Cattolica (22)

Maggiori informazioni le potete trovare nelle seguenti pagine su wikipedia:

Articoli che potrebbero interessarti

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? Supporta e mantieni in vita questo sito, ci basta soltanto un caffè o una birra.
Se desiderate che settorezero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa

Puoi lasciare un commento, o un trackback dal tuo sito.

  1. Ancora nessun commento.

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2012 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.