Title: 2 Contrle du flux dinstructions
12 - Contrôle du flux dinstructions
- Les instructions simples et les séquences
dinstructions - Les instructions conditionnelles
- Les instructions de répétition
- Les instructions imbriquées
22.1 - Instructions simples et séquences
dinstructions
- Une instruction simple ou élémentaire est une
action de base définie par le langage Python. Ce
peut être une évaluation dexpression, une
affectation ou une instruction qui a une fonction
très spécifique. - Une évaluation dexpression sexprime par
lécriture de lexpression à évaluer. La valeur
de lexpression est calculée et affichée sur la
sortie standard. - Une affectation a la forme cible expression
. La cible est souvent une variable mais ce peut
être un objet plus complexe capable de recevoir
et de stocker une valeur, tel par exemple une
entrée dun tableau. Lopérateur daffectation
peut être précédé dun opérateur permettant
dexprimer la nouvelle valeur dune zone mémoire
à partir de lancienne. - La façon la plus simple de composer des
instructions est de les organiser en séquences.
Dans une séquence, deux instructions sont
séparées par un point-virgule ou un passage à la
ligne.
32.1 - Instructions simples et séquences
dinstructions
- gtgtgt 23
- 5
- gtgtgt "la" "le"
- False
- gtgtgt x 2 3
- gtgtgt x
- 5
- gtgtgt x 2
- gtgtgt x
- 10
- gtgtgt y 1, 2
- gtgtgt y0 7
- gtgtgt y
- 7, 2
42.2 - Instructions conditionnelles
- Une instruction conditionnelle permet deffectuer
un choix dans lexécution dinstructions en
fonction de conditions. - La plus simple des instructions conditionnelles
est linstruction if qui a la syntaxe suivante
if ltconditiongt ltbloc
dinstructionsgt - ltconditiongt est une expression de type booléen et
ltbloc dinstructionsgt est une séquence
dinstructions qui sont indentées de la même
façon par rapport à la ligne où figure la
condition. - La sémantique de linstruction est la suivante
si la valeur de ltconditiongt est True , la
séquence ltbloc dinstructionsgt est exécutée,
sinon aucune action nest effectuée.
52.2 - Instructions conditionnelles
- gtgtgt x0
- gtgtgt if x gt0
- x
- x1
- x-1
-
- 0
- 1
- -1
- gtgtgt x -1
- gtgtgt if x gt0
- x
- x1
- x-1
-
- gtgtgt
62.2 - Instructions conditionnelles
- Linstruction if else a la syntaxe suivante
if ltconditiongt ltbloc1
dinstructionsgt else ltbloc2
dinstructionsgt - La sémantique de linstruction est la suivante
si la valeur de ltconditiongt est True , la
séquence ltbloc1 dinstructionsgt est exécutée,
sinon cest ltbloc2 dinstructionsgt qui est
exécutée.
72.2 - Instructions conditionnelles
- gtgtgt x 7
- gtgtgt if x 2 0
- print "x est pair"
- else
- print "x est impair"
-
- x est impair
- gtgtgt x 8
- gtgtgt if x 2 0
- print "x est pair"
- else
- print "x est impair"
-
- x est pair
- gtgtgt
82.2 - Instructions conditionnelles
- On peut introduire un test sur une suite de
conditions alternatives en utilisant le mot-clé
elif dans linstruction if else avec la syntaxe
suivante if ltcondition 1gt ltbloc 1
dinstructionsgt elif ltcondition 2gt
ltbloc 2 dinstructionsgt
.
.
.
elif ltcondition ngt ltbloc n
dinstructionsgt else ltbloc n1
dinstructionsgt - La sémantique de linstruction est la suivante
si la valeur de ltcondition 1gt est True , la
séquence ltbloc 1 dinstructionsgt est exécutée,
sinon si la valeur de ltcondition 2gt est True , la
séquence ltbloc 2 dinstructionsgt et ainsi de
suite. Si aucune des conditions de la suite nest
vraie, cest ltbloc n1 dinstructionsgt qui est
exécutée.
92.2 - Instructions conditionnelles
- gtgtgt heure 15
- gtgtgt if heure gt 6 and heure lt 13
- print "c'est le matin"
- elif heure gt 13 and heure lt 19
- print "c'est l'après-midi"
- elif heure gt 19 and heure lt 23
- print "c'est le soir"
- else
- print "c'est la nuit"
-
- c'est l'après-midi
- gtgtgt
102.3 - Instructions de répétition
- Les instructions de répétition permettent de
répéter un bloc dinstructions. - Linstruction for a la syntaxe suivante for
ltcontroleurgt in ltseqgt ltbloc
dinstructionsgt - Dans cette instruction, ltcontroleurgt est une
variable qui est introduite pour contrôler le
nombre ditérations et ltseqgt est un objet de type
sequence (string, list, tuple). - La sémantique de linstruction est la suivante
la variable ltcontroleurgt prend successivement les
différentes valeurs de ltseqgt dans lordre où elle
apparaissent. A chaque instanciation, la séquence
ltbloc dinstructionsgt est exécutée.
112.3 - Instructions de répétition
- gtgtgt range(5)
- 0, 1, 2, 3, 4
- gtgtgt for n in range(5)
- print "le carre de ", n, "est ", n2
-
- le carre de 0 est 0
- le carre de 1 est 1
- le carre de 2 est 4
- le carre de 3 est 9
- le carre de 4 est 16
- gtgtgt
122.3 - Instructions de répétition
- Linstruction while a la syntaxe suivante
while ltconditiongt ltbloc
dinstructionsgt - Dans cette instruction, ltconditiongt est une
expression de type booléen. - La sémantique de linstruction est la suivante
lexpression ltconditiongt est évaluée et tant que
sa valeur est True, la séquence ltbloc
dinstructionsgt est exécutée. - On utilise une instruction for quand les
itérations sont connues à lavance et on utilise
une instruction while quand les itérations ne
sont pas connues à lavance mais quelles
dépendent dune condition.
132.3 - Instructions de répétition
- gtgtgt n 0
- gtgtgt while n lt 5
- print "le carre de ", n, "est ", n2
- n 1
-
- le carre de 0 est 0
- le carre de 1 est 1
- le carre de 2 est 4
- le carre de 3 est 9
- le carre de 4 est 16
- le carre de 5 est 25
- gtgtgt
142.3 - Instructions de répétition
- Linstruction break doit être utilisée dans le
bloc dinstructions dune boucle. Elle interrompt
lexécution de la boucle la plus interne dans
laquelle elle se situe.
gtgtgt for k in range(6) for i in
range(k1) if i gt 1
if i k
print k
elif k i 0
break 2 3 5
152.4 - Instructions imbriquées
- Les instructions composées peuvent être
imbriquées les unes dans les autres
gtgtgt entree "La belle brise la glace." gtgtgt
sortie "" gtgtgt for caractere in entree if
caractere " " sortie "\n" else
sortie caractere gtgtgt print
sortie La belle brise la glace. gtgtgt
162.5 Exercices
- Donner le résultat de lexécution du programme
ci-dessous lorsque lon entre au clavier les
valeurs 4, 2, 5 pour respectivement a, b, c. Même
question lorsque lon entre 2, 4, 5. En déduire
le rôle de ce programme. - a input(nombre1 )b input(nombre2
)c input(nombre3 )if a gtb if a gt c
print a else print
celif b gtc print belse print c
172.5 Exercices
- Donner le résultat de lexécution du programme
ci-dessous lorsque lon entre au clavier la
valeur arma pour mot1. Même question lorsque
lon entre erre. En déduire le rôle de ce
programme. - mot1 input(Entrez un mot !)mot2 for c
in mot1 mot2 c mot2print mot1 mot2 - Donner le résultat de lexécution du programme
ci-dessous lorsque lon entre au clavier la
valeur 5 pour x. Même question lorsque lon entre
6. En déduire le rôle de ce programme. - x input("Entrez un nombre entier naturel ! ")
- y 2
- continuer True
- while y lt x and continuer
- z y
- while z lt x and continuer
- z y
- if z x
- continuer False
- y 1
- print continuer
182.5 Exercices
- Ecrire un programme Python pour chacune des
spécifications ci-dessous. - Afficher tous les caractères dune chaîne de
caractères en en mettant un par ligne. - Calculer la longueur dune chaîne de caractères
(parcourir la chaîne et incrémenter une variable
de 1 à chaque pas). - Compter le nombre de e , de a et de i
dans une chaîne de caractères. - Afficher tous les mots dune phrase en en mettant
un par ligne (deux mots sont upposés être séparés
exactement par un espace). On peut se servir du
fait quen mettant une virgule à la fin dune
instruction print, on évite un passage à la
ligne, qui est normalement ajouté automatiquement
à la fin dune instruction print.