Jusqu'après les objets utilisé dans nos algorithmes (objet simple tableau) n'ont qu'une durée de vie brève. Leur existence est limitée à la période d'exécution du programme dont il constitue l'environnement (parce qu'ils sont situés en mémoire centrale).
Ces informations ne pouvaient provenir que de deux sources:
- Elles étaient inclues dans l'algorithme par le programmeur, exemple: a←1.
- Elle étaient introduites lors de l'exécution par l'utilisateur, exemple lire(a).
- Et pourtant il existe plusieurs applications pour lesquelles les informations traitées doivent être conservées bien au-delà de la durée d'exécution du programme, exemple: la gestion du courrier, la gestion du personnel, la gestion des comptes des clients, la gestion des vols d'une compagnie de voyage.
Le type fichier va nous permettre de manipuler des informations situées sur des supports externes, exemple: le disque dur, le CD, la disquette.
Définition et déclaration d'un fichier
Un fichier est une collection d'information structuré en unité d'accès appelée article ou enregistrement qui sont tous de même type.
Un fichier est toujours conservé sur un support externe à la mémoire centrale.
Déclaration du type fichier:
type article=enregistrement
champ1 : type1
champ2 : type2
..............
champn : typen
fin enregistrement
F_article = fichier de article
Exemple:
Type Etudiant = enregistrement
code : chaîne
nom : chaîne
prénom : chaîne
note : réel
fin enregistrement
F_Etudiant = fichier de Etudiant
Opération sur les fichiers
Les opérations avec les objets de type ficher sont:
- La création: Consulter un fichier consiste à épuiser une partie des informations qu'il contient sans toute fois y apporter des modifications.
- La mise à jour: Elle consiste à modifier le contenu d'un fichier, à ajouter un nouvel élément dans le fichier, supprimer un élément du fichier.
Lors du traitement d'un fichier l'algorithme doit assurer le contrôle de ce fichier à l'aide d'une primitive d'ouverture de fichier, soit en lecture, soit en écriture, soit en lecture/écriture.
Ouverture d'un fichier en lecture
Syntaxe:
F: fichier
ouvrirL(F)
Sémantique:
L'exécution de cette instruction permet de lire les enregistrements dans le fichier F.
Ouverture du fichier en écriture
Syntaxe:
OuvrirE(F)
Sémantique:
L'exécution de cette instruction permet d'écrire des enregistrements dans le fichier F.
Ouverture d'un fichier en lecture/écriture
Syntaxe:
Ouvrir(F)
Sémantique:
L'exécution de cette instruction permet une utilisation du fichier en écriture et ou lecture.
Fermeture d'un fichier
A la fin de traitement du fichier l'algorithme doit indiquer qu'il n'a plus besoin du fichier F en effectuant sa fermeture au moyen d'une primitive donc la syntaxe est:
Fermer(F)
L'exécution de cette instruction complète le fichier par une marque de fin en cas de création du fichier.
Traitement d'un fichier
Traitement d'un fichier en lecture
F: fichier
val : article
lire(F, val)
Sémantique:
L'exécution de cette instruction permet d'introduire la valeur d'un ensemble de F dans la variable val.
Traitement d'un fichier en écriture
Syntaxe:
écrire(F, val)
Sémantique:
L'exécution de cette instruction permet d'introduire la valeur de val dans le fichier F.
Traitement de fin de ficher
Syntaxe:
Fin(F)
Sémantique:
Cette instruction est une fonction booléenne qui est fausse quand aucune action de lecture est exécutée. Elle garde cette valeur tant que les exécutions successives de lire(F, val) rencontrent les articles F.
Elle prend la valeur vraie dès que l'exécution de lire(F, val) rencontre la marque de fin de fichier.
Parcours des éléments d'un fichier
Parcourir un fichier consiste à accéder à chaque article ou élément du fichier une et une seule fois. Les procédures générales de parcours d'un fichier sont:
procédure parcours1(F: fichier)
var val: article
début
ouvrir(F)
lire(F, val)
tant que non(Fin(F)) faire
action1
lire(F, val)
fin tant que
action2
fermeture(F)
fin
procédure parcours2(F: fichier)
var val: article
début
ouvrir(F)
répéter
lire(F, val)
action
jusqu'à fin(F)
fermer(F)
fin
Exemple1:
procédure creer_fichier_Etudiant(F: F_Etudiant)
var val: article
début
ouvrirE(F)
répéter
lire(val.code)
lire(val.nom)
lire(val.prenom)
lire(val.note)
si val.code≠' ' alors
écrire(F, val)
fin s i
jusqu'à val.code=' '
fermer(F)
fin
Exemple2:
Ecrire une fonction qui permet de calculer la taille d'un fichier
fonction taille_Fichier(F: fichier): entier
var val: Etudiant
cp: entier
début
ouvrirL(F)
cp ← 0
lire(F, val)
tant que nonfin(F) faire
cp ← cp+1
lire(F, val)
fin tant que
taille_Fichier ← cp
fermer(F)
fin
Problème: la gestion d'un hôtel
Les informations concernant un hôtel sont:
- Le code
- Le nom
- La ville
- L'adresse qui est un enregistrement composé de:
- La boîte postale
- Le numéro de téléphone
- La disponibilité: qui sera un booléen.
Questions:
-
- Donnez la déclaration d'un fichier d'hôtel.
- Donnez la déclaration qui permet de créer un fichier d'hôtel.
- Ecrire une procédure qui affiche la liste des hôtels disponibles.
- Ecrire une procédure qui prend en paramètre le fichier hôtel et renvoie la taille de ce fichier.
- On voudrait supprimer un hôtel du fichier:
- Ecrire une procédure qui permet de transférer les éléments du fichier dans le vecteur hôtel.
- Ecrire une procédure qui prend en paramètre le vecteur hôtel et qui supprime cet hôtel du vecteur.
Après suppression le vecteur d'hôtel est transféré à nouveau dans le fichier hôtel
-
- Ecrire une procédure qui permet d'effectuer ce transfert.
- Ecrire une fonction qui prend en paramètre le fichier d'hôtel et le code d'un hôtel puis retourne vraie si cet hôtel existe dans le fichier et faux sinon.