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