Les Fichiers
Les Fichiers
Les Fichiers
1
Introduction
• La mémoire centrale est une mémoire volatile,
donc les variables utilisées dans un programme
ne sont accessibles que pendant le temps
d’exécution,
• Pour conserver les données utilisées par un
programme de façon durable pour pouvoir être
utilisées d’autres fois, il est indispensable
d’utiliser des supports de stockage non volatiles
(disque dur, CD, flash disque,…), ces support
nécessitent la structuration de données sous
forme de FICHIERS, 2
Définition
• Un fichier est un ensemble de données stockées
d’une manière permanente dans une mémoire
secondaire,
• Un fichier possède un nom physique connu par
le système d’exploitation, et un nom logique
(flot) connu par le programme,
• On distingue deux types de fichiers:
Les fichiers texte
Les fichiers binaires
3
Fichier texte et fichier binaire
• Un fichier texte est constitué de caractères, il est
organisé en lignes pouvant contenir 255 caractères
chacune, qui se terminent par le caractère de retour
à la ligne, il peut être ouvert par n’importe quel
éditeur de texte,
• Un fichier binaire peut contenir toute sorte de
données sous forme d’une suite d’octets, y compris
les données texte. Les octets d’un fichier binaire ne
sont interprétés que par des logiciels dédiés. Ils sont
lus et écrits tels quels, un fichier binaire peut être
structuré (exemple: fichier BDD) ou non structuré 4
Fichiers
structurés
Fichiers
non
structurés
5
Nom (physique) de fichier
• Le nom de fichier est représenté sous forme de
chaînes de caractères. Ce nom est connu par le
système d’exploitation et l’utilisateur; il doit
respecter les mêmes règles utilisées dans la
nomination de n’importe quel fichier
informatique.
• Exemple: sous Windows, est interdit d’utiliser les
caractères spéciaux suivants (\ / : * ? < > | "),
• Le nom de fichier peut contenir l’arborescence de
sont emplacement, ainsi que son extension,
• Exemple: C:\mesprogrammes\fichier2020.dat 6
Nom (physique) de fichier
7
Flot (fichier logique)
• Pour utiliser un fichier dans un programme, il
est indispensable de déclarer un représentant
de ce fichier dans la mémoire centrale, c’est
le Flot du fichier (fichier logique),
• Un flot est une séquence continue d’octets de
données.
8
Flot (fichier logique)
• Un flot est lié a un fichier par l’opération
d’ouverture (en langage C),
• Exemple en algorithmiques :
FFouvrir(’’Nomfichier ’’,’’ModeOuverture’’)
• Ou bien par l’assignation (en Pascal),
• Exemple en algorithmiques:
Assigner (F, ’’Nomfichier ’’)
9
Ouverture d’un fichier
Pour utiliser un fichier dans un programme il faut
l’ouvrir, on peut ouvrir un fichier en:
• Mode écriture: le programme peut envoyer des
données vers le fichier, Si le fichier n’existe pas, il
est créé. S’il existe déjà, son contenu est effacé.
• Mode lecture: les données du fichier peuvent être
entrées dans le programme
• Mode mise à jour : Si le fichier n’existe pas, il est
créé. S’il existe déjà, les nouvelles informations
sont ajoutées à la fin. 10
Mode écriture
FFouvrir("fichier2020.dat",’’ modecriture");
Ou bien : Reecrire(F)
Mode lecture
FFouvrir("fichier2020.dat",’’ modelecture");
Ou bien : Relire(F)
• Fermer un fichier
• Fin de fichier
15
Accès direct dans un fichier binaire
Modifier la position du pointeur du fichier binaire:
Positionner (F, pas, position d’origine)
La nouvelle position=Pas + position d’origine
En langage C: fseek(F, sizeof(enreg)*i, origine)
F: le nom du fichier logique(flot)
Sizeof(enreg): la taille de l’enregistrement
i: le nombre de positions
Origine: la position initiale:
• SEEK_SET : début de fichier
• SEEK_END: fin de fichier
• SEEK_CUR: position courante 16
Exemple1: accéder a l’enregistrement N°10:
fseek(F,sizeof(enreg)*(10-1),SEEK_SET);
fseek(F,sizeof(enreg)*(-1),SEEK_CUR);
17
Exercice
On souhaite réaliser un programme pour la gestion des
articles dans un magasin de notre université, pour cela
nous allons utilisé un fichier binaire d’enregistrements,
Chaque enregistrement représente un article défini
comme suit:
• Num: entier (c’est un numéro unique de l’article, il est
interdit de coder deux articles avec le même numéro)
• Desig: chaine[30] (c’est la désignation de l’article)
• Qtts: réel (c’est la quantité en stock)
• Seuil: réel (c’est le stock minimal)
exemple
12 Brosse 356 30
18
Num Desig Qtts Seuil
Le programme assure les opérations suivantes:
1) La création du fichier
2) L’ajout d’un article
3) La suppression d’un article
4) La mise a jour de la Qtts d’un article par une quantité Q
(entrée: ajouter Q / sortie: soustraire Q)
5) La recherche d’un article par son numéro
6) Afficher la liste globale des articles
7) Afficher la liste des articles déficitaires (Qtts<seuil)
Travail a faire:
Ecrire l’algorithme est le programme en C
19
Algorithme Magasin
Type Article=enregistrement
Num: entier;
Desig: chaine[30];
Qtts, Seuil: réel
Fin;
F : fichier d’enregistrements
Rep: caractère
Choix: entier
20
// 1) la création du fichier
21
// une fonction booléenne qui vérifie l’utilisation
(existence) d’un numéro d’article dans le fichier
Fonction Existe(N: entier ; F: fichier d’enregistrements):
booléen
Trouv: booléen;
Val : Article;
Début
Trouvfaux;
FFouvrir("Mag.bin",’’ModeLecture");
Tant que(Non Trouv et Non FDF(F)) faire
lire(F,Val); Si (Val.Num=N) alors Trouv vrai
FinTantQue;
Fermer(F);
Retourner Trouv;
Fin; 22
// 2) Ajout d’un article
23
// 3) suppression d’un article
Tem F
N= Num
Mag.bin
Sauv.bin Mag.bin
24
// 3) suppression d’un article
Num
Num Qtts
Qtts
Mag.bin
26
// 4) MAJ de la Qtts d’un article
Procédure MAJ_QTT(var F: fichier d’enregistrements)
N: entier; Val : Article; Typeop: caractère;q: réel;
Trouv: booléen;
Début
Trouv Faux;
Répéter Lire(N) jusq’a Existe(N,F);
FFouvrir("Mag.bin",’’ ModeLecture");
Tant que(Non Trouv) faire
Lire(F,Val);
Si (Val.Num=N) alors Trouvvrai; FinSi;
Fintantque;
Lire(Typeop);Lire(q);
Si (Typeop=‘E’ ou Typeop=‘e’) alors Val.QttsVal.Qtts+q
Sinon Val.QttsVal.Qtts-q FinSi
Positionner(F, taille(Val)*(-1),position_courante);
Ecrire(F,Val);
Fermer(F); 27
Fin;
// 5) La recherche d’un article par son numéro
28
// 6) Afficher la liste globale des articles
29
// 7) Afficher la liste des produits déficitaires
30
//procédure qui affiche le menu principal
Procédure Affichage_menu()
Début
Écrire(‘‘MENU PRINCIPAL’’);
Écrire(‘‘1: création du fichier’’);
Écrire(‘‘2: insertion d’un nouveau article’’);
Écrire(‘‘3: suppression d’un article’’);
Écrire(‘‘4: la mise à jour de la Qtt d’un article’’);
Écrire(‘‘5: la recherche d’un article’’);
Écrire(‘‘6: liste global des articles’’);
Écrire(‘‘7: liste des articles déficitaires’’);
Écrire (‘‘tapez votre choix: ’’);
Fin;
31
//Corps de l’algorithme principal
Début
Rep’o’;
Tant que (Rep=‘o’ ou Rep=‘O’) faire
Affichage_Menu(); Lire(choix)
Cas (choix) parmi
1: Création(F);
2: Ajout(F);
3: Supression(F);
4: MAJ_QTT(F);
5: Recherche(F);
6: Affichage_global(F);
7: Affichage_deficitaires(F);
Sinon écrire(‘‘choix incorrect’’);
Fin;
Écrire (‘‘voulez vous continuez tapez O/N’’); Lire(Rep); 32