Cours algorithme 2 : enregistrements et fichiers
-
Cours algorithme 2 : enregistrements et fichiers
Introduction
Contrairement aux tableaux qui sont des structures de données dont tous les éléments sont de même type, les enregistrements sont des structures de données dont les éléments peuvent être de type différent et qui se rapportent à la même entité (au sens de Merise) 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é. (Les enregistrements sont parfois appelé structures, en analogie avec le langage C)
Préalable: déclaration d'un type structuré
Jusqu'à présent, nous n'avons utilisé que des types primitifs (caractères, entiers, réels, chaînes) et des tableaux de types primitifs. Mais nous pouvons créer nos propres types puis déclarer des variables ou des tableaux d'éléments de ce type. Pour créer des enregistrements, il faut déclarer un nouveau type, basé sur d'autres types existants, qu'on appelle type structuré Après avoir défini un type structuré, on peut l'utiliser comme un type normal en déclarant une ou plusieurs variables de ce type. Les variables de type structuré sont appelées enregistrements. La déclaration des types structurés se fait dans une section spéciale des algorithmes appelée Type, qui précède la section des variables (et succède à la section des constantes).
…
I. Déclaration d'un enregistrement à partir d'un type structuré
Une fois qu'on a défini un type structuré, on peut déclarer des variables enregistrements exactement de la même façon que l'on déclare des variables d'un type primitif.
…
II. Manipulation d'un enregistrement
La manipulation d'un enregistrement se fait au travers de ses champs. Comme pour les tableaux, il n'est pas possible de manipuler un enregistrement globalement, sauf pour affecter un enregistrement à un autre de même type. Par exemple, pour afficher un enregistrement il faut afficher tous ses champs uns par uns.
A. Accès aux champs 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 '.'
nom_enregistrement . nom_champ représente la valeur mémorisée dans le champ de l'enregistrement
Par exemple, pour accéder à l'âge de la variable pers2, on utilise l'expression: pers2.âge
Attention : 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,…).
Exemple 1:
Programme de saisie des données concernant les personnes pers1 et pers2, puis affichage de la différence d'âge entre ces deux personnes
Programme Exemple
Type
Structure tpersonne
nom : chaîne
prénom : chaîne
âge : entier
FinStruct
Var
pers1, pers2 : tpersonne
Début
Aff 'Entrez le nom puis l'age de la personne 1'
Saisir pers1.nom, pers1.age // il est impossible d'écrire Saisir pers1
Aff 'Entrez le nom puis l'âge de la personne 2'
Saisir pers2.nom, pers2.age
Aff 'La différence d'âge entre ', pers1.nom, ' et ', pers2.nom, ' est de '
Si pers1.age > pers2.age
Alors Aff pers1.age – pers2.age, ' ans '
Sinon Aff pers2.age – pers1.age, ' ans '
FinSi
Fin
B. Passage d'un enregistrement en paramètre d'un sous-programme
Il est possible de passer tout un enregistrement en paramètre d'une fonction ou d'une procédure (on n'est pas obligé de passer tous les champs uns à uns, ce qui permet de diminuer le nombre de paramètres à passer), exactement comme pour les tableaux.
Exemple : Voilà une fonction qui renvoie la différence d'age entre deux personnes
Fonction différence (p1, p2 : tpersonne)
Début
Si pers1.age > pers2.age
Alors Retourne ( pers1.age – pers2.age )
Sinon Retourne ( pers2.age – pers1.age )
FinSi
FinFonct
Exemple 2 :
Voilà une procédure qui permet de modifier le prix de vente hors taxes d'un produit passé en paramètre. Cette procédure commence par afficher le libellé et l'ancien prix de vente hors taxes du produit puis saisit le nouveau prix de vente entré par l'utilisateur.
Procédure majpv (E/S x: produit)
Début
Aff 'produit: ', x.lib
Aff 'prix de vente hors taxe actuel: ', x.pvht
Aff 'Entrez le nouveau prix de vente: '
Saisir x.pvht
Aff 'le nouveau prix de vente est: ', x.pvht
FinProc
- Evaluation :
-
Soyez le premier à écrire un commentaire sur ce fichier!
Veuillez vous identifier ou vous enregistrer.