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