Chap 8: Les fichiers séquentiels

Documents pareils
SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Structure fonctionnelle d un SGBD

Architecture des ordinateurs. Environnement Windows : sauvegarde

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Concepts et systèmes de stockage

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Chapitre 1 : Introduction aux bases de données

Programmation impérative

Leçon 1 : Les principaux composants d un ordinateur

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

Distinguer entre «Enregistrer» et «Sauvegarder»

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

MEDIAplus elearning. version 6.6

INTRODUCTION À L INFORMATIQUE. Etsup 2012 Florian JACQUES

AUJOUR'HUI, NOUS ALLONS DÉCOUVRIR

CPLN 20/08/2009 MBO Service ICT et Pédagogie

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

Traitement de texte : Quelques rappels de quelques notions de base

La communication et la gestion de l'information

Cours Informatique 1. Monsieur SADOUNI Salheddine

Les enjeux du stockage de masse sur bande vidéo

LA SAUVEGARDE DES DONNEES SUR LES ORDINATEURS PERSONNELS

La Clé informatique. Formation Excel XP Aide-mémoire

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Base élèves : des étiquettes avec OpenOffice 2.0

Fournisseurs - Programme de paiement. Projet SAFIR SITEL, Université de Neuchâtel Décembre 2001

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Fichiers, dossiers, enregistrer et arborescence

Bernard HAMM, Évelyne LAVOISIER

Les fichiers. Chapitre 4

Micro ordinateur & Périphériques Mémoire de masse Disque dur (SOLUTION)

4D Server et les licences : fonctionnement et environnement

Éléments d'architecture des ordinateurs

DROPBOX. Stocker et partager des fichiers avec

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Guide de référence rapide sur la messagerie vocale d'avaya Distributed Office

Compression de Données - Algorithme de Huffman Document de Conception

EQUISIS E-BANKING A. "E-BANKING" VIREMENTS NATIONAUX PARAMETRAGE. Comptes centralisateurs financiers

Définition du compte courant

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Manuel d'installation

L ORDINATEUR. Les composants. La carte mère. Le processeur. Fréquence

Généralités sur les systèmes d Exploitation

COMPTABILITE SAGE LIGNE 100

CORRECTION EXERCICES ALGORITHME 1

Mon aide mémoire traitement de texte (Microsoft Word)

Le Raid c est quoi? Comment ca marche? Les différents modes RAID :

Architecture des ordinateurs

SERVICE COMMUN DE MICROSCOPIE

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Cours 14 Les fichiers

Saisir et traiter les engagements de coûts

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

inviu routes Installation et création d'un ENAiKOON ID

Généralités sur les systèmes d Exploitation

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Adoptés le 27 mars 2015 Date d'entrée en vigueur : 13 avril 2015 TABLE DES MATIÈRES

Télécharger et Installer OpenOffice.org sous Windows

Fonctionnalités d Acronis :

Comptabilité - USR. Logiciel : Comptabilité USR - Version 2,16 Documentation réalisée par JJ Gorge Trésorier Tir à l'arc le 04/04/ / 15

Les bases de données Page 1 / 8

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

MENU FEDERATEUR. Version Cabinet - Notice d installation et de mise à jour

Améliorations Sage Gestion Commerciale version 7.71 Sage Comptabilité version 7.72

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

INDEX Fonctionnement Schéma de câblage... 24

Architecture matérielle des systèmes informatiques

Installation et Réinstallation de Windows XP

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

FIDÉICOMMIS. Être en mesure de :

DÉMARRER LE PC SUR UNE CLÉ USB OU UN CD

Retrospect 7.7 Addendum au Guide d'utilisation

L adresse électronique professionnelle : Mode d emploi

Unix/Linux I. 1 ere année DUT. Université marne la vallée

COMPTABILITE SAGE LIGNE 30

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Cours Informatique Master STEP

Répondre à un courrier - Transférer un courrier 20

Introduction aux SGBDR

Domaine D1 : Travailler dans un environnement numérique évolutif

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Système de Gestion de Fichiers

Utilisation d'un réseau avec IACA

GUIDE D UTILISATION SIMPLY SYNDIC

Documentation Honolulu 14 (1)

Écrire pour internet. Comment les internautes lisent ils? La lecture à l'écran

ACTIVITÉ DE PROGRAMMATION

Conservation des documents numériques

Utilisez Toucan portable pour vos sauvegardes

Protéger les données et le poste informatique

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

WINDOWS SERVER 2003-R2

À la découverte de l ordinateur

La mémoire. Un ordinateur. L'octet. Le bit

Utiliser ma messagerie GMAIL

Tout savoir sur le clavier

UTILISATION DE LA BORNE PAR LE CLIENT

Transcription:

I. Généralités sur les fichiers Chap 8: Les fichiers séquentiels Toutes les informations que nous avons jusqu'à présent traitées étaient saisies à partir du clavier et stockées en mémoire (la RAM). Or la mémoire centrale est volatile : les informations qui ysont stockées sont détruites à la fin de l'exécution du programme et ne peuvent donc pas être réutilisées ultérieurement. A la fin de l'exécution du programme, il ne reste aucune trace de cette exécution et des résultats générés. Par ailleurs, la mémoire centrale a l'inconvénient d'être bien plus chère que la mémoire non volatile des disques durs, disquettes ou bandes magnétiques. La taille de la mémoire centrale est par conséquent très inférieure à la taille de la mémoire non volatile. Pour mémoriser de gros volumes d'information, la mémoire centrale ne suffit pas. Ainsi, dans la plupart des applications d'entreprises pour lesquelles un gros volume d'informations doit être mémorisé plus longtemps que la durée de vie du programme, les informations sont récupérées et mémorisées sur un support non volatile (disques, disquettes, bandes magnétiques ). Les informations y sont enregistrées de manière permanente dans des fichiers. Les informations ne sont plus seulement communiquées via le clavier et l'écran, mais aussi via des fichiers de support non volatiles. Il est alors possible qu'un programme ne communique avec son environnement qu'au travers des fichiers et n'utilise ni la saisie, ni l'affichage. écran mémoire centrale support non volatile fichiers clavier Un fichier est un regroupement d'informations sur un support non volatile tel que le disque Il existe de nombreux types de fichiers, qui différent en outre selon les langages. Nous distinguerons les fichiers de type «texte» et les fichiers structurés. - Les fichiers structurés permettent d enregistrer des données de même nature. Ils sont composés d enregistrements (ou articles) contenant les mêmes champs (ou rubrique). Généralement, chaque enregistrement correspond à une ligne, et les rubriques sont séparées par un séparateur qui peut être par exemple un point-virgule (format csv). - Les fichiers non structurés permettent quant à eux d entasser des informations de natures diverses. Ils ne sont pas obligatoirement structurés en enregistrements, mais ils ne peuvent être lus que de manière séquentielle. Ex : un fichier word. 1

Il existe deux grandes familles de supports pour les fichiers: - les supports adressables, sont capables de fournir l'adresse d'un emplacement de stockage. C'est le cas des disques et les disquettes. Ils permettent un accès direct (non séquentiel) à leur contenu. - les supports non adressables qui ne peuvent être accédés que de manière séquentielle. C'est le cas des bandes magnétiques, qui sont encore utilisées pour stocker les données très volumineuses (les archives) car elles sont peu chères. On appelle mode d'accès à un fichier la façon de retrouver une donnée dans ce fichier. Il existe deux modes d'accès principaux: - l'accès séquentiel: possible sur tous les types de support et avec tous les types de fichiers Pour accéder à un article particulier, on doit avoir parcouru tous les articles précédents sur le support. - l'accès direct: possible seulement sur support adressable avec des fichiers structurés On peut se positionner directement sur l'enregistrement voulu à partir de son emplacement sur le support (ou à partir d une clé). Un fichier à accès direct peut être vu en quelque sorte comme un énorme tableau stocké sur support non volatile. II. Les fichiers à accès séquentiel Un fichier séquentiel est un fichier dont les données ne sont accessibles que de manière consécutive sur le support. Leur accès est donc séquentiel. Contrairement aux éléments d'un tableau ou aux champs d'un enregistrement, les données d'un fichier séquentiel ne sont pas accessible s directement, ni par un indice, ni par un nom. Pour accéder à un enregistrement particulier, il faut parcourir le fichier séquentiel depuis le début jusqu'à trouver l'enregistrement recherché. On peut se représenter un fichier séquentiel comme une bande de papier contenant des articles cotes à cotes. Cette bande défile sous une tête de lecture qui ne peut lire qu un seul article à la fois. Pour accéder à un article, on est obligé de positionner la tête de lecture sur cet article, en faisant défiler la bande en dessous. Benth Djaneh sens du défilement Tête de lecture A. Déclaration Dans un programme, un fichier est désigné par une variable, qu'on déclare dans la section des variable s 1. Pour déclarer un fichier séquentiel structuré, il faut indiquer le type des articles (enregistrements) qui composent ce fichier. Le plus souvent les articles sont de type enregistrement, déclaré au préalable. Var: nom_fichier : fichier séquentiel de type_articles 1 C'est une variable particulière qui ne représente pas un espace de la mémoire mais qui représente un espace dans un périphérique de stockage. 2

Type temployé = enregistrement nom: chaine prénom: chaine fonction: chaine salaire: entier finenreg Var personnel: fichier séquentiel de temployé Remarque : Les fichiers texte sont aussi des fichiers à accès séquentiel. On ne déclare pas de type pour leurs données, car par définition les données d un fichier texte peuvent être de nature différente. Nous n étudierons pas ce type de fichier en algo. B. Ouverture et fermeture Comme un fichier ne se trouve pas en mémoire centrale (mais en périphérique), il n'est pas accessible directement par le programme (seule la mémoire centrale est accessible directement). Il est nécessaire de l'ouvrir avant de pouvoir l'utiliser 2. L'ouverture permet la réservation d'une mémoire tampon en mémoire centrale pour les échanges entre le disque et la mémoire centrale 3. Il existe 4 modes principaux d'ouverture d'un fichier: - en lecture pour récupérer des données du fichier dans des variables de la mémoire centrale - en écriture pour créer un ficher dans lequel enregistrer des résultats. Si fichier existe déjà, son ancien contenu est détruit - en mode ajout pour pouvoir ajouter des articles à la fin d'un fichier déjà existant (dans un fichier séquentiel, il est impossible d'ajouter un article ailleurs qu'à la fin) Ouvrir nom_fichier en mode_ouverture Ouvrir personnel en lecture Après utilisation, un fichier doit être fermé, de façon à libérer la mémoire tampon allouée lors de l'ouverture et ainsi enregistrer les dernières données du tampon non encore transférées. Fermer nom_fichier Remarque : Dans les fichiers à accès direct, il existe un autre mode d ouverture : le mode mise à jour. Il permet de modifier un article existant, ou même d ajouter un nouvel article au milieu du fichier. Ces opérations sont impossibles directement avec les fichiers à organisation séquentielle. C. Lecture et Ecriture La communication entre la mémoire centrale et le fichier peut se faire dans les deux sens: de la mémoire au fichier : c'est l'écriture ou du fichier vers la mémoire : c'est la lecture 2 L'ouverture permet d'effectuer la liaison entre le fichier logique (la variable du programme) et le fichier physique manipulé par le système d'exploitation. En programmation, notamment en C++, c'est à l'ouverture qu'on indique à quel fichier physique correspond le fichier logique. 3 Les transferts d'articles entre le support et la mémoire s'effectuent par blocs. Un bloc est l'ensemble des octets transférés par le système d'exploitation lors d'une opération d'entrée-sortie. 3

En algorithmique, toute opération de communication (écriture ou lecture) s'effectue sur un article entier, et se fait par l'intermédiaire d une variable enregistrement en mémoire centrale (le plus souvent un enregistrement). ECRITURE: ENREGISTREMENT EN RAM copie ARTICLE DU FICHIER LECTURE: ARTICLE DU FICHIER copie ENREGISTREMENT EN RAM Application: Supposons que le clavier et l'écran soient comme des fichiers. A quoi correspondent les instructions Saisir et Afficher: lecture ou écriture? - SAISIR ~ Lecture - AFFICHER ~ Ecriture LIRE L'instruction Lire permet de transférer des articles d'un fichier existant dans une (ou plusieurs) variable du programme. La variable lue doit obligatoirement être de même structure (c'est-à-dire du même type) que les articles du fichier. Le fichier lu doit obligatoirement exister. Si un seul fichier est ouvert, on peut omettre d'indiquer le nom du fichier sur lequel on lit. En revanche, si plusieurs fichiers sont ouverts simultanément, il faut obligatoirement préciser sur quel fichier on lit Lire (nom_fichier, nom_variable) Ou Lire nom_variable s il n y a qu un seul fichier ouvert *la variable est du même type que les articles Recopier dans la variable ouvrier les informations contenues dans l'article suivant /* ouvrier est un enregistrement de type temployé*/ Lire (Personnel, ouvrier) Si on essaye de lire après la fin du fichier, il va y avoir une erreur d'exécution. Pour éviter cela, il existe une fonction booléenne appelée EOF( ) (pour end of file) qui renvoie vrai lorsque la tête de lecture est en face une marque de fin de fichier. Eof ( ) devient Vrai lorsqu'on lit après le dernier article. Si plusieurs fichiers sont ouverts, on passe en paramètre le nom du fichier pour lequel on veut tester la fin. Donc avant toute opération de lecture, il faut s'assurer que la fin du fichier n'est pas atteinte. Si non eof( ) Alors Lire (Personnel, ouvrier) Sinon Afficher "Fin de fichier atteinte" FinSi Tantque non eof() /*traitement sur l'article*/ Lire ECRIRE L'instruction Ecrire permet de recopier le contenu d'une variable (contenue en mémoire centrale) à la fin du fichier (au premier article vide). Ecrire permet donc soit de créer un nouveau fichier (en mode écriture), soit d'agrandir un fichier en lui ajoutant un article à la fin (en mode ajout). 4

L'écriture se fait article par article. Donc la variable écrite dans le fichier doit obligatoirement être du type des articles. Ecrire (nom_fichier, nom_variable) *la variable est du type des articles Ou Ecrire nom_variable s il n y a qu un seul fichier ouvert Var empl: temploye Début empl.nom "Dupont" empl.prenom "Jean" Ecrire (Personnel, empl) D. Mise à jour d un fichier séquentiel Dans un fichier séquentiel, il est impossible de modifier directement un article, encore moins d ajouter un nouvel article ailleurs qu à la fin, et non plus de supprimer physiquement un article. Ces opérations de mise à jour ne peuvent se faire qu en réécrivant complètement le fichier. La mise à jour directe n est possible qu avec les fichiers à accès direct. Pour les fichiers de petite taille, voilà comment procéder : - Copier tout son contenu en mémoire centrale, par exemple dans un tableau d enregistrement. C est le chargement. - Faire les mises à jour désirées sur les données ainsi chargées en mémoire centrale - Recopier ces données mises à jour dans le fichier initial (en écrasant ainsi les anciennes données). C est la sauvegarde. Pour mettre à jour des fichiers plus volumineux qui ne peuvent être intégralement chargés en mémoire centrale, on passe par l intermédiaire d un autre fichier. III. Exemple complet Programme comptes_clients Type tcompte = enregistrement num: entier etat: caractère /*N pour normal, I pour impayé, C pour contentieux*/ solde: réel finenreg Var compte: tcompte cpteclt : fichier séquentiel de tcompte rep: caractère n, i : entier tabcompte : tableau[1..100] de tcompte //tableau d enregistrement pour le chargement en mémoire Début /* création et remplissage du fichier */ 5

Ouvrir cpteclt en écriture // on saisit les informations sur les clients et on les écrit dans le fichier Répéter // on saisit les champs de l'enregistrement Afficher "Numéro?" Saisir compte.num Afficher "etat?" Saisir compte.etat Afficher "solde?" Saisir compte.solde Afficher "Autre compte? (O/N)" Saisir rep // on recopie l'enregistrement dans le premier article vide du fichier Ecrire (cpteclt, compte) Jusqu'à rep "O" Fermer cpteclt /* lecture des articles du fichier */ // On lit les articles et les affiche tant qu'on a pas atteint la fin du fichier Tantque non eof( ) Faire* // récupérer l'article courant dans l'enregistrement en mémoire centrale Lire (cpteclt,compte) // afficher les champ de l'enregistrement Afficher "Numéro: ", compte.num Afficher "Solde: ", compte.solde Afficher "Etat:" Selon compte.etat Faire "N": Afficher "Normal" "I": Afficher "Impayé" "C": Afficher "Contentieux" FinSelon Fermer cpteclt /* ajout d'un compte client à la fin du fichier */ Ouvrir cpteclt en mode ajout // on saisit un enregistrement correspondant à l'article à ajouter Afficher "Numéro?" Saisir compte.num Afficher "etat?" Saisir compte.etat Afficher "solde?" Saisir compte.solde Afficher "Autre compte? (O/N)" Saisir rep // on recopie l'enregistrement sur le fichier Ecrire (cpteclt, compte) /*modification d'un compte client, le 5689*/ 6

// Chargement en mémoire centrale, dans le tableau d enregistrements tabcompte et modification n 0 Tantque non eof( ) Faire n n + 1 Lire (cpteclt, tabcompte[n]) Si tabcompte[n].num = 5689 Alors tabcompte[n].solde tabcompte[n].solde 500 FinSi // Sauvegarde du tableau dans le fichier Ouvrir cpteclt en ecriture // n contient le nombre d enregistrements Pour i de 1 jusqu à n Faire Ecrire (cpteclt, tabcompte[i]) FinPour //chargement n 0 Tantque non eof( ) Faire n n + 1 Lire (cpteclt, tabcompte[n]) /*Suppression d'un compte, le 1268*/ //sauvegarde (sauf le compte 1268) Ouvrir cpteclt en ecriture Pour i de 1 jusqu à n Faire Si tabcompte[i].num? 1268 Ecrire (cpteclt, tabcompte[i]) FinSi FinPour /* stockage dans un fichier séparé du numéro de tous les clients en contentieux.*/ // ajouter dans la partie déclaration des variables: // cltcont : fichier séquentiel d'entiers // fichier contenant des numéros de clients Ouvrir cltcont en écriture Tantque non eof ( cpteclt ) Faire Lire (cpteclt, compte) Si compte.etat = "C" Alors Ecrire (cltcont, compte.num) Finsi Fermer cpteclt, cltcont Fin 7