Contrôle du flux d'exécution
Nous allons ici définir ce qu'est un contrôle de flux et de quoi il en retourne...
Introduction
L'activité essentiel d'un programmeur est la résolution de problèmes. Or pour résoudre un probléme informatique, il faut toujours effectuer une série d'actions dans un certain ordre. La description structuré de ces actions et de l'ordre dans lequel il convient de les effectuer s'appellent un algorithme.
Le "chemin" suivie par Python est appelé un flux d'exécution, et les constructions qui le modifient sont appelé des instructions de contrôle de flux.
Les structures de contrôles sont les groupes d'instructions qui définissent l'ordre dans lequel les actions sont effectuées.En programmation moderne il en existe seulement 3 :
- La séquence.
- La sélection.
- La répétition.
Nous allons aborder dans ce chapitre la séquence et la sélection.
Note
Comme d'habitude, si vous n'avez pas ou la flemme de créer un environnement python :
Séquence d'instructions
En régle générales, les instructions d'un programme s'effectue les unes après les autres, dans l'ordre dans elles ont été écrite dans le script.
Attention
Une mauvaise disposition des instructions peut créer des erreurs sémantiques dans les programmes informatiques.
Il faut donc être extrémement attentif à l'ordre des instructions dans vos programmes. Prenons la séquence d'instructions suivantes:
On obtient un résultat inverse si l'on intervertit la deuxième et troisième lignes.
Python exécute normalement les instrcutions dans l'ordre, sauf s'il rencontre une instruction conditionnelle (ex: l'instruction if). Une telle instruction va permettre au programmede suivre différent chemin suivant les circonstances.
Sélection ou exécution conditionnelle
Pour pouvoir écrire des applications utiles, il nous faut pouvoir aiguiller notre programme dans différentes directions en fonction de la requete ou circonstance donnée.
Nous devons donc disposer d'instruction capable de tester une certaine condition, vérifier si elle est vrai ou non et de modifier le comportement du programme en conséquence.
L'instruction conditionnelle la plus commune est l'instruction if. Allez dans l'éditeur Python et tapez les deux lignes suivantes:
Décryptons ligne par ligne :
- on affecte la valeur
50à la variablea. - instruction conditionnelle
if(terminé par:). - le prompt principal (
>>>)est maintenant remplacé par un prompt secondaire (...).
Nous allons maintenant rajouter une ligne dans notre condition :
Appuyer sur <Entré>. Le programme s'execute et vous obtenez :
Si vous recommencez en changeant la valeur de la variable
aà20, le code suivant n'affichera plus rien.
L'expression placé après le if et ce que nous appelons une condition. L'instruction if permet de tester la validité de cette condition.
- Si la condition est vrai: l'instruction que nous avons indentée après le
:est exécuté. - Si la condition est fausse: rien ne se passe.
Rajoutons deux lignes comme ci- dessous :
>>> a = 10
>>> if a > 30:
... print("a depasse les trentes")
... else:
... print("a ne depasse pas les trente")
Appuyer sur <Entré>
Nous avons rajouter l'instruction else ("sinnon" en anglais). Ele permet d'exécuter une condition alternative. On peut faire mieux en utilisant l'instruction elif (contrqction de "else if") :
>>> a = 0
>>> if a > 0:
... print("a est positif")
... elif a < 0:
... print("a est negatif")
... else:
... print("a est nul")
Opérateur de comparaison
La condition évalué après l'instuction if peut contenir des opérateurs de comparaison :
| Opérateur | Description | Exemple | Résultat |
|---|---|---|---|
== | Égal à | 5 == 5 | True |
!= | Différent de | 5 != 3 | True |
> | Supérieur à | 5 > 3 | True |
< | Inférieur à | 5 < 3 | False |
>= | Supérieur ou égal | 5 >= 5 | True |
<= | Inférieur ou égal | 5 <= 3 | False |
Exemple :
>>> a = 7
>>> if a % 2 == 0:
... print("a est pair")
... print("calcul du modulo")
... else:
... print("a est impair")
...
a est impair
Info
L'opérateur % est l'opératur modulo: il calcule le reste d'une division entière. Par exemple, fournit le reste de la division de a par 2.
L'opérateur de comparaison pour l'égalité de deux valeurs est constitué de deux signes "égale" (==) et non d'un seul.
Le signe "égale" utilisé seul est un opérateur d'affectation, et non un opérateur de comparaison.
Instructions composées - Blocs d'instructions
La construction utilisé ci-dessus avec l'instruction if et votre premier exemple d'instruction composée.
Sous Python, les instructions composées on toujours la même structure :
- Une ligne d'en-tête terminé par un double point, suivi d'une ou plusieurs instructions indentées sous cette ligne d'en-tête.
Un bloc d'instruction est une suite d'instruction formant un ensemble logique, qui n'est exécuté que dans certaines conditions définies dans la ligne d'en-tête.
Instructions imbriquées
Il est parfaitement possible d'imbriquer les unes dans les autres plusieurs instructions composées, de manière à réaliser des structures de décisions complexe :
>>> if embranchement == "vertebre":
... if classe == "mammifere":
... if ordre == "carnivore":
... if fammille == "felin":
... print("c est un chat")
... print("cest en tout cas un mammifere")
... elif classe == "oiseaux":
... print("cest un canari")
... print("La classification des animaux est complexe")
Ce fragment de programme n'affiche la phrase "c est un chat" que dans le cas ou les 4 premières conditions sont vraies.
-
Pour que la phrase
"cest en tout cas un mammifere"soit affiché, il suffit que les 2 premières conditions soient vraies. -
Pour que la phrase
"cest un canari"soit affiché, il faut que la variableembranchementcontienne"vertébré", et que la variableclassecontienne"oiseaux". -
La dernnière phrase, elle, est affiché dans tout les cas, car elle fait partie du même bloc d'instruction que la ligne 1.
Attention
Avec Python, vous devez utiliser les sauts à la ligne et l'indentation, mais en contrepartie vous n'avez pas à vous préoccuper d'autres symboles délimiteurs de blocs.