La date de Pâques 1 Détermination de la date de Pâques
Transcription
La date de Pâques 1 Détermination de la date de Pâques
USTL - Licence ST-A 1ère année 2008-2009 Initiation à la programmation La date de Pâques Ob jectifs du TP Ce TP a pour but 1. de manipuler des variables de type numérique entier ; 2. de manipuler des expressions arithmétiques sur les entiers ; 3. et les entrées sorties (instructions write ou writeln, et readln). Outils utilisés le langage 1 Pascal Détermination de la date de Pâques 1.1 Dénition de la date de Pâques La dénition de la date de Pâques a été xée en 325 lors du concile de Nicée. Pâques est le dimanche qui suit le quatorzième jour de la lune qui atteint cet âge au 21 mars ou immédiatement après. Autrement dit, c'est le premier dimanche qui suit ou qui coïncide avec la première pleine lune après le 21 mars (marquant le début du printemps). Sur la gure 1, on peut trouver les dates des dimanches de Pâques entre 1950 et 2319. Pour en savoir plus, voir l'Institut de Mécanique Céleste ; ou Wikipedia. Références : 1.2 Calcul de la date de Pâques Il existe plusieurs façons de calculer la date de Pâques. Voici l'une d'elles connue sous le nom d'algorithme de Oudin. L'avantage de celui-ci est d'être parmi ceux qui demandent le moins d'opérations. C'est donc un des plus intéressants pour le calcul généraliste (sans limite de siècle). Il est présenté sous sa forme non simpliée donc utilisable pour toute année postérieure à 1583 (après l'apparition du calendrier grégorien). Le calcul de la date de Pâques est loin d'être une chose si facile. On prendra pour exemple le calcul dans l'année actuelle (2007). Les divisions doivent toujours être entières (on supprime les décimales). 1. G qui représente le nombre d'or diminué de 1 : diviser l'année par 19, en prendre le reste ; ( 2007/19 = 105, or 105 × 19 = 1995 et il nous faut 2007, donc l'écart vaut G = 12 ) 2. C et C4 permettent le suivi des années bissextiles : diviser l'année par 100 puis encore par 4 ; ( 2007/100 = C = 20 et 20/4 = C4 = 5 ) 3. E : diviser 8 × C + 13 par 25 sans les décimales ; ( 8 × 20 + 13 = 173/25 = E = 6 ) 4. H qui dépend de l'épacte : diviser 19 × G + C − C4 − E + 15 par 30, en prendre le reste ; ( On prend le reste d'une division selon le même principe que pour G : 252/30 = 8, or 8 × 30 = 240 et il nous faut 252, donc l'écart vaut H = 12 ) 5. K : diviser H par 28 ; ( 12/28 = K = 0 ) 6. P : diviser 29 par H + 1 ; ( 29/13 = P = 2 ) 7. Q : diviser 21 − G par 11 ; ( 21 − 12 = 9/11 = Q = 0 ) 8. I représente le nombre de jours entre la pleine lune pascale et le 21 mars : (K × P × Q − 1) × K + H ; ( 0 × 2 × 0 − 1 = −1 × −0 = 0 + 12 = I = 12 ) 9. B : diviser l'année par 4 et enlever les décimales, y ajouter l'année ; ( 2007/4 = 501 + 2007 = 2508 ) 10. J1 : Additionner B + I + 2 + C4 et retrancher C ; ( J1 = 2507 ) 11. J2 calcule le jour de la lune pascale (0=dimanche 1=lundi...6=samedi) : diviser J1 par 7 et en prendre le reste ; ( On calcule toujours le reste d'une division selon le même principe qu'avec G et H , le résultat est J2 = 1 ) 12. R le résultat nal, enn : 28 + I − J2. ( R = 39 ). R représente la date du mois de mars, s'il dépasse 31 on déborde sur avril (... 30 correspond au 30 mars, 31 au 31 mars, 32 au 1er avril, 33 au 2 avril, ...). Retrancher 31 le cas échéant pour obtenir la date d'avril. (Pâques 2007 tombe donc le 8 avril.) Question 1. Calculez la date de Pâques pour l'année 2008 en suivant cette méthode. 2 Programmer la détermination de la date de Pâques L'objectif du programme à réaliser est de déterminer la date de Pâques pour une année donnée par l'utilisateur du programme. Ce qui suit montre l'utilisation d'un tel programme (nommé paques) : [timoleon@m5-s115 ~] ./paques Année souhaitée : 2008 Dimanche 23 mars 2008 (le nombre en rouge est celui donné par l'utilisateur). 2.1 Saisie de l'année Utilisation des instructions write, writeln et readln. Réalisez un programme qui demande une année à l'utilisateur, et qui ache ensuite les deux années précédente et suivante. Question 2. [timoleon@m5-s115 ~] ./paques Année souhaitée : 2008 Année précédente : 2007 Année prochaine : 2009 2.2 Calcul du nombre de jours séparant Pâques du 1er mars Utilisation des opérateurs arithmétiques +, -, *, div et mod. Réalisez un programme qui demande une année à l'utilisateur, et qui ache ensuite la situation de la date de Pâques à partir du 1er mars de cette année (en nombre de jours), ce nombre étant calculé selon l'algorithme de Oudin. Question 3. [timoleon@m5-s115 ~] ./paques Année souhaitée : 2008 Nombre de jours depuis le 1er mars : 23 2.3 Achage de la date de Pâques Réalisez un programme qui demande une année à l'utilisateur, et qui ache ensuite la date de Pâques pour cette année. Question 4. [timoleon@m5-s115 ~] ./paques Année souhaitée : 2008 Dimanche 23 mars 2008 2.4 Exercices supplémentaires Réalisez un programme qui cherche la prochaine année (à partir de 2007) où Pâques sera fêté un 1er avril. Question 6. Réalisez un programme qui ache toutes les années du XXIème siècle durant lesquelles Pâques est fêté un 1er avril. Question 7. Déterminez une année du XXIème siècle pour lesquelles Pâques est fêté le plus tard. Question 5. Fig. 1 Dates de Pâques