Section courante

A propos

Section administrative du site

Dans les pays occidentaux, il est inévitable de calculer la date de la Pâque chrétienne. Vous trouverez la réponse que vous souhaitez, à l'aide du code source Ada suivant :

  1. WITH TEXT_IO;
  2.  
  3. PROCEDURE DateOfEaster IS
  4.  
  5.    USE TEXT_IO;   
  6.    
  7.    Year,Month,Day:INTEGER;
  8.    
  9.    PROCEDURE DateOfEaster(Year:IN INTEGER;Month,Day:IN OUT INTEGER) IS
  10.       G,C,X,Z,D,E,N:INTEGER;
  11.    BEGIN      
  12.       G := (Year MOD 19) + 1;      
  13.       C := INTEGER(Year / 100) + 1;      
  14.       X := INTEGER((3 * C) / 4) - 12;      
  15.       Z := INTEGER((8 * C + 5) / 25) - 5;      
  16.       D := INTEGER((5 * Year) / 4) - X - 10;    
  17.       E := INTEGER(11 * G + 20 + Z - X) MOD 30;      
  18.       IF E < 0 THEN         
  19.          E := E + 30;
  20.       END IF;
  21.       IF ((E = 25) AND (G > 11)) OR (E = 24) THEN         
  22.          E := E + 1;         
  23.       END IF;
  24.       N := 44 - E;      
  25.       IF N < 21 THEN         
  26.          N := N + 30;         
  27.       END IF;
  28.       N := N + 7 - INTEGER((D + N) MOD 7);      
  29.       IF N > 31 THEN         
  30.          Month := 4;         
  31.          Day := N - 31;         
  32.       ELSE         
  33.          Month := 3;         
  34.          Day := N;         
  35.       END IF;      
  36.    END DateOfEaster;
  37.    
  38.  
  39.    FUNCTION MonthName(Month:IN INTEGER) RETURN STRING IS BEGIN      
  40.       CASE Month IS         
  41.          WHEN 1 => RETURN "Janvier";               
  42.          WHEN 2 => RETURN "Février";               
  43.          WHEN 3 => RETURN "Mars";               
  44.          WHEN 4 => RETURN "Avril";               
  45.          WHEN 5 => RETURN "Mai";               
  46.          WHEN 6 => RETURN "Juin";               
  47.          WHEN 7 => RETURN "Juillet";               
  48.          WHEN 8 => RETURN "Août";               
  49.          WHEN 9 => RETURN "Septembre";                        
  50.          WHEN 10 => RETURN "Octobre";               
  51.          WHEN 11 => RETURN "Novembre";               
  52.          WHEN 12 => RETURN "Décembre";               
  53.          WHEN OTHERS => RETURN "";
  54.       END CASE;      
  55.    END MonthName;
  56.    
  57. BEGIN
  58.    FOR Year IN 2000..2014 LOOP      
  59.       DateOfEaster(Year, Month, Day);      
  60.       PUT_LINE("Pâque en l'année " & INTEGER'IMAGE(Year) & " est le jour " &          
  61.          INTEGER'IMAGE(Day) & " du mois " & MonthName(Month));         
  62.    END LOOP;   
  63. END Dateofeaster;

on obtiendra le résultat suivant :

Pâque en l'année 2000 est le jour 23 du mois Avril
Pâque en l'année 2001 est le jour 15 du mois Avril
Pâque en l'année 2002 est le jour 31 du mois Mars
Pâque en l'année 2003 est le jour 20 du mois Avril
Pâque en l'année 2004 est le jour 11 du mois Avril
Pâque en l'année 2005 est le jour 27 du mois Mars
Pâque en l'année 2006 est le jour 16 du mois Avril
Pâque en l'année 2007 est le jour 8 du mois Avril
Pâque en l'année 2008 est le jour 23 du mois Mars
Pâque en l'année 2009 est le jour 12 du mois Avril
Pâque en l'année 2010 est le jour 4 du mois Avril
Pâque en l'année 2011 est le jour 24 du mois Avril
Pâque en l'année 2012 est le jour 8 du mois Avril
Pâque en l'année 2013 est le jour 31 du mois Mars
Pâque en l'année 2014 est le jour 20 du mois Avril


Dernière mise à jour : Samedi, le 25 août 2012