Contrôle du flux Contrôle du flux
d'exécution d'exécution
dans un programme dans un programme
Marie Pierrot – Lycée général et technologique du Rempart
Séquences d'instructions
>>> a, b = 8, 1
>>> a = b
>>> b = a
>>> print (a, b) 1 1
>>> a, b = 8, 1
>>> b = a
>>> a = b
>>> print (a, b) 8 8
Sauf mention explicite, les instructions (lignes) d’un programme s’exécutent les unes après les autres,
dans l’ordre où elles ont été écrites à l’intérieur du script.
>>> print (a, b)
8 8>>> resu = (3 + a) * (3 - b)
>>> print (resu) -55
Sur une même ligne par contre, les priorités des opérateurs mathématiques s'appliquent...
Exécution conditionnelle
>>> a, b = 8, 1
>>> if a<b : a=b
>>> b=a
>>> print(a, b) 8 8
Il existe deux façons de changer l'ordre séquentiel d'exécution des instructions : la sélection et la
répétition
L'instruction if (si) permet au programme de suivre
différents chemins selon les circonstances, c'est une
instruction de sélection.
Il peut être accompagner
d'autres instructions de test : elif (ou sinon si)
else (sinon)
Exécution conditionnelle
if [test] :
[bloc d'instructions]
elif [test] :
[bloc d'instructions]
else :
[bloc d'instructions]
TAB
TAB
TAB
Syntaxe :
>>> a=2
>>> if a<0 :
print("a est négatif") elif a>0 :
print("a est positif") else :
print("a est nul") a est positif
Exemple :
Exécution conditionnelle
« if … in »
if [élément] in [list] :
[bloc d'instructions]
TAB
Syntaxe :
Exemple : Petite variante :
>>> if 'r' in 'voiture' :
print('la lettre y est ') else :
print('r n\'y est pas') la lettre y est
Instructions imbriquées
if embranchement == "vertébrés": if classe == "mammifères" : if ordre == "carnivores" : if famille == "félins" : print ("c'est peut-être un chat") print ("c'est en tous cas un mammifère") elif classe == 'oiseaux' :
print ("c'est peut-être un canari") print ("la classification des animaux est complexe")
TAB TAB
TAB
TAB
TAB
Boucles : l'instruction
« while »
L'instruction while (tant que) est une
instruction de répétition.
Syntaxe :
i=0while i<n :
[bloc d'instructions]
[i = i + 1]
TAB
a = 0
while (a<10) :
print("le carré de",a,"est :",a**2) a = a+1
le carré de 0 est : 0 le carré de 1 est : 1 le carré de 2 est : 4 le carré de 3 est : 9 le carré de 4 est : 16 le carré de 5 est : 25 le carré de 6 est : 36 le carré de 7 est : 49 le carré de 8 est : 64 le carré de 9 est : 81
Exemple :
Boucles : l'instruction
« while »
Si la condition n'est jamais vérifiée le bloc d'instruction ne s'exécute jamais...
→ ça ne sert à rien !
Si la condition est toujours vérifiée le bloc d'instruction s'exécute à
l'infini...
→ Il s'agit alors d'une boucle infinie qu'il faut absolument éviter (le
programme n'en sort pas à moins de quitter le programme « python »)
Exemple :
>>> n = 3
>>> while (n > 5) :
print("je veux participer !")
>>> while (n < 5) :
print("C'est parti !") C'est parti !
C'est parti ! C'est parti ! C'est parti ! C'est parti ! C'est parti ! C'est parti ! C'est parti ! C'est parti ! C'est parti !
…...
Boucles : l'instruction
« for … in »
L'instruction for … in (pour les éléments d'un ensemble) est une puissante instruction de répétition.
Syntaxe :
for element in ensemble : [bloc d'instructions]
TAB
>>> voyelles = "aeiouy"
>>> prenom = 'sidonie'
>>> for l in prenom :
if l in voyelles : print(l)
io ie
>>>
>>> eleves = ['Victor','Sidi','Myriam']
>>> for x in eleves :
print("Bonjour",x) Bonjour Victor
Bonjour Sidi
Bonjour Myriam
Les fonctions
L'avantage d'écrire une fonction est que le bout de code exécuté par cette fonction peut être exécuté un grand nombre de fois dans le programme...
def maFonction(x,y) :
"Ici on décrit ce que fait \ la fonction et ce qu'elle \ renvoi comme résultat"
[bloc d'instructions]
return z
Syntaxe :
TAB TAB
def factoriel(n) :
"calcule et retourne n!"
if n == 1 or n == 0 : return 1
else :
sol = n
while n>1 : n = n-1 sol = sol*n return sol
print(factoriel(5)) 120
Récursivité
Une fonction peut s'appeler elle-même, on parle alors de fonction récursive.
def factoriel(n) :
"Calcule le factoriel d'un nombre.\
n : Le nombre dont on veut le factoriel.\
Elle retourne n!"
if n == 1 or n == 0 : return 1
else :
return n*factoriel(n-1) print (factoriel(5))
120