Académique Documents
Professionnel Documents
Culture Documents
Niveaux: 1A
Equipe ALGO
Année universitaire:
2022/2023
1
Objectifs Spécifiques
A la fin de ce chapitre, l’étudiant sera capable de :
2
Problématique
▪ Les variables que nous avons jusqu’au présent utilisées ne se constituent
que d’un seul type de donnée (Entier, Réel, Caractère, etc.).
Exemple: Date
30 Jour
Octobre Mois
2022 Année
Définition
▪ Un enregistrement est une structure de données qui sert à mémoriser, dans une
même variable, un nombre fini d'éléments (appelées aussi Champs ou
Rubriques) de types hétérogènes (non nécessairement de même type).
▪ A titre d’exemple, une date, une adresse ou un nombre complexe peuvent être
considérés comme des enregistrements.
Déclaration d’un Enregistrement
Un type enregistrement doit être déclaré dans la partie réservée aux types, selon la convention
algorithmique suivante :
TYPE
Nom_type = ENREGISTREMENT
Nom_rubrique1 : type_rubrique1
Nom_rubrique2 : type_rubrique2
Nom_rubrique3 : type_rubrique3
………….
………….
Nom_rubriqueN : type_rubriqueN
FinEnregistrement
VARIABLE
Nom_variable : Nom_type
Remarque :
Si certaines rubriques ont le même type, on peut les déclarer ensemble en les séparant par des virgules et en mentionnant
une seule fois le type.
Déclaration d’un Enregistrement
Exemple 1 : Déclaration de l’enregistrement étudiant
TYPE
Etudiant = ENREGISTREMENT
Nom : Chaîne [20]
Prénom: Chaîne [30]
CIN : entier
Age : entier
FinEnregistrement
VARIABLE
E : Etudiant
TYPE
Complexe = Enregistrement
Préel : réel
Pimaginaire : réel
FinEnregistrement
VARIABLE
C : Complexe
Accès aux Rubriques
▪ Pour accéder aux rubriques d’un enregistrement, on doit effectuer tout d’abord une
opération de lecture, écriture, affectation, etc.
Nom_variable.Nom_rubrique
Lecture
a) Globale : Lire(E) cette primitive va lire en un seul coup les différentes rubriques de l’enregistrement
Étudiant.
b) Partielle : la lecture se fait rubrique par rubrique. On l’utilise généralement pour une saisie conviviale.
Dans notre exemple, la saisie de l’enregistrement Étudiant se fera alors :
b) Partielle : L’écriture se fait rubrique par rubrique. Dans notre exemple, on peut afficher
l’enregistrement étudiant après l’avoir saisi, rubrique par rubrique selon la syntaxe suivante :
Ecrire (Nom_variable.Nom_rubrique)
Nom_variable.Nom_rubrique = Nom_variable1.Nom_rubrique
Affectation
Supposons que l’on souhaite copier un enregistrement dans une autre variable.
TOUNSI Mohamed 1
▪ E.Date_naissance.Mois E 10
16,5 12 18
2021
▪ E.Date_naissance.Année
23
PARTIE II
24
Tableau d’Enregistrements
C’est un tableau dont les cases sont des enregistrements.
Constante Nmax=100
TYPE
Nom_type 1= ENREGISTREMENT
Nom_rubrique1 : type_rubrique1
Nom_rubrique2 : type_rubrique2
………….
………….
Nom_rubriqueN : type_rubriqueN
FinEnregistrement
Nom_type 2= Tableau[1..Nmax] de Nom_type 1
VARIABLE
Nom_variable : Nom_type 2
25
Tableau d’enregistrements
Exemple: Un tableau d’au plus 100 étudiants est un tableau dont les cases sont de types Etudiant, il est déclaré comme
suit :
Constante N = 20, NMAX=100
TYPE
Tab = Tableau [1..N] de Réel Accès : Nom_Tableau[i].Nom_rubrique
Date = Enregistrement
jour , mois, annee : entier T[i].nom
FinEnregistrement
T[i].prénom
Etudiant= Enregistrement
nom, prenom : Chaîne [20] T[i].Note[j]
date_naissance : Date
T[i].date_naissance.jour
Note: Tab
FinEnregistrement T[i].date_naissance.mois
Tetud = Tableau[1..NMAX] de Etudiant
T[i].date_naissance.annee
Variable
T: TEtud
i: entier 26
Application 3
On considère que la fiche d’un étudiant est définie par les informations suivantes :
nom, prénom, age, cin, tel et adresse.
Ecrire un algorithme permettant de remplir un tableau de N étudiants, de rechercher un
étudiant de cin donnée et afficher son nom, prénom et adresse.
27
Application 3
Algorithme fiche_etudiant Début
Constante
NMAX=100 Répéter
Type Lire (n)
Jusqu'à ((n>=1) et (n ≤ NMAX))
(*Déclaration enregistrement Domicile*)
Pour i allant de 1 à n faire
Domicile= Enregistrement Lire (T[i].nom, T[i].prenom, T[i].age, T[i].tel,T[i].cin)
Avenue,ville,pays : chaine [20] Lire ( T[i]. Adresse.Avenue, T[i]. Adresse.ville, T[i]. Adresse.pays,
Numero,code_postale : entier T[i]. Adresse.Numero, T[i]. Adresse.code_postal)
FinEnregistrement Fin pour
Lire (cin)
(*Déclaration enregistrement étudiant*) i 1
Tant que ((T[i].cin <> cin) et (i<=n)) faire
Etudiant=Enregistrement i i+1
Nom, prénom : chaine [20] Fin Tant que
Age : entier Si (i<=n) alors
cin : entier Ecrire (T[i].nom, T[i].prenom, T[i]. Adresse.Avenue, T[i].
Tel : entier Adresse.ville, T[i]. Adresse.pays, T[i]. Adresse.Numero, T[i].
Adresse : Domicile Adresse.code_postal)
finEnregistrement Else
Ecrire (‘‘élément non trouvé’’)
Etud=tableau [1..NMAX ] d’étudiant Finsi
Variable
T : Etud Fin
I, n :entier 28
Notion de Générateur
Quand on affecte des valeurs aux rubriques d’un enregistrement, on dit qu’on a obtenu un
Générateur.
▪ C’est l’ensemble de valeurs que peuvent avoir à un instant donné, les différentes
rubriques d’un enregistrement.
Notion de Générateur
▪ Si on revient à l’exemple de l’enregistrement Étudiant, les informations
suivantes :
G1 = (‘Ben Mohamed’,’Mohamed’,123456,35)
▪ On remarque à première vue, que les rubriques de part et d’autre ne sont pas totalement
remplies : cela s’explique par le fait, qu’en fonction des spécificités de chaque salarié on ne
remplit que les cases permises.
▪ L’idéal est que chaque générateur occupe uniquement les cases qui lui
sont allouées.
▪ Pour ce faire, il faut alors utiliser une structure qui peut varier en fonction
des spécificités de chaque générateur.
Remarques
▪ On voit maintenant que les deux générateurs ne comportent plus de cases vides.
▪ On voit également clair que les deux générateurs G1 et G2 sont de tailles variables.
▪ Dans un enregistrement variable, on doit tout d’abord déclarer la partie fixe puis on définit la partie
variable.
▪ Attention, il ne faut pas confondre entre le SELON vu dans le chapitre Structures Conditionnelles et le
SELON vu dans ce chapitre : le premier concerne des instructions ; quant au deuxième il concerne des
variables.
Accès aux Rubriques
En prenant les deux générateurs de l’exemple, on va essayer d’accéder à chacune de leur rubrique :
G1(123,’Ali’,’Med’,’1164’,Marié,Permanent,’Med’,’Alia’,1)
G2(456,’Med’,’Sobhi’,’1155’,Célibataire,Occasionnel,3.200,70,Oui)
TYPE
Salarie = ENREGISTREMENT
Matricule : entier
Nom, Prénom : chaine[20]
Date_naissane : chaine[12]
Catégorie : caractere
État_civil : caractere
SELON (État_civil ) FAIRE
‘M’ : Nom_conjoint, Prénom_conjoint : chaine[20]
Nombre_enfant : entier
‘C’ : Service_militaire : Booléen
FINSELON
SELON (Categorie) FAIRE
‘P’ : Salaire_base : réel
Indemnités : réel
‘O’ : Coût_horaire : réel
Nombre_heures : réel
FINSELON
FINENREGISTREMENT
VARIABLE S : Salarie
Accès aux Rubriques
Pour un salarié permanent et marié, Pour un salarié occasionnel et célibataire,
on aura : on aura :
S.Matricule 123 S.Matricule 456
S.Nom ‘Ali’ S.Nom ‘Med’
S.Prénom ‘Med’ S.Prénom ‘Sobhi’
S.Date_naissane ’05-09-1987’
S.Date_naissane ’05-09-1987’
S.Etat_civil ‘M’
S.Etat_civil ‘C’
S.Catégorie ‘P’
S.Catégorie ‘O’
S.Nom_conjoint ‘Med’
S.Service_militaire Vrai
S.Prénom_conjoint ‘Alia’
S.Nombre_enfant 1 S.Coût_horaire 3.200
S.Salaire_base 500 S.Nombre_heures 70
S.Indemnités 250