Saltar para o conteúdo

Cálculo da Páscoa: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Linha 4: Linha 4:
O '''cálculo''' da data '''da [[Páscoa]]''', também conhecido como '''Computus''' em [[latim]], é fundamental no calendário cristão desde os primórdios da cristandade, tornando-se definido na [[Idade Média]].
O '''cálculo''' da data '''da [[Páscoa]]''', também conhecido como '''Computus''' em [[latim]], é fundamental no calendário cristão desde os primórdios da cristandade, tornando-se definido na [[Idade Média]].


A [[Páscoa]] é celebrada no primeiro [[domingo]] após a primeira [[lua cheia]] que ocorre depois do [[equinócio]] da [[Primavera]] (no hemisfério norte, [[outono]] no hemisfério sul), ou seja, é equivalente à antiga regra de que seria o primeiro Domingo após o 14º dia do mês lunar de Nisan. Poderá assim ocorrer entre [[22 de Março]] e [[25 de Abril]].
A [[Páscoa]] é celebrada conforme a data sugerida pelo Tiago. Poderá assim ocorrer entre [[22 de Março]] e [[25 de Abril]].


== Cálculo da data da Páscoa recorrendo a tabela simples ==
== Cálculo da data da Páscoa recorrendo a tabela simples ==

Revisão das 21h24min de 10 de janeiro de 2014

Tábua medieval da Escandinávia, em escrita rúnica, para cálculo da data da Páscoa
Distibuição das datas da Páscoa para um período completo de 5.700.000 anos.

O cálculo da data da Páscoa, também conhecido como Computus em latim, é fundamental no calendário cristão desde os primórdios da cristandade, tornando-se definido na Idade Média.

A Páscoa é celebrada conforme a data sugerida pelo Tiago. Poderá assim ocorrer entre 22 de Março e 25 de Abril.

Cálculo da data da Páscoa recorrendo a tabela simples

  1. Obtenha o número dourado somando 1 ao resto da divisão inteira do ano em questão por 19.

Ao número final chamaremos de "X". Esse número é o "número dourado" que corresponde a uma data específica dada na tabela abaixo. A Páscoa será celebrada ao domingo seguinte à data encontrada na tabela. Caso a data já seja um domingo, a Páscoa é o domingo da semana seguinte.

Exemplo:

2020/19 dá 106 com resto 6;

6+1 = 7 (Número dourado)

Consultando na tabela, chega-se a 8 de abril ou o domingo seguinte. A Páscoa em 2020 será dia 12 de abril, já que dia 8 é quarta-feira.

X Data
1 14 de Abril ou Domingo seguinte
2 3 de Abril ou Domingo seguinte
3 23 de Março ou Domingo seguinte
4 11 de Abril ou Domingo seguinte
5 31 de Março ou Domingo seguinte
6 18 de Abril ou Domingo seguinte
7 8 de Abril ou Domingo seguinte
8 28 de Março ou Domingo seguinte
9 16 de Abril ou Domingo seguinte
10 5 de Abril ou Domingo seguinte
11 25 de Março ou Domingo seguinte
12 13 de Abril ou Domingo seguinte
13 2 de Abril ou Domingo seguinte
14 22 de Março ou Domingo seguinte
15 10 de Abril ou Domingo seguinte
16 30 de Março ou Domingo seguinte
17 17 de Abril ou Domingo seguinte
18 7 de Abril ou Domingo seguinte
19 27 de Março ou Domingo seguinte

Cálculo da data da Páscoa recorrendo a Algoritmos

Algoritmo de Gauss

Para calcular o dia da Páscoa (Domingo), usa-se a fórmula abaixo, onde o "ANO" deve ser introduzido com 4 dígitos. O operador MOD é o resto da divisão. Os valores X e Y são retirados da tabela a seguir:

Faixa de anos X Y
1582 1599 22 2
1600 1699 22 2
1700 1799 23 3
1800 1899 23 4
1900 1999 24 5
2000 2099 24 5
2100 2199 24 6
2200 2299 25 7


   a=MOD(ANO;19)
   b=MOD(ANO;4)
   c=MOD(ANO;7)
   d=MOD((19*a)+X;30)
   e=MOD(((2*b)+(4*c)+(6*d)+Y);7)
   se: (d+e)<10 então o dia = (d+e+22) e mês=Março
   senão: dia=(d+e-9) e mês=Abril
   exceções:
   # quando o domingo de Páscoa calculado for 26 de Abril, corrige-se para uma semana antes, ou seja, 19 de Abril.
   # quando o domingo de Páscoa calculado for 25 de Abril e d=28 e a>10, então a Páscoa é em 18 de Abril.

Algoritmo de Meeus/Jones/Butcher

Outro Algoritmo, conhecido como "Meeus/Jones/Butcher", tem a vantagem de não ter exceções para o Calendário Gregoriano (a partir de 1583), conforme apresentado por Jean Meeus em seu livro "Astronomical Algorithms"[1]:

   a = MOD(ANO;19)
   b = ANO \ 100
   c = MOD(ANO;100)
   d = b \ 4
   e = MOD(b;4)
   f = (b + 8) \ 25
   g = (b - f + 1) \ 3
   h = MOD((19 × a + b - d - g + 15);30)
   i = c \ 4
   k = MOD(c;4)
   L = MOD((32 + 2 × e + 2 × i - h - k);7)
   m = (a + 11 × h + 22 × L) \ 451
   MÊS = (h + L - 7 × m + 114) \ 31
   DIA = MOD((h + L - 7 × m + 114);31) + 1

Obs.: O sinal "\" refere-se à divisão obtendo o inteiro (INT). Exemplo: 7\3 é igual a 2 e não a 2,333.

Exemplo para o ano de 2008:

   a = MOD(2008;19) = 13
   b = 2008 \ 100 = 20
   c = MOD(2008;100) = 8
   d = 20 \ 4 = 5
   e = MOD(20;4) = 0
   f = (20 + 8) \ 25 = 1
   g = (20 - 1 + 1) \ 3 = 6
   h = MOD((19 × 13 + 20 - 5 - 6 + 15);30) = 1
   i = 8 \ 4 = 2
   k = MOD(8;4) = 0
   L = MOD((32 + 2 × 0 + 2 × 2 - 1 - 0);7) = 0
   m = (13 + 11 × 1 + 22 × 0) \ 451 = 0
   MÊS = (1 + 0 - 7 × 0 + 114) \ 31 = 3 (Março)
   DIA = MOD(1 + 0 - 7 × 0 + 114);31) + 1 = 23
   
   Ou seja, a Páscoa de 2008 caiu em 23 de Março.

Uma forma de aplicação do Algoritmo de Meeus/Jones/Butcher, direta e acessível para a maioria das pessoas que utilizam computadores, é a adaptação de Claytom Valle para ser mostrada numa única célula da planilha Excel®, da Microsoft. Basta copiar o conjunto abaixo (exatamente como mostrado, sem espaços) e colar na célula onde se espera que seja exibida a data da Páscoa. Nesse exemplo, considerou-se uma célula chamada "Ano" (definida através da opção "Definir Nome" do Excel®), mas pode-se substituir todas as palavras "Ano" pela célula que contenha o ano desejado (como por exemplo "A1", sem aspas):

=DATA(Ano;INT((RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30)+RESTO((32+(2*RESTO(INT(Ano/100);4))+(2*INT(RESTO(Ano;100)/4))-(RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30))-(RESTO(RESTO(Ano;100);4)));7)-(7*INT(((RESTO(+Ano;19))+(11*RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30))+(22*RESTO((32+(2*RESTO(INT(Ano/100);4))+(2*INT(RESTO(Ano;100)/4))-(RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30))-(RESTO(RESTO(Ano;100);4)));7)))/451))+114)/31);RESTO((RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30)+RESTO((32+(2*RESTO(INT(Ano/100);4))+(2*INT(RESTO(Ano;100)/4))-(RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30))-(RESTO(RESTO(Ano;100);4)));7)-(7*INT(((RESTO(+Ano;19))+(11*RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30))+(22*RESTO((32+(2*RESTO(INT(Ano/100);4))+(2*INT(RESTO(Ano;100)/4))-(RESTO((19*(RESTO(+Ano;19))+(INT(Ano/100))-(INT(INT(Ano/100)/4))-(INT((INT(Ano/100)-(INT((INT(Ano/100)+8)/25))+1)/3))+15);30))-(RESTO(RESTO(Ano;100);4)));7)))/451))+114);31)+1)

Observação: devido à limitação do Excel em relação à Função "Data", a fórmula acima só funciona entre os anos 1900 e 9999.

Abaixo, o Algoritmo convertido para a linguagem "Transact-SQL Server". Poderá também ser adaptado para qualquer outra linguagem de programação:

   CREATE FUNCTION fncPascoa (@ANO int)
   RETURNS datetime
   AS
   BEGIN
       DECLARE @DATA AS DATETIME
       DECLARE @MES AS INT
       DECLARE @DIA AS INT
       DECLARE @A AS INT
       DECLARE @B AS INT
       DECLARE @C AS INT
       DECLARE @D AS INT
       DECLARE @E AS INT
       DECLARE @F AS INT
       DECLARE @G AS INT
       DECLARE @H AS INT
       DECLARE @I AS INT
       DECLARE @K AS INT
       DECLARE @L AS INT
       DECLARE @M AS INT
       SET @A = @ANO%19
       SET @B = @ANO/100
       SET @C = @ANO%100
       SET @D = @B/4
       SET @E = @B%4
       SET @F = (@B+8)/25
       SET @G = (@B-@F+1)/3
       SET @H = (19*@A+@B-@D-@G+15)%30
       SET @I = @C/4
       SET @K = @C%4
       SET @L = (32+2*@E+2*@I-@H-@K)%7
       SET @M = (@A+11*@H+22*@L)/451
       SET @MES = (@H+@L-7*@M+114)/31
       SET @DIA = ((@H+@L-7*@M+114)%31)+1
       SET @DATA = CAST((LTRIM(RTRIM(CAST(@ANO AS CHAR)))) + '-' + 
                        (LTRIM(RTRIM(CAST(@MES AS CHAR)))) + '-' + 
                        (LTRIM(RTRIM(CAST(@DIA AS CHAR)))) AS DATETIME)
       RETURN(@DATA)
   END;
   GO

Exemplos de Cálculo

Para calcular o dia da Páscoa (Domingo), usa-se a fórmula abaixo, onde o ANO deve ser introduzido com 4 dígitos. O Operador MOD é o resto da divisão. A fórmula vale para anos entre 1901 e 2099. A fórmula pode ser estendida para outros anos, alterando X e Y conforme a tabela a seguir:
anos de 1582 a 1599 X=22 e Y=2
anos de 1600 a 1699 X=22 e Y=2
anos de 1700 a 1799 X=23 e Y=3
anos de 1800 a 1899 X=24 e Y=4
anos de 1900 a 1999 X=24 e Y=5
anos de 2000 a 2099 X=24 e Y=5
anos de 2100 a 2199 X=24 e Y=6
anos de 2200 a 2299 X=25 e Y=7
Para anos entre 1901 e 2099: X=24 e Y=5
a = ANO MOD 19
b= ANO MOD 4
c = ANO MOD 7
d = (19 * a + X) MOD 30
e = (2 * b + 4 * c + 6 * d + Y) MOD 7
Se (d + e) > 9 então DIA = (d + e - 9) e MES = Abril
senão DIA = (d + e + 22) e MES = Março
Quando o domingo de Páscoa cair em Abril e o dia for 26, corrige-se para uma semana antes, ou seja, vai para dia 19;
Quando o domingo de Páscoa cair em Abril e o dia for 25 e o termo "d" for igual a 28, simultaneamente com "a" maior que 10, então o dia é corrigido para 18.
Neste século estes dois casos particulares só acontecerão em 2049 e 2076.
Para calcular a Terça-feira de Carnaval, basta subtrair 47 dias do Domingo de Páscoa.
Para calcular a Quinta-feira de Corpus Christi, soma-se 60 dias ao Domingo de Páscoa.

C#

Exemplo de código em C#

       public static string Calcula(int nAno)
       {
           int nRest =( nAno % 19)+1;
           DateTime oDia=new DateTime();
           switch (nRest)
           {
               case 1: oDia = new System.DateTime(nAno, 4, 14, 0,0,0,0); break;
               case 2: oDia = new System.DateTime(nAno, 4, 3, 0, 0, 0, 0); break;
               case 3: oDia = new System.DateTime(nAno, 3, 23, 0, 0, 0, 0); break;
               case 4: oDia = new System.DateTime(nAno, 4, 11, 0, 0, 0, 0); break;
               case 5: oDia = new System.DateTime(nAno, 3, 31, 0, 0, 0, 0); break;
               case 6: oDia = new System.DateTime(nAno, 4, 18, 0, 0, 0, 0); break;
               case 7: oDia = new System.DateTime(nAno, 4, 8, 0, 0, 0, 0); break;
               case 8: oDia = new System.DateTime(nAno, 3, 28, 0, 0, 0, 0); break;
               case 9: oDia = new System.DateTime(nAno, 4, 16, 0, 0, 0, 0); break;
               case 10: oDia = new System.DateTime(nAno, 4, 5, 0, 0, 0, 0); break;
               case 11: oDia = new System.DateTime(nAno, 3, 25, 0, 0, 0, 0); break;
               case 12: oDia = new System.DateTime(nAno, 4, 13, 0, 0, 0, 0); break;
               case 13: oDia = new System.DateTime(nAno, 4, 2, 0, 0, 0, 0); break;
               case 14: oDia = new System.DateTime(nAno, 3, 22, 0, 0, 0, 0); break;
               case 15: oDia = new System.DateTime(nAno, 4, 10, 0, 0, 0, 0); break;
               case 16: oDia = new System.DateTime(nAno, 3, 30, 0, 0, 0, 0); break;
               case 17: oDia = new System.DateTime(nAno, 4, 17, 0, 0, 0, 0); break;
               case 18: oDia = new System.DateTime(nAno, 4, 7, 0, 0, 0, 0); break;
               case 19: oDia = new System.DateTime(nAno, 3, 27, 0, 0, 0, 0); break;
           }
           string cRet = "";             
           for (int n = 1; n <= 13; n++)
           {
               oDia= oDia.AddDays(1);
               if (oDia.DayOfWeek.ToString().Equals("Sunday"))
               {
                   cRet = oDia.Day.ToString();
                   if (oDia.Month == 3)
                   {
                       cRet += " de março";
                   }
                   else
                   {
                       cRet += " de abril";
                   }
                   return cRet;
               }
           }                                                  
           return "";
       }
exemplos:
Para o ano de 1997:
a=1997 MOD 19 = 2
b=1997 MOD 4 = 1
c=1997 MOD 7 = 2
d=(19 * 2 + 24) MOD 30 = 2
e=(2 * 1 + 4 * 2 + 6 * 2 + 5) MOD 7 = 6
(d + e) = 2 + 6 = 8
Logo o Domingo de Páscoa é 30/3/1997
Carnaval: 11/2/1997
Corpus Christi: 29/5/1997

Excel

Há uma fórmula utilizando funções simples do Excel para retornar a data da páscoa:

       =ARRED(DATA(A1;4;1)/7+MOD(19*MOD(A1;19)-7;30)*14%;0)*7-6

Onde a célula "A1" contém o ano com 4 dígitos. Para retornar o dia do carnaval, basta subtrair 47 dias da data da páscoa. Corpus Christi pode ser obtido somando 60 dias à data da páscoa.

Exemplo para o ano de 2013:

       =ARRED(DATA(2013;4;1)/7+MOD(19*MOD(2013;19)-7;30)*14%;0)*7-6

Neste caso, a fórmula acima retornará 31/03/2013.

Datas dos Feriados Móveis

A seguir temos uma tabela com todos os feriados móveis de um ano, sendo eles: Carnaval, Páscoa, Corpus Christi, etc., do período de 1970 a 2020.

Ano Data do Carnaval Data da Sexta-feira Santa Data da Páscoa Data de Corpus Christi
1970 10 de fevereiro 27 de março 29 de março 28 de maio
1971 23 de fevereiro 9 de abril 11 de abril 10 de junho
1972 15 de fevereiro 31 de março 2 de abril 1 de junho
1973 6 de março 20 de abril 22 de abril 21 de junho
1974 26 de fevereiro 12 de abril 14 de abril 13 de junho
1975 11 de fevereiro 28 de março 30 de março 29 de maio
1976 2 de março 16 de abril 18 de abril 17 de junho
1977 22 de fevereiro 8 de abril 10 de abril 9 de junho
1978 7 de fevereiro 24 de março 26 de março 25 de maio
1979 27 de fevereiro 13 de abril 15 de abril 14 de junho
1980 19 de fevereiro 4 de abril 6 de abril 5 de junho
1981 3 de março 17 de abril 19 de abril 18 de junho
1982 23 de fevereiro 9 de abril 11 de abril 10 de junho
1983 15 de fevereiro 1 de abril 3 de abril 2 de junho
1984 6 de março 20 de abril 22 de abril 21 de junho
1985 19 de fevereiro 5 de abril 7 de abril 6 de junho
1986 11 de fevereiro 28 de março 30 de março 29 de maio
1987 3 de março 17 de abril 19 de abril 18 de junho
1988 16 de fevereiro 1 de abril 3 de abril 2 de junho
1989 7 de fevereiro 24 de março 26 de março 25 de maio
1990 27 de fevereiro 13 de abril 15 de abril 14 de junho
1991 12 de fevereiro 29 de março 31 de março 30 de maio
1992 3 de março 17 de abril 19 de abril 18 de junho
1993 23 de fevereiro 9 de abril 11 de abril 10 de junho
1994 15 de fevereiro 1 de abril 3 de abril 2 de junho
1995 28 de fevereiro 14 de abril 16 de abril 15 de junho
1996 20 de fevereiro 5 de abril 7 de abril 6 de junho
1997 11 de fevereiro 28 de março 30 de março 29 de maio
1998 24 de fevereiro 10 de abril 12 de abril 11 de junho
1999 16 de fevereiro 2 de abril 4 de abril 3 de junho
2000 7 de março 21 de abril 23 de abril 22 de junho
2001 27 de fevereiro 13 de abril 15 de abril 14 de junho
2002 12 de fevereiro 29 de março 31 de março 30 de maio
2003 4 de março 18 de abril 20 de abril 19 de junho
2004 24 de fevereiro 9 de abril 11 de abril 10 de junho
2005 8 de fevereiro 25 de março 27 de março 26 de maio
2006 28 de fevereiro 14 de abril 16 de abril 15 de junho
2007 20 de fevereiro 6 de abril 8 de abril 7 de junho
2008 5 de fevereiro 21 de março 23 de março 22 de maio
2009 24 de fevereiro 10 de abril 12 de abril 11 de junho
2010 16 de fevereiro 2 de abril 4 de abril 3 de junho
2011 8 de março 22 de abril 24 de abril 23 de junho
2012 21 de fevereiro 6 de abril 8 de abril 7 de junho
2013 12 de fevereiro 29 de março 31 de março 30 de maio
2014 4 de março 18 de abril 20 de abril 19 de junho
2015 17 de fevereiro 3 de abril 5 de abril 4 de junho
2016 9 de fevereiro 25 de março 27 de março 26 de maio
2017 28 de fevereiro 14 de abril 16 de abril 15 de junho
2018 13 de fevereiro 30 de março 1 de abril 31 de maio
2019 5 de março 19 de abril 21 de abril 20 de junho
2020 25 de fevereiro 10 de abril 12 de abril 11 de junho

Referências

  1. Jean Meeus (1991). Astronomical Algorithms. Richmond, Virginia: Willmann-Bell. p. 67–68 
O Commons possui uma categoria com imagens e outros ficheiros sobre Cálculo da Páscoa