CHAPITRE 10 : LES ENREGISTREMENTS

Un enregistrement regroupe plusieurs informations de types differents sous un meme nom. C'est ce qui permet de manipuler un etudiant, un produit ou un livre comme un tout.

1. Le probleme

Jusqu'ici, nous manipulions des variables separees : nom, age, moyenne. Or ces informations decrivent une meme personne. Il est bien plus naturel de les regrouper :

Etudiant
├── Nom
├── Prenom
├── Age
├── Matricule
└── Moyenne

2. Declarer un type

Type Etudiant = Enregistrement

    nom     : chaine;
    prenom  : chaine;
    age     : entier;
    moyenne : reel;

FinEnregistrement

On cree ici un nouveau type, au meme titre que entier ou reel.

3. Declarer une variable

Var
    e : Etudiant;

4. Acceder aux champs

Chaque champ s'atteint avec le point :

Lire(e.nom);
Lire(e.age);

e.age <- 20;
e.nom <- "Paul";

Ecrire(e.nom, e.age, e.moyenne);

5. Un exemple complet

Algorithme GestionEtudiant;

Type Etudiant = Enregistrement
    nom     : chaine;
    age     : entier;
    moyenne : reel;
FinEnregistrement

Var
    e : Etudiant;

Debut

    Lire(e.nom);
    Lire(e.age);
    Lire(e.moyenne);

    Ecrire(e.nom, e.age, e.moyenne);

Fin.

6. Un tableau d'enregistrements

Var
    Classe : Tableau[1..30] de Etudiant;

Chaque case contient un etudiant complet.

Classe
┌──────────────┐
│  Etudiant 1  │   nom, age, moyenne
├──────────────┤
│  Etudiant 2  │   nom, age, moyenne
├──────────────┤
│      ...     │
└──────────────┘

7. Lecture et affichage

Pour i de 1 a N Faire

    Lire(Classe[i].nom);
    Lire(Classe[i].age);
    Lire(Classe[i].moyenne);

FinPour
Pour i de 1 a N Faire

    Ecrire(Classe[i].nom, Classe[i].age, Classe[i].moyenne);

FinPour

8. Rechercher un etudiant

trouve <- FAUX;
i      <- 1;

TantQue(i <= N ET NON trouve) Faire

    Si(Classe[i].matricule = mat) Alors
        trouve <- VRAI;
    Sinon
        i <- i + 1;
    FinSi

FinTantQue

9. Le meilleur etudiant

meilleur <- Classe[1];

Pour i de 2 a N Faire

    Si(Classe[i].moyenne > meilleur.moyenne) Alors
        meilleur <- Classe[i];
    FinSi

FinPour

A la fin, meilleur contient toutes les informations de l'etudiant, pas seulement sa moyenne.

10. La moyenne generale

s <- 0;

Pour i de 1 a N Faire
    s <- s + Classe[i].moyenne;
FinPour

moy <- s / N;

11. Trier un tableau d'enregistrements

Le principe est celui du tri a bulles. La difference : on echange les enregistrements complets.

Si(Classe[i].moyenne > Classe[i+1].moyenne) Alors

    temp         <- Classe[i];
    Classe[i]    <- Classe[i+1];
    Classe[i+1]  <- temp;

FinSi

12. D'autres usages

Type Livre = Enregistrement
    titre  : chaine;
    auteur : chaine;
    annee  : entier;
FinEnregistrement

Type Produit = Enregistrement
    reference   : chaine;
    designation : chaine;
    prix        : reel;
    stock       : entier;
FinEnregistrement

13. Les erreurs frequentes

  • Confondre Classe[i] et Classe[i].nom. Le premier designe tout l'etudiant, le second uniquement son nom.
  • Oublier le point : Classe[i]nom est incorrect.
  • Declarer les champs sans creer le type. Commencez toujours par Type … FinEnregistrement.
  • N'echanger qu'un seul champ lors d'un tri. C'est l'erreur la plus grave : elle desolidarise les donnees. Un etudiant se retrouve avec la moyenne d'un autre.

A retenir

  • Un enregistrement regroupe des informations de types differents
  • Il se definit avec Type … FinEnregistrement
  • Les champs s'atteignent avec le point
  • Un tableau peut contenir des enregistrements : T[i].champ
  • Lors d'un tri, echangez l'enregistrement entier

Fiche memo

Type NomType = Enregistrement
    champ1 : type;
    champ2 : type;
FinEnregistrement

Var
    x : NomType;
    T : Tableau[1..N] de NomType;

x.champ1
T[i].champ

Exercices d'application

Exercice 1. Fiche produitDefinissez un type Produit (reference, designation, prix, stock) et lisez 5 produits dans un tableau. Affichez ceux dont le stock est inferieur a 10.
Exercice 2. ClassementTriez un tableau de 5 etudiants par moyenne decroissante et affichez le classement. Verifiez que nom et moyenne restent bien associes.
Exercice 3. BibliothequeCreez un type Livre, lisez 4 livres, puis recherchez un livre par son titre.

Cherchez avant de regarder la solution : c'est en butant sur les difficultes que l'on progresse.

Questions / Réponses

Aucune question. Soyez le premier à poser une question.
★ ★ ★ ★ ★
2 votes. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam