Dans certains cas, il n'est pas possible d'exprimer
aisément la situation d'alternative parce que les conditions ne sont
pas simples. Si l'on se trouve dans une telle situation, alors il faut
utiliser une méthode pour construire l'alternative. Nous utiliserons la
méthode par construction d'un arbre binaire de décision.
Problème
Écrire un programme qui détermine si une année dont
on donne le millésime est bissextile (ce problème est traité ailleurs, dans ce cours,
dans le cadre de l'étude de l'alternative dans le tableur).
Une année est bissextile si son millésime est multiple de 4;
cependant, les années dont le millésime est multiple de 100 ne sont
bissextiles que si c'est aussi un multiple de 400 (1900 n'était pas
bissextile, 2000 l'a été).
Il faut bien mettre en évidence toutes les conditions particulières
à envisager lors de la résolution du problème. Il faut évaluer si:
- le millésime est un multiple de 4;
- le millésime est un multiple de 100;
- le millésime est un multiple de 400.
Construction d'un arbre binaire de décision
Examine attentivement l'arborescence ci-dessous durant
la lecture de l'explication de sa construction.
Choisissons une de ces conditions
particulières et voyons
ce qu'il convient de faire si elle est vraie et si elle est fausse.
Nous commencerons par la condition « multiple de 4 ».
Si la condition est fausse, l'année n'est pas bissextile et c'est
fini, sinon, il faut encore travailler.
Quelle question faut-il se poser si le millésime est multiple de 4?
Il faut voir si c'est un multiple de 100.
Si la condition est fausse, alors l'année est bissextile et c'est
fini, sinon, il faut encore travailler.
Si la condition est vraie, alors l'année est bissextile, sinon,
elle n'est pas bissextile. Dans tous les cas, le travail est terminé.
La structure de décision se présente sous la forme d'un arbre
inversé, c'est-à -dire dont la racine serait en haut et les branches en
bas.
Dans le formalisme Si...Alors...Sinon..., ce tableau pourrait
s'exprimer:
Si <Millésime multiple de 4>
Alors
Si
<Millésime multiple de 100>
Alors
Si
<Millésime multiple de 400>
Alors "
Bissextile "
Sinon
" Non Bissextile "
Fin Si
Sinon " Non
bissextile "
Fin Si
Sinon " Non
bissextile "
Fin Si
- Vérifie, à l'aide de l'abre binaire de décision ou de la
structure si...alors...sinon,
que les années 1930, 2003 et 2100 ne sont pas bissextiles.
- Vérifie ensuite que 1980, 1800 et 2400 sont des années
bissextiles.
Résolution commentée
L'interface du programme Python correspondant peut
s'imaginer sur le modèle ci-dessous.
- La donnée
- Le texte " Oui " ou " Non " qui s'indique en
fonction du caractère bissextile ou non de l'année s'appelle reponse.
Si l'on suit l'exemple de formalisme " si
... alors ... sinon... " présenté ci-dessus, on peut alors écrire
le texte Python correspondant selon la forme présentée ci-dessous.
#! /usr/bin/python
# -*- encoding: ISO-8859-1 -*-
an = input ("Quel est le millesime ?")
if (an % 4 == 0):
if (an % 100 == 0):
if (an % 400 == 0):
bissextile =
"Oui"
else:
bissextile =
"Non"
else:
bissextile = "Oui"
else:
bissextile = "Non"
print "Année bissextile: ", bissextile
- Recopie et exécute l'exemple.
- Vérifie qu'il fonctionne correctement dans tous les cas
possibles.
Serait-il possible de reconstruire complètement
l'arbre binaire ou la structure " si... alors... sinon..." , pour
l'exemple de l'année bissextile, en commençant par le test " le
millésime est un multiple de 400 "?
On commencerait donc par :
Si
<Millésime multiple de 400>
Alors
.......
- Reconstitue l'ensemble de la structure puis modifie le programme
Python afin qu'il corresponde Ă cette nouvelle analyse.
- Exécute et vérifie le bon fonctionnement du programme.
Quand le programme fonctionne correctement dans tous les cas
possibles et que tu comprends bien son fonctionnement, passe Ă la page
suivante.