Les fichiers

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.
  1. Ecrire une procédure qui prend en paramètre le fichier hôtel et renvoie la taille de ce fichier.
  2. 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.