section xi traitement de fichiers algorithmes et résolution de problèmes 18279 fge
Post on 04-Apr-2015
106 Views
Preview:
TRANSCRIPT
Section XI
Traitement de fichiers
Algorithmes et résolution de problèmes18279 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
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
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
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
• 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
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
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
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
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
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
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
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
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
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
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
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
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
É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
É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
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
top related