Vous êtes sur la page 1sur 24

L’Université Libre de Tunis

Institut Polytechnique Privé (IP2)

Chapitre II: Contrôle du flux d’instructions

réalisé par :
Wiem MIMOUN BEN HENIA

2019-2020
Plan

1. Introduction

• Choisir : if else
2. Choisir
•Syntaxe compacte d’une alternative

• Parcourir : Boucle for


3. Boucles
• Répéter : Boucle while

•Interrompre une boucle: break


4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

•Exercices
5. Exercices corrigés
•Corrections

2
1. Introduction

 Un script Python est formé d’une suite d’instructions exécutées en séquence* de haut en bas.

Cette exécution en séquence peut être modifiée

 Pour identifier les instructions composées, Python utilise la notion d’indentation significative. Cette
syntaxe, légère et visuelle, met en lumière un bloc d’instructions et permet d’améliorer grandement
la présentation et donc la lisibilité des programmes sources.

* On peut mettre plusieurs instructions sur la même ligne en les séparant avec un « ; » mais, par soucis de lisibilité, c’est déconseillé.

3
1. Introduction

Syntaxe : Une instruction composée se compose :


— d’une ligne d’en-tête terminée par deux-points :
— d’un bloc d’instructions indenté par rapport à la ligne d’en-tête.

On utilise habituellement quatre espaces par indentation et on ne mélange


pas les tabulations et les espaces..

Attention : Toutes les instructions au même niveau d’indentation appartiennent au même


bloc.

4
•Choisir: if elif else
2. Choisir
•Syntaxe compacte d’une alternative

Attention:

* L’indentation (le décalage par rapport à la marge gauche) qui délimite le bloc d’instructions
** Le code appartenant au même bloc doit être impérativement aligné sinon erreur.
*** La partie else est facultative
5
•Choisir: if else
2. Choisir
•Syntaxe compacte d’une alternative

Contrôler une alternative : Test d’une valeur booléenne :

Attention:

* elif n’est déclenché que si la (les) condition(s) précédente(s) a (ont) échoué.


** elif est situé au même niveau que if et else
*** On peut en mettre autant que l’on veut
6
2. Choisir

Pour trouver, par exemple, le minimum de deux nombres, on peut utiliser l’opérateur ternaire* :

* L’opérateur ternaire est une expression qui fournit une valeur que l’on peut utiliser dans une affectation ou un calcul.

7
•Parcourir: Boucle for
3. Boucles •Répéter; Boucle while

Notions de conteneur et d’itérable

Un conteneur est un type de données qui stocke un


ensemble d’autres données qui peuvent avoir la notion
d’ordre entre ces données.

La notion d’itérable désigne un conteneur que l’on


peut parcourir élément par élément.

Pour parcourir ces conteneurs, on utilise souvent


l’instruction range() qui fournit un moyen pour générer
une liste de valeurs.

* Ces notions seront présentées avec plus de détails dans le chapitre qui suit
8
•Parcourir: Boucle for
3. Boucles •Répéter; Boucle while

La boucle for consiste à parcourir un itérable

Attention:

•L’indentation est toujours importante


•La séquence est une collection de valeurs peut être générée avec range()
•Des boucles imbriquées sont possibles
•Le bloc d’instructions peut contenir des conditions
9
•Parcourir: Boucle for
3. Boucles
A •Répéter; Boucle while

Application: Ecrire un programme qui permet de détecter le nombre de voyelles, de


consonnes et des caractères spéciaux dans une phrase saisie par l’utilisateur.

10
•Parcourir: Boucle for
3.
A
Boucles •Répéter; Boucle while

11
•Parcourir: Boucle for
3. Boucles •Répéter; Boucle while

Répéter une partie de code lorsqu’une expression booléenne est toujours vraie

Utilisation classique : la saisie filtrée d’une valeur numérique (on doit préciser le
type car on se rappelle que input() saisit une chaîne) :

Attention:

•L’indentation est toujours importante

12
•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

interrompre une boucle : break

Le programme quitte directement la boucle en cours (for ou while) contenant l’instruction break:
Exemple * Initialiser une liste « liste » qui contient les éléments: 1, 2, 3, ‘stop’,4, 5
* Editer ce code
•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Court-circuiter une boucle : continue

Passer directement à l’itération suivante de la boucle for ou while contenant l’instruction


continue et reprendre par la suite à la ligne de l’en-tête de la boucle.

Exemple * Garder l’exemple précèdent en changeant « break » par « continue »


•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Utilisation avancée des boucles

• La syntaxe complète des boucles autorise des utilisations plus rares:


• Elles peuvent posséder une clause else qui ne s’exécute que si la boucle se
termine normalement, c’est-à-dire sans interruption.
•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Traitement des erreurs: les exceptions

Si une erreur est produite, toutes les couches du code sont atteintes et si l’erreur n’est pas
interceptée par le mécanisme des exceptions, le programme s’arrête et l’erreur est affichée*.

 Afin de rendre les applications plus robustes, il est nécessaire de gérer les erreurs
d’exécution des parties sensibles du code.

Gérer une exception permet d’intercepter une erreur pour éviter un arrêt du programme.

* Le traceback (message complet d’erreur) précise l’ensemble des couches traversées.


•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Traitement des erreurs: les exceptions

 Une exception sépare d’un côté la séquence d’instructions à exécuter lorsque tout se
passe bien et, d’un autre côté, une ou plusieurs séquences d’instructions à exécuter en cas
d’erreur.

 Lorsqu’une erreur survient, un objet exception est passé au mécanisme de propagation


des exceptions, et l’exécution est transférée à la séquence de traitement appropriée.

Le mécanisme s’effectue donc en deux phases :


— la levée d’exception lors de la détection d’erreur ;
— le traitement approprié.
•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Traitement des erreurs: les exceptions

Toutes les exceptions levées par Python appartiennent à un ensemble d’exceptions


nommé Exception.

Cette famille offre une vingtaine d’exceptions standard*.


Toutes les exceptions doivent donc être typées (munies d’un nom de type d’exception)

* AritmeticError, ZeroDivisionError, IndexError, KeyError, AttributeError, IOError, ImportError, NameError, SyntaxError, TypeError…
•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Traitement des erreurs: les exceptions

Syntaxe:
La séquence normale d’instructions est placée dans un bloc try.
Si une erreur est détectée (levée d’exception), elle est traitée dans le bloc except approprié
(le gestionnaire d’exception).
•Parcourir: Boucle for
3. Boucles
A •Répéter; Boucle while

Application: Ecrire un programme qui permet de calculer et afficher f(x)=sin(x)/x pour x


dans [-90,90] avec un pas d’avancement 10.

• Constater!!!

• En Etudiant les exceptions de cette expression et pour intercepter l’erreur, attribuer la


valeur ‘1,0’ lorsque le programme rencontre une erreur d’exécution
• Changer l’expression de gestion de cette exception par la syntaxe « pass ». Constater

NB: importer le module math pour utiliser la fonction sin

20
•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Traitement des erreurs: les exceptions

Correction:

Exploitez les résultats et changez la sortie des résultats par:


•Interrompre une boucle: break
4. Ruptures de séquences •Court-circuiter une boucle: continue
•Traitement des erreurs: les exceptions

Lever une erreur: raise

L’instruction raise permet de lever volontairement une exception.


•Exercices
5. Exercices corrigés
•Corrections

Applications
•Exercices
5. Exercices corrigés
•Corrections

Exercice 1. Ecrire un programme qui demande deux nombres à l’utilisateur et l’informe ensuite si
leur produit est négatif ou positif. (NB: Ne pas calculer le produit des deux nombres).

Exercice 2: Ecrire un programme qui demande un entier de départ, et qui ensuite affiche les cinq
entiers qui suivent.

Exercice 3. Ecrire un programme qui permet de calculer le montant des heures supplémentaires
d’un employé, sachant le prix unitaire d’une heure selon le barème suivant :
— Les 39 premières heures sans supplément,
— De la 40ième à la 44ième heure sont majorées de 50%,
— De la 45ième à la 49ième heure sont majorées de 75%,
— De la 50ième heure ou plus, sont majorées de 100%.

Exercice 4. Ecrire programme permettant de lire un nombre entier N puis calcule son factoriel.
— N!=1*2*3*....*(n-1)*N
— 0 !=1
1. Utiliser for,
2. Utiliser while.