TP2-STRAT-02 : Implémentation de l’algorithme du Doomsday
Contents
(Creative commons : Rodrigo Katrakas)
TP2-STRAT-02 : Implémentation de l’algorithme du Doomsday#
Objectifs pédagogiques#
appliquer l’ensemble des concepts de programmation à un problème complexe
factoriser les différentes étapes
tester, corriger et valider la solution applicative
Introduction : algorithme de Doomsday#
L’algorithme du jour dernier a été vu en première année. Cet algorithme permet de trouver le jour (lundi, mardi, etc..) de n’importe quelle date du calendrier grégorien.
Entrées : le numéro du
jj
, le numéro du moismm
et l’année en 4 chiffresaaaa
Sortie :
nom du jour
Cet algorithme se déroule en trois étapes :
recherche de la balise du siècle
identification du jour clé
choix du jour pivot et détermination du jour
Exercice 1 : recherche de la balise du siècle#
Ecrivez un programme balise.py
qui permet de retrouver la balise du siècle. L’entrée de ce programme est l’année écrite sous la forme aaaa
.
Rappel : balise du siècle#
Siècles |
1600 |
1700 |
1800 |
1900 |
---|---|---|---|---|
Balise du siècle |
2 |
0 |
5 |
3 |
Exercice 2 : identification du jour clé#
Ecrivez un programme jourcle.py
qui identifie le jour clé de l’année aaaa
considérée. L’algorithme est le suivant :
Le chiffre obtenu à la fin de l’algorithme est un jour de semaine
Chiffre |
Jour |
---|---|
0 |
Dimanche |
1 |
Lundi |
2 |
Mardi |
3 |
Mercredi |
4 |
Jeudi |
5 |
Vendredi |
6 |
Samedi |
Exercice 3 : Choix du jour pivot#
Ecrivez un programme pivot.py
qui permet le choix du jour pivot. Pour cela, vous devez d’abord vérifier que l’année considérée (aaaa
) est bisextile:
aaaa = 1964
if (aaaa%4 != 0) :
print(str(aaaa)+" n'est pas une année bisextile")
else:
if (aaaa%100 != 0) :
if (aaaa%400 != 0) :
print(str(aaaa)+" est une année bisextile")
else:
print(str(aaaa)+" n'est pas une année bisextile")
else:
print(str(aaaa)+" est une année bisextile")
Le jour pivot d’une année ordinaire et une année bisextile est un jour clé. les jours pivots sont définis comme suit :
Janvier |
Février |
Mars |
Avril |
Mai |
Juin |
Juillet |
Août |
Septembre |
Octobre |
Novembre |
Décembre |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
Ordinaire |
10 |
28 |
14 |
4 |
9 |
6 |
11 |
8 |
5 |
10 |
7 |
12 |
Bisextile |
11 |
29 |
14 |
4 |
9 |
6 |
11 |
8 |
5 |
10 |
7 |
12 |
Exercice 4 : Factorisation#
Vous devriez vous trouver avec trois programmes :
balise.py
qui calcule la balise du sièclejourcle.py
qui calcule le jour clépivot.py
qui calcule le pivot ainsi que lejour
défini par la datejj.mm.aaaa
Créez un nouveau programme doomsday.py
. Ce programme doit contenir trois fonctions qui sont les factorisations des trois programmes ci-dessus.
Le programme principal se contentera de l’entrée jj.mm.aaaa
et renverra le nom du jour sous la forme :
Le 11 septembre 2001 était un mardi
ou
Le 6 septembre 2156 sera un lundi