Vous êtes sur la page 1sur 21

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

Nom_Type = Enregistrement notation inspirée du C


Champ1 : Type1
Type
Champ2 : Type2 Structure nom_type
… Champ1 : Type1
ChampN : TypeN Champ2 : Type1

Fin Nom_Type ChampN : TypeN
FinStruc

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

• Accès au champ d’un enregistrement


• Alors que les éléments d’un tableau sont accessibles au travers
de leur indice, les champs d’un enregistrement sont accessibles
à travers leur nom, grâce à l’opérateur ‘.’
• Un tel champ est défini par le nom de l’enregistrement ainsi
que par son nom propre.
9

Zakaria Sawadogo
Manipulation d’un enregistrement

• Complexe.Parti_reel: représente le champ Parti_reel de l’enregistrement


Complexe.
• Le nom d’un champ est TOUJOURS précédé du nom de l’enregistrement
auquel il appartient.
• On ne peut pas trouver un nom de champ tout seul, sans indication de
l’enregistrement.
• Les champs d’un enregistrement, tout comme les éléments d’un tableau,
sont des variables à qui on peut faire subir les mêmes opérations
(affectation, saisie, affichage,…).

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

Fin Zakaria Sawadogo


L'imbrication d'enregistrements
• Supposons que dans le type personne, nous ne voulions plus l'âge de la
personne, mais sa date de naissance. Une date est composée de trois variables
(jour, mois, année) indissociables. Une date correspond donc à une entité du
monde réel qu'on doit représenter par un type enregistrement à 3 champs. Si
on déclare le type date au préalable, on peut l'utiliser dans la déclaration du
type personne pour le type de la date de naissance.

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

• Écrire un algorithmes qui permet de


saisir les étudiants de la classe de DST1
Info et leur note en structure de donnée.
• Traduisez cet algorithmes en C
18

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

printf("Donnez le prenom de l’étudiant %d :“,i+1);


scanf("%s", etudiant[i].prenom); // Même chose

printf(“saisie la note de l'eleve n° %d=", i+1);


scanf("%d", &etudiant[i].note);
}
for(i=0;i<n;i++)
{
printf("\t nom %s:",etudiant[i].nom);

printf("\t prenom %s:",etudiant[i].prenom);

printf("\t note: %d ",etudiant[i].note);


printf("\n");
}
21
}
Zakaria Sawadogo

Vous aimerez peut-être aussi