Université des Sciences et Technologies de Lille
Licence Miage - Programmation 1 - TP


La laverie automatique


Comme toutes les semaines, vous vous rendez à la laverie automatique de votre quartier faire la lessive. Les machines à laver y proposent trois programmes.

   
1. Prélavage+lavage 55 min
2. Lavage sans prélavage 45 min
3. Lavage express 30 min


Il y a foule aujourd'hui et une file d'attente de clients s'est formée. Connaissant pour chaque personne le programme de lavage, on désire simuler l'évolution de la file d'attente.

Un paquetage pour la file d'attente

Pour gérer la file d'attente des clients de la laverie, on crée une structure de file. Une file est une liste chaînée munie de deux opérations élémentaires : défiler, c'est-à-dire retirer l'élément en tête de file, et enfiler, c'est-à-dire ajouter un élément à la fin de la file. Alors qu'une pile fonctionne suivant la règle LIFO (Last In, First Out), une file est donc régie par le principe FIFO (First In, First Out).

Le fichier ~touzet/ADA/Laverie/paq_file.ads contient la spécification d'un paquetage implémentant une file de clients dans la laverie. Chaque client est caractérisé par le numéro de programme choisi. À vous d'écrire le corps du paquetage. Testez-le, avant d'aborder la partie suivante.

La laverie

Écrire un programme avec une procédure Attente, qui prend en argument une file d'attente, un nombre de machines et détermine comment se déroule le passage des clients : affectation des machines et temps d'attente. Par exemple, avec une file d'attente composée de cinq clients choisissant dans l'ordre les programmes 2, 3, 1, 1 et 3, et deux machines, la procédure affiche
   Client 1: machine 2, 0 min
   Client 2: machine 1, 0 min
   Client 3: machine 1, 30 min
   Client 4: machine 2, 45 min
   Client 5: machine 1, 85 min
On accepte le principe suivant : dès qu'une machine est disponible, le client en tête de file y met son linge et démarre un nouveau programme sans délai. De plus, on suppose que, au départ, toutes les machines sont disponibles. Le parc de machines peut être représenté par un tableau stockant le temps restant avant la fin du programme courant pour chaque machine. Enfin, la file d'attente peut être détruite au fur et à mesure du traitement.

S'il vous reste du temps

Au lieu d'écrire un paquetage Paq_file spécifique, il aurait été plus judicieux de concevoir un paquetage générique. Modifiez le paquetage Paq_file dans ce sens et adaptez le programme de laverie.