CalendarioUno dei temi che si impara ad odiare per primo quando si inizia a programmare è la gestione delle date. Gestire un calendario significa fare tutto e quando si inizia a scrivere la prima libreria di funzioni in linguaggio C per gestire le date sembra quasi di dover lanciare una capsula nello spazio. In realtà esistono librerie di sistema per risolvere molti problemi in modo elegante ma scriversele da solo fa figo, non impegna e sta bene con tutto. Gestire le festività è semplice finché si parla di Natale o Capodanno ma le feste mobili sono le più antipatiche. Per esempio la Pasqua. Come si fa a stabilire quando cade la pasqua in un determinato anno?

A questo punto la letteratura abbonda di soluzioni. La più immediata per un programmatore è sicuramente il metodo di Gauss.

Dato un valore Y che rappresenta l'anno per cui si effettua il calcolo, il metodo restituisce il giorno ed il mese in cui cade la Pasqua. A seconda dell'intervallo in cui sii trova il valore di Y si identificano due parametri, M e N:

# Intervallo del valore di Y Valore di M Valore di N
1 fino al 1582 15 6
2 1583 - 1699 22 2
3 1700 - 1799 23 3
4 1800 - 1899 23 4
5 1900 - 2099 24 5
6 2100 - 2199 24 6
7 2200 - 2299 25 7
8 2300 - 2399 26 1
9 2400 - 2499 25 1

Dati M e N, si calcola il valore delle variabili A, B, C, D e E secondo le seguenti formule, dove mod è l'operatore di modulo, che restituisce il resto della divisione intera:

A = Y mod 19
B = Y mod 4
C = Y mod 7
D = (19A + M) mod 30
E = (2B + 4C + 6D + N) mod
F = 22 + D + E

Il mese in cui cade la Pasqua può essere marzo o aprile. Per determinarlo si controlla il valore di F:

  • se F è minore o uguale di 31: il mese è marzo ed il giorno è F;
  • se F è maggiore di 31:
    • se F - 31 è diverso da 25 e 26, oppure F = 25 e D è diverso da 28 e/o A è minore o uguale a 10: il mese è aprile ed il giorno è F - 31;
    • se F - 31 = 25 e D = 28 e A è maggiore di 10: il mese è aprile ed il giorno il 18;
    • se F - 31 = 26: il mese è aprile ed il giorno il 19.

Tradotto in pseudo codifica, le variabili GG e MM rappresentano il giorno ed il mese espresso in numero da 3 a 4, con 3 che corrisponde a marzo e 4 ad aprile:

If F <= 31 Then
GG = F
MM = 3
Else If (F - 31 <> 25 AND F - 31 <> 26) OR (F = 25 AND D <> 28 AND A < 10) OR (A < 10) Then
GG = F - 31
MM = 4
Else If (F - 31 = 25 AND D = 28 AND A > 10) Then
GG = 18
MM = 4
Else If (F - 31 = 26) Then
GG = 19
MM = 4
End

Il seguente tabulato mostra le date della Pasqua dal 1980 a oggi:

ANNO    A     B    C    D     E    F     DATA
---------------------------------------------------
1980    4     0    6    10    5    37    06/04/1980
1981    5     1    0    29    6    57    26/04/1981
1982    6     2    1    18    2    42    11/04/1982
1983    7     3    2    7    5    34    03/04/1983
1984    8     0    3    26    5    53    22/04/1984
1985    9     1    4    15    1    38    07/04/1985
1986    10    2    5    4    4    30    30/03/1986
1987    11    3    6    23    5    50    19/04/1987
1988    12    0    0    12    0    34    03/04/1988
1989    13    1    1    1    3    26    26/03/1989
1990    14    2    2    20    4    46    15/04/1990
1991    15    3    3    9    0    31    31/03/1991
1992    16    0    4    28    0    50    19/04/1992
1993    17    1    5    17    3    42    11/04/1993
1994    18    2    6    6    6    34    03/04/1994
1995    0     3    0    24    1    47    16/04/1995
1996    1     0    1    13    3    38    07/04/1996
1997    2     1    2    2    6    30    30/03/1997
1998    3     2    3    21    0    43    12/04/1998
1999    4     3    4    10    3    35    04/04/1999
2000    5     0    5    29    3    54    23/04/2000
2001    6     1    6    18    6    46    15/04/2001
2002    7     2    0    7    2    31    31/03/2002
2003    8     3    1    26    3    51    20/04/2003
2004    9     0    2    15    5    42    11/04/2004
2005    10    1    3    4    1    27    27/03/2005
2006    11    2    4    23    2    47    16/04/2006
2007    12    3    5    12    5    39    08/04/2007
2008    13    0    6    1    0    23    23/03/2008
2009    14    1    0    20    1    43    12/04/2009
2010    15    2    1    9    4    35    04/04/2010
2011    16    3    2    28    5    55    24/04/2011
2012    17    0    3    17    0    39    08/04/2012
2013    18    1    4    6    3    31    31/03/2013
2014    0    2    5    24    5    51    20/04/2014
2015    1    3    6    13    1    36    05/04/2015

Dal 325 d.C., anno in cui si tenne il Concilio di Nicea, fu stabilito che la Pasqua sarebbe caduta la prima domenica dopo il plenilunio di marzo. Da allora i matematici e gli astronomi elaborarono diversi metodi per stabilire il giorno esatto. Quello di Gauss è uno di quelli più recenti. Esso fu sviluppato nel 1800, poi successivamente corretto dallo stesos Gauss nel 1816. Il metodo è applicabile da 1582 poiché esso è l'anno di entrata in vigore del calendario Gregoriano. Il 24 febbraio 1582 ne fu infatti sancita l'entrata in vigore, sopprimendo i giorni compresi tra il 4 ed il 15 ottobre 1582.

Aggiungi commento

I commenti non sono pubblicati automaticamente ma sono soggetti a validazione. Non è tollerato l'uso di linguaggio osceno, lesivo della dignità, razza, religione o opinione altrui. Il dialogo DEVE svolgersi in tono moderato e civile. Se non sei d'accordo astieniti dal commentare


Codice di sicurezza
Aggiorna