Les enregistrements
I. Définition :
Un enregistrement est une représentation (organisation) d'un ensemble d'éléments de même type ou bien de types différents (contrairement au tableaux qui regroupent uniquement des éléments de même type) .
Chaque élément d'un enregistrement est appelé champ .
Chaque élément d'un enregistrement est appelé champ .
II. Déclaration :
La déclaration d'un type d'enregistrement est comme suit :
Language Algorithmique :Type <Nom_enreg> = Enregistrement
<élément_1>:<type_élément_1> <élément_2>:<type_élément_2> .... <élément_n>:<type_élément_n> Fin Enreg; |
Language C :Typedef struct <Nom_enreg>
{ <type_élément> <élément_1>; <type_élément> <élément_2>; ... <type_élément> <élément_n> ; }; |
III.Exemples d'enregistrements :
Language Algorithmique :1. Type Date=Enregistrement
Année : entier Mois : 1..12 Jour : 1..31 Fin Enreg; 2. Type Etudiant = Enregistrement Nom , Prénom : chaine[30] Matricule : entier Filière : chaine[40] Section : 1..10 Date_d'enregistrement : Date* Fin Enreg; |
Language C :typedef struct Date
{ int Année; int Mois; int Jour; }; typedef struct Etudiant { char Nom[30] ; char Prénom[30]; int Matricule char Filière[40]; int Section; struct Date Date_denregistrement; }; |
// *On peut appeler une variable de type enregistrement (l'enregistrement appelé Date dans cet exemple) dans un autre enregistrement (Etudiant)
IV. Manipulation des variables d'enregistrements :
La syntaxe pour utiliser une variable de type enregistrement est :
<Nom_var_d'enreg> . <Nom_champ>
exp : Var D : Date
R : Etudiant
D.jour
E.Nom
E.D.Année
il est possible d'utiliser dans la manipulation de variables de type enregistrement , l'instruction AVEC qui va permettre de ne pas réecrire la variable représentant l'enregistrement à chaque fois .
exp: AVEC D Au lieux de :
Année ← 2016; D.Année ← 2016;
Mois ← 9; D.Mois ← 9;
Jour ← 2; D.Jour ← 2;
<Nom_var_d'enreg> . <Nom_champ>
exp : Var D : Date
R : Etudiant
D.jour
E.Nom
E.D.Année
il est possible d'utiliser dans la manipulation de variables de type enregistrement , l'instruction AVEC qui va permettre de ne pas réecrire la variable représentant l'enregistrement à chaque fois .
exp: AVEC D Au lieux de :
Année ← 2016; D.Année ← 2016;
Mois ← 9; D.Mois ← 9;
Jour ← 2; D.Jour ← 2;
V. Exercice d'application :
Soit le type enregistrement TEMPS qui contient les champs : Heure , Minute , Seconde .
2. Sommer deux dates successives à la fois et afficher le résultat à chaque fois .
3. Transformer la somme en secondes et l'afficher à chaque fois .
- Faites la déclaration du type Enregistrement TEMPS .
- Ecrire une fonction Somme qui reçoit en paramètre d'entrée deux temps T1,T2 de type TEMPS et nous renvoie T3 qui est le résultat de la somme des deux temps T1 et T2 .
- Ecrire une fonction TRANSFORM qui permet de transformer un temps T en secondes
- En utilisant les fonctions précédentes , Ecrire un Algorithme qui permet de :
2. Sommer deux dates successives à la fois et afficher le résultat à chaque fois .
3. Transformer la somme en secondes et l'afficher à chaque fois .
VOIR LA CORRECTION
Minute : 0..59 ; Seconde : 0..59 ; Fin Enreg ; //On traite les cas où la somme de deux champs de T1 et T2 dépasse 60
M,S :entier; Début S← T1.Seconde+T2.Seconde ; T3.Seconde← S mod 60 ; M← T1.Minute+T2.Minute ; T3.Minute← M mod 60 ; T3.Heure← T1.Heure+T2.Heure+M div 60 ; Retourner(T3); Fin;
T←T.Seconde + T.Minute*60 + T.Heure*3600 ; Retourner (T); Fin;
Var T,T1,T2 : TEMPS n : entier ; Début Répéter Lire (n) ; jusqu'à (n mod 2 =0) // il faut que n soit un nombre pair //On commence la lecture des temps et les stocker dans le tableau Pour i:=1 à n Faire Lire(T.Seconde , T.Minute , T.Heure); Tab[i]←T ; Fait ; //On affiche la somme de deux temps successifs dans le tableau et aussi leurs valeurs transformé en seconde Pour i:=1 à (n-1) Faire T←Somme (T[i].T1 ,T[i+1].T2) ; Ecrire(T); Ecrire(Transform(T)) ; Fait ; Fin ; |