Vous êtes sur la page 1sur 37

Chapitre 4: Enregistrements

La structure de tableau permet de traiter


un nombre fini d’informations de même
type auxquelles on peut accéder par un
indice. Mais il est fréquent de vouloir
associer à un même objet plusieurs
informations de types différents.

24/12/2020 Algorithmique et Programmation 2 177


C’est quoi un enregistrement ?
La structure de tableau permet de traiter
un nombre fini d’informations de même
type auxquelles on peut accéder par un
indice. Mais il est fréquent de vouloir
associer à un même objet plusieurs
informations de types différents.

24/12/2020 Algorithmique et Programmation 2 178


Les enregistrements (1)
Un enregistrement est un type de données
défini par l'utilisateur et qui permet de
grouper un nombre fini d'éléments
(appelés champs ou attributs) de types
éventuellement différents.

24/12/2020 Algorithmique et Programmation 2 179


Les enregistrements (2)
Par exemple :
 une date chronologique (jour, mois,
année) ;
 une fiche bibliographique (titre du livre,
auteur, date de parution) ;
 une fiche personnelle (nom, prénom,
âge, sexe, taille) ;

24/12/2020 Algorithmique et Programmation 2 180


Les enregistrements:
Declaration
En algorithmique :
Puisqu’un enregistrement est un nouveau
type, on commence par sa déclaration :

24/12/2020 Algorithmique et Programmation 2 182


Les enregistrements:
Déclaration en algorithmique
Definition du type:
type nom_type = enregistrement
champ 1 : Type 1
----
champ n : Type n
fin;
Declaration d’une variable:
identificateur_variable nom_type;
24/12/2020 Algorithmique et Programmation 2 184
Exemple en algorithmique:
Declaration de nouveaux types
type fiche = enregistrement
nom, prénom : Chaîne
sexe : Caractère
numéro : Entier non signé
moyenne : Réel
num_cin : Entier long
Fin

24/12/2020 Algorithmique et Programmation 2 185


Struct
 struct est le mot réservé par le langage
C pour définir un enregistrement.

24/12/2020 Algorithmique et Programmation 2 186


Les enregistrements:
Declaration en C
typedef struct{
champ_1 : type_1 ;
----
champ_n : type_n ;
}nom_type;

nom_type identificateur_variable ;

24/12/2020 Algorithmique et Programmation 2 187


Les enregistrements
Exemple en C
typedef struct {
char nom[20] ;
char prenom[20] ;
short int an_naiss ;
} t_personne ; /* nom du type structure */

t_personne v;

24/12/2020 Algorithmique et Programmation 2 188


Les enregistrements
Exemple en C
typedef struct
{
short int nb_enfants ;
short int an_naiss_enf[20];
char nom_enf[20][30] ;
} t_enfants ;

t_enfants v;
24/12/2020 Algorithmique et Programmation 2 189
Les enregistrements
Exemple en C
 Remarque :
On peut définir un type structuré sans
utiliser typedef, mais ce n'est pas conseillé
pour la légèreté des écritures. En effet, au
lieu du nom T_adresse, le modèle de
structure ci dessous oblige à utiliser le nom
composé struct t_adresse (les deux mots
ne peuvent jamais être dissociés dans le
nom du type !) .

24/12/2020 Algorithmique et Programmation 2 190


Les enregistrements
Exemple en C
struct t_adresse /* exemple à DECONSEILLER, car on n'utilise pas typedef */
{
short int numero ;
char rue[30] ;
long int code_postal ;
char ville[20] ;
} ; /* aucun nom ici (il est défini plus haut) */

24/12/2020 Algorithmique et Programmation 2 191


Les enregistrements
Exemple en C
struct t_adresse v; /* exemple à DECONSEILLER, car on n'utilise pas
typedef */

24/12/2020 Algorithmique et Programmation 2 192


Les enregistrements: Utilisation
pour une action d'affectation

L'affectation de valeurs aux différents


champs d'une variable de type
enregistrement se fait par une opération
de type :
En algorithmique
variable.champ ←valeur
En C
variable.champ = valeur ;
24/12/2020 Algorithmique et Programmation 2 193
Exemple en algorithmique:
Affectation de valeurs à la
variable
Type Fiche = enregistrement
nom, prénom : Chaîne
sexe : Caractère
numéro : Entier non signé
moyenne : Réel
num_cin : Entier long
Fin

24/12/2020 Algorithmique et Programmation 2 194


Exemple en algorithmique:
Affectation de valeurs à la
variable
eleve.nom←"fall" ;
eleve.prénom ←"moussa";
eleve.sexe ←’M’ ;
eleve.numéro ←18 ;
eleve.moyenne←13.25;
eleve.num_cin←12345678;

24/12/2020 Algorithmique et Programmation 2 196


Exemple d’initialisation en C
TYPEDEF struct fiche{
char[20] nom,prenom;
char sexe;
short int numero;
float moyenne;
long int num_cin;
}fiche;
eleve fiche;
24/12/2020 Algorithmique et Programmation 2 197
Exemple d’initialisation en C
(premiere version)
strcpy(eleve.nom,"fall");
strcpy(eleve.prenom,"moussa");
eleve.sexe =’M’ ;
eleve.numero =18 ;
eleve.moyenne=13.25;
eleve.num_cin=12345678;

24/12/2020 Algorithmique et Programmation 2 198


Exemple d’initialisation en C
(deuxieme version)
eleve= {"fall" ,"moussa" , ’M’,18,13.25,12345678}

24/12/2020 Algorithmique et Programmation 2 199


Utilisation pour une action de
lecture d’un champ
 En Algorithmique:
Ecrire ("Entrer le nom de l'élève : ") ;
Lire (eleve.nom)
 En C :
print('Entrer le nom de l''élève : ') ;
scanf("%s",&eleve.nom) ;

24/12/2020 Algorithmique et Programmation 2 201


Passage par adresse d’une
structure
 Même chose que pour les types
classiques.

24/12/2020 Algorithmique et Programmation 2 202


Imbrication d’enregistrement
Un champ intervenant dans la définition
d’un enregistrement peut être lui aussi de
type enregistrement, ce qui conduit à
plusieurs niveaux d’imbrication

24/12/2020 Algorithmique et Programmation 2 203


Imbrication d’enregistrement
Exemple pour représenter les informations
sur un étudiant sa date de naissance peut
être définie comme un enregistrement.

24/12/2020 Algorithmique et Programmation 2 204


Imbrication d’enregistrement
type Etudiant = enregistrement
id : chaine ;
nom : chaine ;
prenom : chaine ;
Date_naiss: enregistrement
jour : entier ;
mois : entier ;
annee : entier;
fin ;
fin ;

Algorithmique et Programmation 2 205


Imbrication d’enregistrement
type Date = enregistrement
jour : entier ;
mois : entier ;
annee : entier ;
fin ;

24/12/2020 Algorithmique et Programmation 2 206


Imbrication d’enregistrement
type Etudiant = enregistrement
id : chaine ;
nom : chaine ;
prenom : chaine ;
Date_naiss: Date;
fin ;

24/12/2020 Algorithmique et Programmation 2 207


Imbrication d’enregistrement
typedef struct {
short int jour ;
short int mois ;
short int annee ;
}T_date ;

24/12/2020 Algorithmique et Programmation 2 208


Imbrication d’enregistrement
typedef struct{
int id;
char nom[20] ;
char prenom[20] ;
T_date naissance ;
}T_pers ;

24/12/2020 Algorithmique et Programmation 2 209


Accès aux champs internes
T_pers pers;
pers.naissance.jour

24/12/2020 Algorithmique et Programmation 2 210


Utilisation pour une action
d’écriture
 En Algorithmique:
Ecrire (variable.champ) ;
 En C
printf(’’%format ’’,variable.champ);

24/12/2020 Algorithmique et Programmation 2 211


Structure Avec .. Faire
Pour simplifier l'écriture et éviter l'utilisation
répétée des champs et de la notation avec
le point (variable.champ), on peut utiliser
l'instruction Avec .. Faire (With .. Do).
Cette structure s'utilise aussi bien avec
une opération d'affectation, de lecture ou
d'écriture.

24/12/2020 Algorithmique et Programmation 2 212


Tableaux d’enregistrements
Un tableau ne peut grouper ou contenir
que des éléments de même type, et
puisque les éléments d'un enregistrement
sont de même type qui est celui de
l'enregistrement, donc on peut utiliser un
tableau ou un vecteur d'enregistrements.

24/12/2020 Algorithmique et Programmation 2 217


Tableaux d’enregistrements
declaration algorithmique
 Déclaration de la variable T utilisant les
enregistrements des élèves :
Type Fiches= Enregistrement
nom, prénom : Chaîne
sexe : Caractère
numéro : Entier non signé
moyenne : Réel
num_cin : Entier long
Fin;
Type tab = tableau[0 à 99] de Fiches {tableau d'enregistrements
fiches}

24/12/2020 Algorithmique et Programmation 2 218


Tableaux d’enregistrements
création de variables
 T tab;

24/12/2020 Algorithmique et Programmation 2 219


Tableaux d’enregistrements
déclaration en C
 Déclaration de la variable T utilisant les
enregistrements des élèves :
typedef struct fiche{
char[20] nom,prenom;
char sexe;
short int numero;
float moyenne;
long int num_cin;
}fiche;
Fiche eleve;
fiche TabFiches[100]; // Tableau contenant des éléments de type fiche

24/12/2020 Algorithmique et Programmation 2 220


Exercice d’application
Un médecin enregistre sur ordinateur les fiches de ses
Patients. Une fiche a la structure suivante :
-un nom (chaîne de 30 caractères maximum)
-un numéro (entier)
-un numéro de téléphone (10 caractères maximum)
-un code d'assurance (entier non signé).
1/ Ecrire les analyses, les algorithmes des différents
modules d'un programme nommé GestionFiche, qui
permet la saisie et l'affichage de l'enregistrement d'un
Patient.
2/ Traduire ce programme en C
24/12/2020 Algorithmique et Programmation 2 221

Vous aimerez peut-être aussi