Chapitre 6 Structure de données : Les Enregistrements
6.1. Introduction
Contrairement aux tableaux qui sont des structures de données dont tous les éléments sont de
même type, les enregistrements sont des structures de données dont les éléments peuvent être
de type différent et qui se rapportent à la même entité.
6.2. Déclaration
Syntaxe :
Type
nom_type = enregistrement
nom_champ1 : type_champ1 ;
…
nom_champn : type_champn ;
finenreg ;
Var nom_var : nom_type ;
Exemple 1
Type
personne = enregistrement
nom : chaîne de caractères ;
prenom : chaine de caractères ;
age : entier ;
finenreg ;
Var pers1, pers2, pers3 : personne ;
Exemple 2 : Soit l’entité produit (code, libellé, quantité, prix)
Type
produit = enregistrement
code : chaîne de caractères ;
libelle : chaine de caractères ;
quantite : entier ;
prix : réel ;
finenreg ;
Var prod1, prod2 : produit ;
6.4. Manipulation d'un enregistrement
La manipulation d'un enregistrement se fait au travers de ses champs. Comme pour les tableaux,
il n'est pas possible de manipuler un enregistrement globalement, sauf pour affecter un
enregistrement à un autre de même type. Par exemple, pour afficher un enregistrement il faut
afficher tous ses champs un par un.
Les enregistrements sont déclarés et initialisés comme les tableaux.
Exemple :
37
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Type
personne = enregistrement
nom : chaîne de caractères ;
prenom : chaine de caractères ;
age : entier ;
finenreg ;
Var p1, p2 : personne ;
[Link] "Eboua" ;
[Link] "Pierre" ;
[Link] 32 ;
P2{"Onana", "Aimée", 54} ;
«
6.4.1. Accès aux champs d'un enregistrement
Alors que les éléments d'un tableau sont accessibles au travers de leur indice, les champs d'un
enregistrement sont accessibles à travers leur nom, grâce à l'opérateur "."
Syntaxe
nom_enregistrement . nom_champ /*représente la valeur mémorisée dans le champ de
l'enregistrement */
Par exemple, pour accéder à la quantité de la variable prod1, on utilise l'expression : prod1.
quantite
Les champs d'un enregistrement, tout comme les éléments d'un tableau, sont des variables à qui
on peut faire subir les mêmes opérations (affectation, saisie, affichage, …).
Exemple :
Programme de saisie des données concernant les personnes pers1 et pers2, puis affichage de la
différence d'âge entre ces deux personnes
Algorithme saisie_donnees ;
Type
personne = enregistrement
nom : chaîne de caractères ;
prenom : chaîne de caractères ;
age : entier ;
finenreg ;
Var pers1, pers2 : personne ;
Début
Ecrire ("Entrez le nom puis l’âge de la personne 1") ;
Lire ([Link], [Link]) ;
Ecrire ("Entrez le prénom de la personne 1") ;
Lire ([Link]) ;
Ecrire ("Entrez le nom puis l'âge de la personne 2") ;
Lire ([Link], [Link]) ;
Ecrire ("Entrez le prénom de la personne 2") ;
38
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
Lire ([Link]) ;
Ecrire ("La différence d'âge entre ", [Link], " et ", [Link], " est de : ") ;
Si [Link] > [Link] alors
Ecrire ([Link] – [Link], " ans ") ;
Sinon
Ecrire ([Link] – [Link], " ans ") ;
FinSi ;
Fin
6.4.2. L'imbrication d'enregistrements
Supposons que dans le type personne, nous ne voulions plus l'âge de la personne, mais sa date
de naissance. Une date est composée de trois variables (jour, mois, année) indissociables. Une
date correspond donc à une entité du monde réel qu'on doit représenter par un type
enregistrement à 3 champs.
Si on déclare le type date au préalable, on peut l'utiliser dans la déclaration du type personne
pour le type de la date de naissance.
Un type structuré peut être utilisé comme type pour des champs d'un autre type structuré
Type
date = enregistrement
jour: entier ;
mois: chaîne de caractères ;
annee: entier ;
finenreg ;
Type
personne = enregistrement
nom : chaîne de caractères ;
date_nais: date ;
finenreg ;
Pour accéder à l'année de naissance d'une personne, il faut utiliser deux fois l'opérateur "."
pers1.date_nais.annee
6.4.3. Les tableaux d'enregistrement
Il arrive souvent que l’on veuille traiter non pas un seul enregistrement mais plusieurs. Par
exemple, on veut pouvoir traiter un groupe de personne. On ne va donc pas créer autant de
variables du type personne qu’il y a de personnes. On va créer un tableau regroupant toutes les
personnes du groupe. Il s’agit alors d’un tableau d’enregistrements.
Const NP = 20 ; // nombre de personnes du groupe
Type
personne = enregistrement
nom: chaîne ;
age: entier ;
finenreg ;
Type
39
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine
tablepers = tableau[1..NP] de personne ;
Var groupe : tablepers ;
Chaque élément du tableau est un enregistrement, contenant plusieurs variables de type
différent. On accède à un enregistrement par son indice dans le tableau.
groupe[2] représente la deuxième personne du groupe
groupe[2].nom représente le nom de la deuxième personne du groupe
groupe[2].age représente l’âge de la deuxième personne du groupe
Exercices
Soit une classe de N étudiants. Un étudiant est caractérisé par son matricule, son nom, son
prénom, ses notes sur trois matières.
Ecrire un algorithme qui permet de calculer et afficher la moyenne de chaque étudiant. NB :
utiliser les notions d’enregistrement et tableau.
40
Algorithmique –ENSP - Humanité numérique & Art numérique ingénieur – Mme NINKO Lidwine