2. Les fichiers séquentiels
et leurs traitements en pascal


2. Fichiers à accès séquentiel

2.1 Instructions Pascal/Delphi
2.2 Exercice sur l'accès séquentiel
2.3 Exercice sur l'accès séquentiel
Retour au thème fichiers

2. Fichiers à accès séquentiel

ans un fichier à accès séquentiel, les enregistrements logiques sont accessibles les uns après les autres. Pour accéder à un enregistrement fixé, il faut utiliser un algorithme de recherche séquentielle (pour accéder à l'enregistrement de rang n, il faut parcourir les n-1 précédents enregistrements).

Ci-dessous un fichier de caractères (un enregistrement logique = un caractère), ce fichier contient 13 enregistrements de taille fixe dans cet exemple (numérotés pour la lisibilité de 0 à 12) :

La flêche noire figure le pointeur de fichier. Lorsque le fichier a été rempli, le pointeur de fichier (flêche noire) est à la fin du fichier sur un enregistrement spécial noté EOF (End Of File ou fin de fichier) représenté ici par le caractère '#'. Cet EOF est une sentinelle indiquant la fin des informations contenues dans le fichiers.

Lorsque l'on "rembobine" le fichier, le pointeur de fichier se retrouve sur le premier enregistrement du fichier.

Les principes suivants sont adoptés pour un fichier séquentiel :
  • Il est possible d'écrire dans tout enregistrement logique, lorsque l'on écrit dans l'enregistrement spécial EOF, celui-ci est alors repoussé d'une case.

  •  
  • Il est possible de lire dans tout enregistrement logique sauf dans l'enregistrement spécial EOF dont la tentative de lecture provoque la fin de l'action de lecture.
  • Chaque lecture d'un enregistrement déplace le pointeur de fichier d'une case; le pointeur de fichier "pointe" vers la case suivante.
 

Ci-dessous pour lire le caractère 'L' de l'enregistrement que nous avons numéroté 5, il faut avoir lu les ebregistrements P, V , Y, B et Q. Dans ce cas de figure le pointeur est sur l'entregistrement contenant le caractère 'L' prêt à être lu (la lecture de l'enregistrement fera automatiquement passer le pointeur sur l'enregistrement suivant ici le n°6 contenant 'Y') :


 



2.1 Instructions Pascal/Delphi

n fichier de d'éléments de type T en pascal s'écrit :   file of  T. Ci-dessous un rappel des procédures et des fonctions de base du Pasca/Delphi permettant de travailler avec des fichiers séquentiels de type  file of  T.
 
FileSize ( F  : file of  T ) renvoie la taille d'un fichier (le nombre d'enregistrements qu'il contient).
FilePos ( F  : file of   T ) renvoie la position courante du pointeur de fichier.
AssignFile ( var F : file of  T ; Nom : string ) assignation logique d'un identificateur pascal (var F) à un fichier à créer ou déjà créé (Nom).
Reset ( var F : file of  T )
  • ouvre un fichier déjà existant sur le disque,
  • remet le pointeur de fichier au début.
Rewrite ( var F : file of  T )
  • crée un fichier sur disque (structure physique), puis ouvre ce fichier,
  • efface un fichier déjà existant et remet le pointeur au début.
CloseFile (var F : file of  T ) ferme un fichier déjà ouvert par Reset ou Rewrite
Eof (  F : file of  T ) renvoie true si le pointeur est sur l'EOF false sinon.
Read ( var F : file of  T ; x : T ) lecture dans le fichier F de l'enregistrement  sur lequel se trouve le pointeur, puis transfert du contenu de l'enregistrement dans la variable x.
Write ( var F : file of  T ; x : T ) écriture dans le fichier F dans l'enregistrement sur lequel se trouve le pointeur, du contenu de la variable x.
Erase (  var F : file of  T  ) efface physiquement un fichier disque.
Rename (  var F : file of  T ; NewNom : string ) renomme physiquement un fichier disque.



2.2 Exercice sur l'accès séquentiel

n propose un fichier de 13 caractères sur le disque C:\FicheCarac:

On demande de compléter le programme suivant :

var

Fichier :  file of char ;
Car  : char ;
begin
AssignFile ( Fichier ,'C:\FicheCarac') ;
...........
end.
Sachant que la partie manquante doit lire séquentiellement tout le contenu de ce fichier et afficher à l'écran le caractère lu à chaque lecture d'enregistrement.
 



2.3
Fonctionnement de l'assistant



our vous aider l'assistant contient une interface de composition de lignes de programme manquantes :

Il suffit de sélectionner avec la souris une instruction dans la liste du bas :

Le bouton "valider votre réponse" vous permet de tester vos choix, la réponse exacte si vous ne l'avez pas obtenue de par vous-même se déclenche avec le bouton "voir solution"

Exemple de réponse fausse
var
Fichier :  file of char ;
Car  : char ;
begin
AssignFile ( F ,'C:\FicheCarac') ;
end.

Les icônes du mode ajout de lignes autorisent le remplacement, l'insertion, l'ajout à la fin et la suppression d'une ligne de la liste de vos instructions de code source en cours de composition :