Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
Algorithme

Algorithme: les enregistrements

Un cours complet pour maîtriser Algorithme: les enregistrements.

0 chapitres 0 QCM Accès gratuit
Algorithme: les enregistrements

Objectifs

  • Connaitre les enregistrements algorithmiques

Présentation

algorithme les enregistrements
  • Un enregistrement est un type de données défini par l'utilisateur et qui permet de grouper un nombre fini d'éléments (ou champs) de types éventuellement différents (alphabétique, numérique, logique,...) sous un nom commun.
  • A la différence des tableaux, qui ne permettent de grouper que des éléments du même type, les enregistrements permettent de combiner différents types de données.
  • Les éléments qui composent un enregistrement sont appelés champs.
  • Avant de déclarer une variable enregistrement, il faut avoir au préalable définit son type, c'est à dire le nom et le type des champs qui le compose.
  • Le type d'un enregistrement est appelé type structuré.

Déclaration

1. Type
Nom_Type = Enregistrement
    Champ1: Type1
    Champ2: Type2
    ...
    ChampN: TypeN
Fin Nom_Type
2. Remarques
  • Les types enregistrements font partie des types structurés. Concernant les champs, il faut savoir que ceux-ci peuvent être de n’importe quel type (sauf un type fichier).
  • Mais :
    • Il n’existe pas de constante d’un type enregistrement.
    • Il n’existe pas d’opération (autre que l’affectation et le passage comme paramètre) sur les enregistrements.
    • Les seules expressions d’un type enregistrement sont les variables de ce type.
    • Il n’y a pas de fonction (même prédéfinie) à résultat d’un type enregistrement.
3. Exercice d'application
3.1. Énoncé

Déclarer une variable enregistrement représentant un nombre complexe.

3.2. Solution proposée
Complexe = Enregistrement
    P_réelle: Réel
    P_imaginaire: Réel
Fin Complexe

Utilisation des enregistrements

1. Accès au champ d’un enregistrement
  • Alors que les éléments d'un tableau sont accessibles au travers de leur indice, les champs d'un enregistrement sont accessibles à travers leur nom, grâce à l'opérateur '.'
  • Un tel champ est défini par le nom de l’enregistrement ainsi que par son nom propre.
Exemple

apprenant.nomprenom: représente le champ nomprenom de l’enregistrement apprenant.

  • Le nom d'un champ est TOUJOURS précédé du nom de l'enregistrement auquel il appartient.
  • On ne peut pas trouver un nom de champ tout seul, sans indication de l'enregistrement.
  • Les champs d'un enregistrement, tout comme les éléments d'un tableau, sont des variables à qui on peut faire subir les mêmes opérations (affectation, saisie, affichage,…).
Exercice d'application

Énoncé : Programme de saisie des données concernant les apprenants appr1 et appr2, puis affichage de la différence d'âge entre ces deux apprenants.

Solution proposée :

Type
    Structure tpeappr
        nom : chaîne
        prénom : chaîne
        âge : entier
    FinStructure
Var
    appr1, appr2: tpeappr
Début
    Aff "Entrez le nom puis l'age de l'apprenant 1"
    Saisir appr1.nom, appr1.age // il est impossible d'écrire Saisir pers1
    
    Aff "Entrez le nom puis l'âge de l'apprenant 2"
    Saisir appr2.nom, appr2.age
    
    Aff "La différence d'âge entre ", appr1.nom, " et ", appr2.nom, " est de "
    Si appr1.age > appr2.age
        Alors Aff appr1.age - appr2.age, " ans "
        Sinon Aff appr2.age - appr1.age, " ans "
    FinSi
Fin

2. Affectation

L’affectation de valeurs aux différents champs d’une variable enregistrement se fait comme suit :
Variable.champ ← valeur

Exercice d'application

Énoncé :
1. Déclarer en algorithmique et en Pascal une variable enregistrement pour représenter la fiche d’un apprenant sachant qu’elle contient les informations suivantes : nom, Prénom, Sexe (F ou G), date de naissance et la note de l'informatique.
2. Affecter respectivement les valeurs suivantes à cette variable : 'Hajji', 'Riadh', 'F', '27/11/1983' et 13.25

Solution (En analyse / algorithmique) :

1. Déclaration

Type
    Fiche = Enregistrement
        Nom, prénom : Chaîne
        sexe : Caractère
        date_nais : chaîne
        note: Réel
    Fin Fiche

2. Affectation

E.nom ← 'Hajji'
E.prénom ← 'Riadh'
E.sexe ← 'F'
E.date_nais ← '27/11/1983'
E.note ← 13.25

Solution (En Pascal) :

1. Déclaration

TYPE fiche = Record
    Nom, prenom : String ;
    sexe : Char ;
    date_nais : String ;
    note : Real ;
End;
VAR
    E: Fiche;

2. Affectation

E.nom := 'Hajji' ;
E.prenom := 'Riadh' ;
E.sexe := 'F' ;
E.date_nais := '27/11/1983' ;
E.note := 13.25 ;
Il est possible d’affecter une variable enregistrement dans une autre à condition qu’ils aient la même structure.

3. Lecture

La lecture des valeurs des différents champs d’une variable enregistrement se fait comme suit :

En analyseEn algorithmeEn Pascal
Variable.champ = donnée Lire(Variable.champ) Readln(Variable.champ);
Exercice d'application 3

Reprenez l’exercice d'application précédent et écrivez les instructions permettant de saisir à partir du clavier les champs de la variable enregistrement E.

En analyse

E.nom = Donnée("Entrer le nom")
E.prénom = Donnée("Entrer le prénom")

En algorithme

Ecrire("Entrer le nom") ; lire(E.nom)
Ecrire("Entrer le prénom") ; lire(E.prénom)

En Pascal

Write('Entrer le nom :'); 
Readln(E.nom);
Exercice d'application 4

Énoncé :
Soit la structure apprenant constituée par le nom (chaîne de 30 caractères maximum), le numéro de téléphone (10 caractères maximum), le numéro de carte d'identité (entier non signé). Ecrivez un programme qui saisit puis affiche les enregistrements pour 3 personnes.

Solution proposée (Algorithme) :

Algorithme saisie_affich; 
Type apprenant = enregistrement 
    nom: chaine[30]; 
    num_tel, num_c_b: entier; 
Fin; Var T: tableau[1..3] de apprenant; 
    i: entier; 
Début
    Pour i allant de 1 à 3 faire
        Avec T[i] faire 
            lire (nom, num_tel, num_c_b); 
        Fin Avec; Fin Pour; Pour i allant de 1 à 3 faire 
        Avec T[i] faire 
            ecrire(nom, num_tel, num_c_b); 
        Fin Avec; Fin Pour; Fin. 

4. Écriture

L’écriture des valeurs des différents champs d’une variable enregistrement se fait comme suit :

En analyse et en algorithmeEn Pascal
Ecrire(Variable.champ) Write(Variable.champ);