Académique Documents
Professionnel Documents
Culture Documents
Enseignants :
Mr Mourad HADHRI, Mr Adel DAHMANE, Mme Ons BEN ROMDHANE, Mr hichem ZORGATI, Mme Hedia JEGHAM
Le spool est défini par une liste de requêtes. Une requête d'impression est définie par:
Le nom du fichier à imprimer, qui est une chaîne de caractères.
La priorité du fichier, qui est un entier supérieur strictement à 0.
L'état de la requête, qui est un booléen (si état = vrai, la requête est valide sinon, la
requête est non valide).
Un fichier ne peut être imprimé que si l'état de sa requête est égal à VRAI.
Avant d'être imprimé, un processus "scanSpool" parcours la liste et charge les différentes
requêtes valides dans une FILE de fichiers (composée uniquement par les noms des fichiers)
en commençant par la requête la plus prioritaire (celle possédant la priorité la plus basse.
Par exemple, un fichier de priorité 1 est plus prioritaire qu’un fichier de priorité 3).
On donne les déclarations suivantes :
NB : Vous pouvez utiliser les fonctions de manipulation des Files sans les développer (Enfiler et Défiler).
Travail demandé :
1. Ecrire une procedure créerSpoolValide() qui étant donnée une liste L de requêtes, crée
une autre liste LV contenant uniquement les requêtes valides. [3,5 points]
Procedure creerSpoolvalide (L : ^celluleListe, var LV : ^celluleListe)
2. Ecrire une fonction prioritéMin() qui permet de retourner l’adresse de la requête ayant la
priorité minimale dans la liste des requêtes valides LV, cette requête sera la plus
prioritaire dans l’impression. [4 points]
Fonction prioritéMin (LV : ^celluleListe) : ^celluleListe
3. Déduire la procedure scanSpool(), qui étant donné la liste des requêtes valides LV,
permet de charger la file F par les noms des fichiers à imprimer en commençant par le
plus prioritaire. [4 points]
Procedure scanSpool (LV : ^celluleListe, var F : ^celluleFile)
4. Ecrire la procédure imprimerFichier() qui imprime tous les fichiers chargés dans la file F et
affiche le nombre de fichiers imprimés (Imprimer un fichier revient simplement à afficher
son nom et le supprimer de la file en utilisant défiler). [2 points]
Procédure imprimer (var F: ^celluleFile)
BON TRAVAIL