You are on page 1of 7

ALGORITHMIQUE

MODULE 6
SQUENCE 1
Table des matires
VI - LES TYPES STRUCTURS ET LES ENREGISTREMENTS
A. DFINITION
B. DCLARATION D'UN ENREGISTREMENT PARTIR D'UN TYPE STRUCTUR
C. MANIPULATION D'UN ENREGISTREMENT
D. LES TABLEAUX D'ENREGISTREMENTS (OU TABLES)

Page 1

VI - LES TYPES STRUCTURS ET LES


ENREGISTREMENTS
A. DFINITION
Contrairement aux tableaux qui sont des structures de donnes dont tous les lments sont de mme
type, les enregistrements sont des structures de donnes dont les lments peuvent tre de types
diffrents qui se rapportent la mme entit (au sens de MERISE).
Les lments qui composent un enregistrement sont appels champs ou composantes.
Avant de dclarer une variable enregistrement, il faut avoir au pralable dfinit son type, c'est dire
le nom et le type des champs qui le compose. Le type d'un enregistrement est appel type
structur (les enregistrements sont parfois appels structures, par analogie avec des langage de
programmation).

B. DCLARATION D'UN ENREGISTREMENT PARTIR D'UN TYPE


STRUCTUR
Jusqu' prsent, nous avons utilis uniquement des types primitifs (caractres, entiers, rels,
chanes) et des tableaux de types primitifs. Mais nous pouvons crer nos propres types puis dclarer
des variables ou des tableaux d'lments de ce type.
Pour crer des enregistrements, il faut dclarer un nouveau type, bas sur d'autres types existants,
appel type structur. Aprs avoir dfini un type structur, nous pouvons l'utiliser comme un type
normal en dclarant une ou plusieurs variables de ce type. Les variables de type structur sont
appeles enregistrements.
La dclaration des types structurs se fait dans un bloc appel TYPE.
Syntaxe :
Type nom_type
nom_champ1: type_champ1
nom_champ2 : type_champ2

nom_champN: type_champN
FinType
Exemple :
Type T_Personne
nom : Chane
prnom : Chane
ge : Entier
FinType

DEVELOPPEMENT D'APPLICATIONS INFORMATIQUES ET GENIE LOGICIEL

Page 2

T_Personne est un nouveau type de variable compos de 3 champs. Lorsque le type structur est
dfini, il est possible de dclarer des variables structures de la mme faon que des variables d'un
type primitif.
Syntaxe
T : nom_type[1..20]
Exemple:
VARIABLE pers1, pers2, pers3 : T_Personne
Reprsentation :
Les enregistrements sont composs de plusieurs zones de donnes, correspondant aux champs.
pers1.nom

pers1.prnom

pers1.age

pers2.nom

pers2.prnom

pers2.age

pers1

pers2
Exemple :
Soit l'entit suivante :
PRODUIT
code
lib
paht
pvht
txtva

code : code alphanumrique du produit


lib : libll
paht : prix d'achat HT
pvht : prix de vente TTC
txtva : taux de TVA applicable

Voici comment dclarer deux occurrences (variables enregistrements) du type structur


correspondant cette entit :
// Il faut d'abord dfinir le type structur correspondant :
Type Produit
code: Chane
lib: Chane
paht: Rel
pvht: Rel
txtva: Rel
FinType
// Ensuite il est possible de dclarer deux variables de ce type
VARIABLE prod1, prod2 : Produit

DEVELOPPEMENT D'APPLICATIONS INFORMATIQUES ET GENIE LOGICIEL

Page 3

C. MANIPULATION D'UN ENREGISTREMENT


La manipulation d'un enregistrement se fait au travers de ses champs. Comme pour les
tableaux, il n'est pas possible de manipuler un enregistrement globalement, sauf pour affecter un
enregistrement un autre de mme type. Par exemple, pour afficher un enregistrement il faut
afficher tous ses champs un par un.

1. Accs aux champs d'un enregistrement


Alors que les lments d'un tableau sont accessibles travers un indice, les champs d'un
enregistrement sont accessibles travers leur nom, grce l'oprateur '.'.
Exemple : pour accder l'ge de la variable pers2, on utilise l'expression : pers2.ge

Le nom d'un champ est toujours prcd du nom de l'enregistrement auquel il appartient. Nous
ne pouvons pas utiliser de nom de champ tout seul, sans indication de l'enregistrement.
Les champs d'un enregistrement, tout comme les lments d'un tableau, sont des variables pouvant
utiliser les oprations traditionnelles d'affectation, de saisie, d'affichage, ...
Exemple :
Ecrire un programme de saisie des donnes concernant deux personnes pers1 et pers2 puis
afficher la diffrence d'ge entre ces deux personnes.
PROGRAMME Exemple
Type T_Personne
nom : Chane
prnom : Chane
ge : Entier
FinType
VARIABLE pers1, pers2 : T_Personne
DEBUT
Afficher("Entrez le nom puis l'age de la personne 1")
Saisir(pers1.nom, pers1.age)
Afficher("Entrez le nom puis l'ge de la personne 2")
Saisir(pers2.nom, pers2.age)
Afficher("La diffrence d'ge entre ", pers1.nom, " et ", pers2.nom, " est de :")
Si pers1.age > pers2.age Alors
Afficher( pers1.age pers2.age, " ans" )
Sinon
Afficher( pers2.age pers1.age, " ans" )
FinSi
FIN

DEVELOPPEMENT D'APPLICATIONS INFORMATIQUES ET GENIE LOGICIEL

Page 4

2. Passage d'un enregistrement en paramtre d'un sous-programme


Il est possible de passer tout un enregistrement en paramtre d'une fonction ou d'une procdure (il
n'est pas ncessaire de passer tous les champs un un, ce qui permet de diminuer le nombre de
paramtres passer), exactement comme pour les tableaux.
Exemple :
La fonction suivante retourne la diffrence d'ge entre deux personnes.
FONCTION Diffrence (p1, p2 : T_Personne) : Entier
DEBUT
Si pers1.age > pers2.age Alors
Retourner( pers1.age pers2.age )
Sinon
Retourner( pers2.age pers1.age )
FinSi
FIN
Exemple 2 :
La procdure suivante permet de modifier le prix de vente HT d'un produit pass en
paramtre. Cette procdure commence par afficher le libell et l'ancien prix de vente HT du
produit puis dfinit le nouveau prix de vente entr par l'utilisateur.
PROCEDURE MajPV (x: Produit)
DEBUT
Afficher("Produit : ", x.libell)
Afficher("Prix de vente HT actuel : ", x.pvht)
Afficher("Saisir le nouveau prix de vente : ")
Saisir(x.pvht)
Afficher("Le nouveau prix de vente est : ", x.pvht)
FIN

Type Produit
libell : Chane
pvht : Rel
FinType

3. L'imbrication d'enregistrements
Supposons que dans le type T_Personne, nous ne voulions plus l'ge de la personne, mais sa date de
naissance. Une date est compose de trois variables (jour, mois, anne) indissociables. Une date
correspond donc une entit reprsente par un type enregistrement 3 champs (ou composantes).
Si nous dclarons le type T_Date au pralable, nous pouvons l'utiliser dans la dclaration du type
T_Personne pour reprsenter la date de naissance.
Un type structur peut tre utilis comme type pour des champs d'un autre type structur.
Type T_Date
jour : Entier
mois : Chane
anne : Entier
FinType
Type T_Personne
nom : Chane
ddn : T_Date
FinType
DEVELOPPEMENT D'APPLICATIONS INFORMATIQUES ET GENIE LOGICIEL

Page 5

Pour accder l'anne de naissance d'une personne, nous devons utiliser deux fois l'oprateur '.'
avec la syntaxe suivante :
pers1.ddn.anne
Il faut lire une telle variable de droite gauche : l'anne de la date de naissance de la personne 1.
Exemple complet :
Un produit est livr par un fournisseur. Ce produit est caractris par un code, un libell, un prix
d'achat HT, un prix de vente HT, un taux de TVA et un fournisseur. Un fournisseur est caractris
par un code, une raison sociale, une adresse et un tlphone. Une adresse est dfinie par un numro,
une rue, un code postal et une ville.
TYPE Adresse
num : Entier
rue: Chane
cp: Chane
ville: Chane
FinType
Type Fournisseur
code_frs : Chane
raison_sociale: Chane
adr: Adresse
tl: Chane
FinType
Type Produit
code_pdt: Chane
lib: Chane
pa_ht: Rel
pv_ht: Rel
taux_tva: Rel
frs: Fournisseur
FinType
VARIABLE p: Produit
Voici l'instruction permettant d'afficher le numro de tlphone du fournisseur du produit p.frs.tl
Afficher( "Tlphone du fournisseur de " , p.lib , " : " , p.frs.tl )

DEVELOPPEMENT D'APPLICATIONS INFORMATIQUES ET GENIE LOGICIEL

Page 6

D. LES TABLEAUX D'ENREGISTREMENTS (OU TABLES)


Il arrive souvent qu'il existe plusieurs enregistrement traiter. Par exemple, nous voulons pouvoir
traiter un groupe de personnes; nous n'allons pas crer autant de variables du type Tpersonne quil
y a de personnes mais nous allons crer un tableau regroupant toutes les personnes du groupe. Il
sagit alors dun tableau denregistrements.
CONSTANTE NP 20

( Nombre de personnes du groupe )

Type T_Personne
nom: Chane
ge: Entier
FinType
VARIABLE groupe : T_Personnes[ NP ]
Chaque lment du tableau est un enregistrement, contenant plusieurs variables de types diffrents.
Un enregistrement est dfini par son indice dans le tableau :
groupe[2] reprsente la deuxime personne du groupe
groupe[2].nom reprsente le nom de la deuxime personne du groupe
nom

ge

Nom des champs

1
2
3
4
5
Indices du tableau
Attention : La notation groupe.nom[3] n'est pas valide. Pour accder au nom de la troisime
personne du tableau, il faut crire groupe[3].nom.

DEVELOPPEMENT D'APPLICATIONS INFORMATIQUES ET GENIE LOGICIEL

Page 7

You might also like