 (Creative commons : Rodrigo Katrakas)
(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 mois- mmet l’année en 4 chiffres- aaaa
- 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.pyqui calcule la balise du siècle
- jourcle.pyqui calcule le jour clé
- pivot.pyqui calcule le pivot ainsi que le- jourdéfini par la date- jj.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
