Professional Documents
Culture Documents
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
nom_champN: type_champN
FinType
Exemple :
Type T_Personne
nom : Chane
prnom : Chane
ge : Entier
FinType
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
Page 3
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
Page 4
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 )
Page 6
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
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.
Page 7