COURS INFORMATIQUE : PILES

publicité
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
Téléchargement