2. Fichiers à accès séquentiel
2.1 Instructions Pascal/DelphiRetour au thème fichiers
2.2 Exercice sur l'accès séquentiel
2.3 Exercice sur l'accès séquentiel
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 :
|
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') :
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 ) |
|
Rewrite ( var F : file of T ) |
|
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. |
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 ;begin
Car : char ;
AssignFile ( Fichier ,'C:\FicheCarac') ;end.
...........
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 ;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 :