Vous êtes sur la page 1sur 7

Les enregistrements 

:
La structure de données TABLEAU nous a permet de regrouper plusieurs éléments de même type,
Exemple: soit T un tableau de 30 éléments qui contient les températures enregistrées au cours du mois de
juin,
Maintenant, si on veut regrouper un ensemble d’éléments pas forcément de même type ,
Exemple : soit une structure qui permet de regrouper les caractéristiques d’une voiture (numéro de série,
marque, nombre de places, puissance, type d’énergie, année de fabrication, pays d’origine)
Quelle est la structure de données adéquate ?
Les enregistrements
Un enregistrement est un type de données défini par l'utilisateur et qui permet de grouper un nombre fini
d'éléments de types éventuellement différents.
Enregistrement Champ1 Champ2 Champ3 … Champ n

Définition : Un enregistrement est une structure de données, définie par l’utilisateur qui permet de
regrouper un ensemble fini d’éléments (champs) qui peuvent être de types différents auxquels on accède
grâce à un nom.
I. En algorithmique
1) Déclaration en algorithmique
Enregistrement Champ1 Champ2 Champ3 … Champ n

Tableau de déclaration des nouveaux types


Type Exemple 1:déclarer le type note comme étant un
Nom_type = Enregistrement enregistrement composé des champs : valeur
Champ 1 : Type 1 (nombre), un coefficient (nombre) et une matière
Champ 2 : Type 2 (chaîne de caractères).
………  :  ……..
………  :  ……..
Tableau de déclaration des nouveaux types
Champ n : Type n
Type
Fin Nom_Type
note = Enregistrement
valeur : réel
coeff : réel
matiere : chaine de
caractères
Fin note

Tableau de déclaration des objets Tableau de déclaration des objets


Objet Type / Nature Objet Type / Nature
Identificateur_objet Nom_type n note

Exemple 2:déclarer le type voiture comme étant un enregistrement composé des champs numéro de
série(chaine), marque(chaine), nombre de places(entier), puissance(réel), type d’énergie(chaine), année de
fabrication(entier), pays d’origine (chaine)

1
Voiture Num_série puissance Marque Nbre_places Année Énergie

Tableau de déclaration des nouveaux types


Exemple :
Type
type
……………………….. Personne= Enregistrement
……………………….. Nom : Chaine
………………. Prenom : Chaine
…………………………. Age : Entier
……………………… Fin personne
Date= Enregistrement
Jour : Entier
Mois : Entier
Tableau de déclaration des objets
Annee : Entier
Objet Type / Nature Fin date
……….. ……………….. Point= Enregistrement
Num : Entier
Abscice : Réel
2) Utilisation des enregistrements :
Ordonne : Réel
a) Accès à un champ d’enregistrement Fin point
Pour un tableau on accède à un élément en donnant le nom du tableau et la valeur de l’indice, Pour accéder
à un champ CH d’une variable V de type enregistrement on écrit le nom de la variable suivi d’un
point puis le nom du champ: V.CH
pour un enregistrement on repère une composante par le nom de l’enregistrement et le nom du champ
auquel on veut accéder séparés par un point : Variable.Champ 
 Affectation
Syntaxe Exemple
n.valeur  15.50
Variable.Champ Valeur n.coeff  3.0
n.matiere  ‘algorithmiques’
v1.puissanceß 13;
v2. energieß ‘diesel’;
Si (v1.puissance=v2.puissance) alors écrire(v2.marque);

 Lecture

Syntaxe Exemple
Lire (Variable.Champ) Lire (n.valeur) , Lire(n.coeff) , lire(n.matiere)

 Ecriture

Syntaxe Exemple
Ecrire (n.valeur)
Ecrire ( Variable.Champ ) Ecrire(n.coeff)
Ecrire(n.matiere)

b) Utilisation globale d’un enregistrement

Il est possible d’affecter à un enregistrement le contenu d’un autre enregistrement défini à partir du même
modèle.
2
Exemple:

Objet Type / Nature


v1,v2 Voiture
v1ß v2;

c) Tableau d’enregistrement

On peut définir un tableau dont les éléments sont de type enregistrement

Type Exemple :
Nom_typenreg = Enregistrement
Nom_champ1 : Type_champ1 Tableau de déclaration des
Nom_champ2 : Type_champ2 nouveaux types
... Type
note = Enregistrement
valeur : réel
coeff : réel
matiere : chaine de
caractères
Fin note
Tabnote=Tableau de 30 note
Fin
Nomtypetab= Tableau de N Nom_typenreg
tdo
Objet Type / Nature
nomvar Tableau de N Nom_typenreg
Exemple :
T1 Tableau de 30 note
T Tabnote

d) Enregistrement membre d’un autre enregistrement :

On peut définir un champ de type enregistrement dans un enregistrement

Type Exemple 1
Type <nom_enrg1>= enregistrement Tableau de déclaration des nouveaux types
champ1: <type_champ1> Type
. Type Adresse= enregistrement
. Numéro: entier
Fin Rue: Chaine[30]
Type <nom_enrg2>= enregistrement Ville: chaine[25]
champ1: <type_champ1> Fin
champ2: <nom_enreg1> Type Employe= enregistrement
. Nom, Prénom: chaine[25]
Fin Adr: Adresse
Fin

Tableau de déclaration des objets


Objet Type / Nature

3
e employe

Exemple 2 :

On vous demande de déclarer la structure élève, sachant qu'il est caractérisé par un nom, une classe, une
moyenne et une date de naissance . Le champ DN (date de naissance) est de type date et que date est un
enregistrement formé de 3 champs jour, mois et année :

Solution :
Tableau de déclaration des nouveaux types
Type

Tableau de déclaration des objets


Objet Type / Nature

Exercice :
Nous voulons constituer une base de données des étudiants de notre section. Un étudiant est caractérisé
par les informations suivantes:
• Mat: entier
• Nom, prénom: chaine
• Note_S1, Note_S2, Moy_annuelle: réel
Avec Moy_annuelle=(Note_S1+Note_S2)/2
Les étudiants de la section seront stockés dans un vecteur T de N étudiants (N≤100),
Ecrire l’algorithme qui permet de:
1. Déterminer les structures de données nécessaires
2. Lire le nombre d’étudiants N.
3. Remplir le vecteur T.
4. Calculer et afficher la moyenne générale de la section
5. Afficher la liste des étudiants ayant une moyenne annuelle supérieure ou égale à 10.
6. Calculer la meilleure moyenne annuelle.
7. Afficher le(s) majors de la section
8. Effectuer une recherche d’un étudiant par matricule (si l’étudiant existe alors afficher ses
informations, sinon afficher un message de non existence).
II. En Python
Le type enregistrement n’existe pas en lui-même en python. On peut utiliser les tuples, les dictionnaires
(dict) ou les classes, dans la suite de notre cour on va utiliser les dictionnaires
4
. Dictionnaire (dictionary, map)

Définition : Un dictionnaire est une structure de données dite associative, car elle permet de stocker une
valeur en lui associant une clé. Cette clé permet ensuite de retrouver la valeur associée. C’est une sorte de
liste permettant de stocker des couples (clé: valeur) avec un accès très rapide à la valeur à partir de la
clé, la clé(objet) ne pouvant être présente qu’une seule fois.
Pour définir un type Note composé d’une valeur, d’un coefficient et d’une matière, on pourra alors utiliser
un dictionnaire et trois clés (“valeur”, “coefficient” et “matiere”) pour stocker et accéder aux trois valeurs de
la note.
1) Déclaration :
dic1={} ou dic1=dict() #dictionnaire vide
déclaration avec initialisation
n= { n= { n= dict() n=dict()
n["valeur "]=0
:
"valeur "  int(),
"Coeff ":float(),
"valeur " :0
"Coeff" :0.0, =
n["valeur "] int(), n["Coeff" ]=0.0,
"Matiere ": "" n["Coeff "]=float(), n["Matiere "]=""
"Matiere" :str() n["Matiere "]=str()
} }
n=dict()
n["valeur"] =15
n["coefficient"] =1.5
n["matiere"] ="programmation"
Exemple 2 : Exemple :
Définir, lire, modifier et afficher une variable E de type enregistrement représentant une fiche d’un étudiant
contenant les informations suivantes :
 Num : numéro de l’étudiant (entier)
 Nom : nom de l’étudiant (chaîne des caractères)
 Moy : moyenne de l’étudiant (réel)

E={ E={ E=dict() E=dict()


"num":0, E["num"]=int() E["num"]=0
"num":int(),
"nom":"", E["nom"]=str() E["nom"]=""
"nom":str(),
"moy":0.0 E["moy"]=float() E["moy"]=0.0
"moy":float()
} }

2) Lecture : 3) Affichage: 4) Modification:

n["valeur"]= int(input("Note = ")) Print(n) n["valeur"]= 15.50


n["coeff"]= int(input("coefficient = ")) print("note = ",n["valeur"]) n["coeff"]= 3.0
n["matiere"]= input("Nom de la matière= ") print("coefiicient = ",n["coeff"]) n.[ "matiere"]= ‘algorithmiques’
print("matiere = ",n["matiere"]) v1["puissance"]= 13
v2["energie"]= ‘diesel’;
if
(v1["puissance"]==v2["puissance"]) :
print(v2["marque"])

5
Série d’exercices
Exercice1 :
On se propose de gérer une suite finie de N points du plan définis par leurs abscisses et leurs ordonnées. Un
point Ai (xi , yi) du plan a pour abscisse xi et ordonnée yi (avec 1<= i <=N et N un entier compris entre 5 et
30).
1) Pour stocker ces points, on vous propose les deux solutions ci-dessous et on vous demande de déclarer
en algorithmique, dans chaque cas, le ou les type(s) adéquat(s) à utiliser :

Première solution :
Les coordonnées de ces points seront sauvegardées dans une matrice M contenant deux lignes. Sa première
ligne contiendra les abscisses et la deuxième contiendra les ordonnées. Les coordonnées xi et yi d’un point
Ai du plan seront stockés respectivement dans les cases M[1,i] et M[2,i]
Deuxième solution :
Les coordonnées de ces points seront sauvegardées dans un tableau d’enregistrements à une seule dimension
nommé T. L’enregistrement contient les deux champs suivants :
Abs : pour stocker l’abscisse xi du point Ai
Ord : pour stocker l’ordonné yi du même point Ai
2) En supposant que la méthode de stockage choisie est celle proposée dans la deuxième solution, on vous
demande d’écrire :
a) L’algorithme du module intitulé Remplir qui permet de saisir les coordonnées de ces N points
b) L’algorithme du module intitulé Nombre qui permet de déterminer le nombre des points du tableau T
situés sur la droite d’équation ax+by+c=0 (avec a, b et c sont des réels donnés, x et y sont les coordonnées
d’un point appartenant à cette droite)

Exercice2 :
Un employé d’une société est caractérisé par son nom, son prénom, son numéro de carte d’identité
nationale (chaîne numérique de 8 caractères), son âge (entier compris entre 15 et 60), son sexe (M ou m
pour masculin et F ou f pour féminin et l’année d’embauche (entier positif de 4 chiffres)
On désire informatiser la gestion des employés de cette société en réalisant les tâches ci-dessous :
 Saisir les informations des N employés ) dans un tableau T
 Former et afficher, à partir de T, un tableau d’enregistrements nommé T1, chaque élément de T1 est
composé des champs suivant :
 Matricule de l’employé correspondant dans T1, formée par la première lettre du nom de l’employé suivie
par la première lettre de son prénom suivie par son numéro de la carte d’identité nationale suivie par le
sexe suivie par les 2 derniers chiffres de l’année de l’embauche en partant de la gauche
 Son âge

Travail demandé :
1. Ecrire l’algorithme du programme principal qui permet d’effectuer les tâches décrites auparavant (la
décomposition en modules est obligatoire)
2. Ecrire l’algorithme de chaque module envisagé en 1)
3. Implémenter la solution algorithmique obtenue en utilisant le langage Python
Exercice3 :
Pour gérer ses clients, la société OOREDOO enregistre les fiches de ses N clients dans un tableau. Chaque
fiche client contient les informations suivantes :
 Num : numéro mobile du client, chaîne numérique composée nécessairement de 8 chiffres
6
 Sol: solde disponible, entier positif

A l’occasion de l’Aïd, le directeur de cette société veut offrir un bonus de 10 dinars aux clients ayant un
numéro qui vérifie la condition suivante :
La somme des chiffres pairs figurant dans le numéro du client correspondant est > à celle des chiffres
impairs
Exemples :
1) Le client ayant le numéro "22112122" est favorisé car :

Somme des chiffres pairs = 10 > Somme des chiffres impairs = 3


2) Le client ayant le numéro "27110143" est non favorisé car :

Somme des chiffres pairs = 6 < Somme des chiffres impairs = 13


Travail demandé :
Afin d’aider ce directeur, on vous demande d’écrire un algorithme modulaire du problème qui permet de :
Remplir le tableau T par les fiches de N clients ( 5 ≤N≤ 200)
De transférer tous les clients favorisés dans un tableau d’enregistrements nommé R. Chaque
enregistrement est formé des champs suivants :
 Num : numéro mobile du client favorisé
 Spair : somme des chiffres pairs figurants dans Num
 Simp : somme des chiffres impairs figurants dans Num
 Sol: nouveau solde obtenu
Afficher le contenu du tableau R

Exercice4 :
Ecrire un programme en Python qui permet de :
1) Remplir un tableau T par n chaines des caractères non vides, comportant une expression arithmétique
d’addition qui ne contient que des nombres positifs et l’opérateur "+", ne commence pas, ne se
termine pas par le caractère "+ " et les nombres sont séparés par un seul "+ " ( 3 <N<21)

2) Former à partir du tableau T un nouveau tableau d’enregistrements nommé R. Chaque élément du


tableau R contiendra les informations suivantes :

- exp : expression à évaluer provenant du tableau T


- val : résultat de l’évaluation de l’expression exp
3) afficher le contenu du tableau R

Vous aimerez peut-être aussi