DreamsInCode logo

DreamsInCode

import { Research, Work, Passion } from Life;

Imagem de Calcular a data da PáscoaImagem de Calcular a data da Páscoa

Laurentiu Iordache @ Unsplash

Calcular a data da Páscoa

Calcular a data do Domingo de Páscoa é de uma complexidade atroz, e nem vamos falar de toda a mitologia por trás da matemática envolvida.

Publicado Monday, May 24, 2010 at 12:23 AM

Este cálculo é muito importante nas civilizações de tradição católica, visto que três feriados (em Portugal – noutros países até podem ser mais) dependem do dia do Domingo de Páscoa: o Carnaval é 47 dias antes; a Sexta-feira Santa é dois dias antes; e o Corpo de Deus é 60 dias depois.

Antes de passarmos ao cálculo do dia, é preciso introduzir alguns conceitos.

Ciclo metónico

O ciclo metónico é um múltiplo comum entre anos solares e meses lunares, correspondente a 19 anos. Foi observado pela primeira vez pelo astrónomo grego Meton. Na realidade, o ciclo não é exactamente o mesmo: 19 anos solares são 6.939,602 dias e os 235 meses lunares correspondentes são 6.939,688 dias; isto é, existe um desfasamento de 0,086 dias, ou 2 horas, 3 minutos e 50 segundos (e 4 décimas, já agora).

Cada ano tem um número correspondente a este ciclo, chamado Número Dourado. É calculado efectuando o resto da divisão entre o ano actual e o número 19, e somando 1 ao resultado dessa operação (antigamente, não gostavam nem um bocadinho do zero – daí este mais um). Este ano, por exemplo, o Número Dourado é o 15.

Diferença entre os anos julianos e gregorianos

A diferença entre o calendário juliano (até finais do século XVI, dependendo dos países – alguns vieram quase até ao séc. XX) e gregoriano, ao nível da quantidade de dias, é apenas nos anos de século não bissextos, isto é, nos anos que são divisíveis por 100, mas não por 400. O calendário juliano tinha um ano bissexto de 4 em 4 anos, certinho. O gregoriano também, mas exclui os anos de século, excepto se forem divisíveis por 400. Este cálculo é também chamado Equação Solar.

Diferença entre o calendário juliano e o ciclo metónico

Este cálculo é também chamado Equação Lunar, e calcula o número de dias de desvio do mês lunar a partir do calendário juliano. Este número aumenta 8 vezes a cada 2500 anos.

Epacta

Dia do mês lunar no dia 1 de Janeiro do ano a calcular. O mês lunar decorre entre duas luas novas. Em 2010, a Epacta foi 14, isto é, estava quase lua cheia no dia 1 de Janeiro. O cálculo da Epacta é todo um tratado: assume-se que a lua avança 11 dias de ano para ano dentro do ciclo metónico, e que tem de se levar em linha de conta com a Equação Solar (a subtrair) e com a Equação Lunar (a somar).

Dois ajustes são necessários: em primeiro lugar, uma constante, 20, para acertar o dia lunar; em segundo, duas condições de acerto, se a Epacta for 25 e o Número Dourado for maior do que 11, é preciso acrescentar 1 à Epacta, procedendo-se de igual modo se a Epacta for 24. Como não podia deixar de ser, estas condições destinam-se a acertar a lua com possíveis condições de bissextalidade, no caso, dos anos precedentes.

Então, como calcular a data da Páscoa?

O pseudo-código seguinte baseia-se em todos os conceitos anteriores, e é o mesmo algoritmo, com algumas correcções, apresentado por Donald E. Knuth em The Art of Computer Programming, Vol. 1 [Addison-Wesley, 1969]. Todas as divisões devem ser consideradas como truncagens, isto é, o resto é descartado. O símbolo % representa o resto da divisão.

1Seja ano = ano a calcular;
2
3Seja NumDourado = (ano % 19) + 1;
4Seja Século = (ano / 100) + 1; // na realidade, este cálculo de século
5 // está errado, visto que o "ano de século"
6 // pertence ao século precedente, e não ao
7 // seguinte - mas é assim que é preciso
8 // para este cálculo da data da Páscoa
9Seja EqSolar = ( (3 x Século) / 4) - 12;
10Seja EqLunar = ( ( 8 x Século + 5) / 25) - 5;
11
12Seja Epacta = 11 x NumDourado + EqLunar - EqSolar + 20;
13Epacta = Epacta - 30 x (Epacta / 30); // porquê, quando podia ter sido
14 // feito com um resto da divisão?
15 // porque, para anos muito grandes,
16 // existe a possibilidade da Epacta
17 // ser negativa, pelo que a
18 // multiplicação por um número
19 // negativo se impõe nessas condições
20
21Se ( (Epacta = 25 E NumDourado > 11) OU (Epacta = 24) )
22 Epacta = Epacta + 1;
23
24Seja LuaCheia = 44 - Epacta; // porquê 44? Porque é o suficiente para chegar
25 // a Março. São 30 dias para um ciclo lunar
26 // completo, mais 14 para chegar à lua cheia
27
28Se (LuaCheia < 21) // o 21 representa o 21 de Março da data Pascal
29 LuaCheia = LuaCheia + 30;
30
31Seja CorrecçãoDomingo = ( ( 5 x Ano) / 4) - EqSolar - 10;
32// mais uma vez, a diferença entre calendários a fazer das suas...
33
34DiaPáscoa = LuaCheia + 7 - ( (CorrecçãoDomingo + LuaCheia) % 7);
35// isto é, na semana subsequente à lua cheia (+7), menos o resto da própria lua
36// cheia - porque o Domingo assume-se como o dia 7 da semana, dando resto 0,
37// depois dos devidos acertos. No entanto, ainda é possível que este dia seja
38// superior a 31, o que quer dizer que a Páscoa passou para Abril
39Se (DiaPáscoa > 31)
40 DiaPáscoa = DiaPáscoa - 31;
41 MêsPáscoa = Abril
42Senão
43 MêsPáscoa = Março

That's it. Parece mais complicado do que, na realidade, é.

Datas
Algoritmos

Postas relacionadas