doomsday (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 mm et l’année en 4 chiffres aaaa

  • Sortie : nom du jour

Cet algorithme se déroule en trois étapes :

  1. recherche de la balise du siècle

  2. identification du jour clé

  3. 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
2000
2400

1700
2100
2500

1800
2200
2600

1900
2300
2700

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 :

doomsday

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 :

  1. balise.py qui calcule la balise du siècle

  2. jourcle.py qui calcule le jour clé

  3. pivot.py qui calcule le pivot ainsi que le jour dé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