La structure de choix
CHAPITRE 4
62
Dans le cas où montant vaut exactement 2000, nous nous trouverions en présence d’une
variable taux dont la valeur ne serait pas définie. Quel que soit le langage, le programme ne
fonctionnera pas de façon satisfaisante (arrêt de l’exécution, valeur imprévisible, valeur
nulle...).
Ce phénomène ne risque pas de se produire avec la formulation utilisant les choix imbriqués,
puisque, par nature, elle couvre tous les cas. Le pire qui puisse arriver est d’écrire par
distraction :
si montant < 5000.
au lieu de :
si montant <= 5000.
ce qui conduirait à une remise de 2% au lieu de 1% dans le cas où le montant serait égal à
5000 euros.
Notez que, dans la formulation utilisant une suite d’exécutions conditionnelles, il est possible
d’éviter le risque de variable non définie, en affectant d’office une valeur à taux avant
d’examiner s’il y a lieu de lui en donner une autre (on utilise une technique d’initialisation
explicite par défaut).
taux := 0.
si montant >= 2000. et montant < 5000. alors taux := 1.
si montant >= 5000 alors taux := 2.
Toutefois, cela ne protège que du risque de variable indéfinie, pas du risque d’erreurs de programmation. Par exemple, si vous remplacez >= par > dans la troisième ligne :
si montant > 5000. alors taux := 2.
vous obtiendrez un taux de remise de... 0% pour un montant de 5000 euros.
Remarques
1 En fait, compte tenu des règles de correspondance entre alors et sinon, nous pourrions
utiliser la présentation suivante :
si montant < 2000. alors taux := 0
sinon si montant < 5000. alors taux := 1
sinon taux := 2
Il s’agit encore de choix imbriqués mais leur présentation ressemble à des choix successifs,
ce qui en facilite la lecture et le contrôle. À noter d’ailleurs que certains langages parlent
d’instruction sinon si, alors qu’il n’y a pas à proprement parler de nouvelle instruction
ici.
2 Nous avons dit que certains traducteurs pouvaient détecter les variables non définies.
Toutefois, ils ne peuvent se baser que sur le texte du programme et non l’exécuter. Une
faute de logique telle que celle que nous venons d’évoquer a bien peu de chances d’être
détectée par un traducteur.
CHAPITRE 4
62
Dans le cas où montant vaut exactement 2000, nous nous trouverions en présence d’une
variable taux dont la valeur ne serait pas définie. Quel que soit le langage, le programme ne
fonctionnera pas de façon satisfaisante (arrêt de l’exécution, valeur imprévisible, valeur
nulle...).
Ce phénomène ne risque pas de se produire avec la formulation utilisant les choix imbriqués,
puisque, par nature, elle couvre tous les cas. Le pire qui puisse arriver est d’écrire par
distraction :
si montant < 5000.
au lieu de :
si montant <= 5000.
ce qui conduirait à une remise de 2% au lieu de 1% dans le cas où le montant serait égal à
5000 euros.
Notez que, dans la formulation utilisant une suite d’exécutions conditionnelles, il est possible
d’éviter le risque de variable non définie, en affectant d’office une valeur à taux avant
d’examiner s’il y a lieu de lui en donner une autre (on utilise une technique d’initialisation
explicite par défaut).
taux := 0.
si montant >= 2000. et montant < 5000. alors taux := 1.
si montant >= 5000 alors taux := 2.
Toutefois, cela ne protège que du risque de variable indéfinie, pas du risque d’erreurs de programmation. Par exemple, si vous remplacez >= par > dans la troisième ligne :
si montant > 5000. alors taux := 2.
vous obtiendrez un taux de remise de... 0% pour un montant de 5000 euros.
Remarques
1 En fait, compte tenu des règles de correspondance entre alors et sinon, nous pourrions
utiliser la présentation suivante :
si montant < 2000. alors taux := 0
sinon si montant < 5000. alors taux := 1
sinon taux := 2
Il s’agit encore de choix imbriqués mais leur présentation ressemble à des choix successifs,
ce qui en facilite la lecture et le contrôle. À noter d’ailleurs que certains langages parlent
d’instruction sinon si, alors qu’il n’y a pas à proprement parler de nouvelle instruction
ici.
2 Nous avons dit que certains traducteurs pouvaient détecter les variables non définies.
Toutefois, ils ne peuvent se baser que sur le texte du programme et non l’exécuter. Une
faute de logique telle que celle que nous venons d’évoquer a bien peu de chances d’être
détectée par un traducteur.
