Les instructions conditionnelles
Contenu de la page
3. Les instructions conditionnelles
Un programme est une suite d’instructions exécutées dans un ordre précis pour aboutir à la production d’un résultat. L’ordre dans lequel les instructions s’exécutent s’appelle le flux d’exécution. Dans la plupart des langages de programmation, le contrôle du flux d’exécution s’effectue à l’aide de trois structures de contrôle :
la séquence
l’instruction conditionnelle
l’instruction répétitive.
Nous aborderons dans ce chapitre la séquence et les instructions conditionnelles. Les instructions répétitives feront l’objet d’un autre chapitre.
3.1. La séquence
Dans un programme, la séquence est la structure de contrôle la plus simple (cf. figure ci-dessous) : les instructions sont exécutées une par une, de la première à la dernière, dans l’ordre où elles ont été codées.
La séquence
Le programmeur doit donc faire attention à l’ordre dans lequel il place
les instructions, puisqu’une simple inversion de deux instructions peut
modifier complètement le résultat. Considérons par exemple le programme
suivant et exécutons-le en saisissant les valeurs 5
pour x
et
7
pour y
:
x = int(input("Saisissez la valeur de x : "))
y = int(input("Saisissez la valeur de y : "))
x = y
y = x
print(f"La valeur de est x est {x} et celle de y est {y}.")
Saisissez la valeur de x : 5
Saisissez la valeur de y : 7
La valeur de est x est 7 et celle de y est 7.
Considérons maintenant le même programme, avec juste une inversion de
l’ordre des instructions x = y
et y = x
. Que constatez-vous en
l’exécutant et en saisissant les mêmes valeurs que précédemment pour
x
et y
?
x = int(input("Saisissez la valeur de x : "))
y = int(input("Saisissez la valeur de y : "))
y = x
x = y
print(f"La valeur de est x est {x} et celle de y est {y}.")
Saisissez la valeur de x : 5
Saisissez la valeur de y : 7
La valeur de est x est 5 et celle de y est 5.
Les valeurs finales de x
et y
sont différentes.
3.2. L’instruction conditionnelle if
Dans un programme, on doit pouvoir adapter les traitements réalisés en
fonction du contexte dans lequel on se trouve. Une instruction
conditionnelle if
permet (cf. figure ci-dessous) :
de tester si une condition est vérifiée (c’est-à-dire vraie) ou pas (c’est-à-dire fausse)
d’effectuer des instructions différentes selon que la condition est vérifiée (bloc d’instructions 1) ou non (bloc d’instructions 2).
L’instruction conditionnelle if
En python, la syntaxe d’une instruction if
est la suivante :
if exp_cond :
bloc_instructions 1
else:
bloc_instructions 2
Il s’agit d’une instruction composée comportant :
deux lignes d’en-tête terminées par le caractère
:
if exp_cond :
else :
deux blocs d’instructions
Les blocs doivent obligatoirement être indentés par rapport aux lignes d’en-tête. Cette indentation s’effectue de préférence avec quatre espaces consécutifs, ou bien avec un caractère de tabulation. Elle est souvent effectuée automatiquement par les éditeurs de code Python.
Voici ce qui se passe lors de l’exécution d’une instruction if
:
la valeur de la condition (
exp_cond
) est évaluéesi cette valeur est vraie, le bloc d’instructions 1 est effectué
si cette valeur est fausse, le bloc d’instructions 2 est effectué
après l’exécution du bloc (1 ou 2), l’exécution séquentielle reprend à la première instruction située après l’instruction
if
.
Le programme ci-dessous est un exemple d’utilisation d’une instruction
if
, avec deux traces d’exécution.
age = int(input("Quel est votre âge ?"))
if age>=18:
print("Vous êtes majeur(e).")
else:
print("Vous êtes mineur(e).")
Quel est votre âge ? 14
Vous êtes mineur(e).
age = int(input("Quel est votre âge ?"))
if age>=18:
print("Vous êtes majeur(e).")
else:
print("Vous êtes mineur(e).")
Quel est votre âge ? 24
Vous êtes majeur(e).
Il existe une version « réduite » de l’instruction if
dans laquelle
la partie else
est omise. Dans ce cas, lorsque la condition est
fausse, aucun bloc d’instructions particulier n’est effectué avant la
poursuite de l’exécution séquentielle des instructions. Voici un exemple
de ce cas de figure avec deux traces d’exécution.
age = int(input("Quel est votre âge ?"))
if age>=18:
print("Vous êtes majeur(e).")
print("Au revoir et à bientôt !!")
Quel est votre âge ? 19
Vous êtes majeur(e).
Au revoir et à bientôt !!
age = int(input("Quel est votre âge ?"))
if age>=18:
print("Vous êtes majeur(e).")
print("Au revoir et à bientôt !!")
Quel est votre âge ? 15
Au revoir et à bientôt !!
Un bloc d’instructions appartenant à une instruction if
peut
lui-même contenir une autre instruction if
. On dit alors que les
deux instructions if
sont imbriquées. L’exemple suivant illustre
ce cas de figure.
monentier = int(input("Saisissez un nombre entier : "))
if monentier<0:
print("Il s'agit d'un nombre négatif.")
else:
if monentier>0:
print("Il s'agit d'un nombre positif.")
else:
print("Il s'agit d'un nombre nul.")
Saisissez un nombre entier : -6
Il s'agit d'un nombre négatif.
monentier = int(input("Saisissez un nombre entier : "))
if monentier<0:
print("Il s'agit d'un nombre négatif.")
else:
if monentier>0:
print("Il s'agit d'un nombre positif.")
else:
print("Il s'agit d'un nombre nul.")
Saisissez un nombre entier : 0
Il s'agit d'un nombre nul.
monentier = int(input("Saisissez un nombre entier : "))
if monentier<0:
print("Il s'agit d'un nombre négatif.")
else:
if monentier>0:
print("Il s'agit d'un nombre positif.")
else:
print("Il s'agit d'un nombre nul.")
Saisissez un nombre entier : 8
Il s'agit d'un nombre positif.
3.3. La simplification avec elif
L’exemple précédent contient deux instructions if
imbriquées sur
deux niveaux. En pratique, les possibilités d’imbrication sont
multiples, et il n’existe pas de limitation du nombre de niveaux.
Lorsque plusieurs instructions if
sont imbriquées sur plusieurs
niveaux, il est possible de simplifier l’écriture du code en utilisant
l’instruction elif
(contraction de else
et if
). Ainsi, le
code suivant :
if exp_cond1:
bloc 1
else:
if exp_cond2:
bloc 2
else:
if exp_cond3:
bloc 3
else:
bloc 4
peut se simplifier de la manière suivante :
if exp_cond1:
bloc 1
elif exp_cond2:
bloc 2
elif exp_cond3:
bloc 3
else:
bloc 4
L’usage de l’instruction elif
permet notamment d’avoir un seul
niveau d’indentation des différents blocs. Voici ci-dessous le programme
précédent, écrit en utilisant elif
.
monentier = int(input("Saisissez un nombre entier : "))
if monentier<0:
print("Il s'agit d'un nombre négatif.")
elif monentier>0:
print("Il s'agit d'un nombre positif.")
else:
print("Il s'agit d'un nombre nul.")
Saisissez un nombre entier : 7
Il s'agit d'un nombre positif.