initroduction poo 2018 [mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3...

38
04/10/2018 1 Introduction à la programmation orientée objet Mohsine Eleuldj Département Génie Informatique, EMI [email protected] Octobre 2018 Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 2 Introduction à la POO Objectif Apprendre les principes de base de l’algorithmique et de la programmation orientée objet Etre capable de comprendre et d’écrire un programme lisible et maintenable Savoir écrire un petit logiciel en Python Contenu Introduction Conception des algorithmiques Eléments de base du langage Python Programmation orientée objet Evaluation des connaissances : Comptes rendus (10%) + TP (20%) + Contrôle avec documents (70%)

Upload: others

Post on 22-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

1

Introductionà la programmation orientée objet

Mohsine Eleuldj

Département Génie Informatique, EMI

[email protected]

Octobre 2018

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 2

Introduction à la POO

Objectif • Apprendre les principes de base de l’algorithmique et de la programmation

orientée objet

• Etre capable de comprendre et d’écrire un programme lisible et maintenable

• Savoir écrire un petit logiciel en Python

Contenu• Introduction• Conception des algorithmiques• Eléments de base du langage Python• Programmation orientée objet

Evaluation des connaissances :• Comptes rendus (10%) + TP (20%) + Contrôle avec documents (70%)

Page 2: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

2

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 3

Chapitre I : Introduction

1 Terminologie

2 Structure d’un ordinateur

3 Langages de programmation

4 Systèmes d’exploitation

5 Exécution d’un programme

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 4

Terminologie

• Algorithme : suite de prescriptions précises qui indiquent l’exécution, dans un ordre bien déterminé, d’une succession d’opérations en vue de la résolution d’un problème.

• Programme : ensemble d’ordres ou d’instructions qui agit sur les données pour produire des résultats sur un ordinateur selon une syntaxe et une sémantique.

• Programmation orientée objet (POO) : une même structure contient les données et les opérations associées.

• Ordinateur : machine électronique capable d’exécuter un programme enregistré dans sa mémoire.

• Informatique : traitement automatique de l’information à l’aide d’un ordinateur (≠ calculatrice sans programmation).

Page 3: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

3

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 5

Méthodologie de développement de programmes

Problème Algorithme Solution

Programme

Données

ConceptionVérification

(trace)

Traduction(programmation)

Soumission(compilation)

Soumission

Exécution

Ordinateur

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 6

Structure d’un ordinateur

Mémoire Unitéde sortie

Unitéd’entrée

Processeur

programme

donnéesrésultat

Ordinateur

Automacité : faculté d’exécuter des millions d’instructions sans intervention humaine

Page 4: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

4

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 7

Types d’instructions

• Instruction arithmétique ou logique: addition, multiplication, et, ou…

• Instruction de transfert : mouvement de l’information d’un emplacement à un autre (entre le processeur et la mémoire par exemple)

• Instruction de branchement : rupture de l’exécution séquentielle des instructions

Instruction d’entrée/sortie : lecture ou écriture (caractère, nombre,…)

• Commande de gestion des périphériques (écran, clavier, souris, imprimante, disque,…)

Enchaînementdes instructions

Branchement

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 8

Mémoire principale (RAM)

Mémoire : ensemble de cellules ayant chacune une adresse et contenant des données (bits)Rôle : emmagasiner les informations + pouvoir les accéder (lecture et écriture)Caractéristiques des RAM : volatile + capacité limitée (quelques Giga octets) + coût élevéTechnologie : électronique + biologique (dans le stade de la recherche)

001011…115408

Adresse

Cellule

Mémoire

n bits

m cellules

.

.

.

.

.

.

Page 5: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

5

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 9

Mémoire secondaire

Technologie : magnétique (disque dur) + optique + dernièrement électronique (SSD : Solid State Drive)

Temps d’accès : en général, dépend de la localisation de l’information dans le support

Caractéristiques : permanente + capacité (quelques Téra octets) + coût bas (/ à la RAM)

Ordinateur

Mémoiresecondaire

programme

donnéesdonnées

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 10

Configuration de mon système

Processeur : Intel i7-2760QM Fréquence : 2,40 GHzMémoire cache 6 Mo Mémoire RAM : 8 GoDisque dur : 698 Go 4 Cœurs et 8 ThreadsLecteur DVD/CD-ROM Ports COM et LPTCarte réseau carte graphiqueclaviers PS/2 contrôleur de bus USBBluetooth Souriscontrôleur audio vidéo, Moniteurlecteur carte à puce Système d’exploitation 64 bits… Indice de performance :5,2

Exercice : Déterminer la configuration de votre système(Panneau de configuration/Système)

Page 6: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

6

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 11

Intel Core i7-3770K160 mm2, 22 nm, 1,4 G transistors et 3,4 GHz

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 12

Langages de programmation

Définition : Outil à l’aide duquel le programmeur écrit des programmes exécutables sur un ordinateur

Exemples : FORTRAN, COBOL, Lisp, Pascal, Prolog, Ada, C, Java, R, Python,…

…………101101101111110111100101100011011…………

langage binaire(langage machine)

………..ADD R1,R2MULT R4,13……………

Langage symbolique (langage d’assemblage)

………..A = x+3Print(x,y)………..

Langage évolué(haut niveau)

Page 7: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

7

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 13

Choix du langage de programmation

Compilateurou

interpréteur

Langage machine

langage d’assemblage

Assembleur

Langage évolué

Programmeur

Ordinateur

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 14

Système d’exploitation

Définition : ensemble de programmes qui permettent de gérer (ou exploiter) la machine (en anglais : Operating System)

Composantes : compilateurs, assembleur, fonctions d’entrée/sortie, mémoire virtuelle, multiprogrammation, …

Rôle : • faciliter au programmeur l’utilisation de la machine et ses périphériques• assurer un bon fonctionnement et une utilisation optimale

Exemples : Unix, Linux, Windows, SunOS, MacOS, Android (téléphone, TV, Auto,…), iOS (Téléphone),…

Page 8: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

8

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 15

Exécution d’un programme

Fichier exécutable

Résultat

Bibliothèquedes fonctions

Programme(fichier source)

Editiondes liens

Compilation

Fichier objet

Données

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 16

Chapitre II : Conception des algorithmes

1 Notion d’algorithme

2 Structures de contrôle

Enchainement

Sélection binaire

Sélection multiple

3 Structures répétitives

Boucle tant que

Boucle répéter … jusqu’à

Boucle pour

4 Structure de données tableau

5 Etapes de résolution d’un problème

Page 9: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

9

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 17

Notion d’algorithme

D’après les historiens des mathématiques , l’origine provient du livre "Algèbre et équations " écrit par Alkhawarizmi en 825

ʺالجبر و المقابلة̋ كتابه موسى الخوارزمي في إبن جعفرمحمدDéfinition : Un algorithme est une suite de prescriptions précises qui indiquent

d’exécuter, dans un ordre déterminé, une succession d’opérations en vue de la résolution d’un problème.

ExemplesRésolution d’une équation du second degréGuide d’utilisation d’un appareil ménagerRecette de cuisine sans interprétation ni ambiguïté

Représentation en Pseudo-code (ou langage algorithmique) indépendante de l’agent (humain ou machine) qui sera appelé à exécuter l’algorithme (intermédiaire entre un langage naturel et un langage de programmation)

Organigramme : diagramme, qui est une autre représentation d’un algorithme, composé de rectangles, losanges, flèches, …

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 18

Enchaînement

Problème 1 : Calculer l’intérêt d’un montant sachant que le taux d’intérêt est de 3,5%

1 début

2 lire(montant)

3 intérêt montant * 3,5%

4 écrire(intérêt)

5 fin

Pseudo_code

lire(montant)

intérêt montant * 3,5%

écrire(intérêt)

début

fin

Organigramme

Exercice : Faire la trace pour montant = 1000

Page 10: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

10

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 19

Trace de l’algorithme 1

Opération montant intérêt Ecrire

1 - - -

2 1000 - -

3 1000 35 -

4 1000 35 35

5 1000 35 -

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 20

Sélection binaire

Problème 2 : Calculer l’intérêt d’un montant sachant que le taux d’intérêt est de 3,5% si le montant < 10 000 DH et de 4% sinon.

oui non

lire(montant)

écrire(intérêt)

début

fin

montant < 10000

intérêt montant*3,5% intérêt montant*4%

1 début

2 lire(montant)

3 si montant < 10 000 alors

4 intérêt montant * 3,5%

5 sinon

6 intérêt montant * 4%

7 écrire(I)

8 fin

Exercice : Faire la trace pour M=11000

Page 11: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

11

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 21

Sélections binaires imbriquées

Problème 3 : Calculer l’intérêt d’un montant sachant que le taux d’intérêt annuel dépend de la période de dépôt P. Il est de 3,5% si P = 1 an, de 4% si P = 2 ans, de 4,5% si P = 3 ans et de 5% si P ≥ 4 ans.

lire (M, P)si P = 1 alors

I M * 3,5%sinon si P = 2 alors

I M * 4%sinon si P = 3 alors

I M * 4,5%sinon

I M * 5%écrire (I)

lire (M, P)si P = 1 alors

I M * 3,5%sinon

si P = 2 alorsI M * 4%

sinonsi P = 3 alors

I M * 4,5%sinon

I M * 5%écrire(I)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 22

Sélection multiple

Problème 4 : Calculer l’intérêt d’un montant sachant que le taux annuel est de 3,5% si la période P=1 an, de 4% si P=2 ans, de 4,5% si P=3 ans et de 5% si P=4 ans.

lire (M, P)choisir P de

1 : I M * 3,5%2 : I M * 4%3 : I M * 4,5%4 : I M * 5%

écrire(I)

Exercice : a) Dessiner l’organigramme de l’algorithme du problème 3.b) Quelle est la différence entre les algorithmes du problème 3 et 4 ?c) Qu’arrive-t-il si P est négatif ou supérieur à 4 ?

Page 12: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

12

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 23

Boucle tant que

Forme généraletant que <condition> faire

<traitement>

Problème 5 : Calculer la moyenne arithmétique d’une liste de notes (nombres positifs) tel que le dernier nombre est -1.

1 moyenne 02 nombreNotes 03 lire(note)4 tant que note ≠ -1 faire5 somme somme + note6 nombreNotes nombreNotes + 17 lire(note)8 écrire(somme/nombreNotes)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 24

Exercice 1

a) Dessiner l’organigramme de l’algorithme.b) Faire la trace pour : 12,5 13,5 -1c) Quel est l’ordre de l’algorithme ?

oui non

nombreNotes 0

nombreNotes nombreNotes+1

début

fin

note ≠ -1

somme somme+note

somme 0

lire(note)

lire(note)

Ecrire(somme/nombreNote)

Page 13: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

13

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 25

Trace de l’algorithme 5

Opération somme nombreNotes note note ≠ -1 écrire

1 0 - - - -

2 0 0 - - -

3 0 0 12,5 - -

4 0 0 12,5 oui -

5 12,5 0 12,5 - -

6 12,5 1 12,5 - -

7 12,5 1 13,5 - -

4 12,5 1 13,5 oui -

5 26 1 13,5 - -

6 26 2 13,5 - -

7 26 2 -1 - -

3 26 2 -1 non -

8 26 2 -1 - 13

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 26

Boucle répéter … jusqu’à

Forme généralerépéter

<traitement> jusqu’à <condition>

Problème 6 : Reprenons le problème 5 en utilisant la boucle répéter…jusqu’à.

somme 0nombreNotes 0lire(note)répéter

somme somme + notenombreNotes nolmbreNotes + 1lire(note)

jusqu’à note = -1écrire(somme/nombreNotes)

Page 14: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

14

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 27

Exercice 2

a) Dessiner l’organigramme de l’algorithme.b) Faire la trace pour la liste : 14 12 15 13 -1c) Faire la trace pour la liste : -1

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 28

Boucle pour

Forme généralepour v=valeur1 à valeur2 avec un pas faire

<traitement>

Problème 7 : Calculer la moyenne arithmétique d’une liste de notes (nombres positifs) tel que le nombre de notes est donné (nombre d’itérations est connu à l’avance).

Somme 0Lire(nombreNotes)pour i = 1 à nombreNotes faire

lire(note)somme somme + note

écrire(somme/nombreNotes)

Page 15: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

15

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 29

Exercices (1/2)

Problème 8 :a) Faire la trace de ce algorithme pour : 14 12 15 13b) Comparer les trois types de boucles (structures répétitives) pour la

résolution du problème du calcul de la moyenne.

Problème 9 : Considérons le calcul du quotient Q et du reste R de la division de deux nombres positifs A et B en utilisant l’addition et la soustraction uniquement (la division entière ne doit pas être utilisée).

a) Décrire l’algorithme.b) Faire la trace pour A = 9 et B = 4c) Que se passe-t-il si : A = 0 et B ≠ 0; A > 0 et B = 0; A = 0 et B = 0; A < B

Problème 10 : Trouver toutes les valeurs de N (1 ≤ N ≤ 100) tel que :1 + 2 + … + N = 3(N -1)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 30

Exercice (2/2)

Problème 11 : Déterminer le plus grand élément dans une liste de nombres positifs

Problème 12 : Déterminer la liste des diviseurs d’un nombre entier naturel. Ecrire un algorithme qui détermine si un nombre est premier (ses seuls diviseurs est 1 et lui-même).

Problème 13 : Soit l’algorithme suivant:lire A, εX Arépéter

X (X + A/X)/2jusqu’à |X2 – A| < εécrire X

a) Faire la trace pour A = 9 et ε = 0,1.b) Que calcule cet algorithme ?

Page 16: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

16

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 31

Structure de donnée tableau

Définition : un tableau est une structure de données qui peut contenir plusieurs données de même type. Un élément du tableau est accédé en utilisant la variable du tableau suivie du numéro de l’élément appelé indice

Exemple : Soit T un tableau de 10 entiersT(5) 26 permet d’affecter la valeur 26 au 5ème élément.

Problème 14 : Considérons que le tableau Notes contient N notes. Calculer la moyenne arithmétique de ces notes.

a) Ecrire l’algorithme en pseudo-code.b) Faire la trace de ce algorithme pour Notes=(14 ,12,15,13).

Problème 15: Considérons les diviseurs d’un nombre entier naturel (Problème 12) sont sauvegardés dans un tableau.

a) Ecrire l’algorithme en pseudo-code.b) Faire la trace de cet algorithme pour 18.

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 32

Etapes de résolution d’un problème

1 Définition précise du problèmegénéralement les problèmes sont mal définis et représentent des ambiguïtés. Il faudrait prévoir les cas susceptibles de se produire et préciser le traitement correspondant (données, traitement, résultats et erreurs)

2 Méthode de développementprocédurale (déclarative)orientée objet

3 Conception des algorithmes4 Validation des algorithmes

les algorithmes doivent répondre aux spécifications (trace)5 Codification

expression (traduction) des algorithmes en langage de programmation dépendamment des langages disponibles et de la nature du problème.

6 Mise au pointcorrection des erreurs de syntaxe et de sémantique (à l’aide des jeux d’essai).

Page 17: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

17

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 33

Chapitre IIINotions de base du langage Python

1 Caractéristiques du langage

2 Interpréteur

3 Syntaxe de base du langage

4 Sélection (binaire et multiple)

5 Répétition (tant que et pour)

6 Structure de données (liste et chaîne de caractère)

7 Fonctions de lecture et écriture

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 34

Caractéristiques du langage Python

Simplicité de la syntaxe facilité d’apprentissage

indentation au lieu des délimiteurs

Utilisation des variables et paramètres sans déclaration

Puissance de la programmation (inclusion de bibliothèques de fonctions)

Efficacité des structures de données de haut niveau (liste, dictionnaire,…)

Typage dynamique (langage non typé)

Paradigmes de programmation

Procédural

fonctionnel

Orientée objet

Interprétation des instructions interpréteur (≠ compilation)

Rapidité du développement d’applications dans certains domaines

Open Source

Page 18: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

18

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 35

Interpréteur Python

Mode interactifSemblable au fonctionnement d’une calculatrice

Lancement de l’interpréteur

Exécution d’une instruction à la fois

Mode non interactifEdition du programme (module ou script)dans un fichier avec l’extension .py

(pour python)

Exécution du programme lance l’interpréteur en mode interactif

D’autres instructions peuvent être exécutées directement en mode interactif

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 36

Syntaxe de base du langage Python

Identificateur

commence par une lettre,_(sousligné) ou $ et différencie les majuscules et minuscules

convention d’écriture : classe (MonEcole), fonction (calculProduit), variable (taille, ordreMatrice) et constante (MAX_AGE)

Commentaire: #, ou ….sur plusieurs lignes….Opérateurs

arithmétique : +, -, *, /, %,

logique : !, and, or,…

comparaison : <, >, <=, >=, ==, !=

affectation : =, +=, -=, *=, /=, …

Types de données standards: int (entier), float (réel), str (chaîne de caractère délimitée par ’ ou ), bool (True, False)

Page 19: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

19

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 37

Sélection binaire

if <condition> :

<bloc 1> les blocs sont délimités (identifiés) par l’indentation

else :

< bloc 2>

Exemple :

if nombre%2 == 0 : # si le reste de la division par 2 est nul

print(nombre, est pair )else :

print(nombre, est impair )

Exercice: Ecrire un programme pour calculer l’intérêt I d’un montant M sachant que le taux d’intérêt est de 3,5% si M < 10 000 DH et de 4% sinon.

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 38

Sélection multiple

if <condition 1> :

< bloc 1>

elif <condition 2> :

<bloc 2>

elif <condition n> :

<bloc n>

else :

<bloc n+1>

Exercice : Calculer l’intérêt I d’un montant M sachant que le taux annuel est de 3,5% si P=1 an, de 4% si P=2 ans, de 4,5% si P=3 ans et de 5% si P=4 ans.

Page 20: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

20

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 39

Boucle tant que

while <condition> :

<bloc>

Exemple : Boucle infinie

while True:

print(‘encore un message’)

Exercice : Considérons une liste de nombres (valeurs positives) tel que le dernier nombre est 0.

a) En utilisant une boucle tant que, écrire un algorithme pour calculer la moyenne arithmétique de cette liste.

b) Exécuter cet programme pour les listes : [14.5, 12, 15, 13, 0], [0], [12, 14], [14, -13, 0].

c) Traduire cet algorithme en un programme Python

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 40

Boucle pour

for <variable> in <sequence> :

<bloc>

Remarques : si <sequence> est une liste, la variable d’itération <variable> prend la première valeur de la liste dans la première itération, puis la deuxième ainsi de suite jusqu’à la dernière valeur.

Exemple :for i in range(0,15,2):

print (i)

Exercice : Calculer la moyenne arithmétique d’un tableau de nombres positifs dont le dernier élément est 0.

a) Ecrire le programme en utilisant la boucle pour.b) Exécuter le programme pour le tableau : 14 12 15 13 0

Page 21: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

21

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 41

Listes

Liste est une ensemble d’items entre crochets

carres = [1, 4, 9, 15, 25] # affectation de la liste carres

carres[0] # premier item de la liste

carres[-1] # dernier item de la liste

carres[-3 :] # [9, 15, 25]

carres[ :] # toute la liste

carres[3]=[16] # modification du quatrième item (mutable)

carrés + [36, 49] # ajout de deux items à la liste

carrés.append(64) # ajout d’un autre item

n=[a , b ] #

liste = [carrés,n] # un item de la liste est une liste (liste de liste)

liste[0][1] # le deuxième item de la première liste (4)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 42

Chaînes de caractères

Une chaîne de caractères est une séquence de caractères délimitée par ‘ ou Ligne = première lignedoubleLigne = première ligne\ndeuxième ligne # \n : une nouvelle ligne

3 * très + important ! # concaténation grâce aux opérateurs + et *

mot = Python # Initialisation

mot[0] # caractère de la position 0

mot[4] # caractère de la position 4

mot[-1] # dernier caractère

mot[-2] # avant dernier caractère

mot[0:2] # les 2 premiers caractères

mot[ 0] = ’J’ # erreur car les chaînes ne sont pas modifiables(mutables)

len(mot) # retourne la longueur de la chaîne de caractères

Page 22: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

22

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 43

Fonction de lecture et écriture

input : fonction de lecture qui retourne une chaîne de caractères

print : fonction d’écriture (qui ne retourne aucune valeur)

Exemples :

nomJoueur = input(introduire le nom du joueur :) # lecture du nom

nomJoueur # affichage dans l’interpréteur

montant = int(input("Introduire le montant: ")) # conversion d’un entier

print( \t bonjour tout le monde\n la température d’aujourd’huit est tout le monde)texte= bon{}print(texte.format( jour)) # formatage de la sortie

Pi = 3.1429

print('Pi== {:6.2f}'.format(pi)) # spécification du nombre de décimaux

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 44

Chapitre IVProgrammation orientée objet en Python

1 Paradigmes de programmation

2 Classe et objet

3 Diagramme de classe

4 Héritage

5 Classe et objet en Python

6 Gestion d’une école

7 Fichier

Page 23: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

23

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 45

Paradigmes de programmation

Programmation structurée (traditionnelle ou classique)

Séparation des données et des opérations

Initialisation des structures de données

Traitement des données par les procédures et les fonctions

Programmation orientée objet (POO)

Une même structure contient les données et les opérations associées

Historique de la POO

Origine : langage Simula 67 en 1967

Intérêt grandissant à partir du milieu des années 80 : C++, Java, Python, …

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 46

Classe et objet

Classe : définition d’un type généralement composé de propriétés et méthodes (Modèle ou moule)

Objet : déclaration d’un variable d’une classe pouvant accéder aux propriétés et méthodes de la classe (Exemple ou produit identifié)

Instanciation : création d’un objet à partir d’une classe (exemple selon un modèle ou produit à l’aide d’un moule)

Rectangle

int largeurint longueur

périmètre()double surface()

classe

propriétés

méthodes

Page 24: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

24

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 47

Diagramme des classes

Etudiant

String nomint annéeNaissanceString cinString filièreint niveauint [] notes

int calculerAge()int [] saisirNotes ()double calculerMoyenne()

Enseignant

String nomint annéeNaissanceString cinString gradeString [] coursEnseignés

int calculerAge()String [] saisirCours()double calculerSalaire()

classe

propriétés

méthodes

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 48

Héritage

EtudiantH

String filièreint niveauint [] notes

int [] saisirNotes ()double calculerMoyenne()

Citoyen

String nomint annéeNaissanceString cin

int calculerAge()

EnseignantH

String gradeString [] coursEnseignés

String [] saisirCours()double calculerSalaire()

La classe fille EtudiantH hérite (attributs et méthodes) de la classe mère CitoyenLa classe EtudiantH est une spécialisation de la classe Citoyen

Page 25: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

25

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 49

Classe et objet en Python

En Python, tout est objet

>>> nombre = 134 # création d’un objet de type entier (instanciation)

>>> type(nombre) # donner le type de la variable nombre

Attribut : variable d’une classe

Propriété : manière de manipuler les attributs (lecture seule,…)

class Rectangle: # classe qui ne contient ni méthode ni attribut

pass # mot clé sans aucun effet (circuler, rien à voir)

print("démarrage") # première instruction exécutable

r1 = Rectangle() # instanciation (création) d’un objet Rectangle

r2 = Rectangle() # instanciation d’un autre objet Rectangle

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 50

Classe avec un attribut et une méthode

class Rectangle:

couleur = "bleu " # attribut partagé par tous les objets de la classe (global)

def __init__(self): # méthode particulière appelée constructeur print("Création d'un rectangle")

print("démarrage")

r1 = Rectangle() # instanciation

print(l’attribut couleur = , r1.couleur) # accès à l’attribut et affichage

r2 = Rectangle() # instanciation

r 2.couleur = rouge # modification du contenu de l’attribut

print( l’attribut couleur = , r1.couleur)

Page 26: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

26

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 51

Classe avec constructeur et attributs

class Rectangle:

def __init__(self): # constructeur de la classe

print("Création d'un objet rectangle")

self.largeur = 5 # premier attribut

self.longueur = 7 # deuxième attribut

print("démarrage")

r1 = Rectangle() # instanciation d’un objet

print( largeur = , r1.largeur, longueur = , r1.longueur)

r2 = Rectangle() # initialisation des attributs par défaut

r2.largeur = 4 # modification de l’initialisation par défaut

r2.largeur = 6

print( largeur = , r2.largeur, longueur = , r2.longueur)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 52

Paramètres du constructeur et méthodes

class Rectangle:

def __init__(self, larg, long): # constructeur

print("Création d'un objet Etudiant")

self.largeur =larg # affectation de larg au premier attribut

self.longueur=long # affectation de long deuxième attribut

def perimetre(self): # première méthode ne retourne pas de valeur)

print("périmètre =", (self.largeur+self.longueur)*2)

def surface(self): # deuxième méthode (retourne une valeur)

return self.longueur*self.longueur

r1=Rectangle(5,9) # instanciation d’un objet

r1.perimetre() # appel de la première méthode

print("surface = " , r1.surface()) # autre manière d’appel : Rectangle.surface(r1)

Page 27: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

27

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 53

Exercice : Gestion d’un école

1 Créer une classe "Etudiant "

Attributs : nom, annéeNaissance, cin, filière, niveau et notes

Méthodes : saisirNotes, calculerAge et calculerMoyenne

2 Instancier 3 objets Etudiant et afficher l’age moyen et la moyenne des notes

3 Créer une classe " Enseignant "

Attributs : nom, annéeNaissance, cin, grade, coursEnseignés

Méthodes : calculerAge, saisirCours, calculerSalaire.

4 Instanciation 2 objets Enseignant éléments d’une liste et afficher l’age moyen et le montant des salaires.

5 Créer une classe Citoyen regroupant les attributs et méthodes communes des classes Etudiant et Enseignant

6 Modifier les classes Etudiant et Enseignant pour hériter les attributs et les méthodes de la classe Citoyen

N.B.: salaire = nombre de cours * grade * 30 (PA=250, PH=300 et PES=350)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 54

Gestion des étudiants (1/2)

# Déclaration de la classe Etudiantclass Etudiant :

# definition du constructeurdef __init__(self, n, a, c, f, l) :

self.nom = n # initialisation du nom self.anneeNaissance; = a # initialisation de l’année de naissanceself.cin = c # initialisation de la CINself.filiere = f # initialisation de la filièreself.niveau = l # initialisation du niveau d’étudeself.notes = self.saisirNotes() # initialisation des notes par une méthode

# méthode qui retourne une liste de notes lues def saisirNotes(self) :

.....

Page 28: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

28

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 55

Gestion des étudiants (2/2)

# méthode qui retourne l’age moyen des étudiants def calculerAge(self) :

…..# méthode qui retourne la moyenne des notes def calculerMoyenne(self) :

…..

e1 = Etudiant("Benahmed",1993,"AB20016","Mécanique",1)e2 = Etudiant("Aithadou",1995,"Y602219","Mécanique",1)e3 = Etudiant("Zaitouni",1992,"DS74002","Informatique",3)

ageMoyen = (e1.calculerAge() + e2. calculerAge() + e3. calculerAge())/3moyenneGenerale = (e1. calculerMoyenne() + e2. calculerMoyenne())/2print("\nAge moyen des étudiants = ", ageMoyen)print("Moyenne générale de Génie Mécanique = " , moyenneGenerale)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 56

Exécution de Gestion des étudiants

Veuillez introduire le nombre de notes de Benahmed: 1introduire la note 1 : 13

Veuillez introduire le nombre de notes de Aithadou: 2introduire la note 1 : 11introduire la note 2 : 17

Veuillez introduire le nombre de notes de Zaitouni: 1introduire la note 1 : 12

Age moyen des étudiants = 22.0Moyenne générale de Génie Mécanique = 13.5

Page 29: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

29

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 57

Gestion des enseignants (1/2)

# Déclaration de la classe Enseignantclass Enseignant :

# définition du constructeurdef __init__(self, n, a, c, g) :

self.nom = n # attributs initialisés à la création de l’objetself.anneeNaissance = aself.cin = cself.grade = gself.coursEnseignes = self.saisirCours()

# méthode qui retourne la liste des cours enseignésdef saisirCours(self) :

…..# méthode qui retourne l’age de l'enseignantdef calculerAge(self) :

…..

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 58

Gestion des enseignants (2/2)

# méthode qui retourne le salaire de l'enseignantdef calculerSalaire(self) :

…..print("démarrage")enseignants = [] # une liste d’objets de la classe Enseignantenseignants.append(Enseignant("Kamoun",1953,"GF01205","PES"))enseignants.append(Enseignant("Labied",1975,"H089274","PA"))

sommeAge = 0sommeSalaire = 0for e in enseignants :

sommeAge += e.calculerAge()sommeSalaire += p.calculerSalaire()

print(("\nAge moyen des enseignants = ", sommeAge/len(enseignants))print("Total des salaires des enseignants = ", sommeSalaire)

Page 30: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

30

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 59

Exécution de Gestion des enseignants

démarrage Veuillez introduire le nombre de cours du Pr. Kamoun: 1

introduire le cours 1 : SGBDVeuillez introduire le nombre de cours du Pr. Labied: 2

introduire le cours 1 : RDMintroduire le cours 2 : CAO

Age moyen des enseignants = 52.0Total des salaires = 28500.0

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 60

Gestion des étudiants avec héritageClasse Citoyen

Déclaration de la classe mère Citoyen regroupant les attributs et méthodes communs des classes filles Etudiant et Enseignant

class Citoyen :def __init__(self, n, a, c) :

self.nom = a # initialisation du nomself.anneeNaissance = a # initialisation du la date de naissanceself.cin = c # initialisation de la CIN

def calculerAge(self) :return 2017 – self.anneeNaissance

Page 31: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

31

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 61

Gestion des étudiants avec héritageClasse EtudiantH

""" Déclaration de la classe fille Etudiant qui hérite des attributs et méthodes de la classe mère Citoyen """

class EtudiantH (Citoyen) :# constructeur def __init__(self,n,a,c,f,l):

print("Création d'un objet EtudiantH")Citoyen.__init__(self,n,a,c) # appel du constructeur de Citoyenself.filiere = f # initialisation du la filièreself.niveau = l # initialisation du niveau d’étudeself.notes=self.saisirNotes() # initialisation des notes obtenues

def saisirNotes() :…..

def calculerMoyenne() :…..

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 62

Gestion des étudiants avec héritage

e1 = EtudiantH("Benahmed",1993,"AB20016","Mécanique",1)e2 = EtudiantH("Aithadou",1995,"Y602219","Mécanique",1)e3 = EtudiantH("Zaitouni",1992,"DS74002","Informatique",3)

ageMoyen = (e1.calculerAge() + e2. calculerAge() + e3. calculerAge())/3moyenneGenerale = (e1. calculerMoyenne() + e2. calculerMoyenne())/2print("\nAge moyen des étudiants = ", ageMoyen)print("Moyenne générale de Génie Mécanique = " , moyenneGenerale)

Page 32: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

32

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 63

Exécution de Gestion des étudiants avec héritage

Veuillez introduire le nombre de notes de Benahmed: 1introduire la note 1 : 13

Veuillez introduire le nombre de notes de Aithadou: 2introduire la note 1 : 11introduire la note 2 : 17

Veuillez introduire le nombre de notes de Zaitouni: 1introduire la note 1 : 12

Age moyen des étudiants = 22.666666666666668Moyenne générale = 13.0

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 64

Gestion des enseignants avec héritageClasse EnseignantH

""" Déclaration de la classe fille Enseignant qui hérite des attributs et méthodes de la classe mère Citoyen """

class EnseignantH (Citoyen) :# constructeurdef __init__(self,n,a,c,g):

print("Création d'un objet EnseignantH")Citoyen.__init__(self,n,a,c) # appel du constructeur de Citoyenself.grade = g # initialisation du gradeself.coursEnseignes = self.saisirCours() # initialisation par une méthode

def saisirCours() :…..

def calculerSalaire() :…..

Page 33: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

33

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 65

Gestion des enseignants avec héritage

Enseignants=[] # liste d’objets de la classe Enseignantenseignants.append (EnseignantH("Kamoun",1953,"GF01205","PES"))enseignants.append(EnseignantH("Labied",1975,"H089274","PA"))

sommeAge = 0sommeSalaire = 0

for p in enseignants :sommeAge += p.calculerAge()sommeSalaire += p.calculerSalaire()

ageMoyen = sommeAge/len(enseignants)print("\nAge moyen des enseignants = ", ageMoyen)print("Total des salaires des enseignants = ", sommeSalaire)

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 66

Exécution de Gestion des enseignants avec héritage

Veuillez introduire le nombre de cours du Pr. Kamoun: 1

introduire le cours 1 : SGBD

Veuillez introduire le nombre de cours du Pr. Labied: 2

introduire le cours 1 : RDM

introduire le cours 2 : CAO

Age moyen des enseignants = 52.0

Total des salaires = 34500.0

Page 34: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

34

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 67

Tri d’un tableau

fonction triCroissant (T[1..n])

pour i 2 jusqu'à n faire

x T[i]

j i - 1

tant que j > 0 et T[j] > x faire

T[j + 1] T[j]

j j - 1

T[j + 1] x

retourner T

Exercice

a) Faire la trace pour T = {3,1,4,2}

b) Traduire cet algorithme en Python

c) Modifier l’algorithme pour effectuer un tri en ordre décroissant

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 68

Fichier

Types de fichiertextebinaire

Modes d’ouverturer : lecture seulew : écriture avec remplacementa : écriture avec ajout en fin de fichierx : lecture et écriture

Exemplefichier = open(donnees.txt , r) # ouverture en lecturefichier.close() # fermeture du fichierif fichier.closed:

print("le fichier est fermé")else :

print("le fichier ",fichier, " est ouvert")

Page 35: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

35

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 69

Fichier : Lecture

fichier = open(donnees.txt , r) # ouverture en lecturecontent = fichier.read() # lecture de tout le fichierprint(content) # affichage du contenufichier.close() # fermeture du fichier

fichier = open(donnees.txt , r) # ouverture en lectureligne = fichier.readline() # lecture de la première ligneligne = fichier.readline() # lecture de la deuxième lignelignes = fichier.readlines() # lecture du reste du fichierfichier.close() # fermeture du fichier

Remarquesla métthode read retourne une chaîne de caractères comme input

pour faire des calculs, il faut transformer l’entrée en un nombre

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 70

Fichier : Ecriture

fichier1 = open(donnees.txt , w) # ouverture en lecturefichier1.write( première ligne \n) # lecture de tout le fichierfichier1.write(str(150)) # affichage du contenufichier1.write( première ligne ) # affichage du contenufichier1.close() # fermeture du fichier

Autre manière de gérer les fichierswith open(donnees.txt , r) as fichier : # la fermeture n’est pas nécessaire

content = fichier.read()print(content)

Page 36: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

36

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 71

Fichier binaire

import pickle # bibliothèque pour les fichiers binairesclass Joueur :

def __init__(self, nom, niveau): # constructeurself.nom=nomself.niveau=niveau

def whoIam(self): # méthode d’affichageprint(self.nom,":",self.niveau)

J1=Joueur("Hamid",103) # instanciation d’un objetwith open("doc.data","wb") as fichier: # mode d’écriture binaire

record = pickle.Pickler(fichier) # définir un enregistrementrecord.dump(J1) # copier l’objet dans l’enregistrement

with open("doc.data","rb") as fichier: # mode de lecture binaireget_record = pickle.Unpickler(fichier) # récupérer l’enregistrementJ1=get_record.load() # récupérer l’objet

J1.whoIam() # afficher ses informations

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 72

Exercice 2

Reprenons le programme Gestion des étudiants.

a) Modifier le programme pour enregistrer les étudiants dans un fichier.

b) Enregistrer également les résultats obtenus

Page 37: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

37

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 73

Exercice 2

Considérons une compétition sportive où n athlètes peuvent avoir un certain nombre de médailles en or, argent ou bronze.

a) Ecrire un algorithme qui calcule le nombre total de médailles (or, argent et bronze).

b) Faire la trace pour les concurrents suivants.

c) Ecrire un programme en Python

Nom Or Argent Bronze

Ahmed 1 4 0

Amina 2 0 1

Amal 0 2 0

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 74

Exercice 3

Considérons des jeux universitaires qui mettent en concurrence des étudiants de plusieurs établissements. Les organisateurs souhaiteraient informatiser la gestion de cet événement.

a) Ecrire en Python une classe Etablissement sachant qu’un établissent est identifié par son nom, le nombre total de médailles obtenues et un tableau d’étudiants

b) Inclure une méthode pour remplir la liste des étudiants et une méthode pour trouver le nombre total des médailles (Or, Argent et Bronze obtenues).

c) Ecrire en Python un programme pour afficher le classement des établissements selon le nombre de médailles obtenues.

Page 38: Initroduction POO 2018 [Mode de compatibilité] support 2018.pdf · 3 dqv gh vl 3 dqv hw gh vl 3 dqv oluh 0 3 vl3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq vl 3 doruv, 0 vlqrq, 0 pfuluh

04/10/2018

38

Introduction à la POO, M. Eleuldj, EMI, Octobre 2018 75

Références

Tutoriel

https://docs.python.org/3.7/tutorial/index.html