Vous êtes sur la page 1sur 44

Module : Informatique

Classes: 1èreS années MP – PC –T

LE LANGAGE PYTHON
CONTRÔLE DU FLUX
D’ INSTRUCTIONS

Enseignante : Leïla HAMMAMI EL FEKIH


Contact : hammamif.laila@yahoo.com
Année universitaire 2020/2021
Plan

 Rappel d’un programme Python


 Les Structures Conditionnelles
 Les Expressions Conditionnelles
 Les Structures Itératives
 Conditionnelles
 Non conditionnelles
 Gestion des erreurs

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 2


Programme Python (1)
 Un programme Python est composé d'instructions.
 Une instruction, simple ou composée, est un ordre unitaire donné à
l‟interpréteur :
 Instruction simple : print(„Bonjour‟) ; x=20
 Instruction composée ou bloc d‟instructions : structure if,
boucles for ou while, fonctions définies par def, etc.
 Une Instruction composée est formée d'une :
 ligne d‟entête se terminant obligatoirement par «:» qui signifie
l‟ouverture d‟un nouveau bloc après retour à la ligne
 Il n’y a pas de début et de fin de bloc explicites en python,
comme begin ou end
 suite d'instructions automatiquement indentées (alignées sur une
même tabulation) appelée encore bloc d'instructions.
 L‟indentation ?
 décalage à droite d‟un même nombre d‟espaces (ou tabulation).
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 3
Programme Python (2)
 La fin d‟un bloc de niveau n (retour au bloc de niveau n-1) est
obtenue par un “effacement arrière” après retour à la ligne.
 Les instructions sont séparées dans un programme par:
 un point-virgule « ; » si plusieurs instructions sur une même ligne
 un retour à la ligne si une instruction par ligne.
 Ce qui suit le « # » est un commentaire jusqu'à la fin de la ligne.
 L'interpréteur Python analyse les lignes du script une à une :
 si la ligne est une instruction simple (ou une séquence
d‟instructions simples séparées par des « ; »), alors il l'analyse,
l'exécute et passe à la ligne d‟après.
 si la ligne est une ligne d‟entête d‟une instruction de contrôle
(bloc), alors l‟analyse et l‟exécution s‟applique aux instructions du
bloc indenté. Une fois le bloc exécuté, l'analyse et l'exécution
reprennent à l‟instruction qui suit la ligne d‟entête du bloc, en
appliquant le même principe, et ainsi de suite jusqu‟à arriver à la
fin du programme.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 4
Exécution d'un
Programme Python
 L‟exécution d‟un programme Python se déroule comme suit.
L'interpréteur Python commence par analyser les lignes du
script une à une :
 si la ligne est une instruction simple (ou une séquence
d‟instructions simples séparées par des « ; »), alors il
l'analyse, l'exécute et passe à la ligne d‟après.
 si la ligne est une ligne d‟entête d‟une instruction de
contrôle (bloc), alors l‟analyse et l‟exécution s‟applique aux
instructions du bloc indenté.
Une fois le bloc exécuté, l'analyse et l'exécution reprennent
à l‟instruction qui suit la ligne d‟entête du bloc, en appliquant
le même principe, et ainsi de suite jusqu‟à arriver à la fin du
programme.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 5
Structure Conditionnelle :
Mots Réservés

# Si
# Sinon

# Sinon Si

Opérateur d'appartenance
in dans un itérable

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 6


Syntaxe Structure
conditionnelle (1)
Syntaxe générale :
if condition1 :
True
instruction 11
False …
instruction 1p
elif condition2 :
instruction 21 True

False instruction 2q

elif conditionn-1:
True
False instruction n-1
else:
instruction n
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 7
Syntaxe Structure
conditionnelle (2)
Syntaxe sans elif/else:  L‟en-tête du bloc (if, elif, else) se termine
par « : ».
if condition :
 Les elif ( else if) et le else sont
instruction 1 optionnels.

instruction n  Les instructions peuvent à leurs tours
être des structures conditionnelles.
Syntaxe avec else:  Exemple :
if condition : if a%2 == 0 :
print ('a={} est pair'.format(a))
instruction 11 if a%3 == 0 :
… print(' et est multiple de 3')
instruction 1p
else :
else: print ('et non multiple de3')
instruction 21 else :
… print ('a={} impair'.format(a))
instruction 2n
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 8
Syntaxe Structure
conditionnelle (3)
 Attention à l’indentation !!! toutes
Syntaxe avec elif/else:
if condition1 : les instructions d‟un même bloc
doivent être indentées exactement
instructions 1
au même niveau.
elif condition2 :  L‟irrespect de l‟indentation
instructions 2 génère une erreur.
…  Les valeurs considérées comme
False pour la condition sont :
elif condition n-1: – évidemment la valeur False,
instructions n-1 – la constante None,
– toute valeur numérique égale à 0
else: (0, 0.0, 0j),
instructions n – les chaînes, listes, tuples,
ensembles et dictionnaires vides.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 9
Syntaxe Structure
conditionnelle (4)
 Une condition est une expression logique qui peut contenir :
 des opérateurs relationnels (==, !=, <, <=, >, >=);
Exemple: if x==0:
if x : #  if x != 0 :
if a != "" : #  if a :
 l‟opérateur unaire not.
Exemple: if not a : # donne True si a est False et
donne False sinon
 une combinaison d'opérateurs relationnels et d'opérateurs
logiques (and, or, not, …).
Exemple : if x>y and y>=z:  # ou encore if x>y>=z :
 l‟opérateur in.
Exemple : if 't„ in "toto": print ('ok')
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 10
Structure Conditionnelle
Application (1
(1)
Ecrire un programme Python qui :
 saisit trois entiers a, b et c,
 résout dans l‟ensemble C l‟équation du
second degré ax2+bx+c= 0
On discutera tous les cas possibles pour a, b et c.

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 11


Structure Conditionnelle
Application (2)

Travail à faire

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 12


Expressions Conditionnelles (1)
 Python offre la possibilité de former des expressions dont
l‟évaluation est soumise à une condition et dont la syntaxe est:
Expression_1 if condition else Expression_2
 Le résultat est l‟évaluation de expression1 si la condition est vraie, et
celle de expression2 sinon.

 Cette construction ne permet pas l‟utilisation du mot réservé elif


mais on peut emboîter deux expressions conditionnelles.
Expression_1 if condition1 else
Expression_2 if condition2 else Expression_3

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 13


Application :Expressions
Conditionnelles (3
(3)
 Récrire l'exemple suivant avec une expression conditionnelle
si c'est possible, et justifiez votre réponse dans le cas contraire
en proposant éventuellement une solution :
if a%2 == 0 :
print ('a={} est pair'.format(a))
if a%3 == 0 :
print(' et est multiple de 3')
else :
print ('et non multiple de3')
else :
print ('a={} impair'.format(a))

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 14


Application :Expressions
Conditionnelles (3
(3)

Travail à faire

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 15


Structure
Répétitive/Itérative
 Structure Itérative/Répétitive Conditionnelle
 Boucle while (Tantque et Repeter en
algorithmique)

 Structure Itérative/Répétitive NON Conditionnelle


 Boucle for avec un index numérique entier (Pour
en algorithmique)
 utilisation de la fonction range (…) pour
définir un intervalle donné
 Boucles for pour parcourir un objet itérable.

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 16


Structure Répétitive/Itérative
Mots réservés
Boucles
for boucle non conditionnelle
while boucle conditionnelle
continue interruption de l’itération et passage à l’itération
suivante sans poursuivre l'exécution des instructions
qui suivent continue (si elles existent)
break sortie de boucle
else traitement associé exécuté lorsque :
- condition d'exécution avec while non vérifiée
- épuisement de l'itérable avec for
à condition de ne pas quitter la boucle avec break
in dans un itérable
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 17
Syntaxe générale Boucle
conditionnelle : while (1)
Initialisation
while condition :
bloc_instructions_Si_condition_Vraie
else :
bloc_instructions_Si_condition_Fausse
 Si condition fausse dès le départ, le bloc bloc qui suit
l‟instruction d‟en-tête while n‟est jamais exécuté.
 Le bloc qui suit l‟instruction d‟en-tête while agit sur la condition,
True au départ, de sorte qu'elle devienne False à une itération
donnée et provoque la sortie de la boucle.
 le bloc qui suit else est exécuté lorsque la boucle while se
termine (condition devient (ou est) fausse) à condition que la
boucle ne soit pas interrompue par l'instruction break.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 18
Syntaxe générale Boucle
conditionnelle : while (2)
 On peut écrire une clause while avec une condition
toujours vraie (while 1 : ou while True:) à condition
de sortir par un autre moyen, comme break ou return,
pour éviter une boucle infinie  Boucle de Contrôle de
Saisie en est un exemple.
Exemple:

Exécution du script

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 19


Boucle conditionnelle while:
Exemples
# ou encore while True :

Exécution du script

Instruction changeant l’état de la condition


hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 20
Boucle while :
Exemple 2

La suite de Syracuse est définie par une valeur initiale x0


et le principe suivant:
 Si xn est pair alors xn+1 = xn /2
 Sinon xn+1 =3 xn + 1
On refait le traitement précédent jusqu‟à atteindre la
valeur 1 pour un terme xn.
Ecrire un programme Python qui affiche tous les termes de
la suite à partir d'un terme x0 saisi au clavier. Pour x0 = 5,
Python affiche la suite 5 16 8 4 2 1

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 21


Application :boucles

Travail à faire

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 22


Syntaxe générale Boucle
Non conditionnelle : for
Initialisation
for element in iterable:
bloc_instructions
else :
bloc_instructions_Si_itérable_épuisé

 Permet de parcourir, élément par élément, les éléments d'un


itérable.
 L'itérable peut être :
1) un intervalle donné par range pour les boucles à index
numérique (comme en Pascal)
A chaque itération, element prend une valeur de l'intervalle.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 23
Syntaxe générale Boucle
Non conditionnelle : for
Initialisation
for element in iterable:
bloc_instructions
else :
bloc_instructions_Si_itérable_épuisé
 L'itérable peut être :
2) n'importe quel conteneur (tuple, chaîne, liste, ensemble,
dictionnaire, fichier) pour les boucles à index NON
numérique. A chaque itération, element prend une valeur de
l'itérable. Si itérable est une chaîne, element prend à
chaque fois un caractères de la chaîne.
 La boucle for peut avoir une clause facultative else,exécutée
lorsque la boucle se termine par épuisement de l‟itérable et non
par une interruption avec break (à voir ultérieurement).
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 24
Boucle for à index NON
numérique
for element in iterable :
bloc_instructions
else :
bloc_instructions_Si_itérable_épuisé
L'itérable est une liste, un tuple, une chaîne (parcours de
l‟ensemble des caractères de la chaîne), un ensemble, etc.
Exemple:

Exécution du script

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 25


Boucle for à index NON
numérique : Exemple avec else
 Un cas d‟utilisation typique de break et else dans une
boucle de recherche :

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 26


Boucle for à index numérique :
Iterable est un intervalle
 Boucle for avec un index numérique entier relatif :
# range (a) désigne l’intervalle *0,a[
for i in range (a):
instructions
Exécution du script
0 5 10 15 20 25 30 35 40 45
# range (a,b) désigne l’intervalle *a,b[
for i in range (a,b):
instructions
Exécution du script

# range (a,b,c) désigne l’intervalle 4 9 16


[a,b[ par pas entier relatif égal à c
for i in range (a,b,c):
instructions Exécution du script
1 5 9 13 17
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 27
Boucle for à index
numérique : Exemples

Un ensemble n’est pas une structure indexé

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 28


Boucle for à index numérique :
Exemple avec else
 Boucle naïve affichant les nombres premiers

else du for et non pas du if

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 29


Correspondance entre
Algorithmique et Python

Algorithmique Python
Pour var de v_i à v_f faire for var in range(v_i, v_f+1):
instructions instructions
Fin_Pour
Tantque condition faire while condition d'exécution:
instructions instructions
Fin_Tantque
Répeter while True :
instructions instructions
Jusqu'à condition if condition d'arrêt:
...
break

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 30


Rupture de séquences (1) :
break/continue
 break et continue sont utilisés aussi bien au sein des
boucles for que while :
 break : force la sortie de la boucle et l‟arrête avant sa fin.
 L‟exécution reprend à l‟instruction qui suit le bloc de la
boucle ou arrêt si c‟est la fin.
 continue : interrompt l‟itération en cours et passe à la
suivante :
 retour en début de boucle à l‟itération suivante dans
une boucle for ;
 retour au test dans while.
 Dans le cadre d‟une bonne pratique de programmation, il
est recommandé d‟utiliser ces deux instructions avec
beaucoup de précaution.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 31
Rupture de séquences (2) :
break/continue
a=0 for i in range (11) :
while a>=0 : if i%2:
a+=1
if a==5: continue
continue else :
elif a==10: print (i)
break
else:
print (a) 0 2 4 6 8 10
1 2 3 4 6 7 8 9
Versions recommandées
for a in range (1,10) : for i in range (0, 11, 2) :
if a != 5: print (i)
print (a)
1 2 3 4 6 7 8 9 0 2 4 6 8 10
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 32
Application
Ecrire un script python saisieliste.py qui remplit une liste L avec n (introduit au clavier)
éléments pairs strictement positifs saisis au clavier.

Exécution du script

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 33


Gestion des erreurs : Mots
réservés

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 34


Gestion des erreurs :
Problématique

Si l’entier est négatif 


possibilité de refaire la saisie

Autre chose qu’un entier 


ERREUR signalée par python

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 35


Gestion des
erreurs/exceptions (1)
 Une erreur provoque une exception qui interrompt l'exécution
normale du programme
 Gérer une exception permet d‟intercepter (capturer) une erreur
pour éviter l‟arrêt du programme en utilisant les
instructions try, except et else.
 Une exception sépare :
 la séquence normale d‟instructions à exécuter lorsque tout se
passe bien  bloc try
 La ou les séquences d‟instructions à exécuter en cas d‟erreur
 bloc except approprié.
 Des exemples d'exceptions : NameError,
TypeError, IndentationError, SyntaxError, etc.
 Il est possible de lever volontairement une exception lors de la
détection de l‟erreur à l'aide du mot clé raise.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 36
Gestion des
erreurs/exceptions (2)
try :
Séquence_d’instructions_pouvant_déclencher_une_exception
except <<nom_exception_1>> :
instruction_à_exécuter_si_une_exception_1_se_déclenche

except <<nom_exception_p>> :
instruction_à_exécuter_si_une_exception_p_se_déclenche
else:
Séquence_d’instructions_à_exécuter_cas_normal (pas
d’exceptions) à condition de ne pas sortir du try avec
un break
#else est peu utilisé, car il est bien plus pratique de
mettre le code dans le try
On peut éventuellement écrire : try :

except:

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 37


Gestion des erreurs/
exceptions : Exemple1 (1)

Exécution du script

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 38


Gestion des exceptions :
version 2 Exemple1 (2)

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 39


Gestion des exceptions:
Exemple 2

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 40


Levée d’une exception

L‟instruction raise permet de lever volontairement une


exception et peut se trouver à tout endroit du code.
Exemple :

La gestion de l'exception levée par raise est identique à celle


levée automatiquement par Python
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 41
Les assertions
 Les assertions sont un moyen simple de s'assurer qu'une
condition est respectée avant de continuer. …
 Sa syntaxe est la suivante :
assert test

 Si le test renvoie True, l'exécution se poursuit


normalement ; Sinon, une exception AssertionError
est levée.
 En général, on les utilise dans des blocs
try : …
except:
ou pour s'assurer de la cohérence des paramètres d'une
fonction.
hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 42
Les assertions :
Exemples (1)

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 43


Les assertions :
Exemples (2)

hammamif.laila@yahoo.com - CONTRÔLE DU FLUX D’EXÉCUTION - Dia 44

Vous aimerez peut-être aussi