Les types structurés et les enregistrements
Ce matériel couvre les types structurés et les enregistrements, destinés aux étudiants en informatique ou en programmation souhaitant comprendre comment définir et manipuler des structures de données composées de champs de types différents. Il explique la déclaration, l'utilisation, la manipulation, l'imbrication et l'organisation en tableaux des enregistrements.
D'après le document Les types structurés et les enregistrements
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Programming, Data Structures · DOCX · 8 pages
Ce matériel couvre les types structurés et les enregistrements, destinés aux étudiants en informatique ou en programmation souhaitant comprendre comment définir et manipuler des structures de données composées de champs de types différents. Il explique la déclaration, l'utilisation, la manipulation, l'imbrication et l'organisation en tableaux des enregistrements.
Types structurés et enregistrements : définition et déclaration
Contrairement aux tableaux, qui contiennent des éléments tous du même type, les enregistrements sont des structures de données dont les éléments (appelés champs) peuvent être de types différents. Le type d'un enregistrement est appelé type structuré. Avant de déclarer une variable enregistrement, il faut définir son type, c’est-à-dire le nom et le type des champs qui le composent.
La déclaration des types structurés se fait dans une section spéciale appelée Type, qui précède la section des variables.
Syntaxes de déclaration
Notation inspirée du Pascal :
Type
nom_type = enregistrement
nom_champ1 : type_champ1
…
nom_champn : type_champn
finenreg
Notation inspirée du C :
Type
Structure nom_type
nom_champ1 : type_champ1
…
nom_champN : type_champN
FinStruct
Exemple de type structuré "personne"
Type
tpersonne = enregistrement
nom : chaîne
prénom : chaîne
âge : entier
finenreg
Ou en notation C :
Type
Structure tpersonne
nom : chaîne
prénom : chaîne
âge : entier
FinStruct
Déclaration et manipulation d'enregistrements
Déclaration d'une variable enregistrement
Une fois le type structuré défini, on peut déclarer des variables de ce type comme pour un type primitif :
Var
pers1, pers2, pers3 : tpersonne
Accès aux champs d'un enregistrement
Les champs d'un enregistrement sont accessibles par leur nom, précédé du nom de la variable enregistrement, grâce à l'opérateur point . :
nom_enregistrement.nom_champ
Par exemple, pour accéder à l'âge de la variable pers2 :
pers2.âge
Il est impossible d'accéder à un champ sans préciser l'enregistrement auquel il appartient.
Exemple complet : saisie et affichage
Programme: Exemple
Type
Structure tpersonne
nom : chaîne
prénom : chaîne
âge : entier
FinStruct
Var
pers1, pers2 : tpersonne
Début
Aff "Entrez le nom puis l'âge de la personne 1"
Saisir pers1.nom, pers1.âge
Aff "Entrez le nom puis l'âge de la personne 2"
Saisir pers2.nom, pers2.âge
Aff "La différence d'âge entre ", pers1.nom, " et ", pers2.nom, " est de "
Si pers1.âge > pers2.âge
Alors Aff pers1.âge – pers2.âge, " ans "
Sinon Aff pers2.âge – pers1.âge, " ans "
FinSi
Fin
Passage d'un enregistrement en paramètre
Un enregistrement peut être passé en paramètre d'une fonction ou d'une procédure, ce qui évite de passer chaque champ individuellement.
Exemple de fonction calculant la différence d'âge
Fonction différence (p1, p2 : tpersonne)
Début
Si p1.âge > p2.âge
Alors Retourne (p1.âge – p2.âge)
Sinon Retourne (p2.âge – p1.âge)
FinSi
FinFonct
Exemple de procédure modifiant un champ d'un enregistrement
Procédure majpv (E/S x : produit)
Début
Aff "produit: ", x.lib
Aff "prix de vente hors taxe actuel: ", x.pvht
Aff "Entrez le nouveau prix de vente: "
Saisir x.pvht
Aff "le nouveau prix de vente est: ", x.pvht
FinProc
Imbrication d'enregistrements
Un type structuré peut contenir des champs eux-mêmes de type structuré. Par exemple, remplacer l'âge d'une personne par sa date de naissance, représentée par un enregistrement date composé de trois champs : jour, mois, année.
Déclaration des types imbriqués
Type
Structure date
jour : entier
mois : chaîne
année : entier
FinStruct
Structure personne
nom : chaîne
ddn : date
FinStruct
Pour accéder à l'année de naissance de la personne pers1, on utilise :
pers1.ddn.année
On lit cette expression de droite à gauche : l'année de la date de naissance de la personne 1.
Exemple complet avec plusieurs niveaux d'imbrication
Type
Structure adresse
num : entier
rue : chaîne
cp : chaîne
ville : chaîne
FinStruct
Structure fournisseur
code_frs : chaîne
raison_sociale : chaîne
ad_frs : adresse
tel : chaîne
FinStruct
Structure produit
code : chaîne
lib : chaîne
paht : réel
pvht : réel
txtva : réel
frs : fournisseur
FinStruct
Var
p : produit
Début
Aff "téléphone du fournisseur de ", p.lib, " : ", p.frs.tel
Fin
Tableaux d'enregistrements
Pour gérer plusieurs enregistrements du même type, on utilise des tableaux d'enregistrements. Chaque élément du tableau est un enregistrement complet.
Déclaration d'un tableau d'enregistrements
Const
NP = 20 // nombre de personnes du groupe
Type
Structure personne
nom : chaîne
âge : entier
FinStruct
Var
groupe : tableau[1..NP] de personne
Accès aux éléments et champs
On accède à un enregistrement par son indice, puis à un champ par son nom :
groupe[2] // deuxième personne du groupe
groupe[2].nom // nom de la deuxième personne
Attention, groupe.nom[3] n'est pas valide. Il faut écrire groupe[3].nom.
Glossaire des termes clés
- Enregistrement : structure de données composée de plusieurs champs de types différents.
- Champ : élément composant un enregistrement, identifié par un nom et un type.
- Type structuré : type défini par l'utilisateur, regroupant plusieurs champs, utilisé pour déclarer des enregistrements.
- Opérateur point (.) : opérateur permettant d'accéder à un champ d'un enregistrement.
- Imbrication : fait d'utiliser un type structuré comme champ d'un autre type structuré.
- Tableau d'enregistrements : tableau dont chaque élément est un enregistrement.
Points clés à retenir
- Un enregistrement regroupe des champs de types différents, contrairement aux tableaux.
- La déclaration d'un type structuré précède la déclaration des variables qui en sont issues.
- On accède aux champs d'un enregistrement par
nom_enregistrement.nom_champ. - Un enregistrement peut être passé en paramètre d'une fonction ou procédure.
- Les types structurés peuvent être imbriqués pour modéliser des données complexes.
- Les tableaux d'enregistrements permettent de gérer des collections d'entités structurées.
Commentaires
Aucun commentaire pour le moment. Posez la première question.