COURS INFORMATIQUE : PILES PC PICON PICON COURS INFORMATIQUE : PILES 1 / 43 1 Structures de données : généralités PICON COURS INFORMATIQUE : PILES 2 / 43 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python tuples listes matrices PICON COURS INFORMATIQUE : PILES 2 / 43 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python tuples listes matrices 3 Empiler, dépiler PICON COURS INFORMATIQUE : PILES 2 / 43 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python tuples listes matrices 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine Mise en oeuvre par liste Piles à capacité bornée PICON COURS INFORMATIQUE : PILES 2 / 43 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python tuples listes matrices 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine Mise en oeuvre par liste Piles à capacité bornée 5 Exercices PICON COURS INFORMATIQUE : PILES 2 / 43 Sommaire 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine 5 Exercices PICON COURS INFORMATIQUE : PILES 3 / 43 Structures de données, généralités Un langage de programmation possède des types de données simples. Leur traitement est presque immédiat, très proche du traitement du processeur. Par exemple en Python, on peut considérer comme type simple PICON COURS INFORMATIQUE : PILES 4 / 43 Structures de données, généralités Un langage de programmation possède des types de données simples. Leur traitement est presque immédiat, très proche du traitement du processeur. Par exemple en Python, on peut considérer comme type simple Les entiers PICON COURS INFORMATIQUE : PILES 4 / 43 Structures de données, généralités Un langage de programmation possède des types de données simples. Leur traitement est presque immédiat, très proche du traitement du processeur. Par exemple en Python, on peut considérer comme type simple Les entiers Les flottants PICON COURS INFORMATIQUE : PILES 4 / 43 Structures de données, généralités Un langage de programmation possède des types de données simples. Leur traitement est presque immédiat, très proche du traitement du processeur. Par exemple en Python, on peut considérer comme type simple Les entiers Les flottants Les booléens PICON COURS INFORMATIQUE : PILES 4 / 43 Structures de données, généralités Un langage de programmation possède des types de données simples. Leur traitement est presque immédiat, très proche du traitement du processeur. Par exemple en Python, on peut considérer comme type simple Les entiers Les flottants Les booléens Les caractères PICON COURS INFORMATIQUE : PILES 4 / 43 Structures de données, généralités Ces types de données ne permettent pas de traiter facilement les données plus complexes. Exemple : programmation d’un traitement de texte. On a donc besoin de types complexes ou composés. PICON COURS INFORMATIQUE : PILES 5 / 43 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple PICON COURS INFORMATIQUE : PILES 6 / 43 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple les complexes, PICON COURS INFORMATIQUE : PILES 6 / 43 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple les complexes, les tuples, PICON COURS INFORMATIQUE : PILES 6 / 43 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple les complexes, les tuples, les listes, PICON COURS INFORMATIQUE : PILES 6 / 43 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple les complexes, les tuples, les listes, les chaînes de caractères, (c’est un peu faux en Python) PICON COURS INFORMATIQUE : PILES 6 / 43 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple les complexes, les tuples, les listes, les chaînes de caractères, (c’est un peu faux en Python) les matrices du module numpy. PICON COURS INFORMATIQUE : PILES 6 / 43 Structures de données, généralités Il en existe d’autres, les dictionnaires par exemple. PICON COURS INFORMATIQUE : PILES 7 / 43 Structures de données, généralités Il en existe d’autres, les dictionnaires par exemple. En réalité, Python est un langage orienté objet assez peu structuré et la notion de type simple est modifié par la notion de classe. PICON COURS INFORMATIQUE : PILES 7 / 43 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour PICON COURS INFORMATIQUE : PILES 8 / 43 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour ordonner différents objets les listes pour PICON COURS INFORMATIQUE : PILES 8 / 43 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour ordonner différents objets les listes pour ordonner et traiter différents objets les matrices pour PICON COURS INFORMATIQUE : PILES 8 / 43 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour ordonner différents objets les listes pour ordonner et traiter différents objets les matrices pour les sciences mais aussi PICON COURS INFORMATIQUE : PILES 8 / 43 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour ordonner différents objets les listes pour ordonner et traiter différents objets les matrices pour les sciences mais aussi le traitement d’image les chaînes de caractères pour PICON COURS INFORMATIQUE : PILES 8 / 43 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour ordonner différents objets les listes pour ordonner et traiter différents objets les matrices pour les sciences mais aussi le traitement d’image les chaînes de caractères pour traiter du texte PICON COURS INFORMATIQUE : PILES 8 / 43 Structures de données, généralités Créer une structure de donnée c’est : Organiser des types simples de façon structurée en vue de les traiter Créer les opérations de traitement. PICON COURS INFORMATIQUE : PILES 9 / 43 Structures de données, généralités Cette création peut être ordonnée par l’algorithme en vue de traiter un problème. En fait souvent la réflexion sur le type de structure de donnée est préalable à l’algorithme. Il s’agit ensuite de mettre en œuvre dans le langage de programmation donné le nouveau type de données et l’algorithme. PICON COURS INFORMATIQUE : PILES 10 / 43 Selon le langage de programmation, les types structurés classiques peuvent être déjà en place (on dit implémentés) ou bien doivent être programmés. En Fortran (langage très scientifique), les matrices sont implémentées. En Python, elles sont dans un module numpy. Si on n’a pas ce module, il faut reprogrammer toutes les opérations. PICON COURS INFORMATIQUE : PILES 11 / 43 Sommaire 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python tuples listes matrices 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine 5 Exercices PICON COURS INFORMATIQUE : PILES 12 / 43 Prenons l’exemple des tuples Mise en oeuvre en machine Organiser les données : Créer une case mémoire pour chaque élément du tuple Créer une chaîne d’adresses pour reconstituer l’ordre du tuple PICON COURS INFORMATIQUE : PILES 13 / 43 Traitement Accéder à un élément Connaître la longueur du tuple. PICON COURS INFORMATIQUE : PILES 14 / 43 Traitement Accéder à un élément Connaître la longueur du tuple. On rentre un tuple l’ouverture d’une parenthèse : >>> A=("e",4,3.8,’ceci est une phrase’) PICON COURS INFORMATIQUE : PILES 14 / 43 Traitement Accéder à un élément Connaître la longueur du tuple. On rentre un tuple l’ouverture d’une parenthèse : >>> A=("e",4,3.8,’ceci est une phrase’) On accède à un élément par son numéro >>> A[2] 3.8 PICON COURS INFORMATIQUE : PILES 14 / 43 Traitement Accéder à un élément Connaître la longueur du tuple. On rentre un tuple l’ouverture d’une parenthèse : >>> A=("e",4,3.8,’ceci est une phrase’) On accède à un élément par son numéro >>> A[2] 3.8 Et comme d’habitude on commence par 0 PICON COURS INFORMATIQUE : PILES 14 / 43 Traitement Accéder à un élément Connaître la longueur du tuple. On rentre un tuple l’ouverture d’une parenthèse : >>> A=("e",4,3.8,’ceci est une phrase’) On accède à un élément par son numéro >>> A[2] 3.8 Et comme d’habitude on commence par 0 On récupère la longueur par >>> len(A) 4 PICON COURS INFORMATIQUE : PILES 14 / 43 À quoi ça sert un tuple ? PICON COURS INFORMATIQUE : PILES 15 / 43 À quoi ça sert un tuple ? À aller plus vite qu’avec les listes. PICON COURS INFORMATIQUE : PILES 15 / 43 À quoi ça sert un tuple ? À aller plus vite qu’avec les listes. À être sur qu’on ne modifie pas les données. PICON COURS INFORMATIQUE : PILES 15 / 43 À quoi ça sert un tuple ? À aller plus vite qu’avec les listes. À être sur qu’on ne modifie pas les données. À pouvoir être parcouru, par une variable par exemple. PICON COURS INFORMATIQUE : PILES 15 / 43 Rappels sur les listes en Python Une liste est une structure souple qui peut grandir ou rétrécir à volonté. Ses éléments sont accessibles à tout moment, peuvent être insérés ou supprimés à n’importe quel endroit. On peut concaténer ou diviser une liste. Les opérations de base sur les listes sont Insérer un élément à une position Localiser un élément x en retournant la première position où il apparaît et un code s’il n’apparaît pas. Accéder à un élément en position p sans le retirer. Supprimer l’élément en position p. Accéder au précédent ou au suivant de l’élément en position p. Remettre à zéro la liste. Vérifier si la liste est non vide. Lister tous les éléments. PICON COURS INFORMATIQUE : PILES 16 / 43 Python gère une particularité dans les listes : les données peuvent être de type différents (des chaînes de caractères, des entiers, des flottants etc.) PICON COURS INFORMATIQUE : PILES 17 / 43 Entrer une liste : PICON COURS INFORMATIQUE : PILES 18 / 43 Entrer une liste : >>> A=["e",4,3.8,’ceci est une phrase’] Une liste est entourée par des crochets. Principales commandes : On accède et on peut modifier un élément de la liste PICON COURS INFORMATIQUE : PILES 18 / 43 Entrer une liste : >>> A=["e",4,3.8,’ceci est une phrase’] Une liste est entourée par des crochets. Principales commandes : On accède et on peut modifier un élément de la liste >>> A[2]=1 >>> A [’e’, 4, 1, ’ceci est une phrase’] PICON COURS INFORMATIQUE : PILES 18 / 43 Entrer une liste : >>> A=["e",4,3.8,’ceci est une phrase’] Une liste est entourée par des crochets. Principales commandes : On accède et on peut modifier un élément de la liste >>> A[2]=1 >>> A [’e’, 4, 1, ’ceci est une phrase’] On a sa longueur par PICON COURS INFORMATIQUE : PILES 18 / 43 Entrer une liste : >>> A=["e",4,3.8,’ceci est une phrase’] Une liste est entourée par des crochets. Principales commandes : On accède et on peut modifier un élément de la liste >>> A[2]=1 >>> A [’e’, 4, 1, ’ceci est une phrase’] On a sa longueur par >>> len(A) 4 PICON COURS INFORMATIQUE : PILES 18 / 43 On peut ajouter un élément à la fin PICON COURS INFORMATIQUE : PILES 19 / 43 On peut ajouter un élément à la fin >>> A.append("nouveau") >>> A [’e’, 4, 1, ’ceci est une phrase’, ’nouveau’] PICON COURS INFORMATIQUE : PILES 19 / 43 On peut ajouter un élément à la fin >>> A.append("nouveau") >>> A [’e’, 4, 1, ’ceci est une phrase’, ’nouveau’] On peut aussi insérer PICON COURS INFORMATIQUE : PILES 19 / 43 On peut ajouter un élément à la fin >>> A.append("nouveau") >>> A [’e’, 4, 1, ’ceci est une phrase’, ’nouveau’] On peut aussi insérer >>> A.insert(2,"*****") >>> A [’e’, 4, ’*****’, 1, ’ceci est une phrase’, ’nouveau’] PICON COURS INFORMATIQUE : PILES 19 / 43 On peut ajouter un élément à la fin >>> A.append("nouveau") >>> A [’e’, 4, 1, ’ceci est une phrase’, ’nouveau’] On peut aussi insérer >>> A.insert(2,"*****") >>> A [’e’, 4, ’*****’, 1, ’ceci est une phrase’, ’nouveau’] Ou bien enlever un élément précis >>> A=[2,3,5,2,3] >>> A.remove(3) >>> A [2,5,2,3] PICON COURS INFORMATIQUE : PILES 19 / 43 Ou bien enlever un élément indexé PICON COURS INFORMATIQUE : PILES 20 / 43 Ou bien enlever un élément indexé >>> A=[2,3,5,2,3] >>> del A[2] >>> A [2,3,2,3] PICON COURS INFORMATIQUE : PILES 20 / 43 On peut concaténer des listes PICON COURS INFORMATIQUE : PILES 21 / 43 On peut concaténer des listes >>> >>> >>> [1, A=[1,3,5] B=[2,8,7] A+B 3, 5, 2, 8, 7] PICON COURS INFORMATIQUE : PILES 21 / 43 On peut concaténer des listes >>> >>> >>> [1, A=[1,3,5] B=[2,8,7] A+B 3, 5, 2, 8, 7] Multiplier ! ! ! >>> A=[1,3,5] >>> A*3 [1, 3, 5, 1, 3, 5, 1, 3, 5] Bien sur, on multiplie par un entier PICON COURS INFORMATIQUE : PILES 21 / 43 On peut concaténer des listes >>> >>> >>> [1, A=[1,3,5] B=[2,8,7] A+B 3, 5, 2, 8, 7] Multiplier ! ! ! >>> A=[1,3,5] >>> A*3 [1, 3, 5, 1, 3, 5, 1, 3, 5] Bien sur, on multiplie par un entier On peut chercher si un élément est dans la liste PICON COURS INFORMATIQUE : PILES 21 / 43 On peut concaténer des listes >>> >>> >>> [1, A=[1,3,5] B=[2,8,7] A+B 3, 5, 2, 8, 7] Multiplier ! ! ! >>> A=[1,3,5] >>> A*3 [1, 3, 5, 1, 3, 5, 1, 3, 5] Bien sur, on multiplie par un entier On peut chercher si un élément est dans la liste >>> 4 in A False >>> 5 in A True PICON COURS INFORMATIQUE : PILES 21 / 43 Cas particulier de la copie La copie indépendante de B dans A se fait par >>>A=B[:] ou par la méthode copy qui est plus générale >>>A=B.copy() PICON COURS INFORMATIQUE : PILES 22 / 43 Rappels sur les matrices de numpy en Python. Sera fait TD prochain PICON COURS INFORMATIQUE : PILES 23 / 43 Sommaire 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine 5 Exercices PICON COURS INFORMATIQUE : PILES 24 / 43 Empiler Dépiler On doit stocker des données (d’un même type ?) avant traitement individuel. On empile les données en mémoire et on fait s’en fait une représentation du type pile d’assiette Les éléments sont ajoutés par le haut. PICON COURS INFORMATIQUE : PILES 25 / 43 Dans l’absolu, la mémoire est considérée comme infinie. On ne se soucie pas du nombre d’éléments empilés. En réalité on peut avoir des limitations de place et la pile peut avoir une taille maximale mais c’est toujours précisé. En particulier si on utilise un tableau de taille fixe pour stocker une pile, il faudra gérer le problème de la taille. Si on utilise une liste chaînée pour stocker une pile on peut avoir une taille qui n’est limitée que par les problèmes matériels. Exemples : PICON COURS INFORMATIQUE : PILES 26 / 43 Dans l’absolu, la mémoire est considérée comme infinie. On ne se soucie pas du nombre d’éléments empilés. En réalité on peut avoir des limitations de place et la pile peut avoir une taille maximale mais c’est toujours précisé. En particulier si on utilise un tableau de taille fixe pour stocker une pile, il faudra gérer le problème de la taille. Si on utilise une liste chaînée pour stocker une pile on peut avoir une taille qui n’est limitée que par les problèmes matériels. Exemples : pile d’une calculatrice. (taille fixe) Pile d’un processeur (taille fixe). PICON COURS INFORMATIQUE : PILES 26 / 43 Dans l’absolu, la mémoire est considérée comme infinie. On ne se soucie pas du nombre d’éléments empilés. En réalité on peut avoir des limitations de place et la pile peut avoir une taille maximale mais c’est toujours précisé. En particulier si on utilise un tableau de taille fixe pour stocker une pile, il faudra gérer le problème de la taille. Si on utilise une liste chaînée pour stocker une pile on peut avoir une taille qui n’est limitée que par les problèmes matériels. Exemples : pile d’une calculatrice. (taille fixe) Pile d’un processeur (taille fixe). Pile des données avant le passage par un bus vers le processeur (taille variable). En fait, pour un ordinateur on considère que les supports externes gèrerons le besoin en mémoire et que la mémoire est donc infinie. PICON COURS INFORMATIQUE : PILES 26 / 43 Dépiler : par qui commencer ? PICON COURS INFORMATIQUE : PILES 27 / 43 Si on commence par le premier arrivé c’est une FILE, principe de la file d’attente (QUEUE en anglais :) Appellation commune : FIRST IN FIRST OUT PICON COURS INFORMATIQUE : PILES FIFO 28 / 43 Si on commence par le dernier arrivé, c’est une PILE, principe de la pile d’assiettes (anglais : STACK) Appellation commune : FIRST IN LAST OUT FILO C’est ceci qui est au programme d’informatique. PICON COURS INFORMATIQUE : PILES 29 / 43 Une pile est donc un type particulier de liste dans lequel toute insertion ou suppression d’éléments se fait à une extrémité appelée le "dessus" ou le "sommet". PICON COURS INFORMATIQUE : PILES 30 / 43 Une pile est donc un type particulier de liste 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 : PILES 30 / 43 LES OPERATIONS PRIMITIVES SUR LES PILES Remettre la pile P à zéro ou la créer vide RAZ(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) Savoir si une pile est vide par retour d’un booléen VIDE(P) PICON COURS INFORMATIQUE : PILES 31 / 43 Exemple 1 La pile d’une calculatrice. On considère que la machine stocke toutes les données (nombre, opération, parenthèse, résultat) tant qu’elle ne peut pas calculer. Cette machine reconnaît les priorités opératoires. Décrire l’état de la pile d’une calculatrice lors du calcul : (2 + 3) × 5 + 3 × (2 + 8) = Donner les primitives utilisées. Quelle taille doit avoir la pile de calcul de la calculatrice pour pouvoir effectuer ce calcul ? PICON COURS INFORMATIQUE : PILES 32 / 43 Exemple 2 Fonctionnement d’un éditeur de texte : Les éditeurs de texte permettent l’utilisation d’une touche spécifique pour effacer le dernier caractère et ainsi de suite pour tout caractère sur une ligne. Cette touche génère un caractère spécial que l’on notera # pour cet exemple. Il y a une autre combinaison de touches pour détruire l’ensemble du contenu de la ligne. On notera @ le caractère ainsi envoyé par le clavier. L’éditeur traite la ligne de caractère à l’aide d’une pile. Décrire les états successifs de la pile lors de la frappe de la ligne abd##edeab@bedkl#2#1df PICON COURS INFORMATIQUE : PILES 33 / 43 Exemple 2 Fonctionnement d’un éditeur de texte : Les éditeurs de texte permettent l’utilisation d’une touche spécifique pour effacer le dernier caractère et ainsi de suite pour tout caractère sur une ligne. Cette touche génère un caractère spécial que l’on notera # pour cet exemple. Il y a une autre combinaison de touches pour détruire l’ensemble du contenu de la ligne. On notera @ le caractère ainsi envoyé par le clavier. L’éditeur traite la ligne de caractère à l’aide d’une pile. Décrire les états successifs de la pile lors de la frappe de la ligne abd##edeab@bedkl#2#1df Décrire les primitives mises en œuvre lors des différentes étapes. PICON COURS INFORMATIQUE : PILES 33 / 43 Sommaire 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine Mise en oeuvre par liste Piles à capacité bornée 5 Exercices PICON COURS INFORMATIQUE : PILES 34 / 43 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 : PILES 35 / 43 Remettre à zéro P : PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] Insérer x au sommet de P : PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] Insérer x au sommet de P : P.append(x) PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] 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) PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] 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() PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] 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.... PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] 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.... Élément au sommet sans dépiler : PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] 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.... Élément au sommet sans dépiler : def sommet(P): a=P.pop(P) P.append(a) return a À améliorer si on ne veut pas d’erreurs.... PICON COURS INFORMATIQUE : PILES 36 / 43 Remettre à zéro P : P=[] 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.... Élément au sommet sans dépiler : def sommet(P): a=P.pop(P) P.append(a) return a À améliorer si on ne veut pas d’erreurs.... PICON COURS INFORMATIQUE : PILES 36 / 43 • Savoir si une pile est vide PICON COURS INFORMATIQUE : PILES 37 / 43 • Savoir si une pile est vide def Vide(P): #renvoie vrai si la liste est vide return len(P)==0 PICON COURS INFORMATIQUE : PILES 37 / 43 On représente encore la pile par un tableau à une dimension de taille fixe c’est à dire des places mémoires contigues mais on a besoin d’un curseur pour savoir à quel moment s’arrête les données de la pile. Donc la pile est une liste contenant un entier et un tableau. Si les données sont de type homogène on peut utiliser le type array pour le tableau, sinon il faudra travailler avec une liste. En Python on peut considérer plusieurs méthodes pour simuler des piles à capacité bornée mais si on n’utilise pas de tableau, on ne tire pas parti du fait que les données sont contigues. La différence principale entre une pile à capacité finie et une pile à capacité infinie est qu’il faut tester si la pile n’est pas pleine lorsqu’on empile. PICON COURS INFORMATIQUE : PILES 38 / 43 Primitives d’une pile à capacité bornée Codage utilisé : une liste dont le premier élément est la taille de la pile, 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. PICON COURS INFORMATIQUE : PILES 39 / 43 Sommaire 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python 3 Empiler, dépiler 4 Mise en œuvre des piles en Python et en machine 5 Exercices PICON COURS INFORMATIQUE : PILES 40 / 43 Exercice 1. Écrire une fonction qui permet de prendre deux piles et d’empiler dans l’ordre les éléments de la seconde dans la première. PICON COURS INFORMATIQUE : PILES 41 / 43 Exercice 1. Écrire une fonction qui permet de prendre deux piles et d’empiler dans l’ordre les éléments de la seconde dans la première. Décomposer ce problème en deux parties. PICON COURS INFORMATIQUE : PILES 41 / 43 Exercice 1. Écrire une fonction qui permet de prendre deux piles et d’empiler dans l’ordre les éléments de la seconde dans la première. Décomposer ce problème en deux parties. Quelque part il faut s’avoir renverser l’ordre des éléments d’une pile. PICON COURS INFORMATIQUE : PILES 41 / 43 Exercice 1. Écrire une fonction qui permet de prendre deux piles et d’empiler dans l’ordre les éléments de la seconde dans la première. Décomposer ce problème en deux parties. Quelque part il faut s’avoir renverser l’ordre des éléments d’une pile. Complexité. Invariants de boucles Preuve de terminaison. PICON COURS INFORMATIQUE : PILES 41 / 43 Exercice 2. Écrire une fonction qui teste si deux piles sont égales. Résultat booléen. PICON COURS INFORMATIQUE : PILES 42 / 43 Exercice 3. On donne une chaîne de caractères ne contenant que des parenthèses. Utiliser une pile pour vérifier que le parenthésage est correct. Existe-t-il une autre manière de vérifier ? PICON COURS INFORMATIQUE : PILES 43 / 43