TD : la fileLa file est une structure de données qui permet de stocker des éléments de même nature (on dit encore que la file est un conteneur). Le premier élément qui est entré dans la file est aussi le premier élément qui en sort. On dit que la polititque de stockage de la file est de type FIFO (First In First Out) ou encore premier entré-premier sorti. Ce modèle correspond tout à fait à la file d'attente que l'on rencontre tous les jours dans la vie courante. Description fonctionnelleVoici la description fonctionnelle d'une file sous forme de TAD.
L'opération ajouter (ou encore enfiler) a pour rôle d'ajouter un élément en queue de file et l'opération enlever (ou défiler) supprime l'élément en tête de file. Premier retourne le premier élément de la file (i.e. le premier à sortir) et est_vide indique si la file est vide ou pas. Remarque 1 : La pile et la file disposent des mêmes fonctions mais les axiomes sont fondamentalement différents. Remarque 2 : Là encore, cette spécification est indépendante de tout langage de programmation. Description logiqueIl existe de nombreuses possibilités (algorithmiques) pour réaliser une file. En particulier, nous devons choisir une représentation en mémoire de la file. Je vous propose ici deux solutions qui utilisent un tableau. Dans les deux cas, nous introduisons le concept de taille d'une file : la taille maximale de la file sera prédéfinie et ne pourra bien évidemment pas excéder la taille du tableau (appelée N). Dès lors, la file a une taille limite, nous pouvons donc modifier
la description fonctionnelle en ajoutant une nouvelle fonction : Tableau simpleC'est la solution la plus simple mais aussi la plus "lente". La tête de le file se trouve toujours à l'indice 1 du tableau. Le dernier élément entré est connu par son index d. On a toujours : d <= N où N représente la taille maximale de la pile.
A chaque fois qu'un élément est dépilé, il faut décaler tous les autres pour que le premier élément sortant soit à nouveau à l'indice 1.
Travail à faire : On veut réaliser la modélisation objet de la file. Donner les algorithmes des méthodes créer, ajouter et enlever. (Je ne vous empêche pas de faire les autres...) Tableau "circulaire"La solution précédente n'est pas satisfaisante car le décalage des éléments prend du temps alors comment s'en passer ? On utilise ce que l'on appelle un tableau "circulaire". On note p l'indice du premier élément de la file et d l'indice du dernier élément.
De quelle manière gère-t'on les indices ?
Travail à faire : On veut réaliser la modélisation objet de la file. Donner les algorithmes de TOUTES les méthodes de la classe File. Vous pouvez reprendre le modèle de la pile.
Description physiqueLa partie difficile a été faite dans la description logique. (1) Écrire uniquement la déclaration de la classe
TFile en Delphi, et non pas l'implémentation des méthodes. |