I.N.S.F.P « Bensabeur Afif » de Mostaganem Module :Algorithme Responsable : Mr

I.N.S.F.P « Bensabeur Afif » de Mostaganem Module :Algorithme Responsable : Mr BENSAHA Cours n°9: Type Fichier 1) Définition: Un fichier est un ensemble structuré de données de même type, nommé et enregistré sur un support lisible par l'ordinateur (disque dur, disquette, flash disque, CD Rom, ... etc). Un fichier peut contenir des caractères (fichier textes), des programmes, des valeurs (fichier de données). 2) Organisation des fichiers: Les blocs de données formant un fichier sont enregistrés les uns à la suite des autres, de façon linéaire. Pour accéder (lire ou modifier) à un bloc (un enregistrement), nous devons tout d'abord le localiser, c'est-à-dire le pointer. Le pointeur de fichier est un entier qui indique à partir de quelle position (ou adresse) du fichier la prochaine fonction d'entrée/sortie doit s'effectuer. Exemple1: Placez le pointeur du fichier sur le premier bloc c'est-à-dire l'enregistrement d'adresse 0. On dit aussi qu'on remet à zéro le pointeur du fichier (ReSet). (enregistrement 0) (enregistrement 1) (enregistrement 2) ... (enregistrement n-1) Pointeur Pointer signifie « faire référence à ». La valeur d'un pointeur peut changer : cela ne signifie pas que l'objet ou le bloc pointé a été déplacé dans le fichier, mais plutôt que le pointeur pointe sur un autre bloc. 3) Déclaration d’u fichier: La structure d'un fichier se déclare soit comme un type prédéfini soit comme un nouveau type utilisateur. Son utilisation se fait à travers une variable (un identificateur du fichier) de type: Le type prédéfini ou le nouveau type déclaré. En Algorithmique Tableau de déclaration des nouveaux types Type nom_fichier = Fichier de type_composants type_composants : représente le type des composants du fichier. Ces composants doivent être de même type. Exemple: entiers, réels, enregistrements, etc Codification des Objets: Objet Type/Nature Rôle nom_logique nom_fichier Fichier pour… Nous désignons par le mot "logique" utilisé dans l'appellation de l'objet, une variable utilisée seulement dans le programme, il est aussi appelé nom_interne. Nous allons voir par la suite qu'il y a un autre objet que nous allons déclarer et que nous allons nommé nom_physique appelé aussi nom_externe, car cette variable concerne le nom du fichier sur le support externe de stockage (disque dur, Flash Disk, ...etc). En Algo Type nom_fichier = Fichier de type_composants ; VAR nom_logique: nom_fichier; Nous voulons saisir et enregistrer les notes des élèves d'une classe dans un fichier de réels. Question: Déclarez (en algorithmique et en Pascal) la structure de fichier adéquate: Type notes_eleves = Fichier De Réel ; Var notes : notes_eleves; Au lieu de sauvegarder seulement les notes des élèves, nous proposons d'enregistrer dans un fichier appelé CARNET, la fiche de renseignements et les notes de chaque élève. Une fiche de renseignements comporte les informations suivantes: –Nom et prénom, –Sexe (F ou G), –Date de naissance, Les notes sont: note1, note2 et note3. Nous remarquons que cette fiche comporte des données de différents types (chaîne de caractères, caractères, réels, ... etc). La structure fichier n'accepte que des données de même type. Dans ce cas, nous devons utiliser le type enregistrement. TYPE { déclaration de l'enregistrement } Fiche =enregistrement nom_prénom: Chaîne[30]; sexe: Caractère; date_naissance: Chaîne; note1,note2,note3: Réel; Fin; {déclaration du fichier} VAR Carnet : Fichier de Fiche; 4) Traitement sur les fichiers: Etape1: Association (ou Assignation) Les données du fichier seront enregistrées sur un support externe comme un flash disque, un disque dur ou tout autre support d'entrée/sortie. Ce fichier doit avoir un nom et de préférence une extension. Ce nom de fichier est appelé le nom externe ou le nom physique. Nous avons vu que dans le programme, la variable déclarée dans le tableau de déclaration des objets, pour l'utilisation du fichier, représente le nom interne ou le nom logique du fichier. nom_externe ou nom_physique : c’est le nom du fichier pour le système d’exploitation considéré, par exemple: fichier_eleve.dat N.B: Un fichier.dat est un fichier de données (data) nom_interne ou nom_logique : c’est le nom du fichier déclaré et utilisé par l'algorithme ( programme), par exemple: élève Nous constatons que pour un fichier il existe deux noms (un nom interne et un nom externe). Il faut donc, avant d'utiliser un fichier, relier ou encore associer son nom logique au nom physique du fichier par la commande <Associer> (en Pascal ASSIGN). Syntaxe Algorithmique Pascal Associer (nomlogique, nomphysique); ASSIGN (nom_logique, nom_physique); La syntaxe algorithmique: Assigner (nomlogique, nomphysique) Exercice: Associez, la variable logique élève du fichier de type carnet de l'activité précédente, à un nom physique sachant que le fichier sera enregistré sur le disque dur "C", dans le dossier "Archive" et portera le nom de "Fichier_eleve" et l'extension dat. En algorithmique Assigner ( élève,"C:\Archive\Fichier_eleve.dat" ); En Pascal Assign (eleve,'C:\Archive\Fichier_eleve.dat'); Une fois cette assignation ou association faite, chaque fois que nous voulons communiquer avec le fichier "C:\Archive\Fichier_eleve.dat", nous l'appellerons par le nom logique "élève" qui est l'identificateur que nous avons choisi comme variable fichier. Etape 2 : Ouverture Après l'étape d'association, nous pouvons maintenant ouvrir le fichier soit en lecture, soit en écriture ou en réecriture. Pour les fichiers de données, l'ouverture peut se faire de deux façons différentes, chacune a ses caractéristiques: 1-Ouverture et création: L'instruction "Recréer" permet d'ouvrir un fichier et d'effacer son contenu (recréer le fichier), si le fichier n'existe pas, il sera créé. Syntaxe Algorithmique Pascal Recréer (nom_logique) ReWrite(nom_logique); 2- Ouverture et remise à zéro : Ouvrir un fichier existant et repositionner ou remettre à zéro (ReSet) son pointeur. Cette instruction permet l'ajout ou la modification des enregistrements. Il est à noter que le premier élément ou enregistrement d'un fichier occupe la position numéro zéro du fichier (nous commençons à compter à partir de zéro). Syntaxe Algorithmique Pascal Ouvrir (nom_logique) ReSet(nom_logique); Etape 3 : Ecriture dans un fichier L'écriture ou la modification d'une valeur ou d'un enregistrement dans un fichier se fait grâce à l'instruction <Ecrire> suivi du nom logique du fichier puis de la variable ou de la valeur à enregistrer dans le fichier. Syntaxe Algorithmique Pascal Ecrire (nom_logique, variable) Write(nom_logique,variable); { Etape1: Lecture de tous les champs de l'enregistrement } Avec info Faire Ecrire ("Donner le nom de l'élève:"); Lire (nom_prénom); Ecrire ("Donner son sexe"); Lire (sexe); Ecrire ("Donner sa date de naissance:"); Lire (date_naissance); Ecrire ("Donner sa première note:"); Lire(note1); Ecrire("Donner sa deuxième note:"); Lire(note2); Ecrire("Donner sa troisième note:"); Lire(note3); FinAvec; { Etape2: Ecriture de l'enregistrement dans le fichier } Ecrire (élève, info); Etape 4 : Lecture à partir d'un fichier La lecture d'une valeur ou d'un enregistrement du fichier se fait par l'instruction <Lire> suivi du nom logique du fichier puis de la variable à lire. Syntaxe Algorithmique Pascal Lire (nom_logique, variable) Read(nom_logique, variable); { Etape1: Lecture de l'enregistrement info à partir du fichier } Lire (élève, info) { Etape2: Ecriture des champs de l'enregistrement info de type fiche} Avec info Faire Ecrire ("Nom:",nom_prénom); Ecrire ("Sexe", sexe); Ecrire ("Date de naissance:", date_naissance);Ecrire ("Première note:", note1); Ecrire ("Deuxième note:", note2); Ecrire ("Troisième note:", note3); FinAvec; Etape 5: Fermeture d'un fichier A la fin du traitement, nous devons fermer le (ou les) fichier(s) ouvert(s). La fermeture d'un fichier spécifique se fait par l'instruction <Fermer> suivi du nom logique du fichier. Syntaxe Algorithmique Pascal Fermer (nom_logique) Close(nom_logique); Etape intermédiaire : Test de fin du fichier Au cours d'un programme, nous pouvons à tout moment tester si nous avons atteint la fin d'un fichier en lecture par la fonction booléenne <Fin_fichier> suivie du nom logique du fichier qui retourne VRAI si la fin du fichier est atteinte. Syntaxe Algorithmique Pascal Fin_fichier (nom_logique) Eof(nom_logique); V.1. 5) Les fichiers à accès direct: Définition: Un fichier est dit à accès direct si on peut accéder directement à chacun de ses éléments. Cette opération s'effectue grâce à la procédure <POINTER> (en Pascal SEEK), qui nécessite deux paramètres: Le nom_logique du fichier et le numéro d'ordre de l'élément auquel on veut accéder. Ce numéro vaut 0 (zéro) pour 1er élément. Ce qui fait que pour accéder au nième élément il faut pointer l'élément n-1. le Pointeur = 0 Pointeur = n-1 Syntaxe Algorithmique Pascal Pointer (nom_logique, numéro) Seek(nom_logique, numero); Il faut faire attention de ne pas se positionner (ou demander un élément) après la fin physique du fichier. Ce contrôle de dépassement doit être fait par le programmeur grâce à la fonction <Taille_fichier> (en Pascal FileSize ), qui permet de savoir combien d'éléments se trouvent dans un fichier. Syntaxe Algorithmique Pascal Taille_fichier (nom_logique) FileSize(nom_logique); En Algorithmique En Pascal nbg0; Tantque Non (Fin_fichier (élève) ) Faire Lire (élève, info); Si info.sexe = "G" Alors nbgnbg+1 FinSi; FinTantQue; Ecrire ("Nombre de garçons:", nbg); nbg:=0; While not (Eof (eleve)) DO Begin Read(eleve,info); If info.sexe = 'G' Then nbg:=nbg+1; End; WriteLn ('Nombre de garcons:', nbg); Elément1 Elément2 Elément3 .............. Elément n (nom_logique); Pascal Rôle Associer (nomlogique, nomphysique) Assign(nom_logique, nom_physique); Relier ou associer le nom logique d'un fichier à son nom physique Recréer (nomlogique) ReWrite Recréer le fichier, s'il n'existe pas, il sera créé Ouvrir (nom_logique) ReSet(nom_logique); Ouvrir un fichier existant et remettre à zéro son pointeur. Ecrire (nom logique, write(nom_logique, , Ecrire ou modifier une valeur Variable) variable); ou d'un enregistrement dans un fichier Lire (nom logique, Read(nom_logique, uploads/Philosophie/ cours-10-fichier-copie.pdf

  • 45
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager