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 faudraitil 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 euxmê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 seraitce 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
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 faudraitil 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 euxmê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 seraitce 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
