1
Dr Manel SeddikiDépartement Informatique https://manel-seddiki.jimdo.com/
1. Introduction
Nous avons vu qu’avec les tableaux, nous pouvons regrouper plusieurs éléments dans la même structure. La limite ici c’est que les éléments du tableau doivent être du même type.
Prenons par exemple le cas des données d’un étudiant que nous voulons regrouper dans une structure. Si on veut stocker les notes d’un étudiant, cela est possible avec les tableaux car les notes des différents modules sont toutes du même type (Réel). Par contre, si on veut stocker d’autres informations concernant l’étudiant comme par exemple son nom (une chaine de caractère), son prénom (une chaine de caractère), son matricule (un entier), sa section (un caractère) et son groupe (un entier) , cela n’est plus possible avec les tableaux car ces éléments sont hétérogènes (de type différent). Une nouvelle structure appelée enregistrement, est plus adaptée pour représenter ce cas.
2. Définition
Un enregistrement est un objet qui permet de regrouper des éléments qui n’ont pas forcément le même type dans une même structure. Un enregistrement est défini par un ensemble d’éléments appelés champs. Ces champs peuvent être de type simple (entier, réel, booléen) ou composé (tableau)
Exemple : Un enregistrement qui permet de représenter les informations d’un étudiant
3. Déclaration d'un enregistrement
La déclaration d’une variable de type Enregistrement se fait dans la partie déclaration de l’algorithme.
Syntaxe Var
<Idf_enregistrement>= Enregistrement
<Idf_champs1> : <type_champs1> ; <Idf_champs1> : <type_champs1> ; <Idf_champs1> : <type_champs1> ; ………
<Idf_champs n> : <type_champs n> ;
2
Dr Manel SeddikiDépartement Informatique https://manel-seddiki.jimdo.com/
Fin ;
Exemple
Déclaration d’une variable Enregistrement appelée E qui représente les informations d’un étudiant
Var
E = Enregistrement
Nom : Tableau de [1..50] de Car ; Prénom : Tableau de [1..50] de Car ; Matricule : Entier ;
Section : Car ; Groupe : Entier ; Fin ;
Note importante
Il est possible de déclarer un type d’Enregistrement dans la partie déclarations des types Syntaxe
Type
<Idf_type_enregistrement>= Enregistrement
<Idf_champs1> : <type_champs1> ; <Idf_champs1> : <type_champs1> ; <Idf_champs1> : <type_champs1> ; ………
<Idf_champs n> : <type_champs n> ; Fin ;
Var
<idf_enregistrement> : <Idf_type_enregistrement> ;
Exemple Type
Etudiant = Enregistrement
Nom : Tableau de [1..50] de Car ; Prénom : Tableau de [1..50] de Car ; Matricule : Entier ;
3
Dr Manel SeddikiDépartement Informatique https://manel-seddiki.jimdo.com/
Section : Car ; Groupe : Entier ;
Notes : Tableau de[1..3] de Réels ; Fin ;
Var
E : Etudiant ;
4. Les opérations sur les enregistrements
4.1. Référence d'un champNous accédons aux champs d’un enregistrement en indiquant le nom de l’enregistrement suivi d’un point ensuite par le nom du champ
Syntaxe
<idf_enregistrement>.<idf_champs>
Exemple
E.Nom fait référence au champ Nom de l’enregistrement E E.Prénom fait référence au champ Prénom de l’enregistrement E E.Matricule fait référence au champ Matricule de l’enregistrement E
4.2. Initialisation, lecture et affichage d’un champ
Le champ d’un enregistrement peut être de type simple ou composé. S’il est de type simple, alors nous pouvons appliquer les opérations de lecture, d’affectation et d’affichage comme dans le cas des variables simples. Si le champ est de type composé (tableau ou
enregistrement), il faudra dans ce cas, descendre dans la hiérarchie jusqu'à trouver les éléments de type simple.
Exemple
Les champs de type simple :
E.Matricule 1717548963 ; / Lire (E.Matricule) ; / Ecrire (E.Matricule) ;
E.Section ‘B’ ; / Lire (E.Section) ; / Ecrire (E.Section) ;
E.Groupe 3 ; / Lire (E.Groupe) ; / Ecrire (E.Groupe) ; Les champs de type composé :
4
Dr Manel SeddikiDépartement Informatique https://manel-seddiki.jimdo.com/
Le champ E.Notes est un tableau de réels, nous ne pouvons pas faire une affectation ou une lecture directe. Il faut accéder aux éléments du tableau un par un.
E.Notes[1] 10.2 ; / Lire (E.Notes[1]) ; / Ecrire(E.Notes[1]) ;
E.Notes[2] 12.5 ; / Lire (E.Notes[2]) ; / Ecrire(E.Notes[2]) ;
E.Notes[3] 13.0 ; / Lire (E.Notes[3]) ; / Ecrire(E.Notes[3]) ;
Concernant les chaines de caractères, il est possible de les considérer comme des éléments de type simple et donc il est permis de faire l’affectation ou la lecture directement.
E.Nom "FARIDA" ; / Lire(E.Nom) ; / Ecrire(E.Nom) ;
E.Prénom "Bachtobdj" ; / Lire(E.Prénom) ; / Ecrire(E.Nom) ;
5. Emboîtement d’enregistrements
Il est possible qu’un champ dans un enregistrement soit lui-même un enregistrement.
Exemple Type
Date=Enregistrement Jour :Entier ; Mois : Entier ; Année : Entier Fin ;
Etudiant = Enregistrement
Nom : Tableau de [1..50] de Car ; Prénom : Tableau de [1..50] de Car ; Matricule : Entier ;
Section : Car ; Groupe : Entier ;
Notes : Tableau de[1..3] de Réels ; Date_naissance : Date ;
Fin ; Var
E : Etudiant ;
Pour accéder au jour, mois et année de naissance : E.Date_naissance.Jour
5
Dr Manel SeddikiDépartement Informatique https://manel-seddiki.jimdo.com/
E.Date_naissance.Mois E.Date_naissance.Année
L’imbrication peut se voir dans le schéma suivant :
6. L’instruction "Avec"
Afin d’éviter de répéter à chaque fois l’identificateur de l’enregistrement pour référencer des champs dans un bloc d’actions. Nous utilisons le mot réservé Avec
Syntaxe 1
Avec <idf_enregistrement> Faire
<Bloc d’actions>
Fait ;
Exemple
Avec E Faire Nom "Lila" ; Lire (Prénom) ;
Matricule Matricule+1 ; Avec Date_naissance Faire Jour7 ;
Mois2 ; Année2018 ; Fait ;
Fait ;
E
Nom Prénom Matricule Section Groupe Notes Date_naissance
Jour Mois Anné
6
Dr Manel SeddikiDépartement Informatique https://manel-seddiki.jimdo.com/
Syntaxe 2 : Dans le cas ou nous avons des enregistrements imbriqués Avec <idf_enregistrement, idf_enregistrement1, idf_enregistrement2 …>
Faire
<Bloc d’actions>
Fait ;
Exemple
Avec E, Date_naissance Faire Nom "Lila" ;
Lire (Prénom) ;
Matricule Matricule+1 ; Jour7 ;
Mois2 ; Année2018 ; Fait ;
Dans la syntaxe 2, idf_enregistrement est l’enregistrement racine et idf_enregistrement1, idf_enregistrement2…. Sont les enregistrements imbriqués à l’intérieur de idf_enregistrement.
Note importante
Il faut faire attention aux homonymes car ils entraient de l’ambigüité.
Exemple : Si nous avons pour un étudiant sa date de naissance et sa date d’entrée à l’université qui sont tous les deux de type Date, alors les champ jour, mois et année seront ambigus car nous ne savons pas s’il font référence à Date_naissance ou Date_entrée.
Avec E, Date_naissance, Date_Entrée Faire Nom "Lila" ;
Lire (Prénom) ;
Matricule Matricule+1 ; Jour7 ; ?
Mois2 ; ?
Année2018 ; ? Fait ;