Nour-Eddine Oussous 30 novembre 2009 du cours File d attente : définition Réalisation Exercices Présenter une structure de données très utilisée en informatique et dans la vie courante files d attente de clients (bien disciplinés) devant un guichet. Travaux en attente d exécution dans un système de traitement par lots. Messages en attente dans un commutateur de réseau téléinformatique comme Transpac. ; file d accessibilité à des ressources partagées (imprimante). Montrer son fonctionnement. Donner une interface d utilisation. Réaliser une implémentation.
File d attente : de finition File d attente La structure de FILE Les donne es sont ajoute es par l interme diaire d un poste d e criture appele queue et pre leve es par l interme diaire d un poste de lecture appele te te. De finition I Une file d attente est une structure de donne es dynamique homoge ne avec un acce s en entre e et un acce s en sortie. I Les insertions et suppressions se font dans l ordre Premier Arrive, Premier Sorti (ou Servi), (FIFO) ajout queue - retrait te te File = structure du premier entre, premier sorti ou FIFO (First In, First Out).
États d une file Une file peut être vide : elle ne contient aucune donnée ; pleine : il n est plus possible de lui ajouter un élément. Transformations d une file Au niveau logique, on peut décomposer une file d attente en deux parties : la tête (premier élément, celui qui peut être retiré) le corps (le reste de la file). Les opérations de transformation sont au nombre de deux enfilement : ajout d un élément à la fin de la file Remarque : opération possible uniquement si la file n est pas pleine. défilement : retrait de l élément situé au début (en tête) de la file Remarque : opération possible uniquement si la file n est pas vide. Accès à un élément d une file Nommage des types Seul élément accessible d une file : celui en tête. // tetedefile ( F) : renvoie l élément qui se // trouve en t^ete de file // CU: la file n est pas vide function tetedefile ( var F: T_ FILE ): ELEMENT ; Dans la suite nous nommerons T_FILE les structures de type file d attente, et ELEMENT le type des données qu elles contiennent. Remarque : Pour accéder aux éléments situés derrière l élément en tête, nécessité de défiler la file.
sur les files Voici les entêtes des procédures et fonctions de gestion des files. Listing // estfilevide (F ) ssi F est vide function estfilevide ( const F: T_FILE ) : BOOLEAN ; // tetedefile (F )= élément situé en t^ete de F // CU : F ne doit pas ^etre vide function tetedefile ( const F: T_FILE ): ELEMENT ; // ajoute ( enfile ) x en queue de la file F // CU : F ne doit pas ^etre pleine procedure enfiler ( const x: ELEMENT ; var F: T_FILE ); // défile ( retire l élément de t^ete de) la file F // CU : F ne doit pas ^etre vide procedure defiler ( var F: T_FILE ); Le type T_FILE est à définir. Représentation contigüe à l aide d un tableau t[0..n-1] de taille N pour stocker les éléments ; et de deux indices t et q qui gardent en mémoire la tête et la queue de la file t est l indice de la tête de la file q est l indice de la queue de la file La position q est toujours vide Configuration normale F x x x x x x x x 0 1 t q Configuration circulaire F x x x x x x x x 0 1 q t Lien avec les opérations primitives F est vide t = q ; F est pleine taille(f) = N ; tetedefile(f) = F[t] ; q est incrémenté modulo N par toute opération d enfilement ; t est incrémenté modulo N par toute opération de défilement. Déclaration du type T_FILE Listing const N = <à compléter >; // taille maximale de la file type ELEMENT = <à compléter >; // type des éléments des files T_ FILE = record tete : 0..N -1; queue : 0..N -1; contenu : array [0.. N -1] of ELEMENT ; end { T_FILE }; Remarque : d autres implémentations sont possibles...
Exercices Implémenter l unité U_File Exercice 1. Écrire les procédures enfiler et defiler. 2. Écrire la fonction tetedefile qui retourne l élément se trouvant en tête de file. 3. Écrire la fonction taille qui renvoie la taille d une file. 4. Écrire les prédicats estfilevide et estfilepleine. 5. Écrire une procédure afficherfile qui affiche à l écran les éléments de la file qui lui est passée en paramètre.