Chap2_ASD2 FST LCS1
Chapitre 2 : Les enregistrements
I- Notion d’enregistrements
Les variables que nous avons, jusqu’au présent, utilisées ne se constituent que d’un seul
type de données (Entier, Réel, Caractère, etc.).
Les tableaux constituent une extension puisque nous y déclarons une variable composée de
plusieurs éléments de même type.
Un enregistrement (ou structure en C) permet de rassembler un ensemble d’éléments de
types différents sous un nom unique. On définit ainsi un type composé.
A titre d’exemple, une date, une adresse ou un nombre complexe peuvent être considérés
comme des enregistrements.
II- Déclaration des variables de type enregistrement
Syntaxe :
Type
Nom_Enreg = Enregistrement
Champ1 : type1
Champ2 : type2
Champ3 : type3
Champ n : type n
Fin enregistrement
Un enregistrement est représenté en mémoire sous forme de suite de zones contiguës qui
servent chacune à représenter les différents champs, ces zones sont de tailles différentes
puisque chaque champ a un type différent.
Exemples :
1- Déclarer un enregistrement qui permet d’identifier une adresse
TYPE
Adresse = Enregistrement
Rue : chaîne[30]
Ville : chaîne[30]
CP : entier
Fin enregistrement
VAR
AD: Adresse
Page 1 / 7
Chap2_ASD2 FST LCS1
2- Déclarer un enregistrement qui permet d’identifier un étudiant
TYPE
Etudiant = Enregistrement
Id : entier
Nom : chaîne[30]
Prenom : chaîne[30]
Niveau : entier
Moyenne : réel
Fin enregistrement
VAR
ET : Etudiant
Les champs d’un enregistrement peuvent être des variables ordinaires, des tableaux, des
pointeurs ou autres enregistrements.
III- Manipulation des variables de type enregistrement
Les enregistrements ne peuvent pas être référencés globalement dans une instruction car ils
sont composés d’éléments de type différents. Par contre, il est possible de faire référence à
chaque élément d’un enregistrement.
Pour cela, il est nécessaire de préciser le nom (identificateur) de l’enregistrement, suivi
d’un suffixe indiquant l’identificateur du champ concerné. Les deux identificateurs sont
séparés par un point.
Exemples :
• ET. Id ← 124 : affecte la valeur 124 au champ Id de l’enregistrement ET
• Ecrire ("Le nom de l’étudiant : ", ET.Nom ) : affiche le champ Nom de
l’enregistrement ET
• lire (ET. Niveau) : lit un entier qui sera affecté au champ Niveau de l’enregistrement
ET
Remarques :
1- Il est possible d’utiliser l’opérateur d’affectation entre deux enregistrements de même type
comme dans l’exemple suivant :
VAR
ET1 , ET2 : Etudiant
Page 2 / 7
Chap2_ASD2 FST LCS1
ET1. Id ← ET2. Id
ET1. Nom ← ET2. Nom
ET1 ← ET2 ↔ ET1. Prenom ← ET2. Prenom
ET1. DN ← ET2. DN
ET1. Niveau ← ET2. Niveau
2- On peut effectuer une comparaison entre 2 enregistrements de même type comme dans
l’exemple suivant :
• Si (ET1 = ET2) Alors ……
• Tantque (ET1 ≠ ET2) Faire ……
IV- Enregistrement comportant d’autres Enregistrements
Exemple :
TYPE
Date = Enregistrement
jour : entier
mois : entier
annee : entier
Fin enregistrement
Etudiant = Enregistrement
Id : entier
Nom : chaîne[30]
Prenom : chaîne[30]
DN : Date
Niveau : entier
Moyenne : réel
Fin enregistrement
VAR
ET : Etudiant
• ET.DN : représente la date de naissance correspondant à l’enregistrement ET.
• ET. DN.jour : représente le jour de naissance correspondant à l’enregistrement ET.
• ET. DN.mois : représente le mois de naissance correspondant à l’enregistrement ET.
• ET. DN.annee : représente l’année de naissance correspondant à l’enregistrement ET.
• ET.DN.jour 25 : permet d’affecter la valeur 25 au champ jour du champ DN de
l’enregistrement ET.
• Lire (ET.DN.jour, ET.DN.mois, ET.DN.annee) : permet de lire à partir du clavier les
valeurs des champs jour, mois et annee du champ DN de l’enregistrement ET.
• Ecrire ("Date de naissance de l’étudiant:" ET.Prenom, « », ET.Nom, « est »,
ET.DN.jour, "/", ET.DN.mois, "/" ,ET.DN.annee)) : permet d’afficher les valeurs des
champs jour, mois et annee du champ DN de l’enregistrement ET.
V- Tableaux d’enregistrements
Page 3 / 7
Chap2_ASD2 FST LCS1
Exemple :
TYPE
Adresse = Enregistrement
Rue : chaîne[30]
Ville : chaîne[30]
CP : entier
Fin enregistrement
Eleve = Enregistrement
Matricule : entier
Nom : chaîne[30]
Prenom : chaîne[30]
Ad : Adresse
Moy : réel
Fin enregistrement
TAB : Tableau [ 1..40] de Eleve
VAR
Classe :TAB
• L’enregistrement Eleve pourrait, par exemple, servir à représenter un élève dans une
classe. Cet élève serait défini par son matricule, nom, prénom, adresse et moyenne.
• Classe représente un ensemble de 40 élèves.
• Classe[1].nom : Représente le nom du 1er élève du tableau Classe. N.B :
Classe.nom[1] n’a pas de sens.
• Classe[i].nom : Représente le nom du ième élève du tableau Classe.
• Classe[i].x : désigne la valeur du champ x de l’ième élément du tableau Classe.
• Classe[i] : représente l’enregistrement de type élève correspondant à l’ ième élément du
tableau Classe.
Application :
1. Définir un enregistrement qui permet d’identifier un étudiant (Id, Nom, Prenom et date
de naissance, Niveau, Adresse)
2. Ecrire une procédure SAISIE qui permet de saisir les informations de N étudiants
(N≤50).
3. Ecrire une procédure RECHERCHE qui permet de chercher et d’afficher les
informations concernant un étudiant dont l’Id est saisi par l’utilisateur.
4. Ecrire le programme principal.
Page 4 / 7
Chap2_ASD2 FST LCS1
Algorithme Classe_Etudiant
TYPE
Date = Enregistrement
jour : entier
mois : entier
annee : entier
Fin enregistrement
Adresse = Enregistrement
Rue : chaîne[30]
Ville : chaîne[30]
CP : entier
Fin enregistrement
Etudiant = Enregistrement
Id : entier
Nom : chaîne[30]
Prenom : chaîne[30]
DN : Date
Niveau : entier
AD : Adresse
Fin enregistrement
TAB : Tableau [1..50] de Etudiant
VAR
Classe: TAB
N : entier
PROCEDURE SAISIE (Var T : TAB, N : entier)
VAR
i : entier
Début
Pour i de 1 à N Faire
Ecrire ("Etudiant N° : " , i )
Ecrire ("Donner l’identifiant de l’étudiant : " )
Lire (T[i].Id)
Ecrire ("Donner le nom : " )
Lire (T[i].Nom)
Ecrire ("Donner le Prénom : " )
Lire (T[i].Prenom)
Page 5 / 7
Chap2_ASD2 FST LCS1
Ecrire ("Donner la date de naissance : " )
Lire (T[i].DN.jour, T[i].DN.mois, T[i].DN.annee)
Ecrire ("Donner Le niveau : " )
Lire (T[i].Niveau)
Ecrire ("Donner l’adresse : " )
Lire (T[i].AD.Rue, T[i].AD.Ville, T[i].AD.CP)
FinPour
Fin
PROCEDURE RECHERCHE (T : TAB, N : entier)
VAR
i, identifiant , rech: entier
Début
Ecrire ("Donner l’identifiant de l’étudiant recherché :" )
Lire (identifiant)
i←1
rech ← 0
Tant que (i ≤ N et rech = 0) faire
Si ( T[i].Id = identifiant) Alors
rech ← 1
Sinon
i←i+1
Finsi
FinTantque
Si (rech = 1) alors
Ecrire("Identifiant : ",T[i].Id )
Ecrire ("Nom : ",T[i].Nom)
Ecrire ("Prénom : ",T[i].Prenom)
Ecrire ("Date de naissance :", T[i].DN.jour, "/", T[i].DN.mois, "/"
,T[i].DN.annee))
Ecrire ("Niveau : ",T[i].Niveau)
Page 6 / 7
Chap2_ASD2 FST LCS1
Ecrire ("Adresse :", T[i].AD.Rue, ",", T[i].AD.Ville, "," ,T[i].AD.CP))
Sinon
Ecrire ("Etudiant inexistant")
Finsi
Fin
DEBUT
Répéter
Ecrire("Donner le nombre d’étudiant :")
Lire(N)
Jusqu’à (N>0 et N<=50)
SAISIE (Classe, N)
RECHERCHE (Classe, N)
FIN
Page 7 / 7