COURS INFORMATIQUE : les Piles (suite)

publicité
COURS INFORMATIQUE : les Piles (suite)
PC
PICON
PICON
COURS INFORMATIQUE : les Piles (suite)
1 / 12
1
Mise en œuvre des piles en Python et en machine
Mise en oeuvre par liste
Piles à capacité bornée
2
Exercices
PICON
COURS INFORMATIQUE : les Piles (suite)
2 / 12
Une pile est donc un type particulier de structure de donnée dans
lequel toute insertion ou suppression d’éléments se fait à une
extrémité appelée le "dessus" ou le "sommet".
Quelles sont les opérations "primitives" à faire sur une pile ?
PICON
COURS INFORMATIQUE : les Piles (suite)
3 / 12
LES OPERATIONS PRIMITIVES SUR LES PILES
Remettre la pile P à zéro ou la créer vide RAZ()
Savoir si une pile est vide par retour d’un booléen VIDE(P)
Supprimer l’élément au sommet de la pile P DEPILER(P)
Retourner l’élément au sommet de la pile P (sans le dépiler)
SOMMET(P)
Insérer l’élément x au sommet de la pile P EMPILER(x,P)
PICON
COURS INFORMATIQUE : les Piles (suite)
4 / 12
Mise en œuvre des piles en Python et en machine
Mise en oeuvre par liste d’une PILE A CAPACITE ILLIMITE
Avec la structure de liste, on n’a ni à gérer la taille de la pile, ni à
avoir des données de type homogène.
Certaines primitives sont directement des fonctions ou méthodes de
Python, d’autres doivent être programmées.
PICON
COURS INFORMATIQUE : les Piles (suite)
5 / 12
Créer une liste P vide ou Remettre à zéro P :
P=[]
Savoir si une pile est vide
def VIDE(P):
#renvoie vrai si la liste est vide
return len(P)==0
Insérer x au sommet de P :
P.append(x)
Dépiler l’élément au sommet de P (en le supprimant de la pile)
P.pop()
À améliorer si on ne veut pas d’erreurs....
if not Vide(P):
P.pop()
PICON
COURS INFORMATIQUE : les Piles (suite)
6 / 12
Élément au sommet sans dépiler :
def sommet(P):
if not Vide(P):
P[-1]
Voir le fichier Pile1.py où les primitives de piles sont programmées.
PICON
COURS INFORMATIQUE : les Piles (suite)
7 / 12
PILES A CAPACITE BORNEE
Avantage : tirer partie de la réservation de place à l’avance.
Différence principale de programmation entre une pile à capacité
finie (ou bornée) et une pile à capacité infinie : il faut tester si la pile
n’est pas pleine lorsqu’on empile, il faut gérer en permanence la
hauteur de la pile.
PICON
COURS INFORMATIQUE : les Piles (suite)
8 / 12
Primitives d’une pile à capacité bornée
Ce sont les même qu’une liste à capacité infinie.
Codage utilisé : une liste dont le premier élément est la taille de la
pile, donc l’index du sommet, les suivants sont les éléments de la
liste. Le nombre d’éléments ne peut dépasser M.
Écrire les primitives d’une pile dans cette représentation.
Corrigé dans le fichier Piles2.py
PICON
COURS INFORMATIQUE : les Piles (suite)
9 / 12
Exercice 1.
Traiter cet exercice avec des piles à capacité bornée à 100. Écrire une
fonction qui coupe le sommet d’une pile :
On donne un entier i.
La fonction retourne les i derniers éléments de la pile dans l’ordre.
PICON
COURS INFORMATIQUE : les Piles (suite)
10 / 12
Exercice 2. A faire pour la rentrée
Écrire une fonction qui teste si deux piles sont égales. Résultat
booléen.
A faire avec des piles à capacités non bornée.
PICON
COURS INFORMATIQUE : les Piles (suite)
11 / 12
Exercice 3 A faire pour la rentrée
Écrire à partir des primitives de piles
Une fonction afficher(P) qui affiche tous les éléments de la pile.
Dans un premier temps, on veut un affichage vertical ou le premier
élément imprimé est le sommet.
Dans un second temps, on veut un affichage horizontal ou le sommet
se trouve à droite.
Dans les deux cas, l’algorithme ne doit pas être destructif.
PICON
COURS INFORMATIQUE : les Piles (suite)
12 / 12
Téléchargement