Vous êtes sur la page 1sur 74

-

ENSAM RABAT

Présenté par :
Creative Commons
Pr. Nordine ZIDANE

Le 15/10/2022 ZIDANE NORDINE 1


Objectifs du cours

INTRODUCTION

PLAN
PLAN
P A
L Historique N

Concepts

Applications

Le 15/10/2022 ZIDANE NORDINE 2


Langage Python
Concepts:
Les structures de contrôles

Le 15/10/2022 ZIDANE NORDINE 3


ENSAM RABAT

Structures conditionnelles et
itératives.

Le 15/10/2022 ZIDANE NORDINE 4


Structures conditionnelles et itératives.

Objectifs de ce module

• Comprendre que la programmation n’est pas


qu’une succession linéaire d’instructions.

• Des structures permettent :

– D’exécuter des instructions selon le résultat d’une


condition.
– De répéter plusieurs fois le même type
d’instructions.
Le 15/10/2022 ZIDANE NORDINE 5
Structures conditionnelles et itératives.

Plan de ce module

1. Ruptures de séquences.
2. Structures conditionnelles.
3. Structures itératives.

Le 15/10/2022 ZIDANE NORDINE 6


Structures conditionnelles et itératives.

1. RUPTURES DE SÉQUENCES.

Le 15/10/2022 ZIDANE NORDINE 7


1. Ruptures de séquences.

Plan de ce chapitre

a. Motivation.
b. Conditionnelle.
c. Opérateurs de comparaison.
d. Opérateurs logiques.

Le 15/10/2022 ZIDANE NORDINE 8


1. Ruptures de séquences.

a. Motivation.
• Un programme n’est pas nécessairement qu’une
succession d’instructions exécutées les unes à la suite des
autres.

• On peut avoir besoin de choisir telle ou telle instruction


pour s’adapter à telle ou telle situation.

• Ou encore devoir répéter plusieurs fois le même type


d’instructions.

Le 15/10/2022 ZIDANE NORDINE 9


1. Ruptures de séquences.

a. Motivation.
• Par exemple, si l’on veut résoudre une équation du second
degré, les calculs ne seront pas les mêmes selon que le
discriminant soit positif ou négatif.

• Ou si l’on souhaite afficher des tables de multiplication, on


sera amené à répéter des calculs qui se ressemblent.

• Ces choix et répétitions sont régis par ce que l’on appelle


une “conditionnelle”.

Le 15/10/2022 ZIDANE NORDINE 10


1. Ruptures de séquences.

b. Conditionnelle.
• Conditionnelle : expression booléenne dont la valeur va
déterminer les actions réalisées dans la suite du
programme.

• En Python, une conditionnelle vaut donc soit


True soit
False.

• C’est le résultat d’une comparaison, ou de plusieurs


comparaisons reliées entre elles par des opérateurs
logiques.

Le 15/10/2022 ZIDANE NORDINE 11


1. Ruptures de séquences.

c. Opérateurs de comparaison.
Liste des opérateurs de comparaison :

< <= > >= == !=

Remarque importante : cescomparaisons doivent


se faire entre deux nombres ou entre deux chaînes.

Le 15/10/2022 ZIDANE NORDINE 12


1. Ruptures de séquences.

c. Opérateurs de comparaison.
Exemples :

>>> 2 == 2.0
True
>>> 3.5 < 2
False
>>> "comparer" <
"comparaison" False
>>> '*' < '+'
True

Le 15/10/2022 ZIDANE NORDINE 13


1. Ruptures de séquences.

d. Opérateurs logiques.
• Ce sont des opérateurs qui reliententre elles
plusieurs expressions booléennes pour en former de
nouvelles.

• Opérateurs binaires :
or
and
• Opérateur unaire :

not
Le 15/10/2022 ZIDANE NORDINE 14
1. Ruptures de séquences.

d. Opérateurs logiques.
Tables de vérité des opérateurs logiques :

a b a or b a and b
False False False False
False True True False
True False True False
True True True True

a not a
False True
True False

Le 15/10/2022 ZIDANE NORDINE 15


1. Ruptures de séquences.

d. Opérateurs logiques.
Exemples :

>>> not 3 == 3.0


False
>>> 2 == 3 and 3 == 3
False
>>> 2 == 3 or 3 == 3
True
>>> 3 == 2 and 3 == 3 or 'e' !=
'é'
True
Le 15/10/2022 ZIDANE NORDINE 16
1. Ruptures de séquences.

Fin de ce chapitre

Avez – vous des questions ?

Le 15/10/2022 ZIDANE NORDINE 17


Structures conditionnelles et itératives.

2. STRUCTURES
CONDITIONNELLES.

Le 15/10/2022 ZIDANE NORDINE 18


2. Structures conditionnelles.

Plan de ce chapitre

a. Test simple.
b. Test avec alternative(s).
c. Opérateur ternaire.
d. Imbrication de tests.
e. Exercices.

Le 15/10/2022 ZIDANE NORDINE 19


2. Structures conditionnelles.

a. Test simple.
• L’idée de base est donc la réalisation d’une ou plusieurs
actions selon la vérification d’une condition.

• Cela correspond au SI ... ALORS ... du langage courant.

• En mathématiques on utilise également le terme


d’implication.

Le 15/10/2022 ZIDANE NORDINE 20


2. Structures conditionnelles.

a. Test simple.
Syntaxe d’un test simple :

if conditionnelle:
bloc d’instructions à exécuter si la
conditionnelle est vraie

Le 15/10/2022 ZIDANE NORDINE 21


2. Structures conditionnelles.

a. Test simple.
Remarque plus qu’importante :

En python les blocs d’instructions sont délimités de


deux façons :

1. La ligne les précédant se termine par un double point :

2. L’intégralité du bloc est indenté parrapport aux


instructions qui le précèdent et le suivent.

Le 15/10/2022 ZIDANE NORDINE 22


2. Structures conditionnelles.

a. Test simple.
Exemple de test simple : remplacer un nombre par sa valeur
absolue

x = eval(input())
if x < 0:
x = -x
print(x)

Le 15/10/2022 ZIDANE NORDINE 23


2. Structures conditionnelles.

b. Test avec alternative(s).


• Cette fois--ci, on pourra avoir une ou plusieurs
alternatives
à la conditionnelle si cette dernière n’est pas vérifiée.

• On va donc simuler des raisonnements de la forme

SI ... ALORS...
SINON SI ... ALORS...
SINON ...

Le 15/10/2022 ZIDANE NORDINE 24


2. Structures conditionnelles.

b. Test avec alternative(s).


Syntaxe d’un test avec une alternative :

if conditionnelle:
bloc d’instructions à exécuter si la
conditionnelle est vraie
else:
bloc d’instructions à exécuter si la
conditionnelle est fausse

Le 15/10/2022 ZIDANE NORDINE 25


2. Structures conditionnelles.

b. Test avec alternative(s).


Exemple de test avec une alternative : savoir si un nombre
est pair ou non

n = eval(input())
if n%2 == 0:
print("le nombre saisi est pair")
else:
print("le nombre saisi est impair")

Le 15/10/2022 ZIDANE NORDINE 26


2. Structures conditionnelles.

b. Test avec alternative(s).


Syntaxe d’un test avec plusieurs alternatives :

if conditionnelle:
bloc d’instructions à exécuter si la
conditionnelle est vraie
elif autre_conditionnelle:
bloc d’instructions à exécuter si la
seconde conditionnelle est vraie
else:
bloc d’instructions à exécuter si les
premières conditionnelles sont fausses

Le 15/10/2022 ZIDANE NORDINE 27


2. Structures conditionnelles.

b. Test avec alternative(s).


Exemple de test avec plusieurs alternatives : signe
strict d’un nombre

x = eval(input())
if x < 0:
print("le nombre saisi est strictement
négatif")
elif x > 0:
print("le nombre saisi est strictement
positif")
else:
print("le nombre saisi est nul")
Le 15/10/2022 ZIDANE NORDINE 28
2. Structures conditionnelles.

c. Imbrication de tests.
• L’imbrication de structuresconditionnelles est non
seulement possible mais souvent fort utile.

• Cela peut éviter le recours à une succession


detests simples et donc rendre les codes plus lisibles.

Le 15/10/2022 ZIDANE NORDINE 29


2. Structures conditionnelles.

c. Imbrication de tests.
Exemple : équation du premier degré ax + b = 0

a,b = eval(input()),eval(input())
if a == 0:
if b == 0:
print("infinité de solutions")
else:
print("pas de solution")
else:
print("unique solution :",-b/a)

Le 15/10/2022 ZIDANE NORDINE 30


2. Structures conditionnelles.

d. Opérateur ternaire.
• Cet opérateur permet dans certains cas une syntaxe plus
compacte d’un test avec une alternative.

• Néanmoins son usage est beaucoup plus limité puisque les


blocs à exécuter selon que la conditionnelle soit vraie ou
fausse ne doivent comporter qu’une seule instruction.

• Plus exactement les deux alternatives doivent être le


calcul d’une expression.

Le 15/10/2022 ZIDANE NORDINE 31


2. Structures conditionnelles.

d. Opérateur ternaire.
Syntaxe de l’opérateur ternaire :

express_1 if conditionnelle else express_2

Le 15/10/2022 ZIDANE NORDINE 32


2. Structures conditionnelles.

d. Opérateur ternaire.
Exemples : majeur ou mineur ?

statut = "mineur" if age < 18 else "majeur"

print("mineur") if age<18 else


print("majeur")

Le 15/10/2022 ZIDANE NORDINE 33


2. Structures conditionnelles.

e. Exercices.
Exercice : écrire un programme calculant les maximums et
minimums de deux nombres.

Le 15/10/2022 ZIDANE NORDINE 34


2. Structures conditionnelles.

e. Exercices.
Solution 1 : avec un test à une alternative

x,y = eval(input()),eval(input())
if x > y:
mini,maxi = y,x
else:
mini,maxi = x,y
print("minimum :",mini,", maximum :",maxi)

Le 15/10/2022 ZIDANE NORDINE 35


2. Structures conditionnelles.

e. Exercices.
Solution 2 : avec un test simple

x, y = eval(input()),eval(input())
mini, maxi = x, y
if x > y:
mini, maxi = y, x
print("minimum :",mini,", maximum :",maxi)

Le 15/10/2022 ZIDANE NORDINE 36


2. Structures conditionnelles.

e. Exercices.
Exercice : écrire un programme qui en fonction de la
moyenne aux écrits du Bac indique si le lycéen en question
est admis, recalé ou au rattrapage.

Le 15/10/2022 ZIDANE NORDINE 37


2. Structures conditionnelles.

e. Exercices.
Solution :

note = eval(input())
if note < 8:
print("recalé")
elif note < 10:
print("rattrapage")
else:
print("admis")

Le 15/10/2022 ZIDANE NORDINE 38


2. Structures conditionnelles.

Fin de ce chapitre

Avez – vous des questions ?

Le 15/10/2022 ZIDANE NORDINE 39


Structures conditionnelles et itératives.

3. STRUCTURES ITÉRATIVES.

Le 15/10/2022 ZIDANE NORDINE 40


3. Structures itératives.

Plan de ce chapitre

a. Notion d’itération.
b. Structure « for ».
c. Structure « while ».
d. Imbrications de structures itératives.
e. Sorties de boucles.
f. Clause « else » dans une boucle.
g. Exercices.
Le 15/10/2022 ZIDANE NORDINE 41
3. Structures itératives.

a. Notion d’itération.
Dans certaines situations, on est amené à exécuter plusieurs
fois des actions identiques ou du moins de même nature.

Une Itération est une séquence d’instructions destinée à être


exécutée plusieurs fois.

Selon que le nombre de répétitions soit connu à l’écriture du


programme ou pas, on utilisera une structure « for » ou
une structure « while ».

Le 15/10/2022 ZIDANE NORDINE 42


3. Structures itératives.

b. Structure “for”.
• La structure « for » réalise un nombre d’itérations fixe et
connu.

• Elle utilise une variable dont la valeur va parcourir une


certaine plage au fil des itérations. C’est cette variable qui
contrôlera le nombre d’itérations.

• Cette plage de valeurs va être construite grâce à la


fonction « range ».

Le 15/10/2022 ZIDANE NORDINE 43


3. Structures itératives.

b. Structure “for”.
Syntaxe de la fonction “range” :

range(début,fin,pas)

• Cette fonction produit une plage de valeurs


allant de ‘début’ (inclus) à ‘fin’ (non inclus) avec un
certain ‘pas’.

• À noter que pardéfaut ‘début’ et ‘pas’ valent


respectivement 0 et 1.
Le 15/10/2022 ZIDANE NORDINE 44
3. Structures itératives.

b. Structure “for”.
Exemples d’utilisation de la fonction “range” :

• range(6) produira la plage de valeurs 0, 1, 2, 3, 4, 5.

• range(3,6) produira la plage de valeurs 3, 4, 5.

• range(3,10,2) produira la plage de valeurs 3, 5, 7, 9.

• range(6,0,--1) produira la plage de valeurs 6, 5, 4, 3, 2,


1.

Le 15/10/2022 ZIDANE NORDINE 45


3. Structures itératives.

b. Structure “for”.
Syntaxe de la structure “for” :

for var in range(début,fin,pas):


bloc d’instructions à répéter
pendant que var prend les valeurs
de la plage définie par range

Le 15/10/2022 ZIDANE NORDINE 46


3. Structures itératives.

b. Structure “for”.
Explication du fonctionnement :

•Au fil des itérations, la variable var prendra successivement


toutes les valeurs de la plage créée par la fonction range.

•Le nombre d’itérations sera donc le nombre d’éléments de


la plage créée par la fonction range.

•En pratique on se serviraégalement très souvent


des
valeurs de la variable var.
Le 15/10/2022 ZIDANE NORDINE 47
3. Structures itératives.

b. Structure “for”.
Exemple : table de multiplication d’un entier saisi
par l’utilisateur

n = eval(input())
for i in range(1,11):
print(i,'*',n,'=',n*i)

Le 15/10/2022 ZIDANE NORDINE 48


3. Structures itératives.

b. Structure “for”.
Déroulement du programme :

• Admettons que l’utilisateur saisisse la valeur 9.


• À la première itération la variable i vaut 1, il est donc
affiché 1 * 9 = 9.
• À la seconde itération la variable i vaut 2, il est donc
affiché 2 * 9 = 18.
• Etc.

Le 15/10/2022 ZIDANE NORDINE 49


3. Structures itératives.

b. Structure “for”.
Autre exemple : affichage des nombres pairs entre 20 et 0

for i in
range(20,-1,-2):
print(i)

Le 15/10/2022 ZIDANE NORDINE 50


3. Structures itératives.

c. Structure “while”.
• La structure « while » réalise un nombre d’itérations non
nécessairement connu à l’écriture du programme.

• Ce nombre dépend d’une conditionnelle qui sera évaluée


avant chaque itération.

• On la qualifie parfois d’itération conditionnelle.

Le 15/10/2022 ZIDANE NORDINE 51


3. Structures itératives.

c. Structure “while”.
Syntaxe de la structure “while” :

while conditionnelle:
bloc d’instructions à exécuter tant que
la conditionnelle est vraie

Le 15/10/2022 ZIDANE NORDINE 52


3. Structures itératives.

c. Structure “while”.
Explication du fonctionnement :

• On exécute donc le bloc d’instructions tant que la


conditionnelle est vraie.

• Dans ce bloc, il est donc nécessaire de modifier la valeur


de la conditionnelle pour ne pas risquer d’avoir une
infinité d’itérations.

Le 15/10/2022 ZIDANE NORDINE 53


3. Structures itératives.

c. Structure “while”.
Exemple : calcul de la partie entière d’un réel positif

x = eval(input())
n = 0
while n+1 <=
x: n += 1
print("la partie entière de",x,"est",n)

Le 15/10/2022 ZIDANE NORDINE 54


3. Structures itératives.

c. Structure “while”.
Déroulement du programme :

• Admettons que l’utilisateur saisisse la valeur 2.57


• Avant les itérations, la variable n est initialisée à 0.
• La conditionnelle est alors vraie donc on réalisela
première itération, et n vaut maintenant 1.
• La conditionnelle est encore vraie donc on réalisela
seconde itération, et n vaut maintenant 2.
• Cette fois--ci la conditionnelle est fausse et l’on stoppe les
itérations.

Le 15/10/2022 ZIDANE NORDINE 55


3. Structures itératives.

c. Structure “while”.
Exemple à ne pas suivre :

i = 2
while i < 3:
print("coucou")

Le 15/10/2022 ZIDANE NORDINE 56


3. Structures itératives.

d. Imbrication de structures itératives.


• L’imbrication de structuresitératives est non
seulement possible mais souvent fort utile.

• À noter que l’on peut également imbriquer


structures itératives et structures conditionnelles.

Le 15/10/2022 ZIDANE NORDINE 57


3. Structures itératives.

d. Imbrication de structures itératives.


Exemple : affichage de toutes les tables de multiplications

for i in range(1,11):
print("table de",i)
for j in
range(1,11):
print("\t",j,"*",i,"=",j*i)

Le 15/10/2022 ZIDANE NORDINE 58


3. Structures itératives.

d. Imbrication de structures itératives.


Exemple (suite) : la variable “i” vaut d’abord 1, et alors “j”
prend toutes les valeurs de 1 à 10, puis “i” vaut 2 et “j” prend
de nouveau toutes les valeurs de 1 à 10, etc.

Le 15/10/2022 ZIDANE NORDINE 59


3. Structures itératives.

e. Sorties de boucles.
Deux possibilités pour “sortir” d’une boucle :

• “break” : cette commande permet la sortie de la structure


itérative “for” ou “while” qui la contient.

• “continue” : cette commande permet de passer


directement à l’itération suivante dans la structure “for”
ou “while” qui la contient.

Le 15/10/2022 ZIDANE NORDINE 60


3. Structures itératives.

e. Sorties de boucles.
Exemple de “break” : où l’on félicite l’utilisateur s’il saisit un
‘x’ en au plus 10 tentatives.

for i in range(9):
if input() == 'x':
print("quel talent")
break

Le 15/10/2022 ZIDANE NORDINE 61


3. Structures itératives.

e. Sorties de boucles.
Exemple de “continue” : affichage de tous les nombres de 10
à 20 sauf le nombre 13.

for i in
range(10,21): if
i == 13:
continue
print(i)

Le 15/10/2022 ZIDANE NORDINE 62


3. Structures itératives.

f. Clause “else” dans une boucle.


• Les structures “for” et “while” peuvent contenir une
clause “else”.

• À noter que celle--ci ne sera exécutée que si la sortie de la


boucle s’effectue de façon normale, c’est--à--dire sans
“break”.

Le 15/10/2022 ZIDANE NORDINE 63


3. Structures itératives.

f. Clause “else” dans une boucle.


Syntaxe de la structure “for” avec clause “else” :

for var in range(début,fin,pas):


bloc d’instructions à répéter
pendant que var prend les valeurs de
la plage définie par range
else:
bloc d’instructions à exécuter (une
fois) quand var a pris toutes les
valeurs de la plage définie par range

Le 15/10/2022 ZIDANE NORDINE 64


3. Structures itératives.

f. Clause “else” dans une boucle.


Syntaxe de la structure “while” avec clause “else” :

while conditionnelle:
bloc d’instructions à exécuter tant que
la conditionnelle est vraie
else:
bloc d’instruction à exécuter (une
fois) si la conditionnelle est fausse

Le 15/10/2022 ZIDANE NORDINE 65


3. Structures itératives.

f. Clause “else” dans une boucle.


Exemple : savoir si un nombre n saisi par l’utilisateur est un
nombre premier ou non

n = eval(input())
for i in range(2,n):
if n%i == 0:
premier = False
break
else:
premier = True

Le 15/10/2022 ZIDANE NORDINE 66


3. Structures itératives.

g. Exercices.
Exercice : écrire un programme calculant la somme des
premiers entiers naturels jusqu’à un entier positif saisi par
l’utilisateur.

Le 15/10/2022 ZIDANE NORDINE 67


3. Structures itératives.

g. Exercices.
Solution :

n = -1
while n < 0:
n = eval(input())
somme = 0
for i in range(n+1):
somme += i
print("la somme des",n,"premiers entiers
vaut",somme)

Le 15/10/2022 ZIDANE NORDINE 68


3. Structures itératives.

g. Exercices.
Exercice : écrire un programme calculant la somme d’une
suite d’entiers saisie par l’utilisateur se terminant par 0
(exemple 5, 4, 9, 0 renverra 18).

Le 15/10/2022 ZIDANE NORDINE 69


3. Structures itératives.

g. Exercices.
Solution :

somme,n = 0,1
while n !=
0:
n = eval(input())
somme += n
print("la somme des entiers saisis
vaut",somme)

Le 15/10/2022 ZIDANE NORDINE 70


3. Structures itératives.

Fin de ce chapitre

Avez – vous des questions ?

Le 15/10/2022 ZIDANE NORDINE 71


ENSAM RABAT

Félicitations

Vous avez suivi avec succès le


chapitre n°3
Les structures de contrôles

Le 15/10/2022 ZIDANE NORDINE 72


Fin

Le 15/10/2022 ZIDANE NORDINE 73


ENSAM RABAT

Structures conditionnelles et
itératives.
Sous-programmes.

Le 15/10/2022 ZIDANE NORDINE 74

Vous aimerez peut-être aussi