Piles Informatique pour tous MP 2016-2017

publicité
Introduction
Utilisation
Implémentation
Piles
Informatique pour tous
MP
2016-2017
Une structure voisine : les files
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
• Fonctionnalités minimales
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
• Fonctionnalités minimales
1. Test de vacuité : . isEmpty(pile)
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
• Fonctionnalités minimales
1. Test de vacuité : . isEmpty(pile)
2. Empilage d’une donnée : . push(pile,donnée)
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
• Fonctionnalités minimales
1. Test de vacuité : . isEmpty(pile)
2. Empilage d’une donnée : . push(pile,donnée)
3. Désempilage d’une donnée : . pop(pile)
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
• Fonctionnalités minimales
1. Test de vacuité : . isEmpty(pile)
2. Empilage d’une donnée : . push(pile,donnée)
3. Désempilage d’une donnée : . pop(pile)
4. Lecture de l’élément en haut de pile . top(pile)
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Présentation des piles
• Pile = structure de données (cf. listes, tableaux, dictionnaires)
• Image de la pile d’assiettes
• Fonctionnalités minimales
1. Test de vacuité : . isEmpty(pile)
2. Empilage d’une donnée : . push(pile,donnée)
3. Désempilage d’une donnée : . pop(pile)
4. Lecture de l’élément en haut de pile . top(pile)
• Structure L.I.F.O pour Last In First Out : on ne peut
récupérer que la dernière donnée déposée sur la pile.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Gestion des appels des fonctions les unes par les autres
fun_1 appelle fun_2 appelle fun_3
. états successifs de la pile au tableau
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Gestion des appels des fonctions les unes par les autres
fun_1 appelle fun_2 appelle fun_3
. états successifs de la pile au tableau
• Gestion d’une fonction récursive.
. états successifs de la pile au tableau
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Gestion des appels des fonctions les unes par les autres
fun_1 appelle fun_2 appelle fun_3
. états successifs de la pile au tableau
• Gestion d’une fonction récursive.
. états successifs de la pile au tableau
• Gestionnaire d’historiques : pages web visitées.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Gestion des appels des fonctions les unes par les autres
fun_1 appelle fun_2 appelle fun_3
. états successifs de la pile au tableau
• Gestion d’une fonction récursive.
. états successifs de la pile au tableau
• Gestionnaire d’historiques : pages web visitées.
• Commandes dans Pyzo.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Gestion des appels des fonctions les unes par les autres
fun_1 appelle fun_2 appelle fun_3
. états successifs de la pile au tableau
• Gestion d’une fonction récursive.
. états successifs de la pile au tableau
• Gestionnaire d’historiques : pages web visitées.
• Commandes dans Pyzo.
• Commande undo des traitements de textes.
Introduction
Utilisation
Implémentation
Exemples
• Notation Polonaise Inversée (N.P.I).
Une structure voisine : les files
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
• Utilisation dans certaines calculatrices, dans les calculs des
fichiers postscript.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
• Utilisation dans certaines calculatrices, dans les calculs des
fichiers postscript.
• Comment ça marche ?
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
• Utilisation dans certaines calculatrices, dans les calculs des
fichiers postscript.
• Comment ça marche ?
1. On empile les valeurs numériques ;
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
• Utilisation dans certaines calculatrices, dans les calculs des
fichiers postscript.
• Comment ça marche ?
1. On empile les valeurs numériques ;
2. Quand arrive un opérateur, on désempile le nombre
d’opérandes nécessaires, et on empile le résultat de l’opération
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
• Utilisation dans certaines calculatrices, dans les calculs des
fichiers postscript.
• Comment ça marche ?
1. On empile les valeurs numériques ;
2. Quand arrive un opérateur, on désempile le nombre
d’opérandes nécessaires, et on empile le résultat de l’opération
3. À la fin du calcul il ne reste normalement qu’une valeur dans
la pile, qui est le résultat de l’opération
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Exemples
• Notation Polonaise Inversée (N.P.I).
• Notation postfixée :
(10 * 5) + (4 * 2) = > 10 5 * 4 2 * +
• Avantages : pas de parenthèses
• Utilisation dans certaines calculatrices, dans les calculs des
fichiers postscript.
• Comment ça marche ?
1. On empile les valeurs numériques ;
2. Quand arrive un opérateur, on désempile le nombre
d’opérandes nécessaires, et on empile le résultat de l’opération
3. À la fin du calcul il ne reste normalement qu’une valeur dans
la pile, qui est le résultat de l’opération
4. . Illustration au tableau sur l’exemple donné plus haut.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Implémentation des piles
• Programme officiel : implémentation des piles avec des listes ;
le sommet de la pile sera le dernier élément de la liste.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
• Créer une pile .
MaPile =[] # Cr é ation d ’ une pile vide .
MaPile =[ a ,b ,c ,... s ]
# Cr é ation d ’ une pile de sommet s .
Introduction
Utilisation
Implémentation
Une structure voisine : les files
• Créer une pile .
MaPile =[] # Cr é ation d ’ une pile vide .
MaPile =[ a ,b ,c ,... s ]
# Cr é ation d ’ une pile de sommet s .
• Test de vacuité (la pile est-elle vide ?) .
MaPile ==[]
Introduction
Utilisation
Implémentation
Une structure voisine : les files
• Créer une pile .
MaPile =[] # Cr é ation d ’ une pile vide .
MaPile =[ a ,b ,c ,... s ]
# Cr é ation d ’ une pile de sommet s .
• Test de vacuité (la pile est-elle vide ?) .
MaPile ==[]
• Empiler une donnée .
MaPile . append ( donn é e )
Introduction
Utilisation
Implémentation
Une structure voisine : les files
• Créer une pile .
MaPile =[] # Cr é ation d ’ une pile vide .
MaPile =[ a ,b ,c ,... s ]
# Cr é ation d ’ une pile de sommet s .
• Test de vacuité (la pile est-elle vide ?) .
MaPile ==[]
• Empiler une donnée .
MaPile . append ( donn é e )
• Désempiler la donnée au sommet .
MaPile . pop ()
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Fonctionnalités supplémentaires
• Consultation sans désempilement : top. .
MaPile [ len ( MaPile ) -1] ou MaPile [ -1]
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Fonctionnalités supplémentaires
• Consultation sans désempilement : top. .
MaPile [ len ( MaPile ) -1] ou MaPile [ -1]
• Affichage de la pile : un élément par ligne, avec le dernier
élément inséré tout en haut. .
for i in range ( len ( MaPile ) -1 , -1 , -1) :
print ( MaPile [ i ])
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Limites de l’implémentation avec des listes
• Des problèmes dans une telle implémentation ?
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Limites de l’implémentation avec des listes
• Des problèmes dans une telle implémentation ?
• Possibilité d’utiliser d’autres méthodes que celles autorisées
sur les piles !
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Limites de l’implémentation avec des listes
• Des problèmes dans une telle implémentation ?
• Possibilité d’utiliser d’autres méthodes que celles autorisées
sur les piles !
• Très dangereux si on repose fortement sur la structure
apportée par une pile.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe...
• Utilisation d’une classe dédiée.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe...
• Utilisation d’une classe dédiée.
• La programmation objet n’est pas au programme...
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe...
• Utilisation d’une classe dédiée.
• La programmation objet n’est pas au programme...
• mais présentation possible !
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe...
• Utilisation d’une classe dédiée.
• La programmation objet n’est pas au programme...
• mais présentation possible !
• On a ainsi une meilleure protection : on parle
d’encapsulation des données.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe...
• Utilisation d’une classe dédiée.
• La programmation objet n’est pas au programme...
• mais présentation possible !
• On a ainsi une meilleure protection : on parle
d’encapsulation des données.
• Code (on a francisé les noms des méthodes) : page suivante
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe
class Pile :
def __init__ ( self ) :
self . ListeInterne =[]
def estVide ( self ) :
return len ( self . ListeInterne ) ==0
def empiler ( self , donn é e ) :
self . ListeInterne . append ( donn é e )
def desempiler ( self ) :
return self . ListeInterne . pop ()
def sommet ( self ) :
return self . ListeInterne [ -1]
def affiche ( self ) :
l = self . ListeInterne [:]
l . reverse ()
for e in l :
print ( e )
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Une solution qui a de la classe
• Variantes
class Pile :
def __init__ ( self , listeArgument ) :
self . Liste = listeArgument
def desempiler ( self ) :
if estVide ( self ) :
return " liste vide
impossible de d é sempiler "
else :
return self . Liste . pop ()
def sommet ( self ) :
if estVide ( self ) :
return " liste vide
pas de sommet "
else :
return self . Liste [ -1]
Introduction
Utilisation
Implémentation
Les files
Structure similaire, mais hors-programme.
• Image de la file d’attente à un guichet.
Une structure voisine : les files
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Les files
Structure similaire, mais hors-programme.
• Image de la file d’attente à un guichet.
• Structure F.I.F.O pour First In First Out : on ne peut
récupérer que la première donnée mise dans la file.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Les files
Structure similaire, mais hors-programme.
• Image de la file d’attente à un guichet.
• Structure F.I.F.O pour First In First Out : on ne peut
récupérer que la première donnée mise dans la file.
• Exemple : gestion des « événements » d’une interface
graphique.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Les files
Structure similaire, mais hors-programme.
• Image de la file d’attente à un guichet.
• Structure F.I.F.O pour First In First Out : on ne peut
récupérer que la première donnée mise dans la file.
• Exemple : gestion des « événements » d’une interface
graphique.
• Mémorisation clicks de souris pour exécution dans le bon
ordre.
Introduction
Utilisation
Implémentation
Une structure voisine : les files
Les files
Structure similaire, mais hors-programme.
• Image de la file d’attente à un guichet.
• Structure F.I.F.O pour First In First Out : on ne peut
récupérer que la première donnée mise dans la file.
• Exemple : gestion des « événements » d’une interface
graphique.
• Mémorisation clicks de souris pour exécution dans le bon
ordre.
• Implémentation : quelques modifications à apporter par
rapport aux piles.
Téléchargement