Sie sind auf Seite 1von 7

Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 !

9 37 clesio7"#a$oo%&r


1
CHAPITRE 7 :
LES FICHIERS


Dans ce chapitre nous verrons quon peut sauvegarder de faon prenne les
informations dcoulant de lexcution dun programme. Concomitamment, nous verrons
quun programme peut exploiter des donnes qui existent physiquement sur lordinateur.

I- GNRALITS
Un fichier est un ensemble dinformations homognes regroupes sous un mme nom.
En algorithmique, nous dirons quun fichier cest galement un ensemble de donnes
organises en units daccs appeles enregistrements ou articles (tous du mme type).
Un fichier est toujours enregistr sur un support externe la mmoire centrale (disque
dur, cl USB, disquette). Cest pour cela que les informations quil contient sont dites non
volatiles. Les actions les plus courantes sur les fichiers sont :
Cration : dfinir le type du fichier ainsi que son emplacement physique.
Consultation : exploiter les articles du fichier sans en modifier un seul.
Mise jour : ajouter, modifier ou supprimer des enregistrements ou des champs.
Le mode de reprsentation physique des fichiers varie dun ordinateur un autre. Et
pour cause, cette reprsentation ressortit au Systme dExploitation. Ainsi, chaque langage
de programmation gre les fichiers en fonction du systme sur lequel il est install.

II- MANIPULATION DES FICHIERS DANS UN PROGRAMME
II-1) Le type Fichier :
Pascal admet 3 classes : les fichiers typs, les fichiers non typs, les fichiers texte.
Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 ! 9 37 clesio7"#a$oo%&r


2
Remarques :
- Les fichiers typs et non typs sont des fichiers binaires, c'est--dire quils ne
contiennent pas des informations directement lisibles par ltre humain.
- La taille maximale dun fichier est limite par lespace disponible sur son support,
et sa manipulation dans un programme se fait laide dun pointeur.
II-2) Dclaration des fichiers :
Soit F un fichier physique existant sur support non volatile. Utiliser F dans un algorithme
revient lui associer une variable interne f par le biais de son chemin daccs (de F).
Il est possible que plusieurs programmes utilisent les donnes contenues dans un
mme fichier physique F. Dans un tel cas, les noms internes de F dans chacun de ces
programmes ne seront pas obligatoirement identiques. Par contre leur dclaration, si.
A- Les fichiers typs
En ce qui concerne les fichiers typs, il y a 2 faons de dclarer une variable interne f.
Syntaxe 1 : Type <identificateur_fichier>=fichier de <type_des_articles>
Var f : <identificateur_fichier>
Ou plus simplement :
Syntaxe 2 : Var f : fichier de <type_des_articles>
Ces 2 dclarations permettent au programmeur de dfinir des fichiers constitus
darticles du type quil dsire. Par exemple, si on veut dfinir un fichier qui sera constitu
uniquement de nombres entiers, on va faire : Var f : fichier de entier.
* Explications
La dclaration prcdente cre une variable interne f quon utilisera pour accder un
fichier externe F. Ce fichier F ne pourra contenir quune srie de nombres entiers tous
cods en binaire. La taille maximale de F sera fonction de lespace disponible sur le disque.
NB : On peut dfinir un fichier constitu darticles appartenant un type prdfini,
lexception du type Fichier lui-mme (un fichier ne peut pas contenir dautres fichiers).
Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 ! 9 37 clesio7"#a$oo%&r


3
B- Les fichiers non typs
Ils sont trs peu utiliss dans la programmation acadmique. Ils permettent dintroduire
dans un mme fichier des articles appartenant des types diffrents.
Syntaxe 1 : Type <identificateur_fichier>=fichier
Var f : <identificateur_fichier>
Ou plus simplement :
Syntaxe 2 : Var f : fichier
C- Les fichiers Texte
Un fichier texte est un fichier particulier ne pouvant contenir que des informations de
type texte. Il se constitue de plusieurs lignes et on le dclare laide du mot-cl Text.
Syntaxe 1 : Type <identificateur_fichier>=texte
Var f : <identificateur_fichier>
Ou plus simplement :
Syntaxe 2 : Var f : texte
II-3) Utilisation des fichiers :
A- Lassignation
On a vu que pour utiliser un fichier physique F dans un algorithme, il fallait que cet
algorithme comporte une variable fichier f. Lassociation entre f et F seffectuera donc au
moyen dun procd appel assignation, de telle sorte que les modifications apportes f
dans le programme affecteront directement F sur son support.
Syntaxe : ASSIGNER(f, chemin_dacces_F)
Remarques :
- ASSIGNER() est valable pour tous les types de fichiers (binaires ou texte).
- On peut utiliser une mme variable f pour effectuer des modifications sur 2
fichiers physiques F et G de mme type. Il suffit pour cela deffectuer une 1
re

Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 ! 9 37 clesio7"#a$oo%&r


4
assignation avec le chemin daccs de F, de travailler avec lui, puis de le fermer
et deffectuer une 2
nde
assignation avec cette fois le chemin daccs de G.
B- Louverture
Aprs lassignation il est question douvrir le fichier pour effectuer modifications, ajouts,
ou suppressions ncessaires ; ou alors pour oprer une simple consultation des donnes.
Syntaxes :
OUVRIR(f) si F est un fichier existant dj sur disque (ouverture en lecture).
REECRIRE(f) si on veut crer un fichier F qui nexiste pas encore sur disque, ou bien
qui existe dj mais dont on veut craser tout le contenu (ouverture en criture).
AJOUTER(f) si on veut ouvrir un fichier texte F en pouvant y ajouter des donnes
(uniquement en fin de fichier).
Remarques :
- OUVRIR() rend F consultable et positionne le pointeur en dbut de fichier.
- Sur un fichier texte, la primitive OUVRIR() nautorise que la lecture.
- Dans le cas o F nexiste pas sur le disque, REECRIRE() permet de crer un
fichier dont le nom et le chemin daccs sont ceux prciss pendant lassignation.
- Il peut arriver quon ouvre un fichier qui ne contient aucune donne. Le dbut de
fichier sera alors la fin de fichier. La variable boolenne Eof(f) permet tout
moment de vrifier si le pointeur sy trouve dj.
C- La lecture et la mise jour
Aprs louverture du fichier, plusieurs possibilits sont offertes (lire les informations quil
contient, en modifier quelques-unes, en supprimer certaines, ou alors en ajouter dautres).
Nous nutiliserons ces possibilits que sur les fichiers typs et sur les fichiers texte.
1) Les fichiers typs
On a vu quun fichier typ F tait constitu dun ensemble darticles tous appartenant
forcment un mme type. La lecture et la mise jour de F dans lalgorithme ncessitent
donc la prsence dune variable p du type de ces articles.
Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 ! 9 37 clesio7"#a$oo%&r


5
Syntaxes :
Lire(f, p) pour lire un article de F et insrer les donnes quil contient dans la variable p.
Ecrire(f, p) pour insrer dans F un article ayant les donnes contenues dans la variable p.
Il y a crasement si un autre article occupait dj le mme emplacement dans le fichier.
NB : aprs la lecture/criture dun article, le pointeur se positionne immdiatement sur
larticle suivant. Sil ny en a plus, la position du pointeur devient alors la fin de fichier.
2) Les fichiers texte
Le procd est presque le mme que prcdemment, sauf que le fichier texte est
considr comme un fichier typ constitu exclusivement de lignes de texte. Ainsi, notre
variable p sera obligatoirement une chane de caractres.
Syntaxes :
Lire(f, p) pour lire une ligne de F et linsrer dans la variable p.
Ecrire(f, p) pour insrer la fin de F une ligne de texte dont la valeur est contenue dans p.
Remarques :
Lire() nest possible que si on a ouvert le fichier texte en lecture avec OUVRIR().
Aprs la lecture, le pointeur se positionne immdiatement sur la ligne suivante. Sil
ny en a plus, la position du pointeur devient alors la fin de fichier.
Ecrire() nest possible que si on a ouvert le fichier texte en criture avec AJOUTER().
Pour viter les erreurs, il vaut mieux fermer F avant de changer le mode douverture.
D- La fermeture
La fermeture est une opration essentielle dans la manipulation des fichiers. Un bon
programmeur ne doit donc jamais la ngliger, car elle permet dviter les erreurs
dentre/sortie, de prserver lintgrit des donnes dun fichier, doptimiser un algorithme
en utilisant un minimum de variables internes avec un maximum de fichiers externes.
Syntaxe : FERMER(f)

Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 ! 9 37 clesio7"#a$oo%&r


6
EXEMPLE : crire un algorithme qui permet dafficher toutes les valeurs contenues dans un
fichier dentiers F et qui permet dajouter une ligne de texte dans un nouveau fichier texte G
Algorithme fichiers
Var p : entier ; ligne : chane
f : fichier de entier
g : texte
DEBUT
ASSIGNER(f, c:\entiers.txt)
ASSIGNER(g, c:\texte.doc)
OUVRIR(f)
TANT QUE NON(Eof(f)) FAIRE
Lire(f, p)
Ecrire(Nous venons de lire le nombre , p)
FINTANTQUE
FERMER(f)
Ecrire(Entrez un texte ajouter dans le second fichier)
Lire(ligne)
REECRIRE(g)
AJOUTER(g)
Ecrire(g, ligne)
FERMER(g)
FIN


Cours de Programmation par Ecclsiaste DEUDJUI (+237) 9 ! 9 37 clesio7"#a$oo%&r


7
TRAVAUX DIRIGS
1. Soit un tableau contenant 100 valeurs entires. Concevoir un algorithme qui permet de
ranger les valeurs paires dans un fichier F, et les autres dans un fichier G. Sassurer que
chacun de ces fichiers ne contienne pas 2 fois le mme nombre.
2. crire un programme qui affiche tout le contenu dun fichier texte F, puis ajoute la phrase
BIENVENUE AU CAMEROUN la fin de ce fichier.
3. Soit G un fichier externe contenant une srie de valeurs relles dont on ne connat pas le
nombre, mais dont on est sait quil est strictement infrieur 100. crire un programme
qui permet de ranger ces valeurs par ordre croissant dans un nouveau fichier externe F.
4. Soit F un fichier constitu de plusieurs enregistrements de type ETUDIANTS(matricule,
nom, prenom, age, sexe, solde). Concevoir des sous-programmes (procdures ou
fonctions) permettant de : 1) vrifier si un matri cule est prsent dans le fichier ou pas
2) compter le nombre dtudiants qui ont pour prn om une chane entre en paramtre
3) donner lge moyen des filles ayant sold leur compte 4) ajouter un nouvel tudiant
dans le fichier 5) ajouter 1 an ltudiant nomm MILLA SAMUEL.