ESI Cours : Algorithmique / Pascal INTRODUCTION AUX FICHIERS Par CHERGOU B. Nou
ESI Cours : Algorithmique / Pascal INTRODUCTION AUX FICHIERS Par CHERGOU B. Nous avons vu dans les chapitres précédents comment construire des programmes et des modules qui utilisent des objets de divers types. Nous avons aussi vu l'énorme intérêt de leur sauvegarde sur un support magnétique (disquettes, disques durs) même s'ils sont inachevés ce qui nous évite de les réécrire à chaque fois que nous les utilisons et nous avons vu aussi comment créer notre propre bibliothèque de modules et programmes mis au point. Eh bien ! le fait de les stocker sur un support magnétique en donnant à chacun d'eux un nom distinct, nous avons créé des petits fichiers contenant les programmes et modules que nous avons élaborés. Cependant cela n'a pas été le cas pour les données manipulées par nos programmes et modules. Dès que l'on "sort" de notre programme ou module ou que l'on éteint notre ordinateur ces données sont perdues car elles sont stockées dans la mémoire vive de l'ordinateur, alors que pour les garder il aurait fallu les mettre sur un support magnétique de stockage, autrement dit dans un fichier. Les informations que l'on veut stocker peuvent prendre deux formes : - des données sous forme de composants (ou articles) - du texte. 1.1 FICHIER DE DONNEES C'est un ensemble de composants ou d'articles traitant du même sujet et regroupés sous un même nom. * La déclaration d'un fichier de données se fait en précisant le mot FICHIER suivi du type des composants. Ce dernier pouvant avoir n'importe quel type (élémentaire ou structuré). Exemple : Type T = TABLEAU [1..20] d'entiers F = FICHIER de T (* fichier dont chaque composant contient un tableau de type T *) correspondant = ENREGISTREMENT Nom : chaîne [ 25 ] Notel : entier FIN r = FICHIER de correspondant (* fichier dont chaque composant contient un correspondant *) Variables F1 : FICHIER d'entiers (* chaque composant contient un entier *) Enr : F (* chaque composant contient un tableau *) Repertoire : r (* chaque composant contient un correspondant *) * Déclaration en PASCAL Exemple Variable Repertoire FILE OF article ; 1.2 FICHIER TEXTE C'est une suite de caractères du jeu ASCII découpée sous forme de lignes, pouvant être de longueurs différentes. (Chaque ligne de terminant par un "retour chariot" éventuellement suivi d'un changement de ligne). CHERGOU B. page : 1 ESI Cours : Algorithmique / Pascal * la déclaration d'un fichier texte se fait simplement en précisant le type TEXTE. Exemple : Variable Livre : TEXTE * Déclaration en PASCAL Exemple: Variable Livre : TEXT; 1.3 OPERATIONS FONDAMENTALES SUR LES FICHIERS 1. Liaison entre nom de fichier interne et nom de fichier externe: Une variable fichier interne doit être reliée à un fichier externe. Cette liaison se fera grâce à une procédure d'assignation. ASSIGN ( Variable_fichier_interne , Nom_ de_fichier_externe ) ; Variable_fichier_interne : Fichier Nom_de_fichier_externe : chaîne de caractères Exemple ASSIGN (repertoire , ' A : FIC1.DAT' ) qui est identique à : FIC_EXT := 'a:FIC1.DAT' ; ASSIGN ( repertoire , FIC_EXT) ; 2. Ouverture des fichiers : Après l'étape d'assignation, un fichier doit être ouvert. Deux cas sont possibles : a) Le fichier n'existe pas, nous allons le créer. Il s'agit donc d'un nouveau fichier. Dans ce cas l'ouverture se fait à l'aide de la procédure : REWRITE ( f ) ou f est le nom du fichier logique, par exemple : REWRITE (répertoire) b) Le fichier existe déjà et nous voulons le consulter ou le mettre à jour (création de nouveaux composants, suppression de composants, modification de composants) alors l'ouverture se fera par la procédure: CHERGOU B. page : 2 ESI Cours : Algorithmique / Pascal RESET ( f) 3. Fermeture des fichiers : Lorsque le traitement d'un fichier est terminé il ne faut pas oublier de le fermer grâce à la procédure : CLOSE ( f ) 4. Lecture / Ecriture dans les fichiers : Nous pouvons lire ou écrire un composant d'un fichier à l'aide les procédures que nous connaissons déjà et qui sont WRITE et WRITELN, et READ et READLN à la seule différence que nous avons utilisé jusqu'à présent les noms de fichiers par défaut ( écran pour l'écriture et le clavier pour la lecture ). Donc pour lire ou écrire dans un fichier il suffit de préciser son nom. WRITE ( f , paramètre1 , paramètre2 ,......., paramètren ) WRITELN ( f , paramètre1 , paramètre2 ,......., paramètren ) READ ( f , paramètre1 , paramètre2 ,......., paramètren ) READLN ( f , paramètre1 , paramètre2 ,......., paramètren ) ou f : fichier exemple: READ ( repertoire, article); WRITELN (repertoire, article ); 5. Variable fenêtre ou variable tampon : Il faut toujours déclarer une variable appelée variable tampon ou variable fenêtre qui est du même type que le composant du fichier. Et , lors d'une lecture, en écrivant LIRE (F , fenêtre ) le contenu du composant se trouvant à la position fixée par le pointeur est mis dans la variable fenêtre. De la même manière, en écrivant ECRIRE ( F, fenêtre) le contenu de la variable fenêtre est écrit dans le composant se trouvant à la position fixée par le pointeur ( Voir exemple). 1.4 FICHIERS A ACCES SEQUENTIEL ET FICHIERS A ACCES DIRECT Dans les fichiers à accès séquentiel, les composants ou articles sont rangés les uns à la suite des autres de telle manière à ce que si l'on veut accéder à un composant nous sommes obligés de lire tous ceux qui se trouvent avant. Lors de la lecture dans un fichier à accès séquentiel après les étapes d'assignation et d'ouverture, le pointeur se place automatiquement sur le premier composant (position 0) , et aussitôt que vous faites une lecture le pointeur se place automatiquement sur le composant suivant Mais, faites attention ! vérifiez si ce n'est pas la fin du fichier, car tenter de lire au delà de la fin du fichier provoque une erreur qu'il faudra éviter. Cependant, dans les fichiers à accès direct, il est possible d'accéder directement à un composant. Dans ce cas la répartition des composants, lors de le création du fichier ou de leur recherche dans des opérations de consultation ou de mise à jour, se fait grâce à l'utilisation de formule de transformation de la forme F(indicatif) = Adresse physique ou adresse relative ou grâce à des tables d'index dans lesquelles on aura des couples ( indicatif , position ). Dans les fichiers à accès direct, une fois que vous avez la position du composant (qui est fournie par votre formule ou votre table index ) vous pouvez y accéder directement en utilisant la procédure SEEK ( f , POS). NOTA : Le passage d'un objet de type fichier se fait TOUJOURS par variable ( VAR). 1.5 FONCTIONS ET PROCEDURES STANDARDS DES FICHIERS TYPES (consulter la brochure « Fonctions et procédures standards de turbo Pascal ») CHERGOU B. page : 3 ESI Cours : Algorithmique / Pascal 1.6 EXEMPLES Dans les exemples détaillés suivants, nous avons privilégié la partie programmation (les algorithmes pouvant être déduits aisément de cette dernière, car il ne contiennent aucune difficulté particulière Dans les exemples qui suivent, il est question de construire un répertoire téléphonique, puis de le lister et enfin de le consulter en séquentiel puis en direct. Nous avons construit 4 modules : 1 ) création du répertoire 2 ) listage de son contenu 3 ) recherche d'un numéro de téléphone à partir du nom selon l'accès séquentiel 4 ) recherche d’un nom et du numéro de téléphone d’un correspondant à partir de sa position du dans le fichier selon l'accès direct. CREATION DU REPERTOIRE CREAFILE Rôle : Création d’un fichier de type R et dont le chemin d’accès est Chemin PROCEDURE Chemin:Chem REP : R TYPE comp = ENREGISTREMENT nom :chaîne [25] notel : entier FIN R = FICHIER de comp Chem = chaîne [50] ANALYSE : On va créer pour la première fois le fichier Rep et on enregistrera un à un les composants. PROCEDURE creafile (var rep:r;chemin:string); (* ----PROCEDURE DE CREATION DU FICHIER REPERTOIRE --------- *) var article:correspondant; (* declaration de la variable tampon (ou variable fenetre) article *) encore:char; BEGIN clrscr; writeln('Nous allons creer le fichier repertoire - tapez sur ENTREE '); readln; assign(rep,chemin); (* assignation entre REP et votre fichier *) rewrite(rep); (* ouverture du fichier que l'on va creer *) repeat clrscr; Gotoxy(20,5); write('NOM : '); readln(article.nom); Gotoxy(20,8); write('NUMERO DE TELEPHONE : '); readln(article.notel); write (rep,article); write('Y at-il encore des elements a rajouter ? (tapez O/N)'); readln(encore); until (encore = 'n') OR (encore = 'N'); close (rep); write ('Votre fichier a ete cree'); CHERGOU B. page : 4 ESI Cours : Algorithmique / Pascal readln; END; PROGRAM PRINCIPAL; uses crt; (* -----PROGRAMME PRINCIPAL UTILISANT LA PROCEDURE CREAFILE -------- *) type correspondant = RECORD nom:string[25]; notel:longint; END; r =FILE OF correspondant; var repertoire:r; (* Declaration du fichier repertoire *) Chem :string[50]; (* chem va contenir le chemin d'acces du fichier *) {$i E:\algo\modules\creafile.pro} BEGIN write('SVP ! donner le chemin uploads/Litterature/ introduction-aux-fichiers 1 .pdf
Documents similaires










-
23
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 26, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.1481MB