RECORD |
Enregistrement |
|---|---|
| Pascal | |
Syntaxe
|
Type identtype=Record partie_fixe partie_variable End; |
|
Var identvar:Record partie_fixe partie_variable End; |
| partie_fixe = id_list:type [;id_list:type] |
| partie_variable = Case ordinal-type of variant | Case tag:ordinal-type of variant |
|
variant = id-list:(field-list) [;id-list:(field-list)] |
Paramètres
| Nom | Description |
|---|---|
| identtype | Ce paramètre permet d'indiquer le nom du type de données |
| identvar | Ce paramètre permet d'indiquer le nom de la variable |
| partie_fixe | Ce paramètre permet d'indiquer les définitions des champs de la partie fixe d'un enregistrement |
| partie_variable | Ce paramètre permet d'indiquer les définitions des champs de la partie variable d'un enregistrement |
Description
Ce mot réservé permet de définir des structures d'enregistrement contenu dans des variables. Un type d'enregistrement est une structure composée d'un nombre fixe de composantes, éventuellement de types différents. La définition du type d'enregistrement spécifie pour chaque composante, appelé champ, son d'un type et d'un identifiant le désignant. La portée de ces soi-disant identificateurs de champ correspond à la définition d'enregistrement elle-même. Ils sont également accessibles dans un indicateur de champ faisant référence à une variable d'enregistrement de ce type. Un type d'enregistrement peut avoir plusieurs variantes, auquel cas un certain champ est désigné comme champ d'étiquette, dont la valeur indique quelle variante est assumée par la variable d'enregistrement à un moment spécifié. Chaque structure de variante est identifiée par une étiquette de cas étant une constante du type du champ de balise.
Remarques
- Le mot clef RECORD permet de créer des types structurés regroupant plusieurs champs. Chaque champ peut être de type différent, ce qui permet une forte expressivité. C'est l'équivalent des structures (struct) en langage de programmation C.
- Un enregistrement Pascal se compose d'une partie fixe et éventuellement d'une partie variable. La partie fixe contient les champs toujours présents dans chaque instance. La partie variable permet de gérer des variantes conditionnelles selon une étiquette.
- La définition d'un RECORD peut être faite à l'intérieur d'un Type ou directement dans une Var. Cela offre une flexibilité dans la déclaration, soit en tant que type réutilisable, soit pour un usage ponctuel. La deuxième forme est toutefois moins fréquente et souvent réservée à des cas simples.
- La partie variable repose sur une clause Case, permettant une définition conditionnelle des champs. Elle repose sur un champ discriminant, dont la valeur détermine la structure réelle de l'enregistrement. Cela simule une sorte d'union typée, optimisant mémoire et logique conditionnelle.
- Les champs définis dans un RECORD sont accessibles via un indicateur de champ (.). Par exemple, person.nom permet d'accéder au champ nom de l'enregistrement person. Ce mécanisme favorise la lisibilité et l'organisation du code.
- La portée des noms de champs est limitée à la définition du RECORD. Cela signifie qu'ils ne peuvent pas être utilisés directement en dehors d'un contexte de variable d'enregistrement. Cette encapsulation évite les conflits de nom avec d'autres variables du programme.
- L'usage de RECORD rend le code plus structuré et modulaire, en regroupant les données liées. Cela est particulièrement utile dans les programmes complexes avec de nombreuses entités. Les enregistrements peuvent aussi être imbriqués pour modéliser des structures hiérarchiques.
- Certains compilateurs Pascal, comme Turbo Pascal, autorisent des extensions aux RECORD. Cela inclut par exemple l'ajout d'instructions Packed pour économiser de l'espace mémoire. Toutefois, ces extensions ne sont pas toujours compatibles entre compilateurs.