Vous êtes sur la page 1sur 7

Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements

COURS
ALGORITHMIQUE ET PROGRAMMATION
C
CHAPITRE :
LES ENREGISTREMENTS
1
Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements
1 Introduction
Les types dfinis par le langage C permettent certes de rpondre la
plupart des besoins des programmeurs. Toutefois, dans plusieurs cas,
ils demeurent insuffisants pour reprsenter des entits complexes
caractrises par plusieurs donnes. Prenons l'exemple d'un individu.
Une personne possde plusieurs donnes !ui lui est attac"e tels !ue
le poids, la date de naissance, l'endroit de naissance...etc. #ucun type
!u'on conna$t ne peut centraliser toutes ces donnes dans une seule
entit. #fin de remdier cette insuffisance, le langage C a instaur un
type particulier nomm % &nregistrement '.
2
Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements
2 Notion denregitre!ent " t#$e et cr%&tion
&tant donn !ue les enregistrements sont des types dfinis par l'utilisateur, une
cration directe de variables de ce type est impossible sans passer par une dfinition
d'un type !ui leur est associs.
2'1 (%)inition d*un t#$e enregitre!ent
Un type enregistrement en algorit"mi!ue ou un type structure en C ou un type
(ecord en P#)C#L, est un type dcrivant une entit composite issue d'un
groupement d'un ensemble de donnes en C ayant des types connus. &n langage C,
il est dfini l'extrieur de toutes les fonctions *uste aprs les #include de
prfrence selon la s!uelette suivante.
struct nom + ,,squelette 1
type1 champ1 ;
type2 champ2 ;
.
.
.
typen champn ;
- .
o/ c"amp0, c"amp1,...c"ampn sont des identificateurs 2ou identificateurs des
c"amps3 et type1,type2,...typen sont des types connus 2types simples ou m4me des
enregistrements dfinis au pralable3.
E+e!$,e :
struct date +
int *our .
int mois .
int annee .
- . ,,on a dclar un type de structure nomm date compos par 5 c"amps 6
,,*our !ui est de type int, mois !ui est de type int et annee de type int.
struct personne +
c"ar nom7589.
c"ar prenom7:89 .
long C;< .
struct date date=naissance .
3
Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements
-. ,> on a dclar un type de structure nomm personne !ui est compos par les
c"amps suivants 6 nom et prnom de type c"a$ne de caractre, C;< de type long et
date=naissance de type date !ui est un type structure >,
;l est possible d'amliorer davantage cette dfinition en utilisant une autre
s!uelette 6
typedef struct nom + ,,squelette 2
type0 c"amp0 .
type1 c"amp1 .
.
.
.
typen c"ampn .
- nom=prime .
E+e!$,e :
typedef struct date +
int *our .
int mois .
int annee .
- ?ate. ,>on a dclar un type de structure nomm date ou un type nomm ?ate
compos par 5 c"amps 6 *our !ui est de type int, mois !ui est de type int et annee
de type int. >,
typedef struct personne +
c"ar nom7589.
c"ar prenom7:89 .
long C;< .
struct date date=naissance .
- Personne. ,> on a dclar un type de structure nomm personne ou un type
nomm Personne !ui est compos par les c"amps suivants 6 nom et prnom de type
c"a$ne de caractre, C;< de type long et date=naissance de type date !ui est un type
structure >,
2'2 Cr%&tion de -&ri&.,e de t#$e enregitre!ent :
Une fois !ue les types enregistrements ont t dfinis, on peut crer autant de
variables de ces types !u'on sou"aite en les utilisant comme s'ils taient des types
primitifs en C. Les syntaxes de cration de structures dpendent de la s!uelette
4
Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements
adopte pour dclarer le type de structures. &n effet, si squelette 1 a t utilise
pour dclarer la structure, une seule syntaxe est disponible pour crer une variable
de type structure 6
truct nom nom=variable .
Cependant si squelette 2 a t utilise, on peut crer des variables de type
structure de deux fa@ons diffrentes 6
truct nom nom=variable .
ou bien
nom=prime nom=variable .
#insi, @a nous vitera d'utiliser le mot cl struct c"a!ue fois !u'on a besoin de
dclarer une structure.
E+e!$,e :
struct date d0 .,, cration d'une structure nomme d0 de type struct date
?ate d0 . ,,gnre aussi une structure nomme de d0 de type ?ate ou struct ?ate.
struct date d1A+08,00,0BC8- .,> cration d'une structure nomme d1 de type date
et son initialisation avec 08 dans le c"amp *our, 00 dans le c"amp mois et 0BC8
dans le c"amp annee>,
struct personne p0,p1A+DaliD, Dben salemD, 8C5BEB:5- . ,> cration de 1
structures nommes p0 et p1 de type personne. P1 a eu une initialisation de ses
c"amps nom prenom et C;< aux valeurs respectives DaliD, Dben salemD et
8C5BEB:5.>,
struct personne liste=personnes70889 . ,> cration d'une tableau de 088 structures
de type personne>,
5
Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements
/ M&ni$u,&tion de enregitre!ent
Fn va lister dans ce !ui suit l'ensemble des oprations possibles pour les
structures.
/'1 A))ect&tion
La plupart des langages de programmation ne supportent pas l'affectation d'une
structure dans une autre. Toutefois, elle demeure possible dans le langage C.
E+e!$,e :
struct date d0,d1A+5,5,0BB5- ,liste=dates7559.
d0Ad1 . ,>aprs cette affectation on aura dans les c"amps *our mois et annee les
valeurs respectives 5 5 et 0BB5>,
liste=dates759Ad1 .,> il en est de m4me pour cette affectation !ui va placer les
donnes de d1 dans la case 5 du tableau de structures liste=dates.>,
/'2 M&ni$u,&tion de c0&!$ :
#fin de pouvoir manipuler les c"amps contenus dans une structure, il est impratif
de pouvoir leur accder. Ceci est faisable avec l'oprateur '.'
E+e!$,e :
(eprenons les structures d0 et d1 dclares prcdemment. )i on veut accder au
c"amp *our de d0 par exemple, on doit le dsigner comme suit en C 6 d1.jour. ;l en
est de m4me pour mois et annee pour d0 !ui doivent 4tre dsignes par d1.mois et
d1.annee.
GrHce cette syntaxe, on peut manipuler notre guise les c"amps contenus dans
les structures en C. Toute opration pouvant 4tre effectue en programmation sur
le type relatif au c"amp de la structure peut 4tre excute sur le c"amp de la
structure.
E+e!$,e :
struct personne P0.
scanf2DIsD,P0.nom3 .
scanf2DIdD,J2P0.date=naissance.*our33 .
scanf2DIdD,J2P0.date=naissance.annee33 .
printf2D<om 6 IsKn D,P0.nom3 .
P0.C;<LA:: .
strcpy2P0.nom,P0.prenom3 .
6
Cours : Algorithmique & Programmation C Chapitre : Les Enregistrements
Mref, toute opration pouvant 4tre effectue sur un long est faisable pour le c"amp
C;<. Toute opration ralisable sur une c"a$ne de caractres est ralisable sur les
c"amps nom et prenom.

7

Vous aimerez peut-être aussi