Rapport
Rapport
Rapport
1
Sommaire
I Introduction
II. Pile
IV. Bibliographie
2
INTRODUCTION
Les piles et files ne sont pas de nouveaux types de données mais plutôt une manière de gérer un
ensemble de données. Elles sont très souvent utiles et servent, entre autres, à mémoriser des
évènements en attente de traitement.
Il n'y a pas de structures spécifiques prévues dans les langages de programmation pour les piles ou
files. Il faut donc les créer de toute pièce sachant que la représentation en mémoire de ces structures
de données peut être, selon le besoin, statique (utilisation des tableaux) ou dynamique (utilisation
des listes).
I- Mémoire Pile
Quand on vous dit pile penser directement à une pile d’assiettes qu’il faut manipuler avec attention
pour éviter les dégâts.
Une pile est un ensemble de valeurs ne permettant des insertions ou des suppressions qu’a une seule
extrémité, appelée sommet de la pile.
Empiler un objet sur une pile P consiste à insérer cet objet au sommet de P (dans la pile d’assiettes
une nouvelle assiette ne peut être ajoutée qu’au-dessus de celle qui se trouve au sommet) ;
Dépiler un objet de P consiste à supprimer de P l'objet placé au sommet (dans la pile d’assiettes
seule peut être retirée celle qui se trouve au sommet). L'objet dépilé est retourné comme résultat du
traitement.
Sommet
3
Une propriété remarquable des piles est qu'un objet ne peut être dépilé qu'après avoir dépilé tous les
objets qui sont placés "au dessus" de lui, ce qui fait que les objets quittent la pile dans l'ordre
inverse de leur ordre d'arrivée. Pour cette raison, une pile est aussi appelée structure LIFO (Last In,
First Out) ou (dernier arrivé, premier sorti)
En informatique une pile sert essentiellement à stocker des données qui ne peuvent pas être traitées
immédiatement, car le programme a une tâche plus urgente ou préalable à accomplir auparavant. En
particulier les appels et retours de fonctions sont gérés grâce à une pile appelée pile d'exécution.
4
La manipulation d’une pile revient à l’appel de fonctions et procédures dites de bases définies une
seule fois et utilisées autant de fois qu’il est nécessaire.
Ces sous-algorithmes sont :
- Init_Pile : permet d’initialiser une pile à vide lors de sa création ;
- Pile_vide : pour vérifier si une pile est vide ou non et savoir alors s’il reste des valeurs à traiter ou
non ;
- Pile_pleine : pour vérifier s’il est possible de rajouter ou non un nouveau élément (utilisée dans le
seul cas des piles statiques) ;
- Empiler : permet d’ajouter une nouvelle valeur (envoyé en paramètre par l’appelant) à la pile (au
dessus du sommet et dans le cas d’une pile non pleine) ;
- Depiler : permet de supprimer une valeur (se trouvant au sommet de la pile) et de la renvoyer en
paramètre. Cette opération n’est possible que si la file n’est pas vide.
Une pile statique est un enregistrement à 2 cases : un tableau à hauteur maximale prévisible et un
indice entier qui pointe la dernière valeur ajoutée à la pile (sommet).
I-1-1- Déclaration
Constante
N = …. ; /* taille du tableau*/
Type
Tab = Tableau de N Type_C ; /* Type_C est le type des données enregistrées dans la pile*/
Pile = Enregistrement
T : Tab ; N
Sommet : Entier
Fin ; Pile T
2
1
2 Sommet
Note : Les données enregistrées dans la pile peuvent être des entiers, des réels, des caractères, des
chaînes de caractères, des booléens, des tableaux, des pointeurs de listes ou encore des piles ou
files.
5
Fonction Pile_vide (P : Pile) : Booleen ;
Debut
Pile_vide P. Sommet = 0;
Fin ;
Le nom de la fonction recevra le résultat de la comparaison (vrai ou faux) entre le sommet et le
zéro.
Une autre façon plus compacte d’écrire cette fonction est la suivante :
6
Quand on vous dit file penser directement à une file d’attente où chacun à son tour qu’il doit
respecter.
Queue Début
Une file est un ensemble de valeurs qui a un début (Début) et une fin (Queue).
Enfiler un objet sur une file F consiste à insérer cet objet à la fin de la file F (dans la file d’attente
un nouvel arrivant se met à la queue c.-à-d., après la personne arrivée juste avant lui Défiler un
objet de F consiste à supprimer de F l'objet placé en début de file (dans la file d’attente seule peut
être servie la personne qui se trouve en début de file). L'objet défilé est retourné comme résultat du
traitement.
En informatique une file sert essentiellement à stocker des données qui doivent être traitées selon
leur ordre d’arrivée. L’exemple le plus connu est celui de l’impression de documents reçus par une
imprimante qui imprime le premier document arrivé et termine par le dernier. Ce qui fait que les
objets quittent la pile dans l'ordre de leur ordre d'arrivée. Pour cette raison, une file est aussi appelée
structure FIFO (First In, First Out) ou (premier arrivé, premier sorti)
Comme pour les piles, la manipulation d’une file revient à l’appel de fonctions et procédures dites de
bases définies une seule fois et utilisées autant de fois qu’il est nécessaire.
Ces sous-algorithmes sont :
- Init_File : permet d’initialiser une file à vide lors de sa création ;
- File_vide : pour vérifier si une file est vide ou non et savoir alors s’il reste des valeurs à traiter ou
non ;
- File_pleine : pour vérifier s’il est possible de rajouter ou non un nouveau élément (utilisée dans le
seul cas des files statiques) ;
- Enfiler : permet d’ajouter une nouvelle valeur (envoyé en paramètre par l’appelant) à la file (après
le dernier élément de la file qui se trouve au niveau de sa queue et dans le cas d’une file non
pleine) ;
- Defiler : permet de supprimer une valeur (se trouvant au début de la file) et de la renvoyer en
paramètre. Cette opération n’est possible que si la file n’est pas vide.
Une file statique est un enregistrement à 3 cases : un tableau à hauteur maximale prévisible, un
indice entier qui pointe le premier élément insérer dans la file (Debut) et un deuxième indice entier
qui pointe la dernière valeur ajoutée (Queue).
7
Exemples :
Sachant que le tableau est indicé de 1 à N et pour une gestion simpliste des files :
II-1-1- Déclaration
Constante
N = …. ; /* taille du tableau*/ Type
Tab = Tableau de N Type_C ; /* Type_C est le type des données enregistrées dans la pile*/ File =
Enregistrement
T : Tab ;
Debut, Queue : Entier
Fin
II-1-2- Initialisation d’une file
Une autre façon plus compacte d’écrire cette fonction est la suivante :
Le nom de la fonction recevra le résultat de la comparaison (vrai ou faux) entre les indices début et
Queue.
8
II-1-4- Vérification de File pleine
Une autre façon plus compacte d’écrire cette fonction est la suivante :
Note : Bien que non utilisée dans ce cours, il existe une autre façon de considérer les piles (en
circulaire). En effet, vu qu’en dépilant c’est le Début qui se rapproche de la Queue et que les cases en
dessous du Début sont supposées devenues vides, il est possible de les réutiliser si la file est pleine
d’en haut. Il suffirait que Queue est remise à 1 et s’incrémente jusqu’à comblement des cases vides
en dessous de Début.
- .
9
BIBLIOGRAPHIE
*COURS DU PROFESSEUR DJOTIO THOMAS
10