Sunday, 22 May 2016

Les fichiers texte à accès séquentiel (approche algorithmique)

1. Manipulation de fichiers :
On s’intéresse a des fichiers en texte intégral, structurés en une suite d'enregistrements et dont l’accès est séquentiel.

Exemple :

Algorithme personnel;
Type 
    tpersonne=enregistrement
       nom:chaine(15);
       age:entier;
    fin;
var
  nomFichier: fichier tpersonne;
  nomFichExterne: chaine(30);
  nomPers:chaine(15);
  comp,nbEnreg,agePers:entier;

debut
  {Première partie : Créer et remplir le fichier }
  lire(nomFichierExterne);
  nomFichier  ←   ouvrirFich(nomFichExterne,ECRITURE); {en algo on suppose OK} 
  lire(nbEnreg);{Nombre d'enregistrements à créer}
  Pour comp  ←  1 a nbEnreg faire
     lire(nomPers);
     écrireFich(nomFichier,nomPers,SDC);{SDC:caractere de controle séparateur de champs}
     lire(agePers);
     écrireFich(nomFichier,agePers,FDL);{FDL:caractère de controle fin de ligne}
  fpour;
  fermerFich(nomFichier); 

  {Deuxième partie : Lire et afficher le contenu du fichier }
  nomFichier  ←  ouvrirFich(nomFichierExterne,LECTURE); {en algo on suppose OK} 
  tant que non(finFich(nomFichier)) faire
      lireFich(nomFichier,nomPers);
      écrire (nomPers);
     lireFich(nomFichier,agePers);
     ecrire(agePers);
  ftq;
  fermerFich(nomFichier);   
Fin. 
 
2. Remarques :
  1. En algorithmique, on suppose qu'il n'y pas de problème d’indisponibilité de fichier lorsqu'il existe (en programmation la réalité est toute autre : droits d’accès).
  2. A un moment donné, on ne peut accéder qu'au champ qui se trouve en face de la tête de lecture/écriture.
  3. Après chaque lecture ou écriture, la tête est automatiquement déplacée vers  le champ suivant la donnée lue ou écrite.
  4. Lors d'une session d'ouverture de fichier en écriture ou ajout la lecture donne n'importe quoi. Idem pour une écriture en mode lecture.
  5. On ne peut affecter globalement un fichier a un autre (only une fenêtre RAM sur le fichier).



 
 

No comments:

Post a Comment

Note: only a member of this blog may post a comment.