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

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.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions