Cette  méthode  est  plus  rapide et  plus  simple.  L’accès et le traitement des enregistrements en mémoire sont plus 
rapides que l’accès à un fichier du disque. Une fois en mémoire les données peuvent être manipulées à volonté, sans 
avoir à relire les enregistrements. Elle est préférable si la capacité mémoire de votre ordinateur le permet. Les gros 
logiciels comme les gestionnaires de bases de données relationnels chargent souvent en cache plusieurs blocs de 
fichiers pour accélérer leurs traitements. 
Tant que les supports de stockage non volatiles seront plus lents que la mémoire, c’est ainsi qu’il faudra procéder. 
3. Les enregistrements structurés 
Peut­être faudrait­il dire d’ailleurs enregistrements de types structurés, tels que vus dans le chapitre Les tableaux et 
structures. La méthode de lecture séquentielle rencontrée dans le point précédent a mis en lumière un petit problème. 
Quand vous récupérez un enregistrement, vous le récupérez en entier et c’est à vous de le découper ensuite. Pour en 
récupérer plusieurs, vous utilisez des tableaux, un pour chaque champ de l’enregistrement. 
Or dans le chapitre Les tableaux et structures vous avez pris connaissance des enregistrements de types structurés. 
Ces  enregistrements  sont  eux­mêmes  décomposés  en  champs.  Pourquoi  ne  pas  lire  et  écrire  directement  un 
enregistrement de type structuré dans un fichier ? 
  Attention : si la notation algorithmique permet la lecture et l’écriture d’enregistrements de types structurés dans 
un fichier, ce n’est pas le cas de tous les langages. Si le COBOL le fait très bien, ce n’est pas le cas de tous les 
autres,  comme  le  C  ou  Java,  tout  au  moins  tel  que  présenté  ici.  Ne  serait­ce  parce  que  dans  ces  langages  les 
longueurs des chaînes sont variables, et les nombres représentés sous forme binaire, vous devriez soit utiliser un 
fichier binaire, soit tout transformer en chaîne et justifier ces dernières à la longueur voulue. 
Pour utiliser des enregistrements structurés, vous devez préciser la taille exacte de chaque champ composant le type 
structuré. 
Type 
Structure enrpwd 
login :chaîne de 8 caractères 
pwd :chaîne de 1 caractère 
uid :chaîne de 5 caractères 
gid :chaîne de 5 caractères 
cmt :chaîne de 15 caractères 
home :chaîne de 15 caractères 
shell :chaîne de 15 caractères 
FinStruct
La  déclaration  d’un  enregistrement  ou  d’un  tableau  d’enregistrements  et  l’affectation  de  valeurs  aux  champs  sont 
expliquées dans la partie du chapitre Les tableaux et structures qui leur est consacrée. 
Pour  le  reste,  la  lecture  et  l’écriture  d’un  enregistrement  fonctionnent  à  l’identique  des  enregistrements  simples 
composés "à la main". Les mêmes fonctions sont utilisées. La nuance importante est que tous les champs sont écrits 
d’un coup, et lus d’un coup. 
q Ecrire() va rajouter un enregistrement dans le fichier, qui sera composé de tous les champs du type structuré. 
Comme la taille exacte est précisée, tout le texte est déjà correctement formaté. Du travail en moins. 
q Lire() lit un enregistrement complet, soit tous les champs du type structuré d’un coup. Après la lecture, chaque 
champ contient la bonne valeur. 
Dans les deux cas, le type structuré doit correspondre  exactement au contenu du fichier, et réciproquement, sinon, 
gare aux mauvaises surprises. L’algorithme suivant écrit un enregistrement structuré dans un fichier, puis relit ce même 
fichier et y récupère l’enregistrement dans une autre variable de même type. 
Programme FicEnreg 
Var 
maligne,recup :enrpwd 
fic :fichier séquentiel 
Début 
maligne.login←"toto" 
pwd←"x" 
uid←"1001" 
gid←"415" 
... 
/* Ecriture */ 
- 5 -
© ENI Editions - All rigths reserved - Jonifar lina
159
Précédent

- 159/220

Suivant