a LES ENREGISTREMENTS I/ Définition

Transcription

a LES ENREGISTREMENTS I/ Définition
http://www.najah.com CHAPITRE 1 - a
LES ENREGISTREMENTS
I/ Définition :
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.
II/ Déclaration :
Déclaration d’une structure enregistrement
En algorithmique :
Puisque l'enregistrement est un nouveau type, on commence par sa déclaration :
Tableau de déclaration des nouveaux types
Type
Nom_type = Enregistrement
champ 1 : Type 1
--champ n : Type n
Fin Nom_Type
Puis la déclaration des objets (variables) utilisant ce type
Tableau de déclaration des objets
Objet
Type / Nature
identificateur_objet Nom_type
Rôle
Enregistrement pour …
En Pascal :
TYPE Nom_type = Record
champ_1 : type_1 ;
- -champ_n : type_n ;
End;
VAR
identificateur_objet : Nom_type ;
III/ Utilisation
4INFINFRC0001 Page 1 http://www.najah.com Utilisation pour une action d'affectation
L'affectation de valeurs aux différents champs d'une variable de type enregistrement se
fait par une opération de type :
En algorithmique
variable.champ ← valeur
En Pascal
variable.champ := valeur ;
Exemple :
En algorithmique :
Tableau de déclaration des nouveaux types :
Type
Fiche = enregistrement
nom, prénom : Chaîne
sexe : Caractère
numéro : Entier non signé
moyenne : Réel
num_cin : Entier long
Fin Fiche
Tableau de déclaration des objets :
Objet
Type / Nature
élève
Fiche
Rôle
Enregistrement pour une fiche d'un étudiant
Affectation de valeurs à cette variable :
élève.nom ← "Swidi"
élève.prénom ← "Basma"
élève.sexe ← "F"
élève.numéro ← 18
élève.moyenne ← 13.25
élève.num_cin ← 12345678
En Pascal :
Le type enregistrement.
TYPE Fiche = Record
nom, prenom : String ;
sexe : Char ;
4INFINFRC0001 Page 2 http://www.najah.com numero : Byte ;
moyenne : Real ;
num_cin : LongInt ;
End ;
Déclaration de la variable élève :
VAR
eleve : Fiche ;
Affectation des valeurs à cette variable :
eleve.nom := 'Swidi' ;
eleve.prenom := 'Basma' ;
eleve.sexe := 'F' ;
eleve.numero := 18 ;
eleve.moyenne := 13.25 ;
eleve.num_cin := 12345678 ;
Utilisation pour une action de lecture
Au niveau de l'analyse
variable.champ = Donnée
Au niveau de l'algorithme
Au niveau du Pascal
Lire (variable.champ)
ReadLn (variable.champ);
Exemple :
Au niveau de l'analyse :
élève.nom = Donnée ("Entrer le nom de l'élève : ")
Au niveau de l'algorithme :
Ecrire ("Entrer le nom de l'élève : ") ; Lire (élève.nom)
Au niveau du Pascal :
Write ('Entrer le nom de l''élève : ') ; ReadLn (eleve.nom) ;
Utilisation pour une action d'écriture
Au niveau de l'analyse et de l'algorithme
Ecrire (variable.champ)
Au niveau du Pascal
Write (variable.champ);
Exemple :
4INFINFRC0001 Page 3 http://www.najah.com Au niveau de l'analyse et de l'algorithme :
Ecrire ("Nom : ", élève.nom)
Au niveau du Pascal :
WriteLn ('Nom : ', eleve.nom) ;
Structure Avec .. Faire
Pour simplifier l'écriture et éviter l'utilisation répétée des champs et de la notation avec le
point (variable.champ), on peut utiliser l'instruction
Avec .. Faire (With .. Do).
Cette structure s'utilise aussi bien avec une opération d'affectation, de lecture ou d'écriture.
Syntaxe :
Au niveau de l'analyse et de l'algorithme
Avec variable Faire
{ensemble d'actions}
Fin Avec
Au niveau du Pascal
With variable Do
Begin
{ensemble d'actions}
End;
Au Niveau de l'algorithme :
Avec élève Faire
{Affectation}
nom ← "Swidi"
{Lecture}
Ecrire ("Entrer le sexe de l'étudiant : ") ; Lire (sexe)
{Ecriture}
Ecrire ("Moyenne : ", moyenne)
Fin Avec
Au Niveau du Pascal :
With etudiant Do
Begin
nom := 'Swidi' ;
Write ('Entrer le sexe de l''élève : ') ; ReadLn (sexe) ;
WriteLn ('Moyenne : ', moyenne) ;
End;
4INFINFRC0001 Page 4 http://www.najah.com Vecteur d'enregistrements
Un tableau ne peut grouper ou contenir que des éléments de même type, et puisque les
éléments d'un enregistrement sont de même type qui est celui de l'enregistrement, donc on
peut utiliser un tableau ou un vecteur d'enregistrements.
Exemple :
Tableau de déclaration des nouveaux types :
Déclaration de la variable T utilisant les enregistrements des élèves :
Type
Fiches = Enregistrement
nom, prénom : Chaîne
sexe : Caractère
numéro : Entier non signé
moyenne : Réel
num_cin : Entier long
Fin Fiches
Tab = Tableau de 30 Fiches {tableau d'enregistrements fiches}
Tableau de déclaration des objets :
Objet
T
Type / Nature
Tab
Rôle
Tableau d'enregistrements pour les fiches des élèves
Activité
Un médecin enregistre sur ordinateur les fiches de ses Patients. Une fiche a la la structure
suivante :
- un nom (chaîne de 30 caractères maximum)
- un numéro (entier)
- un numéro de téléphone (10 caractères maximum)
- un code d'assurance (entier non signé).
1/ Ecrire les analyses, les algorithmes des différents modules d'un programme nommé Fiche,
qui permet la saisie et l'affichage de l'enregistrement d'un Patient.
2/ Traduire ce programme en Pascal
1/ Analyses et algorithmes :
Analyse du programme principal
Résultat : Affichage d'une fiche
- Traitement : - Une fiche peut être représentée par une structure d'enregistrement
comportant 4 champs (le nom, le numéro, le numéro de téléphone et le code d'assurance).
- L'affichage des différents champs sera la tâche de la procédure Afficher.
4INFINFRC0001 Page 5 http://www.najah.com - La saisie des différents champs se fera par la procédure Saisir.
Fin Analyse
Algorithme du programme principal
0) Début Fiche
1) Saisir (Patient)
2) Afficher (Patient)
3) Fin Fiche
Tableau de déclaration des nouveaux types
Type
Personne = Enregistrement
nom : Chaîne de 30 caractères
numéro : Entier
tel : Chaîne de 10 caractères
code : Entier non signé
Fin Personne
Tableau de déclaration des objets globaux :
Nom
Patient
Saisir
Afficher
Type / Nature
Personne
Procédure
Procédure
Rôle
Enregistrement pour une fiche personne
Saisie des champs
Affichage des champs
Analyse de la procédure saisir
Résultat : Saisir les champs
Traitement :
La saisie des différents champs de l'enregistrement se fera par des opérations de lecture avec
l'utilisation de la structure Avec .. Faire, sur la variable Patient.
Patient : représente la variable de l'enregistrement.
Fin Analyse
Algorithme de la procédure Saisir
0) Procédure Saisir (VAR Patient : Personne)
1) Avec Patient Faire
Ecrire ("Entrer le nom de la personne : ") ; Lire (nom)
Ecrire ("Entrer son numéro : ") ; Lire (numéro)
Ecrire ("Entrer son numéro de téléphone : ") ; Lire (tel)
Ecrire ("Entrer le code d'assurance : ") ; Lire (code)
4INFINFRC0001 Page 6 http://www.najah.com Fin Avec
2) Fin Saisir
Analyse de la procédure Afficher
Résultat : Afficher les champs
Traitement :
L'affichage des différents champs de l'enregistrement se fera par des opérations d'écriture
avec l'utilisation de la structure Avec .. Faire, sur la variable Patient.
Fin Analyse.
Algorithme de la procédure Afficher
0) Procédure Afficher (Patient : Personne)
1) Avec Patient Faire
Ecrire ("Nom : ", nom)
Ecrire ("numéro : ", numéro)
Ecrire ("Numéro de téléphone : ", tel)
Ecrire ("Code assurance : ", code)
Fin Avec
2) Fin Afficher
2/ Traduction en Pascal
PROGRAM Fiche ;
USES Crt ;
TYPE Personne = Record
nom : String [30] ;
numero : Integer ;
tel : String [10] ;
code : Word ;
End ;
VAR Patient : Personne ;
{--------------------------------------------------------------------------------------------}
PROCEDURE Saisir (VAR Patient : Personne) ;
BEGIN
With Patient Do
Begin
Write ('Entrer le nom de la personne : ') ; ReadLn (nom) ;
Write ('Entrer son numéro : ') ; ReadLn (numero) ;
Write ('Entrer son numéro de téléphone : ') ; ReadLn (tel) ;
Write ('Entrer son code d’’assurance : ') ; ReadLn (code) ;
End ;
END ;
{--------------------------------------------------------------------------------------------}
PROCEDURE Afficher (Patient : Personne) ;
BEGIN
With Patient Do
4INFINFRC0001 Page 7 http://www.najah.com Begin
WriteLn ('Nom : ', nom) ;
WriteLn ('Numéro : ', numero) ;
WriteLn ('Numéro du téléphone : ', tel) ;
WriteLn ('Code d’’assurence : ', code) ;
End;
END;
{= = = = = = = = = = = Programme Principal = = = = = = = = = = =}
BEGIN
Saisir (Patient) ;
Afficher (Patient);
END.
4INFINFRC0001 Page 8