TP : PileLa pile est une structure de données qui permet de stocker des éléments de même nature (on dit encore que la pile est un conteneur). On ne peut pas manipuler les élément d'un pile comme on veut : on ne peut enlever un élément que si celui-ci est au sommet de la pile (i.e. est le dernier à avoir été posé). On dit que la politique de stockage de la pile est de type LIFO (Last In First Out ou encore Dernier Entré Premier Sorti) Description fonctionnellePour information, je redonne la description fonctionnelle (spécification) du TAD de la pile :
Vous pouvez remarquer que cette spécification est indépendante de tout langage de programmation. Description logiqueIl existe de nombreuses possibilités (algorithmiques) pour réaliser une pile. En particulier, nous devons choisir une représentation en mémoire de la pile La solution la plus simple consiste à représenter la pile comme un tableau d'éléments de taille déterminée. Un indice (que l'on appelera sommet) nous permettra de connaître la position du dernier élément empilé.
Si le tableau est indexé de 1 à TAILLE_MAX (fixé, je vous le rappelle), on aura :
Le fait que la pile a désormais une taille limite nous incite
à modifier la description fonctionnelle en ajoutant une nouvelle
fonction : Voici quelques fonctions (simplifiée) de la description logique de la pile.
|
![]() |
:Choisir un composant TMemo ou TListBox : ce composant permettra "d'afficher" toute la pile. Pour manipuler les éléments de TMemo, on utilise la propriété Lines. Pour manipuler ceux d'un composant TListBox, on utilise la propriété Items.
Exemples :
Vous pouvez aussi ajouter des boutons qui donnent l'état de la pile.
(3) Écrire une nouvelle unité qui contiendra la classe TPile.
Le mot-clé array[ind1, ind2] of type_élément
permet de définir un tableau d'éléments du type type_élément.
Le plus petit indice du tableau est ind1 et le plus grand ind2.
Dans un premier temps, nous nous contenterons de stocker des entiers.
(4) Réaliser la jonction entre la fiche dessinée au (2) et la classe définie au (3). Pour cela, on définira une variable globale pile de type TPile dans la fiche (cette variable sera correctement initialisée à la création de la fiche).
Un message d'erreur devra signaler toute opération illicite (MessageDlg):
L'implémentation se fera méthode par méthode. Chaque nouvelle méthode sera testée dans la mesure du possible avant de continuer.
(5) Tester correctement le programme dans son intégralité...
(6) Modifier le programme pour que la pile puisse stocker n'importe quel type de variable. Pour cela, il existe un type particulier dénommé Variant.