Algorithme: Les enregistrements
//
-
Définitions
- 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
- 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.
-
Exercice d’application
-
Énoncé
-
Utilisation des enregistrements
-
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.
- 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 2
-
É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.
-
Affectation
- L’affectation de valeurs aux différents champs d’une variable enregistrement se fait comme suit :
-
Exercice d’application 2
-
É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
- 1. Déclaration d’une variable enregistrement
- 2. Affectation des valeurs à cette variable :
-
En pascal
- 1. Déclaration d’une variable enregistrement
- Lecture
-
Exercice d’application 3
-
Énoncé
- Reprenez l’exercice d’application 2 et écrivez les instructions permettant de saisir à partir du clavier les champs de la variable enregistrement E.
-
Exercice d’application 4
-
Énoncé
- Elle est 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.
- Ecriture
Type |
Nom_Type = Enregistrement Champ1 : Type1 Champ2 : Type2 … ChampN : TypeN Fin Nom_Type |
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 :
-
Déclarer une variable enregistrement représentant un nombre complexe.
Solution proposée
Type |
Complexe = Enregistrement P_réelle : Réel P_imaginaire : Réel Fin Complexe |
Exemple
apprenant.nomprenom: représente le champ nomprenom de l’enregistrement apprenant.
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, appr2.age // il est impossible d’écrire Saisir pers1
Aff « Entrez le nom puis l’âge de l’apprenant 2 »
Saisir appr2.nom, appr.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
Variable.champ<— valeur
Solution proposée
-
En analyse
Type |
Fiche = Enregistrement Nom, prénom : Chaîne sexe : Caractère date_nais : chaîne note: Réel Fin Fiche |
E.nom<– ‘’Riadh’’ E. prénom<– ‘’Riadh’’ E. sexe<– ‘’F’’ E. date_nais<– ‘’27 /11/1983’’ E. note<–13.25 |
TYPE fiche = Record Nom, prenom : String ; sexe : Char ; date_nais : String ; note : Real ; End; VAR E: Fiche;
2. Affectation des valeurs à cette variable :
E.nom := ’Hajji’ ; E. Prénom := ‘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.
- La lecture des valeurs des différents champs d’une variable enregistrement se fait comme suit :
En analyse | En algorithme | En Pascal |
Variable.champ = donnée | Lire (Variable.champ) | Readln (Variable.champ) ; |
Solution proposée
-
En analyse :
-
E.nom = Donnée (‘’Entrer le nom de l’étudiant :’’)
E.prénom = Donnée (‘’Entrer le prénom de l’étudiant :’’)
En algorithme :
-
Ecrire (‘’Entrer le nom de l’étudiant :’’) ; lire (E.nom)
Ecrire (‘’Entrer le prénom de l’étudiant :’’) ; lire (E. prénom)
En Pascal :
-
Write (’Entrer le nom de l’ ’étudiant :’) ;
Readln (E.nom) ; …
Soit la structure apprenant
Solution proposée
Algorithme saisie_affich; type apprenant = enregistrement nom: chaine[30]; num_tel, num_c_b: entier; fin; var T: tableau[1..3] de Info; i: entier; debut pour i allant de 1 à 3 faire avec T[i] faire lire (nom, num_tel, num_c_b); finavec; finpour; pour i allant de 1 à 3 faire avec T[i] faire ecrire( nom, num_tel, num_c_b); finavec; finpour; fin.
-
L’écriture des valeurs des différents champs d’une variable enregistrement se fait comme suit :
En analyse et en algorithme | En Pascal |
Ecrire (Variable.champ) | Write (Variable.champ) ; |