Académique Documents
Professionnel Documents
Culture Documents
2 - Structure de Données
2 - Structure de Données
Les enregistrements
STRUCTURE DE DONNÉES
❖ Définition d’une structure de donnée hétérogènes
❖ Définition d’un enregistrements
❖ Déclaration d’un enregistrement
❖ Manipulation d’un enregistrement
❖ L'imbrication d'enregistrements
❖ Déclaration d’un enregistrement en C 2
Zakaria Sawadogo
STRUCTURE DE DONNEES
HETEROGENES
• Si on souhaite stocker des données qui n’ont pas forcément le même type au sein d’une même
structure, par exemple : les informations liées à un produit quelconque, La première question qui se
pose est : quelle est la structure de donnée nécessaire ?
• Il est clair que dans un tableau, tous les éléments le constituant ont obligatoirement le même type,
Les tableaux ne sont pas une solution adéquate.
• La solution est de créer une nouvelle structure de type ‘ enregistrement’ qui comporte à la fois les
données numériques (quantité, prix unitaire, prix total) et les données (alphanumériques (Référence,
désignation),
• Ce nouveau type ou cette une nouvelle structure permet de représenter des données hétérogènes
(c'est-à-dire de différents types) par le groupage de plusieurs éléments qui peuvent être simples
fondée sur d’autres types existants ou complexes.
Zakaria Sawadogo
Qu’est ce que un enregistrement ?
• Un enregistrement appelé aussi un article ou record en anglais est composé
d’un nombre fixe de champs défini par l’utilisateur qui peuvent être de types
différents. La liste des champs est composée de définitions identiques à celle
de variables. Par exemple l’enregistrement « date » est composé de trois
champs « jour », « mois » et année.
Zakaria Sawadogo
Qu’est ce que un enregistrement ?
• Un enregistrement est un type de données défini par l’utilisateur et qui permet de grouper
un nombre fini d’éléments (ou champs) de types éventuellement différents (alphabétique,
numérique, logique,…) sous un nom commun.
• A la différence des tableaux, qui ne permettent de grouper que des éléments du même type,
les enregistrements permettent de combiner différents types de données.
• Les éléments qui composent un enregistrement sont appelés champs.
• Avant de déclarer une variable enregistrement, il faut avoir au préalable définit son type,
c’est à dire le nom et le type des champs qui le compose.
• Le type d’un enregistrement est appelé type structuré.
5
Zakaria Sawadogo
Déclaration d’un enregistrement
Zakaria Sawadogo
Déclaration d’un enregistrement
• Attention
• Les types enregistrements font partie des types structurés. Concernant les champs, il
faut savoir que ceux-ci peuvent être de n’importe quel type (sauf un type fichier).
• Mais :
• Il n’existe pas de constante d’un type enregistrement.
• Il n’existe pas d’opération (autre que l’affectation et le passage comme paramètre)
sur les enregistrements.
• Les seules expressions d’un type enregistrement sont les variables de ce type.
• Il n’y a pas de fonction (même prédéfinie) à résultat d’un type enregistrement.
Zakaria Sawadogo
Déclaration d’un enregistrement
• Exemple
• Énoncé
• Déclarer une variable enregistrement représentant un nombre
complexe.
• Solution proposée
• Complexe = Enregistrement
Parti_reel : Réel
Parti_im : Réel
Fin Complexe
8
Zakaria Sawadogo
Manipulation d’un enregistrement
Zakaria Sawadogo
Manipulation d’un enregistrement
10
Zakaria Sawadogo
Manipulation d’un enregistrement
• 1. Déclaration d’une variable enregistrement
Fiche = Enregistrement
Nom, prénom : Chaîne
sexe : Caractère
date_nais : chaîne
note: Réel
Fin Fiche
11
Zakaria Sawadogo
Manipulation d’un enregistrement
2. Affectation des valeurs à cette variable :
E.nom<-- ‘’Riadh’’
E. prénom<-- ‘’Riadh’’
E. sexe<-- ‘’F’’
E. date_nais<-- ‘’27 /11/1983’’
E. note<--13.25
12
Zakaria Sawadogo
Manipulation d’un enregistrement
• Exercice d’application
Ecrire un algorithme qui saisie des données concernant les
apprenants appr1 et appr2, puis affichage de la différence d’
âge entre ces deux apprenants.
13
Zakaria Sawadogo
Manipulation d’un enregistrement
apprenants= Enregistrement
Nom, prénom : Chaîne
sexe : Caractère
age : Réel
note: Réel
Fin apprenants
Var
appr1, appr2: apprenants
Début
Affiche( “Entrez le nom puis l’age de l’apprenant 1”)
Saisir( appr1.nom, appr2.age )// il est impossible d’écrire Saisir pers1
Afficher( “Entrez le nom puis l’âge de l’apprenant 2”)
Saisir (appr2.nom, appr.age)
Afficher( “La différence d’âge entre “, appr1.nom, ” et “, appr2.nom, ” est de ”)
Si appr1.age > appr2.age
Alors Afficher( appr1.age – appr2.age, ” ans ”)
Sinon
Afficher( appr2.age – appr1.age, ” ans ”)
FinSi 14
15
Zakaria Sawadogo
L'imbrication d'enregistrements
Date = Enregistrement
Jour : entier
Mois : entier
Année : entier
Fin Date
Personne = Enregistrement
nom : chaine de caractère
prenom : chaine de caractère
date_nais : Date
Fin Personne
Pour accéder à l'année de naissance d'une personne, il faut utiliser deux fois l'opérateur '.' pers1.date_nais.Année Il
faut lire une telle variable de droite à gauche : l'année de la date de naissance de la personne 1.
16
Zakaria Sawadogo
Déclaration d’un enregistrement en C
• Typedef struct id-structure { Typedef produit { struct etudiant
type1 nom_id1; char ref[5] ; char {
type1 nom_id2;
Designation[25]; int note
int quantite char nom[100];
... ; char prenom[100];
float prix_u ; };
type1 nom_idn; } Produit ;
}id-structure ;
17
Zakaria Sawadogo
Exercice
Zakaria Sawadogo
Exercice
A vous de jouer
19
Zakaria Sawadogo
Exercice
#include <stdio.h>
#include <stdlib.h>
typedef struct etudiant
{
int note;
char nom[100];
char prenom[100];
}Etudiant;
20
Zakaria Sawadogo
int main()
{
int n ;
Etudiant etudiant[100];
int i;
printf("entre le nombre d'edudiant: ");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
printf("Donnez le nom de l’étudiant %d :“,i+1);
scanf("%s", etudiant[i].nom); // Ici pas de & sinon il y aura une erreur de segmentation