L'alternative en langage Python

Alternative complexe

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.

Le pape Grégoire XIII sans qui cette page n'existerait pas

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.

Arbre binaire de décisionChoisissons 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, 2008 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. Vers la page suivante Page suivante


Dernière modification 13/03/2017 Test dans /info ...