290 likes | 432 Views
Section XI Traitement de fichiers. Algorithmes et résolution de problèmes 18279 FGE. Contenu. Introduction Traitement interactif Traitement en batch Définitions Accès aux fichiers Ouverture / fermeture Lecture / écriture Exemples Devoir #9. Introduction.
E N D
Section XITraitement de fichiers Algorithmes et résolution de problèmes 18279 FGE
Contenu • Introduction • Traitement interactif • Traitement en batch • Définitions • Accès aux fichiers • Ouverture / fermeture • Lecture / écriture • Exemples • Devoir #9
Introduction • Les algorithmes vus à date sont interactifs • Les données sont fournies directement par l'utilisateur • Via le clavier • Les résultats sont acheminés directement à l'utilisateur • Via la console • Les résultats produits par un algorithme ne sont pas réutilisés comme données par un autre algorithme
Introduction (suite) • Un système informatique est composé de plusieurs sous-systèmes • Exemple : un système de gestion est généralement composé au minimum des sous-systèmes suivants • Paie • Comptes recevables • Contrôle d'inventaire • Les sous-systèmes sont exécutés périodiquement (ex: à chaque mois)
Introduction (suite) • Certains sous-systèmes requièrent des données des utilisateurs • Exemple: entrée des feuilles de temps • D'autres sous-systèmes utilisent comme données des résultats produits par des sous-systèmes • Exemple: calcul de la paie • Les résultats produits par un sous-système doivent être stockés afin d'être ultérieurement récupérés par un autre sous-système
Collectede données Calcul depaie Impressionde chèques Collectede données Calcul depaie Impressionde chèques Fichier Fichier Introduction (suite) • Le flux d'exécution des sous-systèmes peut être représenté par un organigramme • L'information transite d'un sous-système au suivant via des fichiers
Plusieurs sous-systèmes peuvent partager des fichiers Anciennesdonnéesde comptes Transactionsbancaires Gestionde comptesbancaires Impressionde rapport Nouvellesdonnéesde comptes État decomptes Introduction (suite) • Un sous-système peut aussi avoir comme tâche de mettre à jour le contenu de fichiers
Introduction (suite) • Le traitement différé de données stockées en fichiers est communément appelé le traitement en batch • Les données sont récupérées en entrées de fichiers • Les résultats sont stockés en sorties dans des fichiers • Le traitement en batch peut tout-de-même requérir l'assistance de l'utilisateur • Demander des informations de contrôle • Afficher des informations de contrôle
Définitions • Fichier Zone de stockage des données et/ou résultats. Un fichier contient généralement une séquence de dossiers • Canal d'accès Identificateur de fichier permettant de diriger les entrées/sorties (i.e. lectures/écritures) vers un fichier spécifique • Accès séquentiel Lecture séquentielle des dossiers d'un fichier. L'ordre de lecture des dossiers correspond à l'ordre d.apparition de ceux-ci dans le fichier
Accès aux fichiers • Deux modes d'accès possibles • Accès séquentiel • Le traitement en batch exploite couramment l'accès séquentiel • Accès direct : accéder directement à un dossier selon sa position (i.e. son index) • Les bases de données exploitent l'accès direct • Dans le cours 18279 FGE, nous nous limitons à l'accès séquentiel • Beaucoup plus simple
Accès aux fichiers (suite) • Gestion des fichiers • Le système d'exploitation (SE) est responsable de la gestion des fichiers sur l'ordinateur • Windows, Linux, XWindows, PalmOS, … • Le système de fichiers est la composante du SE assurant la gestion des fichiers • FAT32, NTFS, ext2, … • Tout logiciel exploitant des fichiers doit transiger avec le SE afin d'accéder à ces fichiers
Ouverture de fichiers • Afin d'accéder à un fichier, il faut premièrement ouvrir le fichier • On doit demander au système d'exploitation (SE) l'autorisation d'accéder à un fichier • Celui-ci s'assure que • Le fichier existe (il peut le créer au besoin) • Le fichier n'est pas présentement utilisé par un autre système • Le SE verrouille alors le fichier afin d'en assurer l'accès exclusif
Ouverture de fichiers (suite) • Le verrouillage de fichier est basé sur les canaux d'accès • Le fichier ouvert par le système d'exploitation est associé à un canal d'accès • Les opérations de lecture et/ou d'écriture seront ultérieurement dirigées vers un fichier via son canal d'accès • Dans un algorithme, un canal d'accès est identifié par un numéro
OUVRIR"DONNEES"SUR4EN LECTURE OUVRIR "DONNEES" SUR 4EN LECTURE Nom du fichier Canal d'accès Mode d'accès Ouverture de fichiers (suite) • Un fichier séquentiel peut être ouvert soit pour la lecture, soit pour l'écriture, mais pas les deux simultanément • Exemple • Ouverture du fichier DONNEES pour la lecture :
Ouverture de fichiers (suite) • Un même canal d'accès ne doit pas être associé simultanément à deux fichiers • La seconde opération de lecture sera refusée par le système d'exploitation • Un algorithme dispose généralement de plusieurs canaux d'accès • Dans LARP, les canaux 1 à 256 sont disponibles OUVRIR "DONNEES_1" SUR 3 EN LECTURE OUVRIR "DONNEES_2" SUR3EN LECTURE
OUVRIR "DONNEES" SUR 4 EN LECTURE Mode d'accès Ouverture de fichiers (suite) • Trois modes d'accès sont disponibles • LECTURE : pour lire des données du fichier • ÉCRITURE : pour écrire des résultats dans le fichier (le contenu d'un fichier existant est supplanté) • AJOUT : pour écrire des résultats à la fin d'un fichier (le contenu d'un fichier existant est préservé)
Ouverture de fichiers (suite) • Autres exemples d'ouverture de fichiers • Dès l'ouverture du fichier RESULTATS, son contenu existant est détruit • Tous résultats écrits sur le canal d'accès #2 seront le seul contenu du fichier • Le contenu existant du fichier ENREGISTREMENTS est conservé • Tous résultats écrits sur le canal d'accès #6 est ajouté à la fin du contenu du fichier avant son ouverture OUVRIR "RESULTATS" SUR 2 EN ÉCRITURE OUVRIR "ENREGISTREMENTS" SUR 6 EN AJOUT
Fermeture de fichiers • Tout fichier ouvert doit être éventuellement fermé • Afin d'indiquer au système d'exploitation (SE) qu'il peut permettre à d'autres systèmes (i.e. logiciels) d'accéder au fichier • Selon le SE, le contenu d'un fichier non fermé peut être irrémédiablement perdu • Tout algorithme doit fermer les fichiers qu'il a ouvert avant de terminer son exécution
OUVRIR "DONNEES" SUR 2EN LECTURE FERMER2 Notez qu'un canald'accès peut être réutilisé aprèsfermeture Fermeture de fichiers (suite) • Un fichier est fermé via son canal d'accès • Un fichier peut être séquentiellement ouvert à de multiples reprises OUVRIR "DONNEES" SUR 2 EN LECTURE OUVRIR "RESULTATS" SUR 3 EN ÉCRITURE … FERMER 2 FERMER 3 OUVRIR "DONNEES" SUR 2 EN LECTURE … FERMER 2 OUVRIR "DONNEES" SUR 2 EN ÉCRITURE … FERMER 2
OUVRIR "DONNEES" SUR 2EN LECTURE LIRE Nom,Numéro,Salaire DE2 FERMER2 Lecture d'un fichier • Une lecture d'un fichier se fait de la même façon qu'une lecture du clavier • Il suffit d'indiquer via quel canal d'accès lire • Une opération de lecture sur un canal d'accès associé à un fichier ouvert en mode d'écriture (ou d'ajout) est refusée • Le système d'exploitation est responsable de valider les entrées/sorties à un fichier selon son mode d'accès OUVRIR "DONNEES" SUR 2 EN LECTURE LIRE Nom, Numéro, SalaireDE 2 FERMER 2
Lecture d'un fichier (suite) • Exemple #1 : algorithme lisant le salaire des 12 employés de l'entreprise (à partir du fichier SALAIRE_EMPLOYES) et affichant la masse salariale DÉBUT \\ Accès aux données en mode lecture OUVRIR "SALAIRE_EMPLOYES" SUR 1 EN LECTURE \\ Additionner tous les salaires Total = 0 POUR NoEmp = 1 JUSQU'À 12 FAIRE LIRE Nom, Numéro, Salaire DE 1 Total = Total + Salaire FINPOUR \\ Afficher la masse salariale et fermer le fichier ÉCRIRE Total FERMER 1 FIN DémonstrationavecLARP
Lecture d'un fichier (suite) • Dans l'exemple précédent, le fichier SALAIRE_EMPLOYES doit obligatoirement contenir 12 dossiers d'employés • Généralement, on veut plutôt lire tous les dossiers du ficher, quel qu'en soit le nombre • Pour interroger un canal d'accès afin de connaître si la fin d'un fichier est atteinte OUVRIR "DONNEES" SUR 2 EN LECTURE SI FINDECONTENU(2)ALORS ÉCRIRE "Fichier vide" FINSI FERMER 2
Notez bien lanégation : tantque la fin ducontenu n'est pas atteinte Lecture d'un fichier (suite) • Exemple #2 : exemple précédent révisé afin de fonctionner indépendamment du nombre de dossiers dans le fichier DÉBUT \\ Accès aux données en mode lecture OUVRIR "SALAIRE_EMPLOYES" SUR 1 EN LECTURE \\ Additionner tous les salaires Total = 0 TANTQUE NONFINDECONTENU(1) FAIRE LIRE Nom, Numéro, Salaire DE 1 Total = Total + Salaire FINTANTQUE \\ Afficher la masse salariale et fermer le fichier ÉCRIRE Total FERMER 1 FIN
Début Ouvrir "SALAIRE_EMPLOYES"sur 1 en Lecture Total = 0 NON FINDECONTENU(1)? Non Oui Écrire Total Lire Nom,Numéro, Salaire de 1 Fermer 1 Total = Total + Salaire Fin Lecture d'un fichier (suite) • Exemple #2 (suite) : organigramme • Remarquez que laboucle ne nécessiteplus de compteur • Attention auxembranchementsOui/Non dans lacondition de laboucle
OUVRIR "RESULTATS" SUR2 EN LECTURE ÉCRIRE Nom,Numéro,Paie DANS2 FERMER2 Écriture dans un fichier • Une écriture dans un fichier se fait de la même façon qu'une écriture à l'écran • Il suffit d'indiquer via quel canal d'accès écrire • Une opération d'écriture sur un canal d'accès associé à un fichier ouvert en mode lecture est refusée • Le système d'exploitation est responsable de valider les entrées/sorties à un fichier selon son mode d'accès OUVRIR "RESULTATS" SUR 2 EN ÉCRITURE ÉCRIRE Nom, Numéro, PaieDANS 2 FERMER 2
Écriture dans un fichier (suite) • Exemple #3 : algorithme lisant les heures travaillées par les employés (à partir du fichier HEURES_TRAV) et écrivant un rapport de paie (dans le fichier RAP_PAIE) DÉBUT \\ Accès aux fichiers OUVRIR "HEURES_TRAV" SUR 1 EN LECTURE OUVRIR "RAP_PAIE" SUR 2 EN ÉCRITURE \\ Calculer la paie de chaque employé TANTQUE NONFINDECONTENU(1) FAIRE \\ Lire les données LIRE Nom, Numéro, Heures, Taux DE 1 \\ Calculer la paie de l'employé SI Heures > 40 ALORS Paie = 40 * Taux + (Heures – 40) * Taux * 1.5 SINON Paie = Heures * Taux FINSI \\ Écrire les donneés de paie ÉCRIRE Nom, Numéro, Paie DANS 2 FINTANTQUE \\ Fermer les fichiers FERMER 1 FERMER 2 FIN DémonstrationavecLARP
Devoir #9 (le dernier!) • Complétez le pseudo-code fourni avec le devoir • Algorithme de production de rapport de paie avec mise à jour des dossiers d'employés • Énoncé du devoir et fichier LARP disponible sur WebCT, via l'outil Travaux • Téléchargez la dernière version de LARP (compilation 010) • À remettre au plus tard le 12 décembre 2003 via WebCT