(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 moismmet l’année en 4 chiffresaaaaSortie :
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
bisextile = False
if (aaaa%4 != 0) :
bisextile = False
else:
if (aaaa%100 != 0) :
if (aaaa%400 != 0) :
bisextile = True
else:
bisextile = False
else:
bisextile = True
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.pyqui calcule la balise du sièclejourcle.pyqui calcule le jour clépivot.pyqui calcule le pivot ainsi que lejourdé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