Alternative généralisée
R04 - Alternative généralisée et imbrication
and, or, notSi - sinon si - sinon
Rappel sur l'alternative de base
En programmation, une structure d'alternative, également connue sous le nom de structure conditionnelle, est un mécanisme de contrôle du flux d'exécution qui permet à un programme de prendre des décisions en fonction de certaines conditions. Cela signifie que le programme peut choisir d'exécuter ou non un bloc de code spécifique en fonction de la valeur d'une ou plusieurs expressions logiques.
L'alternative généralisée
Il existe une autre forme de l'alternative : l'alternative généralisée. Dans cette forme, on ne se limite plus à n'avoir qu'un bloc « SI » et un bloc « SINON », mais plutôt une séquence de conditions qui prend la forme SI - SINON SI - SINON. Une telle alternative peut comporter autant de clauses « SINON SI » que nécessaire.
En Python, l'alternative généralisée utilise les mots réservés if, elif (contraction de else if) et else, respectivement SI, SINON SI et SINON. Elle prend donc la forme :
Le schéma précédent nous montre qu'aussitôt qu'une des conditions de l'alternative est vraie, on exécute le bloc d'instructions qui y est rattaché et on poursuit l'exécution à la première instruction qui suit immédiatement la fin de l'alternative (donc après le dernier SINON SI ou après le SINON).
Une seule branche s'exécute, jamais deux : c'est toute la différence avec une suite de if indépendants.
Supposons que l'on veuille écrire un programme qui permet de transformer une note chiffrée en « cote » (A, B, C, etc.).
Sachant que l'on donne :
Solution imparfaite :
Résultat :
Ceci est dû au fait que chaque if est évalué indépendamment des autres. Ainsi, après avoir exécuté le bloc d'instructions associé à la condition if (note > 80), on évalue ensuite la condition if (note > 70) ; comme la note est de 83, cette condition s'avère être également vraie, et on exécute alors le bloc d'instructions qui y est rattaché. La même séquence d'événements se reproduit donc avec tous les autres if de l'alternative.
On peut corriger le problème observé avec la solution précédente simplement en bornant mieux chacune des conditions. On obtient alors le programme suivant :
Solution :
Résultat :
La dernière sortie correspond au résultat que l'on attend du programme.
Comme chaque intervalle est maintenant mieux défini, on évite que chacune des conditions qui suivent la première évaluée à True soit elle aussi déclenchée.
Voyons maintenant à quoi pourrait ressembler le même programme si on utilise une alternative généralisée :
Solution :
Résultat :
On remarque que chaque condition a repris sa forme plus simple, mais que le programme produit malgré tout le bon résultat. Ceci tient au fait que l'instruction elif fait en sorte qu'aussitôt qu'une condition est évaluée à True, l'ensemble des conditions qui suivent sont ignorées, et que l'exécution se poursuit à la ligne suivant l'instruction else.
Une décision en plusieurs étapes
Dans certaines situations, on doit organiser la prise de décision en plus d'une étape. Par exemple, imaginons que l'on souhaite écrire un programme qui affiche le type d'acide ou de base d'une solution en fonction du pH observé : c'est-à-dire déterminer s'il s'agit d'une solution neutre, acide ou basique, tout en spécifiant si l'on est face à un acide ou une base fort ou faible.
On obtient alors le programme suivant :
On peut donc voir que la composition du message à afficher s'effectue en deux temps. La première structure d'alternative rencontrée détermine d'abord le type de solution (base, neutre ou acide), ce qui permet de commencer la composition du message.
La seconde partie du message est ensuite déterminée par une seconde alternative, imbriquée dans la première, qui permet de qualifier la force de l'acide ou de la base. Le message ainsi assemblé est finalement affiché à la toute dernière ligne du programme.
Cinq programmes à choix multiples avec if, elif et else : catégorie d'âge, année bissextile, le plus grand de trois nombres, nombre de racines d'un polynôme du second degré et prix des billets de cinéma.
Consulter le laboratoire en ligne · Télécharger le calepin (.ipynb)
Pondération : 3 % de la note finale.