27
Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Embed Size (px)

Citation preview

Page 1: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Section XI

Traitement de fichiers

Algorithmes et résolution de problèmes18279 FGE

Page 2: 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

Page 3: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 4: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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)

Page 5: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 6: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Calcul depaie

Collectede données

Impressionde chèques

Collectede données

Fichier Fichier

Impressionde chèques

Calcul depaie

Page 7: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Impressionde rapport

État decomptes

– Plusieurs sous-systèmes peuvent partager des fichiers

Introduction (suite)

• Un sous-système peut aussi avoir comme tâche de mettre à jour le contenu de fichiers

Gestionde comptesbancaires

Anciennesdonnées

de comptes

Nouvellesdonnées

de comptes

Transactionsbancaires

Page 8: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 9: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Définitions

• FichierZone de stockage des données et/ou résultats. Un fichier contient généralement une séquence de dossiers

• Canal d'accèsIdentificateur de fichier permettant de diriger les entrées/sorties (i.e. lectures/écritures) vers un fichier spécifique

• Accès séquentielLecture séquentielle des dossiers d'un fichier. L'ordre de lecture des dossiers correspond à l'ordre d.apparition de ceux-ci dans le fichier

Page 10: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 11: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 12: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 13: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 14: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 :

OUVRIR "DONNEES" SUR 4 EN LECTURE

Nom du fichier Canald'accès

Moded'accès

OUVRIR "DONNEES" SUR 4EN LECTURE

Page 15: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 LECTUREOUVRIR "DONNEES_2" SUR 3 EN LECTURE

Page 16: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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é)

OUVRIR "DONNEES" SUR 4 EN LECTURE

Moded'accès

Page 17: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 ÉCRITUREOUVRIR "ENREGISTREMENTS" SUR 6 EN AJOUT

Page 18: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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

Page 19: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 LECTUREOUVRIR "RESULTATS" SUR 3 EN ÉCRITURE…FERMER 2FERMER 3

OUVRIR "DONNEES" SUR 2 EN LECTURE…FERMER 2OUVRIR "DONNEES" SUR 2 EN ÉCRITURE…FERMER 2

Notez qu'un canald'accès peut être réutilisé aprèsfermeture

OUVRIR "DONNEES" SUR 2EN LECTURE

FERMER 2

Page 20: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 LECTURELIRE Nom, Numéro, Salaire DE 2FERMER 2

OUVRIR "DONNEES" SUR 2EN LECTURE

LIRE Nom,Numéro,Salaire DE 2

FERMER 2

Page 21: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 salarialeDÉ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 1FIN

DémonstrationavecLARP

Page 22: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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 LECTURESI FINDECONTENU(2) ALORS ÉCRIRE "Fichier vide"FINSIFERMER 2

Page 23: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Lecture d'un fichier (suite)

• Exemple #2 : exemple précédent révisé afin de fonctionner indépendamment du nombre de dossiers dans le fichierDÉBUT \\ Accès aux données en mode lecture OUVRIR "SALAIRE_EMPLOYES" SUR 1 EN LECTURE \\ Additionner tous les salaires Total = 0 TANTQUE NON FINDECONTENU(1) FAIRE LIRE Nom, Numéro, Salaire DE 1 Total = Total + Salaire FINTANTQUE \\ Afficher la masse salariale et fermer le fichier ÉCRIRE Total FERMER 1FIN

Notez bien lanégation : tantque la fin ducontenu n'est pas atteinte

Page 24: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

Lecture d'un fichier (suite)

• Exemple #2 (suite) : organigramme– Remarquez que la

boucle ne nécessiteplus de compteur

– Attention auxembranchementsOui/Non dans lacondition de laboucle

Oui

Total = 0

Début

Fin

Fermer 1

Non

Écrire Total

Ouvrir "SALAIRE_EMPLOYES"sur 1 en Lecture

NON FINDECONTENU(1)?

Lire Nom,Numéro, Salaire de 1

Total = Total + Salaire

Page 25: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

É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, Paie DANS 2FERMER 2

OUVRIR "RESULTATS" SUR2 EN LECTURE

ÉCRIRE Nom,Numéro,Paie DANS 2

FERMER 2

Page 26: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

É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 NON FINDECONTENU(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 2FIN

DémonstrationavecLARP

Page 27: Section XI Traitement de fichiers Algorithmes et résolution de problèmes 18279 FGE

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