Sign in Join
Wiki copytemporary

Const/fr: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-Le [[Keyword/fr|mot-clé]] **const** a trois utilisations dans un programme Pascal :
2-
3- * commencer une [[Basic Pascal Tutorial/Chapter 1/Constants/fr|section de déclaration de constante]]
4- * déclarer un _paramètre const_ pour une routine
5- * déclarer une [[Routine/fr|routine]] avec un nombre variable de paramètres passés via un tableau de taille variable d'éléments de différents types.
6-
7-## Contents
1+Le [[Keyword/fr|mot-clé]] **const** a trois utilisations dans un programme Pascal :
82
9- * 1 Section Const
10- * 1.1 Constante non typée
11- * 1.2 Constante typée
12- * 2 Paramètre Const
13- * 3 Tableau de Const
14- * 4 Voir aussi
3+- commencer une [[Basic Pascal Tutorial/Chapter 1/Constants/fr|section de déclaration de constante]]
4+- déclarer un *paramètre const* pour une routine
5+- déclarer une [[Routine/fr|routine]] avec un nombre variable de paramètres passés via un tableau de taille variable d'éléments de différents types.
156
167# Section Const
178
18-La déclaration **const** dans un [[Program/fr|programme]] [[Pascal]] est utilisée pour informer le [[Compiler/fr|compilateur]] que certains [[Identifier/fr|identificateurs]] sont déclarés [[Constant/fr|constants]], ils sont initialisés avec une valeur spécifique au [[Compile time/fr|moment de la compilation]], contrairement à une [[Var/fr|variable]] qui est initialisée au [moment de l'exécution](</index.php?title=Run_time/fr&action=edit&redlink=1> "Run time/fr \(page does not exist\)").
9+La déclaration **const** dans un [[Program/fr|programme]] [[Pascal]] est utilisée pour informer le [[Compiler/fr|compilateur]] que certains [[Identifier/fr|identificateurs]] sont déclarés [[Constant/fr|constants]], ils sont initialisés avec une valeur spécifique au [[Compile time/fr|moment de la compilation]], contrairement à une [[Var/fr|variable]] qui est initialisée au [[Run time/fr|moment de l'exécution]].
1910
20-Toutefois, le réglage par défaut dans Free Pascal est de permettre à des identifiants déclarés const d'être ré-affectés. Pour les rendre non modifiables, les directives du compilateur {$J} (forme courte) ou {$WriteableConst} (forme longue) doivent être utilisée, en spécifiant {$J-} ou {$WriteableConst OFF}.
11+Toutefois, le réglage par défaut dans Free Pascal est de permettre à des identifiants déclarés const d'être ré-affectés. Pour les rendre non modifiables, les directives du compilateur {\$J} (forme courte) ou {\$WriteableConst} (forme longue) doivent être utilisée, en spécifiant {\$J-} ou {\$WriteableConst OFF}.
2112
22-La déclaration d'une constante peut prendre deux formes: constante typée ou non typée.
13+La déclaration d'une constante peut prendre deux formes: constante typée ou non typée.
2314
2415## Constante non typée
2516
26-Une constante non typée n'est affectée qu'au moment de sa déclaration, sa valeur ne peut pas être changée durant l'exécution du programme. Pour ces constantes, seuls des types simples peuvent être employés, c'est le compilateur qui détermine le type.
27-Exemples de déclaration non typées :
28-```
29-const
30- Nombre = 210; // Constante de type Integer
31- Reel = 2.1; // Constante de type virgule flottante
32- Texte = 'Hello'; // Constante de type String
33- lettre = 'F'; // Constante de type Char
17+Une constante non typée n'est affectée qu'au moment de sa déclaration, sa valeur ne peut pas être changée durant l'exécution du programme. Pour ces constantes, seuls des types simples peuvent être employés, c'est le compilateur qui détermine le type.\
18+Exemples de déclaration non typées :
19+
20+``` pascal
21+ const
22+ Nombre = 210; // Constante de type Integer
23+ Reel = 2.1; // Constante de type virgule flottante
24+ Texte = 'Hello'; // Constante de type String
25+ lettre = 'F'; // Constante de type Char
3426```
3527
3628## Constante typée
3729
38-Un type est associé à la constante dans la déclaration, il devient possible de définir, outre des constantes de type simple, des constantes de type complexe tels que des enregistrements ou des tableaux.
39-Contrairement aux constantes non typées, les constantes peuvent être modifiées en cours d'exécution, il s'agit donc plutôt d'une initialisation de variable que d'une véritable constante. Cela se rapproche des déclarations **statiques** d'autres langages.
40-Exemple de constantes typées :
41-```
42-const
43- SeuilTemp: Single = 18.0;
44- // constante Array de 6 lettres
45- Alpha: array[1..6] of Char = ('A', 'B', 'C', 'D', 'E', 'F');
30+Un type est associé à la constante dans la déclaration, il devient possible de définir, outre des constantes de type simple, des constantes de type complexe tels que des enregistrements ou des tableaux.\
31+Contrairement aux constantes non typées, les constantes peuvent être modifiées en cours d'exécution, il s'agit donc plutôt d'une initialisation de variable que d'une véritable constante. Cela se rapproche des déclarations **statiques** d'autres langages.\
32+Exemple de constantes typées :
33+
34+``` pascal
35+ const
36+ SeuilTemp: Single = 18.0;
37+ // constante Array de 6 lettres
38+ Alpha: array[1..6] of Char = ('A', 'B', 'C', 'D', 'E', 'F');
4639```
4740
4841# Paramètre Const
4942
50-Un paramètre de routine (fonction ou procédure) peuvent être déclarés **const**. Tout affectation à un paramètre **const** à l'intérieur de la routine aboutit à une erreur à la compilation "Can't assign values to const variable". La déclaration d'un paramètre const donne la possibilité au compilateur de faire des optimisations qu'il ne pourrait faire autrement, comme passer le paramètre par référence au lieu d'appliquer la sémantique du passage par valeur. Un paramètre const ne peut être passé à une autre routine qui demande [paramètre variable](</index.php?title=Variable_parameter/fr&action=edit&redlink=1> "Variable parameter/fr \(page does not exist\)").
43+Un paramètre de routine (fonction ou procédure) peuvent être déclarés **const**. Tout affectation à un paramètre **const** à l'intérieur de la routine aboutit à une erreur à la compilation "Can't assign values to const variable". La déclaration d'un paramètre const donne la possibilité au compilateur de faire des optimisations qu'il ne pourrait faire autrement, comme passer le paramètre par référence au lieu d'appliquer la sémantique du passage par valeur. Un paramètre const ne peut être passé à une autre routine qui demande [[Variable parameter/fr|paramètre variable]].
5144
5245# Tableau de Const
5346
54-Une routine peut déclarer un paramètre comme **array of const**. Ceci permet à la routine de prendre effectivement un nombre variable de paramètre de différents types à travers un paramètre tableau à une seule dimension. A l'exécution, quand la routine est appelée, les éléments réels du tableau sont passés dans des enregistrement variants de type [TVarRec](</index.php?title=TVarRec/fr&action=edit&redlink=1> "TVarRec/fr \(page does not exist\)"). La routine peut utiliser High() pour déterminer l'indice maximal du tableau (qui donne le nombre d'éléments en retranchant 1 car l'indice minimal donné par Low() étant toujours égal à 0), et examiner le champ VType de chaque élément TVarRec, pour déterminer le type contenu. Seuls des types simples peuvent être passés de cette façon, pas de type enregistrement, les classes et les interfaces peuvent l'être. Vous créez un tableau de const en y plaçant les composants dans []. Par exemple :
55-```
47+Une routine peut déclarer un paramètre comme **array of const**. Ceci permet à la routine de prendre effectivement un nombre variable de paramètre de différents types à travers un paramètre tableau à une seule dimension. A l'exécution, quand la routine est appelée, les éléments réels du tableau sont passés dans des enregistrement variants de type [[TVarRec/fr|TVarRec]]. La routine peut utiliser High() pour déterminer l'indice maximal du tableau (qui donne le nombre d'éléments en retranchant 1 car l'indice minimal donné par Low() étant toujours égal à 0), et examiner le champ VType de chaque élément TVarRec, pour déterminer le type contenu. Seuls des types simples peuvent être passés de cette façon, pas de type enregistrement, les classes et les interfaces peuvent l'être. Vous créez un tableau de const en y plaçant les composants dans \[\]. Par exemple :
48+
49+``` pascal
5650function MyFunction( array of const ) : Boolean;
57- ...
58-
59- MyFunction( [10, 'global', True, my_var] );
51+ ...
52+
53+MyFunction( [10, 'global', True, my_var] );
6054```
6155
62-Cette fonctionnalité est uniquement disponible dans le [[Compiler Mode/fr|mode compilateur]] ObjFPC ou Delphi.
56+Cette fonctionnalité est uniquement disponible dans le [[Compiler Mode/fr|mode compilateur]] ObjFPC ou Delphi.
6357
6458# Voir aussi
6559
66- * [[Constref/fr|Constref]]
67- * [[Constant/fr|Constant]]
68- * [[Basic Pascal Tutorial/Chapter 1/Constants/fr|Constants]]
60+- [[Constref/fr|Constref]]
61+- [[Constant/fr|Constant]]
62+- [[Basic Pascal Tutorial/Chapter 1/Constants/fr|Constants]]
6963
7064---
71-*From the Free Pascal wiki, page "Const/fr", as the Internet Archive kept it on 2025-01-18. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
65+*From the Free Pascal wiki, page "Const/fr", as it stood on 2023-01-25 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history