0% ont trouvé ce document utile (0 vote)
59 vues131 pages

POO 2 Chapitre 1 2024

Transféré par

babacar sow
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
59 vues131 pages

POO 2 Chapitre 1 2024

Transféré par

babacar sow
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POO 2

M. DIOUF
Université Iba Der Thiam de Thiès
UFR SET / Département Informatique
Licence 3 en Informatique - Option Génie Logiciel
Version 5 du cours

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 1


Unité d’Enseignement
• INFORMATIQUE (INF 35)

Elément constitutif
Présentation
• Programmation Orienté Objet 2
Générale
Charge horaire et Responsable
• 40H (15H CM – 25H TD/TP)
• M. DIOUF

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 2


Public cible:
• Licence 3 Informatique (Génie Logiciel)

Présentation Pré – requis


Générale
• Analyse et Conception Objet
• Algorithmique 1, 2 et 3
• Bases de données
• Programmation Orienté Objet 1
• Notions en Mathématiques & Statistique
15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 3
Maitriser le concept de la modularité

Savoir modéliser et construire une bibliothèque logicielle

Comprendre les principes de la Programmation Orienté Objet et


savoir les appliquer en Python

Objectifs du cours Savoir manipuler les collections d’éléments

Être en mesure de manipuler des données sur différents format de


fichier

Être capable de gérer des données via SQL

Mettre en œuvre les bonnes pratiques en architecture logicielle

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 4


Chapitre 1 : Fonctions et Procédures

Chapitre 2 : Collections et Fichier

Contenu Chapitre 3 : Programmation Orientée Objet

Chapitre 4 : Gestion de données

Chapitre 5 : Pratiques d’ingénierie

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 5


Formules pédagogiques

Exposé de cours magistraux

Travaux pratiques

Documentation

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 6


Devoirs (40%)

Evaluation
Examen

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 7


https://www.jetbrains.com/fr-fr/pycharm/

Outils à
mettre en https://www.anaconda.com/products/distribution

place
https://colab.research.google.com/

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 8


Responsable
du cours Mansour DIOUF
LinkedIn : https://www.linkedin.com/in/mike-delta007/
Email : [email protected]

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 9


Are you ready ?
15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 10
P.O.O 2
M. DIOUF
Université Iba Der Thiam de Thiès
UFR SET / Département Informatique
Licence 3 en Informatique / Option Génie Logiciel

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 11


Introduction à Python

Principe de la modularité
Chapitre 1
Fonctions et Fonction et Procédure

Procédures Portée et Paramètres

Conception de module

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 12


QU’EST CE QUE PYTHON ?
• Crée en 1989 aux Pays-Bas par Guido Van Rossum
• Syntaxe simple (Typage Dynamique, Indentation significative, gestion automatique
de la mémoire) permettant de passer de l’algorithme au programme
• Portable sur tous les systèmes d’exploitation :
Windows, Linux, Macintosh
• Langage open source
• Disponibilité de plusieurs milliers de bibliothèques
• Deux modes d’utilisation :
- script (écriture du programme dans un fichier)
- interactif (similaire à une calculatrice)
• Langage interprété rapide
• Permet de mettre en œuvre les trois paradigmes
(impérative, objet et fonctionnel)
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 13
VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de variable
Définition :
C’est un emplacement mémoire dont la valeur peut changer au cours de l’exécution d’un programme.
• Une variable possède un nom, on parle d'identifiant ;
• Une variable possède une valeur ;
• Une variable possède un type qui caractérise l'ensemble des valeurs que peut prendre la variable.

Formalisme de déclaration d’une variable en algorithme :

VARIABLE nom_de_la_variable : type_de_la_variable

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 14


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de variable
On peut faire l'analogie avec notre énigme précédente :

• Les seaux seraient les variables ;

• Le contenu d’un sceau serait la valeur de la variable correspondante ;

• La matière du sceau serait le type de la variable (plastique, verre, fer)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 15


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de variable
Choix des identificateurs
Le choix des noms de variables est soumis à quelques règles qui varient selon le langage,
mais en général :
⚫ Un nom doit commencer par une lettre alphabétique

Exemple valide : A1
Exemple invalide : 1A
⚫ Doit être constitué uniquement de lettres, de chiffres et du soulignement _

(Eviter les caractères de ponctuation et les espaces)


Valides : msda2020, msda_2020
Invalides : msda 2020, msda-2020, msda;2020
⚫ Doit être différent des mots réservés du langage

(par exemple en Python : int, float, else, def, for, if , while, return, …)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 16


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de variable
Définition du type

Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre.

Il y a deux grandes catégories de type :

• Les types simples ;

• Les types composés.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 17


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de variable
Définition du type
⚫ Type numérique (entier ou réel)

⚫ Byte (codé sur 1octet): de 0 à 255

⚫ Entier court (codé sur 2 octets) : -32 768 à 32 767

⚫ Entier long (codé sur 4 ou 8 octets)

⚫ Réel simple précision (codé sur 4 octets)

⚫ Réel double précision (codé sur 8 octets)

⚫ Type logique ou booléen : Deux valeurs VRAI ou FAUX

⚫ Type caractère : lettres majuscules, minuscules, chiffres, symboles, …

Exemples: ’A’, ’a’, ’1’, ’?’, …


⚫ Type chaîne de caractères : Toute suite de caractères,
Exemples: " Nom, Prénom", "code postale: 1000", …
Attention : La définition de type n’est pas obligatoire pour tous les langages.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 18


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de constante
Définition :

C’est un objet qui ne possède pas d’emplacement mémoire réservé.

⚫ Sa valeur est directement placé dans le code du programme ;

⚫ Elle ne peut pas voir sa valeur modifiée.

Exemple :

Constante PI = 3,14

⚫ La constante a un typage dynamique

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 19


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
Python permet de manipuler toutes sortes de données :
⚫ Entiers : 0, -12, 3569
⚫ Flottants : 0.232, 3.1415, -12.0
⚫ Booléens : True, False (vrai, faux)
⚫ Chaines de caractères : ”Bonjour les amis”
Python étant un langage de programmation interprété donc la déclaration de
variable n’est pas nécessaire.

Il suffit juste d’écrire l’identifiant de la variable puis de lui fournir une valeur ensuite
Python se chargera de calculer le type et de l’attribuer à la variable.
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 20
VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
Exemple :
type(identifiant_variable)
permet de retourner le
type d’une variable.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 21


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
Les types de base : les entiers (int)
▪ Permet de représenter n’importe quel entier positif ou négatif

▪ On utilise l’écriture en base du 10 du nombre avec un signe optionnel

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 22


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
La fonction standard int()
▪ Permet de convertir n’importe quelle valeur compatible vers l’entier correspondant

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 23


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
Les types de base : les réels (float)
▪ Permet de représenter une partie des nombres à virgule ;

▪ La séparation entre partie entière et partie décimale se fait avec un point ;

▪ On peut également utiliser l’écriture scientifique avec un E ou un e suivi d’une puissance de 10.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 24


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
La fonction standard float() :

▪ Permet de convertir n’importe quelle valeur compatible vers le nombre réel


correspondant.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 25


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
Les types de base : les booléens (bool)
• Permet de représenter les valeurs logiques VRAI et FAUX
• Deux mots réserves en python : True et False
• N’importe qu’elle donnée en Python possède une valeur logique :
– les valeurs non nulles valent True
– les valeurs vides ou nulles valent False

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 26


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
Les types de base : les chaines de caractères (str)
▪ Permet de représenter les textes ;

▪ Les valeurs littérales sont entourées :


par des apostrophes (’), des guillemets (”) ou bien des triples quottes (’’’ ou ”””)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 27


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
La fonction standard str() :
▪ Permet de convertir la plupart des valeurs dans leur représentation en texte.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 28


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
En Python...
En Python, les chaines de caractères sont dits immutables
(une fois constituée en mémoire, elles ne sont plus modifiables)

Les opérations de modification sur les chaînes produisent donc de nouvelles chaînes.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 29


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
⚫ Un opérateur est un symbole d'opération qui permet d'agir sur des variables
ou de faire des calculs ;

⚫ Une opérande est une entité (variable, constante ou expression) utilisée par
un opérateur ;

⚫ Une expression est une combinaison d'opérateur(s) et d'opérande(s), elle


est évaluée durant l'exécution de l'algorithme, et possède une valeur (son
interprétation) et un type.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 30


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
Par exemple dans a + b :

• a est l'opérande gauche

• + est l'opérateur

• b est l'opérande droite

• a + b est appelé une expression

• Lorsque a vaut 4 et 5 vaut 3, l'expression a + b vaut 9

• Lorsque a et b sont des entiers, l'expression a + b est un entier

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 31


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
L'évaluation de l'expression fournit une valeur qui est le résultat de l'opération ;

Les opérateurs dépendent du type de l'opération, ils peuvent être :

▪ des opérateurs arithmétiques : +, -, *, /, % (modulo), ^ (puissance)

▪ des opérateurs logiques : NON, OU, ET

▪ des opérateurs relationnels : = , != , < , > , <= , >=

▪ des opérateurs sur les chaînes : & (concaténation)

Une expression est évaluée de gauche à droite mais en tenant compte de priorités

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 32


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le
suivant (du plus prioritaire au moins prioritaire) :
^ : (élévation à la puissance)
* , / (multiplication, division)
% (modulo)
+ , - (addition, soustraction)
Exemple : 4 + 3 * 5 vaut 19
En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les
opérations à effectuer en priorité (ou en premier)
Exemple : (2 + 3) * 7 vaut 35

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 33


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
Nous avons les opérateurs relationnels suivants :
– Égalité (= ou ==)
– Inégalité (<> ou !=)
– Supérieur (>)
– Supérieur ou égal (>=)
– Inférieur (<)
– Inférieur ou égal (<=)
• Remarque :
Un operateur relationnel retourne une valeur booléenne (vrai/faux)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 34


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
Nous avons les opérateurs booléens suivants : et, ou, non
– non p est vraie si l’expression p est fausse et faux si l’expression p est vrai.
– p et q est vraie si et seulement si les expressions p et q sont vraies.
– p ou q est vraie est vraie si au moins l’une des expressions p,q est vraie.
– Priorités sur les opérateurs : non, et, ou
– Associativité et Distributivité des opérateurs et,ou
– Lois de Morgan
• non (p ou q) = non p et non q
• non (p et q) = non p ou non q

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 35


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
Exemples En Python :

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 36


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Notion de d’opérateur, opérande et expression
Evaluez l’expression suivante :
not 16/2**2+10 != 15 % 8*2 and 0.5**-2/2*5 >= 10**2**(1/2)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 37


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Affectation
L’affectation consiste à attribuer une valeur à une variable
(ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)

En algo, l'affectation se note avec le signe ←


A ← x : Ceci attribue la valeur de x à la variable A

▪ x peut être une valeur, une autre variable ou une expression

▪ A et x doivent être de même type ou de types compatibles

▪ L’affectation ne modifie que ce qui est à gauche de la flèche

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 38


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Affectation
En python

– Il n’est pas symétrique (3 = a ne marche pas)

– Il est associatif à droite! (a = b = c veut dire a = (b = c))

– Il peut servir pour des affectations multiples (a, b = 2,3)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 39


VARIABLE, CONSTANTE, AFFECTATION ET OPERATEUR
Affectation
Exemple : Calcul de la surface du cercle

Algorithme surfaceCercle #Programme Python surfaceCercle


Constante pi = 3.14
pi = 3.14
rayon = 2.0
Variable
surface = 0.0
rayon, surface: réel
Début_Algo surface = rayon * rayon * pi
rayon ← 2
surface ← rayon * rayon * pi
Fin_Algo

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 40


EXERCICES D’APPLICATION
Exercice 1 : Donnez les valeurs des variables A, B et C en fin d’exécution ?
Variables A, B, C: Entier;
Début
A ← 3;
B ← 7;
A ← B;
B ← A+5;
C ← A + B;
C ← B – A;
Fin

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 41


EXERCICES
Exercice 2 :
Donnez les valeurs des variables A, B après exécution des instructions suivantes ?
Variables A, B : Entier;
Début
A ← 1;
B ← 2;
A ← B;
B ← A;
Fin
Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?

Exercice 3 :
Ecrire un programme permettant d’échanger les valeurs de deux variables A et B

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 42


LECTURE ET ECRITURE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 43


LECTURE ET ÉCRITURE
▪ Un algorithme peut avoir des interactions avec l'utilisateur (usage des périphériques);
▪ Il peut afficher un résultat (du texte ou le contenu d’une variable) et demander à l'utilisateur de
saisir une information afin de la stocker dans une variable ;
En tant que programmeur on se met à la place de la machine

• Pour afficher une information on utilise la commande ECRIRE suivie entre parenthèses de la
chaîne de caractères entre guillemets et/ou des variables de type simple à afficher séparées par
des virgules, par exemple :
ECRIRE ("La valeur de la variable a est : ", a) ;

• Pour donner la possibilité à l'utilisateur de saisir une information, on utilise la commande LIRE
suivie entre parenthèses de la variable de type simple qui va recevoir la valeur saisie par
l'utilisateur, par exemple :
LIRE (b)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 44


LECTURE ET ÉCRITURE
Exemple :

Variable A, B : entier

Début_Algo

ECRIRE ("Saisir la valeur de A ");

LIRE (A);

B ← 2*A;

ECRIRE ("Le double de ", A, " est : ", B);

Fin_Algo
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 45
LECTURE ET ÉCRITURE
Pour chaque instruction séquentielle
(Déclaration des variables et constante, Affectation, Lecture et Ecriture…) nous pouvons proposer
sa représentation sous forme d’organigramme :
Exemple : B ← B+1 Exemple : LIRE (A)
Représentation en Organigramme Représentation en Organigramme

LIRE (A)
B ← B+1

Exemple : ECRIRE (B)


Représentation en Organigramme

ECRIRE (B)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 46


LECTURE ET ÉCRITURE
Soit l’exemple suivant :

Variable A, B : entier ECRIRE ("Entrer la valeur de A ");

Début

ECRIRE ("Entrer la valeur de A "); LIRE (A)


LIRE (A);

B ← 2*A; B ← 2*A
ECRIRE ("Le double de ", A, " est : ", B);

Fin
ECRIRE ("Le double de ", A, " est : ", B);

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 47


LECTURE ET ÉCRITURE
Lecture en Python (input)

▪ Elle est directement accessible (built in).

▪ Elle peut prendre en argument une chaîne de caractères qui est affichée afin de
donner des indications à l’utilisateur.

▪ Elle stoppe l’exécution du programme jusqu’a ce que l’utilisateur ait saisi une
valeur validée par l’appui sur la touche Entrée.

▪ Elle retourne une donnée de type str contenant la saisie, ce qui fait que la saisie
nécessite parfois un transtypage (conversion de type)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 48


LECTURE ET ÉCRITURE
Ecriture en Python (print)

▪ Elle est directement accessible (built in) ;

▪ Elle prend un nombre variable d’arguments, séparés par des virgules, qu’elle
affiche sous forme de texte lisible, en les séparant par des espaces et en
terminant par un retour à la ligne ;

▪ Les arguments de la fonction peuvent être des valeurs littérales, des variables,
ou toute expression permettant de calculer un résultat.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 49


LECTURE ET ÉCRITURE
Soit l’exemple suivant traduisons le sur Python :

Variable A, B : entier
Début ALGO
ECRIRE ("Entrer la valeur de A ");
LIRE (A);
B ← 2*A;
ECRIRE ("Le double de ", A, " est : ", B);
Fin

A = int(input("Entrer la valeur de A"))


B = 2*A
PYTHON
print("Le double de",A,"est",B)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 50


LECTURE ET ÉCRITURE
Ecriture en Python (print)

Les chaînes littérales formatées ou f-string :

▪ Simplification syntaxique introduite dans Python 3.6 pour le formatage de chaînes ;

▪ Chaînes de caractères dont la déclaration est préfixée par un f (f"..."), et qui peuvent

comporter des champs indiqués entre accolades { } ;

▪ Les champs contiennent des variables ou des expressions dont la valeur est évaluée

lors de la construction de la chaine à l’exécution du programme.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 51


LECTURE ET ÉCRITURE
A = int(input("Entrer la valeur de A"))
B = 2*A
print(f"Le double de {A} est {B}")

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 52


Qu’est ce qu’une structure conditionnelle ?

Expression booléenne

Structures
Conditionnelles Evaluation d’une expression booléenne

Implémentation d’une expression booléenne

Structures conditionnelle en Python

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 53


STRUCTURE CONDITIONNELLE
PREAMBULE
La décision est le fait d'un acteur (ou d'un ensemble plus ou moins cohérent d'acteurs) qui effectue un choix
entre plusieurs solutions susceptibles de résoudre le problème, ou la situation, auquel il est confronté.
D'une manière générale, la décision est l'action de l'esprit qui décide quelque chose ou se décide après
délibération individuelle ou collective :

• En psychologie, la décision est l'action volontaire et réfléchie de l'esprit qui se détermine à l'occasion d'un
choix d'une des issues au terme d'un processus de délibération ;
• En droit ou dans les domaines administratifs, la décision est une disposition arrêtée par une autorité
compétente collégiale ou unique, après délibération, ou une instruction de service émanant d'une autorité
hiérarchique (par exemple : couvre feu) ;
• En économie, les micro ou macro décisions correspondent aux décisions prises par des agents
économiques simples ou complexes ;
• En stratégie, la décision est d'abord un courage opposé constamment aux détracteurs, appliqué à une
situation d'incertitude, se révélant perspicace dans la capacité à anticiper et réactualisé constamment pour
s'adapter aux aléas de l’adversité.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 54


STRUCTURE CONDITIONNELLE
POURQUOI LES STRUCTURES CONDITIONNELLES ?
• Dans la vie, on a souvent besoin de décider du déroulement des choses en fonction de

certaines conditions. Par exemple : "s’il pleut, je prends mon parapluie"

• De même, dans les langage de programmation, il est possible de décider de n'exécuter une

action, que lorsqu’une condition particulière est remplie.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 55


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Une structure conditionnelle c’est un bloc d’instructions, qui peut effectuer différentes actions en
fonction de l'évaluation d'une condition.

Nous avons :
- Les structures conditionnelles simple et / ou composées (Si)
- Les structures conditionnelles alternatives (Si…Sinon)
- Les structures conditionnelles imbriquées (Si…Sinon…Si…Sinon)
- Les structures à choix multiple (Selon...Que)

Formulation générale d’une structure conditionnelle :


Si (expression booléenne) Alors
Début
Instructions à exécuter
Fin

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 56


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Expression booléenne :
C’est une expression qui après évaluation admet soit un résultat vrai ou faux.
Expression : Combinaison d'opérateur(s) et d'opérande(s), qui est évaluée durant l'exécution
de l'algorithme, et possède une valeur (son interprétation) et un type
En structure conditionnelle, les opérateurs de comparaison / relationnel sont utilisés :

== != < > >= <=


Egalité Différence Strictement Strictement Supérieur Inférieur
Inférieure Supérieur ou Egal ou Egal

Lorsque l’expression booléenne est vraie, le bloc d’instruction est exécuté intégralement
Au cas échéant l’algorithme saute les instructions, puis exécute ce qui suit.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 57


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Nature et évaluation de l’expression booléenne
- L’expression booléenne peut être simple ou composée
Elle est simple lorsque nous avons deux opérandes séparés par un opérateur de comparaison
Exemple :
A == 2 ; B>=5 ; D != 7 ; X<B
Elle est composée lorsque nous avons plusieurs expressions booléennes séparées par des
opérateurs logiques (ET, OU, NON)
Exemple :
(A == 1 OU B >= 2)
(B == 3 ET C != 4)
Attention :
L’évaluation d’une expression booléenne composée se fait par le biais d’une table de vérité

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 58


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Nature et évaluation de l’expression booléenne
La table de vérité, c’est une table mathématique pour représenter de manière sémantique des
expressions logiques et calculer la valeur de leur fonction relativement à chacun de leurs
arguments fonctionnels. Chaque opérateur logique admet une table de vérité :
Avec une expression composée séparée par un opérateur logique ET
- Si au moins l’une des expressions est FAUSSE la résultante est FAUSSE
(Pas d’exécution du bloc d’instruction)
Avec une expression composée séparée par un opérateur logique OU
- Si au moins l’une des expressions est VRAIE la résultante est VRAIE
(Possibilité d’exécution du bloc d’instruction)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 59


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
TABLES DE VERITE

E1 E2 E1 ET E2 E1 E2 E1 OU E2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX

E1 NON E1
VRAI FAUX
FAUX VRAI

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 60


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Exercice d’application

Exercice 1 : Evaluez chaque expression Exercice 2 : Evaluez chaque expression


Soit A = 8 Soit A = 2 ; B = 5 ; C = 3
▪ (A != 8) " Vrai ou faux ? " • (A != 0 ET B == A) " Vrai ou faux ? "
▪ (A <= 2) " Vrai ou faux ? " • (B >=2 OU C >= A) " Vrai ou faux ? "
▪ (A > 8) " Vrai ou faux ? " • (C==0 ET B > 8) " Vrai ou faux ? "
▪ (A == 9) " Vrai ou faux ? " • ((C==0 ET B <= 4) OU (A>0)) " Vrai ou faux ? "
▪ (A >= B) avec B = 9 " Vrai ou faux ? " • (A <= B OU B > 9) " Vrai ou faux ? "
▪ (B <= A) avec B = 10 " Vrai ou faux ? " • ((A >= 0 ET B != 0) " Vrai ou faux ? "
▪ (B == A) avec B = 8 " Vrai ou faux ? "

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 61


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITION ?
- Les structures conditionnelles simple et / ou composées
VRAIE
SI (expression booléenne) ALORS CONDITION
Début
Instructions…
Fin Instructions
Expression booléenne :
FAUSSE
Elle peut être simple ou composée et n’admet que deux éventualités
(Vraie ou Fausse)
- Si elle est VRAIE : les Instructions… sont exécutées
- Si elle est FAUSSE: les Instructions… ne sont pas exécutées

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 62


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Exemple :
Ecrire un algorithme qui permet de vérifier si un nombre est positif.
VARIABLE A : ENTIER
DÉBUT
ECRIRE ("ENTRER LA VALEUR DE A ")
LIRE (A)
SI (A>0) ALORS
DÉBUT_SI
ECRIRE ("LE NOMBRE " & A & " EST POSITIF")
FIN_SI
FIN

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 63


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
- Les structures conditionnelles alternatives (SI…SINON)
VRAIE FAUX
SI (expression booléenne) ALORS Condition
Début
Instructions1
SINON
Début Instructions 1 Instructions 2

Instructions2
Fin
Fin
• Même principe d’exécution que le modèle précédent
• A la seule différence l’exécution du SINON inverse le contenu de
l’expression booléenne.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 64


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
- Les structures conditionnelles alternatives (Si…SINON)
Avec le SINON l’inversion de l’expression booléenne sera basée sur les opérateurs de comparaison.

SI == != < > >= <= ET OU


SINON != == >= <= < > OU ET

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 65


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Exemple :
Ecrire un algorithme qui permet de vérifier si un nombre est positif ou nul.
VARIABLE A : ENTIER
DÉBUT_ALGO
ECRIRE ("ENTRER LA VALEUR DE A ")
LIRE(A)
SI (A>0) ALORS
DÉBUT_SI
ECRIRE ("LE NOMBRE "& A &" EST POSITIF")
SINON // AVEC LE SINON, (A>0) EST INVERSÉE POUR DEVENIR (A<=0)
DÉBUT_SINON
ECRIRE ("LE NOMBRE "& A &" EST NEGATIF")
FIN_SINON
FIN_SI
FIN_ALGO

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 66


STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
VRAIE FAUX
- Les structures conditionnelles imbriquées Condition
SI (expression booléenne) ALORS
Début
Instructions1
VRAIE
Fin Instructions 1 Condition

SINON
SI (expression booléenne) ALORS
FAUX
Début
Instructions 2
Instructions2
Fin
Fin
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 67
STRUCTURE CONDITIONNELLE
QU’EST-CE QU’UNE STRUCTURE CONDITIONNELLE ?
Exemple :
Ecrire un algorithme qui permet de vérifier l’état de l’eau selon une température.
VARIABLE TEMP : ENTIER
DÉBUT_ALGO
ECRIRE("ENTRER LA VALEUR DE TEMPÉRATURE ")
LIRE(TEMP)
SI (TEMP<0 OU TEMP==0) ALORS
DÉBUT_SI
ECRIRE("GLACE")
SINON
DEBUT_SINON
SI (TEMP<100) ALORS
DÉBUT_SI
ECRIRE("LIQUIDE")
FIN_SI
SI (TEMP>=100) ALORS
DÉBUT_SI
ECRIRE("VAPEUR")
FIN_SI
FIN_SINON
FIN_SI
FIN_ALGO
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 68
STRUCTURE CONDITIONNELLE
STRUCTURE SELON QUE
SYNTAXE
SELONQUE permet d'effectuer tel ou tel traitement en fonction de la valeur des conditions 1 ou 2 ou...n
SELONQUE
<condition 1> : <action 1>
<condition 2> : <action 2>
...
<condition n> : <action n>
SINON : <action_sinon>
FINSELONQUE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 69


STRUCTURE CONDITIONNELLE
STRUCTURE SELON QUE
FONCTIONNEMENT

1 : la condition 1 est évaluée :

• Si la condition 1 est vraie, alors on exécute l'action correspondante et on quitte la structure selon-que

• Si la condition 1 est fausse, on évalue la condition 2...et ainsi de suite.

2 : Si aucune n'est vraie on effectue l'action sinon

( au cas où l'action sinon n'existe pas alors aucune action n'est exécutée !)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 70


STRUCTURE CONDITIONNELLE
STRUCTURE SELON QUE
Exemple :
Ecrire un algorithme qui permet de retourner la mention d’une note
Variable Note : numérique
Debut_algo
Lire (Note)
Selon Que
Debut_selon_que
Note > 10 : Ecrire « passable »
Note > 12 : Ecrire « assez bien »
Note > 14 : Ecrire « bien »
Note > 16 : Ecrire « très bien »
Sinon : Ecrire « ajourné »
Fin_selon_que
Fin_algo

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 71


STRUCTURE CONDITIONNELLE
EN PYTHON...
Bloc if :
Lorsque la condition logique est vérifiée, le bloc d’instructions (instruction1 et instruction2) est exécuté.
Si la condition n’est pas vérifiée le bloc n’est pas exécuté et on passe aux instructions après le if.

N = int(input("Entrer la valeur de N "))


if N>0:
print(f"Le nombre {N} est positif")

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 72


STRUCTURE CONDITIONNELLE
EN PYTHON...
Bloc if...else :
Spécifie un second bloc d’instructions qui est exécuté lorsque la condition du if n’est pas vérifiée
N = int(input("Entrer la valeur de N "))
if N>0:
print(f"Le nombre {N} est positif")
else:
print(f"Le nombre {N} est négatif ou nul")

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 73


STRUCTURE CONDITIONNELLE
EN PYTHON...
Bloc if...elif...else :
Spécifie des conditions ou des choix multiples avec une batterie de tests.

N = int(input("Entrer la valeur de N "))


if N>0:
print(f"Le nombre {N} est positif")
elif N<0:
print(f"Le nombre {N} est négatif")
else:
print(f"Le nombre {N} est nul")

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 74


Qu’est ce qu’une structure itérative ?

Structures Boucle à événement ou indéfinie

Itératives
Boucle à compteur ou définie

Structure itérative en Python

15/11/2024 Python, POO2, LGI3 - M. DIOUF (UIDT) 75


STRUCTURE ITERATIVE
PREAMBULE
Dans la vie, on a souvent besoin de répéter une action en cas de non atteint d’un objectif.

Par exemple :

• A tout instant que j’ai faim, je continue à manger.

• Ma voiture continuera à rouler tant que j’ai de l’essence.

De même que les langages de programmation, il est possible d'exécuter autant de fois une action

selon un ensemble de critère. C’est là qu’intervient les structures itératives.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 76


STRUCTURE ITERATIVE
QU’EST CE QU’UNE STRUCTURE ITÉRATIVE ?
Une structure itérative c’est un bloc d’instructions dont leur but est de répéter un traitement selon des critères
bien définis. Généralement il existe deux types de boucles :

• Les boucles à événement ou indéfinie


- On ne sait pas à l’avance le nombre de fois que la boucle sera exécutée.
Ça peut dépendre du nombre de données à traiter.
Ça peut dépendre du nombre d’essais que l’usager a effectué.
Ce sont les boucles : Tant Que et Jusqu’à

• Les boucles à compteur ou définie


- On sait à l’avance combien de fois la boucle devra tourner
Choisir 10 nombres au hasard.
On fera dix fois l’opération choisir un nombre au hasard.
C’est la boucle : Pour

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 77


STRUCTURE ITERATIVE
BOUCLE TANT QUE
VRAIE
TANT QUE (expression_booléenne) Condition Instructions

Début {tant_que}
Instructions
Fin {tant_que} FAUSSE

Principe :
• 1 - Le programme va tester avant chaque tour de boucle si la condition est vraie
• 2 - Dans l’affirmative il exécute les instructions jusqu’au fin tant que,
• 3 - Puis il revient au test de la condition.
• 4 - Lorsque la condition devient fausse, la boucle tant que se termine et le programme continue normalement
son exécution après l’instruction qui suit le fin{tant que}

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 78


STRUCTURE ITERATIVE
BOUCLE TANT QUE
Exemple :
Ecrire un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 10.
Variable som, i : entier;
Debut_Algo
i ← 0 ;
som ← 0 ;
TantQue (som <10)
Debut_TantQue
i ← i+1;
som ← som+i;
Fin_TantQue
Ecrire ("La valeur cherchée est N = " & i);
Fin_Algo

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 79


STRUCTURE ITERATIVE
BOUCLE TANT QUE
Attention, pour le bon fonctionnement d’une boucle :

1. Il faut vérifier qu’à un moment on peut entrer dans la boucle pour y exécuter les instructions,

Ceci afin d’éviter les boucles inutiles.

2. Il faut vérifier également qu’à un moment on sort de cette boucle,

Il faut éviter les boucles infinies.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 80


STRUCTURE ITERATIVE
BOUCLE FAIRE...TANT QUE
FAIRE
Instructions
TANT QUE (expression_booléenne)

On exécute une première fois les instructions puis on Instructions


effectue le test de la condition pour éventuellement
reprendre l’exécution des instructions.

VRAI
Condition

FAUSSE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 81


STRUCTURE ITERATIVE
BOUCLE FAIRE...TANT QUE
Exemple : Ecrire un programme qui oblige la saisie de valeur strictement positive
Variables val: Entier
Début_Algo
Faire
Ecrire(" Entrez une valeur numérique positive")
Lire(val)
Tant que (val<0)
Ecrire(" la valeur saisie est " & val)
Fin_Algo

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 82


STRUCTURE ITERATIVE
BOUCLE POUR
POUR cpt ALLANT DE valeur_initiale A valeur_finale
DÉBUT
INSTRUCTIONS i ← 1
FIN

i ← i + 1

i n’a pas
VRAIE
atteint finale
Instructions

FAUSSE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 83


STRUCTURE ITERATIVE
BOUCLE POUR
Principe :

• 1 - Pour une variable de boucle dont le contenu varie de val_Initiale à val_Fin par pas de val_pas

Exécuter les instructions.

• 2 - L’instruction de contrôle Pour permet d’exécuter les instructions un nombre déterminé de fois.

Ce nombre est connu avant de commencer à exécuter la boucle Pour.

• 3 - La boucle ne s’arrête que lorsque le nombre de répétition des instructions demandé a été réalisé.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 84


STRUCTURE ITERATIVE
BOUCLE POUR
Il faut éviter de modifier la valeur du compteur (et de finale) à l'intérieur de la boucle.
En effet, une telle action :
▪ perturbe le nombre d'itérations prévu par la boucle Pour
▪ rend difficile la lecture de l'algorithme
▪ présente le risque d'aboutir à une boucle infinie
Exemple :
Pour i allant de 1 à 5
Debut_Pour
i←i-1
Ecrire("i = "&i)
Fin_Pour

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 85


STRUCTURE ITERATIVE
BOUCLE POUR
Remarque :

▪ La boucle POUR est un cas particulier de TANT QUE

(cas où le nombre d'itérations est connu et fixé)

▪ Tout ce qu'on peut écrire avec POUR peut être remplacé avec TANT QUE

(mais pas la réciproque)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 86


STRUCTURE ITERATIVE
EN PYTHON
Bloc while :
Ecrire une boucle qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 10.

Variable som, i : entier;


Debut_Algo
i ← 0 ALGO
som ← 0
TantQue(som <10)
Debut_TantQue
i ← i+1;
som ← som+i;
Fin_TantQue
Ecrire ("La valeur cherchée est N = " & i);
Fin_Algo

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 87


STRUCTURE ITERATIVE
EN PYTHON
Bloc for :
Ecrire une boucle qui affiche la table de multiplication d’un entier N

Variable N, m, i: entier;
Debut_Algo
LIRE(N) ALGO
i ← 0
Pour i ← 1 à 12
Debut_Pour
m = N*i
Ecrire(N,"x",i,"=",m)
Fin_Pour
Fin_Algo

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 88


STRUCTURE ITERATIVE
EN PYTHON
Bloc for :
Ecrire une boucle qui affiche la liste des nombres impairs d’un intervalle fourni

for i in range(1,11,2):
print(f"{i}")

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 89


PRINCIPE DE LA MODULARITE
La modularité consiste à décomposer tout problème complexe en plusieurs sous problèmes plus
simples qui seront résolus séparément et éventuellement décomposés de manière encore plus fine.

La modularité reprend l'idée de fabriquer un produit (le programme) à partir de composants reliés.
Ainsi elle décompose un programme complexe en modules (groupes de fonctions) de méthodes et de
traitements, pour pouvoir les développer et les améliorer indépendamment, puis les réutiliser.
Exemple :
Par analogie la conception d’une chaise passe par :
1. Créer la charpente (les pieds et le support) ;
2. Créer le siège et le dossier ;
3. Assembler le tout par des vis et des charnières.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 90


PRINCIPE DE LA MODULARITE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 91


PRINCIPE DE LA MODULARITE
Qu’est ce qu’un sous programme ?
Un sous-programme est un sous-ensemble du programme dans sa hiérarchie fonctionnelle.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 92


POURQUOI FAIRE DE LA MODULARITE AVEC LES SP ?
Parce que les sous programmes sont essentiellement utilisés pour :
• Rendre le programme plus lisible ;
• Éviter de dupliquer le même code à plusieurs endroits du programme ;
• Faciliter la maintenance et le débogage du programme ;
• Être éventuellement réutilisés dans un autre programme ;
Il existe généralement deux types de sous programmes : LES FONCTIONS ET LES PROCEDURES

Sous - Programme

Fonction

Procédure

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 93


FONCTION ET PROCEDURE
Bloc d’instructions autonomes

Fonction
(peut prendre en entrée des paramètres) Procédure
(peut prendre en entrée des paramètres)

Retourne un paramètre destiné


à un autre bloc d’instructions
Ne retourne rien

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 94


PORTEE
La portée est l’ensemble des sous programmes où la variable est connue.
– Variable avec une portée globale :
• Variable déclarée en dehors de tout sous programme et du programme principal
(celui qui résout le problème initial).
• Le programme principal et tous les sous-programmes peuvent utiliser cette variable.
– Variable avec une portée locale :
• Variable déclarée à l’intérieur d’un sous programme.
• Seul le sous-programme où elle est déclarée peut utiliser cette variable.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 95


PORTEE (GLOBALE ET LOCALE)
Analogie de la maison
ELECTRICITE
Chambre 1
fermée
▪ Les chambres 1 et 2 étant fermées, la
personne B ne sera pas en mesure de
Personne A voir les personnes A et C.
▪ L’électricité malgré le fait qu’elle a été
Personne B installée en dehors de la maison est
accessible dans les chambres.

• Les personnes A et C étant visible qu’a


Chambre 2 l’intérieur des leurs chambres peuvent être
fermée
vues comme ayant une portée locale
• L’électricité étant accessible partout peut
Personne C être vu comme ayant une portée globale

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 96


PORTEE (DUREE)
Une variable a la même durée de vie que l’entité dans laquelle elle a été déclarée.
• Variable globale :
– Même durée que le programme principal :
Elle est créée quand le programme est lancé et est "détruite" quand le programme s’arrête.
• Variable locale :
– Même durée que le sous programme :
Elle est créée quand le sous programme est appelé et est "détruite" quand il se termine.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 97


PARAMETRE
Le rôle d’un paramètre est de transmettre de l’information entre les programmes
Il existe deux types de paramètres:
– Les paramètres formels :
Ils ont un type et constituent des variables locales au sous programme du coup ils sont
déclarés dans l’entête de celui ci.
– Les paramètres effectifs :
Ce sont les variables avec lesquelles le sous programme est effectivement appelé.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 98


EXERCICE 1
Ecrire une fonction en Python qui fait la somme la somme de deux entiers.
Ecrire une procédure qui appelle la fonction somme pour afficher un résultat.

• def somme (x,y) : fonction


• def appel() : procédure
• x et y : paramètres formels
• s : variable locale
• c : paramètre effectif

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 99


EXERCICE 2
Ecrire une fonction en Python qui retourne la valeur d’un écart entre deux entrées

c = 0.1
Représente un paramètre par défaut

Passage par nom


Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 100
EXERCICE 3 (FONCTION RENVOYANT PLUSIEURS SORTIES)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 101


DECOMPOSITION FONCTIONNELLE
• En Informatique la décomposition fonctionnelle se définit comme une méthode d’analyse,

qui prend une tâche complexe et la dissèque pour visualiser les différentes étapes qui la

composent.

• Elle permettra ensuite d’analyser et de comprendre les relations entre tous les éléments

constitutifs afin d’avoir une vision globale et détaillée des actions à réaliser pour aboutir à

la réalisation de notre tâche principale.

• Ainsi la décomposition fonctionnelle prend un problème complexe et le simplifie.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 102


DECOMPOSITION FONCTIONNELLE
Principe :
▪ Si une instruction n'est pas assez explicite pour qu'un ordinateur l'interprète directement,
elle doit être décomposée en instructions primitives.
▪ Chaque décomposition sera encapsulée dans un bloc d’instructions autonome.
▪ L‘analyse descendante (subdiviser un grand programme en plusieurs sous-
programmes plus faciles à concevoir, de la même façon qu’on divise un problème
en sous-problèmes) est une des méthodes pour obtenir cette décomposition.
▪ La décomposition fonctionnelle permet de rapides construction de programmes, la
possibilité de leur réutilisation pour en construire d’autres en plus d’en assurer une rapide
et efficace maintenance.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 103


DECOMPOSITION FONCTIONNELLE SOUS-PROGRAMME presenter(plat)
DEBUT
placer(plat)
Analogie du restaurant placer(couverts_pour_plat)
FIN

SOUS-PROGRAMME mettre_la_table()
DEBUT PROGRAMME prendre un repas
placer(nappe) DEBUT
placer(assiettes) mettre_la_table()
placer(couverts) presenter(plat_du_jour) SOUS-PROGRAMME ranger_la_table()
placer(verres) manger(plat_du_jour) DEBUT
FIN presenter(dessert) ranger(couverts)
manger(dessert) nettoyer (nappe)
ranger_la_table() FIN
FIN

SOUS-PROGRAMME manger(plat)
DEBUT
mon_assiette = se_servir (plat)
manger_dans(mon_assiette, mes_couverts)
boire_dans(mon_verre)
FIN

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 104


DECOMPOSITION FONCTIONNELLE
La mise en œuvre d’un programme par décomposition fonctionnelle peut passer par quatre étapes :

1. Ecriture des commentaires de spécification internes à un bloc d’instruction

2. Tableau des flux entre les blocs

3. Diagramme des flux

4. Implémentation et test

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 105


DECOMPOSITION FONCTIONNELLE
Les commentaires de spécification servent à spécifier un bloc d’instructions

• Ce qu’il fait

• La façon dont il procède pour atteindre son but

• Les données nécessaires

• Les résultats qu’il fournit

Ces commentaires au nombre de huit sont internes aux blocs d’instructions.

Ils aideront au développement rapide des blocs, ainsi qu’à leur validation de façon plus efficace.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 106


DECOMPOSITION FONCTIONNELLE
Les commentaires de spécification servent à spécifier un bloc d’instruction :
▪ Objectifs : Ce commentaire sert à décrire le but visé par le bloc
▪ Méthode : La façon dont on procède pour atteindre le but décrit au commentaire précédent
▪ Besoins : Toutes les données dont le bloc aura besoin pour atteindre son but
▪ Connus : Les données que l’on connaît d’avance, pas besoin de le demander au bloc appelant ni à l’usager
▪ Entrées : Les données qui parviennent du bloc appelant
▪ Sorties : Les données que le bloc renvoie au bloc appelant
▪ Résultats : Toute conséquence du bloc qui n’est pas visible par les autres blocs, exemple: les affichages.
▪ Hypothèses : Les conditions nécessaires au bon fonctionnement du bloc.
Ces hypothèses concernent :
• Les données en entrée du bloc;
• Les données lues (saisies) dans le bloc

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 107


DECOMPOSITION FONCTIONNELLE
Le digramme de flux :
Un diagramme de flux de données schématise le flux d'informations de n'importe quel processus ou
système. Il utilise des symboles définis comme des rectangles, des cercles et des flèches, ainsi que
des étiquettes aux libellés courts, pour représenter les entrées de données, les sorties, les points de
stockage et les trajets entre chaque destination.

Le tableau de flux :
C’est la représentation du diagramme de flux sous forme d’un tableau.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 108


DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :

𝑥 𝑛
𝑄=
𝑛!
1. Ecriture les commentaires de spécification internes aux blocs d’instruction
2. Tableau des flux entre les blocs
3. Diagramme des flux
4. Implémentation et test des blocs d’instruction en Python

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 109


DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :

𝑥 𝑛
𝑄=
𝑛!
Listing des blocs d’instruction
Fonction 1 : Puissance
Fonction 2 : Factorielle
Fonction 3 : Quotient
Fonction 4 : Saisie
Procédure : Programme principal

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 110


DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!
Fonction 1 : Puissance
▪ Objectifs : Calcul de la puissance de x selon n
▪ Méthode : Usage d’une structure itérative
▪ Besoins : x,n,P,i
▪ Connus : -
▪ Entrées : x,n
▪ Sorties : P
▪ Résultats : -
▪ Hypothèses : x>0, n>0, P>=1
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 111
DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!
Fonction 2 : Factorielle
▪ Objectifs : Calcul de la factorielle de n
▪ Méthode :Usage d’une structure itérative
▪ Besoins : n,F,i
▪ Connus : -
▪ Entrées : n
▪ Sorties : F
▪ Résultats : -
▪ Hypothèses : n>0, P>=1
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 112
DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!
Fonction 3 : Quotient
▪ Objectifs : Calcul du quotient entre la puissance et la factorielle
▪ Méthode : Usage d’une expression arithmétique affectée à une sortie
▪ Besoins : q,P,F
▪ Connus : -
▪ Entrées : P,F
▪ Sorties : q
▪ Résultats : -
▪ Hypothèses : P>=1, F>=1
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 113
DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!
Fonction 4 : Saisie
▪ Objectifs : Donner la possibilité a l’usager de saisir des entrées
▪ Méthode : Usage d’une instruction de lecture avec contrôle de saisie
▪ Besoins : x,n
▪ Connus : -
▪ Entrées : -
▪ Sorties : x,n // En python on peut faire sortir deux variables en même temps
▪ Résultats : -
▪ Hypothèses : x>=1, n>=1
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 114
DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!
Procédure : Programme principal
▪ Objectifs : Faire appel aux fonctions et effectuer le calcul et l’affichage
▪ Méthode : Appel de fonction et usage des paramètres formels et effectifs
▪ Besoins : a,b,c,d,e
▪ Connus : -
▪ Entrées : -
▪ Sorties : -
▪ Résultats : La valeur du quotient
▪ Hypothèses : a>=1, b>=1, c>=1, d>=1, e>=1
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 115
DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥 somme
𝑄=
𝑛! x,n

principal
F x,n
n
P
factorielle
puissance

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 116


DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!
Programme Principal Fournit (Entrées) Recoit (Sortie)
Saisie Rien x,n
Puissance x,n P
Factorielle n F
Quotient P,F q

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 117


DECOMPOSITION FONCTIONNELLE
Exemple :
Ecrire un programme modulaire qui permet de calculer l’expression suivante :
𝑛
𝑥
𝑄=
𝑛!

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 118


EXERCICE D’APPLICATION
Ecrire un programme permettant de saisir le prix unitaire et
la quantité successive de dix articles, une fois la saisie
terminée, le programme calcule et affiche le prix à payer en
détaillant le port et la remise.
- La taxe sur le port est gratuite lorsque le prix des
produits est inférieur à 50 000 FCFA, au cas échéant le port
est obligatoire et sera de 2% du prix des produits.
- La remise est de 2,5% lorsque le prix des produits est
compris entre 70 000 et 250 000 ensuite de 10% au-delà.
- L’achat admet également une TVA de 18%.
Proposez une approche modulaire avec Python pour résoudre le problème

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 119


MODULE
Qu’est ce qu’un module ?
Un module est un fichier «.py » contenant un ensemble de variables, fonctions et
classes que l’on peut importer et utiliser dans le programme principal (ou dans
d’autres modules).
Les modules permettent la séparation et donc une meilleure organisation du code.
En effet, il et courant dans un projet de découper son code en différents fichiers qui
vont contenir des parties cohérentes du programme final pour faciliter la
compréhension générale du code, la maintenance et le travail d’équipe si on
travaille à plusieurs sur le projet.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 120


MODULE
En Python, on peut distinguer trois grandes catégories de module :
• Les modules standards ne font pas partie du langage en soi mais sont
intégrés automatiquement par Python. Exemple : random, math, os, re...
• Les modules développés par des développeurs externes qu’on va pouvoir
utiliser. Exemple : panda, networkx...
• Les modules qu’on va développer nous mêmes.
https://docs.python.org/3/library/

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 121


MODULE

Chargement de module avec import

Utilisation de la fonction
puissance depuis le module math

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 122


MODULE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 123


MODULE

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 124


MODULE (CREATION)
La mise en œuvre d’un module se fait comme suit :

- Tout d’abord on implémente l’ensemble des fonctions sur un fichier (nom_du_fichier.py)

- Puis on crée un autre fichier python sur lequel on importe notre module :

import nom_de_notre_module

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 125


MODULE (CREATION)
Exemple :

Ecrire un module nommé "perimetre" qui implémente les périmètres des figures suivantes :

• Rectangle = (long + larg) * 2

• Carré = cote * 4

• Cercle = 2 * pi * rayon

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 126


MODULE (CREATION)
On implémente l’ensemble des fonctions sur un fichier (perimetre.py)

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 127


MODULE (CREATION)

La fonction dir()

• Sans arguments donne la liste des noms dans

l’espace de nommage local.

• Avec un argument, elle essaye de donner une liste

d’attributs valides pour cet objet.

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 128


MODULE (CREATION)

La fonction help()
• Permet d’afficher le Nom, la Description et le
contenu des différentes fonctions du module

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 129


MODULE (CREATION)
Usage de notre module périmètre

Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 130


Vous allez créer un programme avec une bibliothèque de fonctions pour gérer les transactions et les dépenses d'une
société sur une période donnée. Votre objectif est de calculer les profits ou les pertes, tout en tenant compte de
plusieurs aspects : transactions, taxes et dépenses récurrentes.
1. Définir le nombre de jours pour lesquels les transactions doivent être traitées.
2. Pour chaque jour :
o Définir le nombre de transactions effectuées.
o Pour chaque transaction :
▪ Lire le montant de la transaction.
▪ Lire le type de transaction (vente, remboursement, achat de stock).
▪ Lire le mode de paiement (espèces ou carte).
3. Calculer les totaux suivants pour chaque jour :
Total des ventes, Total des remboursements, Total des achats de stock,
Total des paiements en espèces, Total des paiements par carte.
4. Appliquer une taxe de 10% sur les ventes et calculer le montant après taxe.
5. Calculer les dépenses récurrentes (loyer, salaires, utilités) pour chaque jour.
6. Calculer le profit ou la perte pour chaque jour :
Profit/perte = (Total des ventes - remboursements - achats de stock - dépenses récurrentes + paiements en
espèces) - taxes.
7. Afficher les résultats pour chaque jour et le total cumulé sur toute la période :
Total des ventes après taxe, Total des remboursements, Total des achats de stock
Total des dépenses récurrentes, Total des paiements en espèces et par carte
Profit ou perte pour chaque jour et pour toute la période.
▪ Détails supplémentaires :
Le montant des transactions doit être positif.
Les transactions en espèces augmentent le solde de la caisse.
Les transactions par carte n'affectent pas le solde de la caisse, mais doivent être comptabilisées dans le
total des ventes.
Assurez-vous de lire les entrées correctement et de valider les montants des transactions.
Les dépenses récurrentes doivent être fixées à :
Python, POO2, LGI3 - M. DIOUF (UIDT) 15/11/2024 131
loyer = 5000F/jour, salaires = 10000F/jour, utilités = 2000F/jour.

Vous aimerez peut-être aussi