Académique Documents
Professionnel Documents
Culture Documents
I. Définition
Le type Enregistrement est une structure de données permettant de regrouper un ensemble de
données de types différents sous une même variable.
Remarques
(i) Un enregistrement est composé d’une ou plusieurs variables non nécessairement de
même type, appelées Champs ou Rubriques.
(ii) Le type Enregistrement est dit également le type Structure.
Remarque :
Si certaines rubriques ont le même type, on peut les déclarer ensemble en les séparant par des
virgules et en mentionnant une seule fois le type.
b-) Partielle : la lecture se fait rubrique par rubrique. On l’utilise généralement pour une saisie
conviviale à l’écran. Dans notre exemple, la saisie de l’enregistrement Etudiant se fera alors :
Nom_variable = E
Nom_rubrique = Nom ou Prénom ou CIN ou Age
Lire(E.Nom) (* on lira alors le nom Ben Mohamed *)
Lire(E.Prénom) (* on lira alors le prénom Mohamed *)
Lire(E.CIN) (* on lira alors le numéro CIN 123456 *)
Lire(E.Age) (* on lira alors l’age 35 *)
b-) Partielle : l’écriture se fait rubrique par rubrique ; elle est conseillée s’il s’agit d’un dialogue
entre l’utilisateur et le programme. Dans notre exemple, on peut afficher l’enregistrement
étudiant après l’avoir saisi, rubrique par rubrique selon la syntaxe suivante :
Ecrire (Nom_variable.Nom_rubrique)
Nom_variable = E
Nom_rubrique = Nom ou Prénom ou CIN ou Age
b-) Partielle : selon le contexte de l’exercice, l’affectation peut se faire partiellement c’est à dire
rubrique par rubrique, selon la syntaxe suivante :
Nom_variable.Nom_rubrique = Nom_variable1.Nom_rubrique
2
Dans notre exemple, supposons que l’on souhaite copier un enregistrement dans une autre
variable ; on aura alors :
Sachant que E et E1 sont de variables de type Étudiant ; on peut écrire :
E1.Nom E.Nom
E1.Prénom E.Prénom
E1.CIN E.CIN
E1.Age E.Age
Ce qui donne
E1.Nom ‘Ben Mohamed’
E1.Prénom ‘Mohamed’
E1.CIN 123456
E1.Age 35
Notion de Générateur
Quand on affecte des valeurs aux rubriques d’un enregistrement, on dit qu’on a obtenu un
Générateur.
Problématique :
On souhaite gérer les informations concernant les salariés d’une entreprise qui diffèrent d’une
catégorie à une autre. En voici les informations à implémenter :
Matricule du salarié, Nom du salarié, Prénom du salarié, Date de naissance du salarié, Etat civil
du salarié.
Si le salarié est permanent, on indique le salaire de base et le montant des indemnités.
Si le salarié est occasionnel, on indique le coût horaire, le nombre d’heures travaillées.
Si le salarié est marié, on indique le nom et le prénom du conjoint ainsi que le nombre
d’enfants.
Si le salarié est célibataire, on indique s’il est en règle avec le service militaire.
3
Solution : on va déclarer un type enregistrement appelé Salarié qui comportera les rubriques
suivantes :
CONSTANTE
N = 200
TYPE
Tab_Salarié = Tableau[1..N] de Salarié
Salarié = ENREGISTREMENT
Matricule : entier
Nom, Prénom : chaine
Date_naissane : chaine
État_civil : (marié, célibataire)
Catégorie : (permanent, occasionnel)
Salaire_base : réel
Indemnités : réel
Nom_conjoint, Prénom_conjoint : chaine
Nombre_enfant : entier
Coût_horaire : réel
Nombre_heures : réel
Service_militaire : Booléen
FinEnregistrement
On vient de déclarer un tableau de 200 salariés et chaque élément du tableau est censé
comporter les informations relatives à un salarié.
Matric Nom Préno Datn Eciv. Cat. SBas Indem NomC PrénC Nenf Chor Nbh SM
1 123 Ali Med 1164 M P 500 250 Med Alia 1 -- -- --
2 456 Med Sobhi 1155 C O -- -- -- -- -- 3.200 70 Oui
……………..
200
Définition
Un type enregistrement est dit variable si lors de sa définition certaines rubriques ne peuvent
apparaître que sous condition(s).
Représentation Algorithmique
TYPE
4
Nom_type = ENREGISTREMENT
Nom_rubrique1 : type_rubrique1
Nom_rubrique2 : type_rubrique2
Nom_rubrique3 : type_rubrique3
……………..
……………..
Nom_rubrique_variable : type_rubrique_variable
SELON (type_rubrique_variable) FAIRE
Val1_type_rubrique_variable :
Nom_rubrique_v1 : type_rubrique_v1
Nom_rubrique_v2 : type_rubrique_v2
Nom_rubrique_v3 : type_rubrique_v3
Val2_type_rubrique_variable :
Nom_rubrique_v1 : type_rubrique_v1
Nom_rubrique_v2 : type_rubrique_v2
Nom_rubrique_v3 : type_rubrique_v3
………
………
FINSELON
FINENREGISTREMENT
Remarques
(i) On voit maintenant que les deux générateurs ne comportent plus de cases vides et
par conséquent plus de trous en mémoire.
(ii) On voit également clair que les deux générateurs G1 et G2 sont de tailles variables.
(iii) Dans un enregistrement variable, on doit tout d’abord déclarer la partie fixe puis on
définit la partie variable.
(iv) Attention, il ne faut pas confondre entre le SELON vu dans le chapitre Structures
Conditionnelles et le SELON vu dans ce chapitre : le premier concerne des
instructions ; quant au deuxième il concerne des variables. C’est une erreur fréquente
de la part des étudiants !?
TYPE
Salarié = ENREGISTREMENT
Matricule : entier
Nom, Prénom : chaine
Date_naissane : chaine
Catégorie : Cat
État_civil : Situation
SELON (Situation) FAIRE
Marié : Nom_conjoint, Prénom_conjoint : chaine
Nombre_enfant : entier
Célibataire : Service_militaire : Booléen
FINSELON
SELON (Cat) FAIRE
Permanent : Salaire_base : réel
Indemnités : réel
Occasionnel : Coût_horaire : réel
Nombre_heures : réel
FINSELON
FINENREGISTREMENT
VARIABLE S : Salarié
G1(123,’Ali’,’Med’,’1164’,Marié,Permanent,’Med’,’Alia’,1,500,250)
G2(456,’Med’,’Sobhi’,’1155’,Célibataire,Occasionnel,3.200,70,Oui)
Le Concept Fichier
Exemples
Fichier des salariés d’une société.
- Fichier des comptes clients en banque.
- Fichier d’abonnés de la STEG ou de la SONEDE.
- Fichier des étudiants d’une institution universitaire.
- Fichier Stock d’une entreprise commerciale.
- Etc.
7
Problématique :
Comment trouver dans un fichier un enregistrement dont on connaît une référence ?
Cela va dépendre de la façon dont sont organisés les enregistrements entre eux. En fait, ça
dépend du type d’organisation du fichier. On distingue :
- l’organisation séquentielle
- l’organisation indexée
- l’organisation relative
- l’organisation sélective.
Pour accéder à un enregistrement, il faut avant tout voir le type d’organisation, puis voir est ce
que le type d’accès désiré est permis dans une telle organisation ou non !
Par exemple, si on dispose d’une bande magnétique (l’équivalent d’une K7), il est facile de
deviner que l’organisation est séquentielle. Pour atteindre le nième enregistrement, on doit
obligatoirement parcourir les (n-1) enregistrements précédents et il n’y a pas d’autres solutions
(imaginer que vous voulez écouter la 3ème chanson d’une K7, obligatoirement vous devez défiler
les 2 chansons précédentes).
Maintenant, si le support est un disque magnétique, son organisation n’est pas uniquement
séquentielle mais elle peut être indexée : pour atteindre le nième enregistrement, on peut soit
parcourir les (n-1) enregistrement précédents ou si on a une référence, on l’introduit et on
accède directement à l’enregistrement y afférent (prenons l’exemple d’un disque musical, on
peut accéder directement à la chanson préférée ou écouter séquentiellement les chansons
jusqu’à ce que votre chanson préférée se manifeste).
Donc, une méthode d’accès est une façon d’atteindre un enregistrement ; il y a essentiellement
deux méthodes d’accès :
- accès séquentiel
- accès direct
Organisation Séquentielle :
a-) Définition
L’organisation séquentielle consiste à mettre les enregistrements dans le fichier les uns après
les autres selon l’ordre de leur arrivée. Elle peut être définie sur tout type de support de
mémoire secondaire. Cette organisation ne permet que l’accès séquentiel.
Organisation Indexée
a-) Définition
Un fichier dispose d’une organisation indexée, si chaque enregistrement est identifié par son
index dans une table d’index.
Cet index est une rubrique du fichier (ou plusieurs) qui identifie d’une manière unique un et un
seul enregistrement.
On dit Index et parfois clé
9