Chapitre 26 - Constantes▲
Dans un programme, il est indispensable d'utiliser des constantes si on veut écrire du code aisément maintenable et modifiable. Il faut systématiquement faire la chasse aux « nombres magiques », qui sont les valeurs numériques apparaissant en clair dans le code. De plus, il est souvent nécessaire d'avoir des valeurs de référence ou des conditions initiales, au lieu d'affectations en début de programme. Alors, pour alléger le code et pour améliorer la lisibilité et surtout la compréhension générale du programme, il est préférable d'avoir recours à des constantes.
Une constante, pour être connue de tous les sous-programmes, doit être déclarée avant ces derniers. Si une constante est déclarée après une fonction, pour que cette fonction puisse l'utiliser, la constante doit être passée en paramètre à la fonction. Une constante déclarée avant tous les sous-programmes n'a pas besoin d'être passée en paramètre à ces derniers pour y être utilisée (c'est le même principe que pour les variables, fonctions, procédures paramétrées et types).
Comme son nom l'indique, une constante ne change pas de valeur au cours du programme, une valeur de départ lui est affectée dès sa déclaration avant le code exécutable. C'est l'opérateur = qui affecte une valeur à une constante après que cette dernière se soit vue affecter un identificateur par l'utilisation du mot réservé Const.
Syntaxe :
Const
identificateur_de_la_constante = valeur;
Exemples :
Const
Nom = 'CyberZoïde'
;
Const
TVA = 20
.6
;
Const
Esc = #27
;
Le compilateur décide automatiquement d'affecter à la constante le type de base compatible le plus économique. Ceci est totalement transparent au programmeur. Par exemple, lorsqu'il trouve un nombre réel affecté à une constante, il lui spécifie le type Real. Ou encore, si vous affectez un caractère à une constante, celle-ci sera de type Char et non de type String. Mais il vous est possible de forcer le type de la constante par les deux points: que vous connaissez déjà pour les variables. De plus, cette déclaration de type à une constante en plus de sa valeur est dans certains cas indispensable, si vous souhaitez leur donner une valeur qui n'est pas d'un type de base du compilateur (par exemple un ensemble ou un type que vous avez vous-même défini avant la constante).
Syntaxe :
Const
identificateur : type_de_la_constante = valeur;
Exemples :
Const
Nmax : LongInt
= 60000
;
Const
Defaut : String
= '*'
;
Les constantes peuvent être de tout type sauf de type fichier.
On peut tout aussi bien affecter aux constantes des expressions dont le résultat sera évalué à la compilation.
Syntaxe :
Const
identificateur = expression;
Exemples :
Const
Esc = Chr(27
);
Const
Taux = (exp(10
) - (3
* Pi)) / 100
;
Const
Nom = 'Cyber'
+'Zoïde'
;
Const
Softi : Integer
= Length(Nom);
La déclaration des constantes se fait dans la partie déclarative du programme, avant le code exécutable (tout comme pour la déclaration des fonctions, procédures, variables). Pour être utilisables par tous les sous-programmes (procédures paramétrées…), les constantes doivent nécessairement être déclarées avant ces derniers.
Program
Exemple40;
Const
Nom = 'Bill'
;
Procedure
SaisieLibre (var
Toi : String
);
Begin
Write
('Entrez votre nom : '
);
ReadLn(Toi);
if
Toi = ''
then
Toi := Nom;
End
;
Procedure
SaisieContrainte (var
Toi : String
);
Begin
repeat
Write
('Entrez votre nom : '
);
ReadLn(Toi);
until
Toi <> ''
;
End
;
Var
Toi : String
;
BEGIN
SaisieLibre(Toi);
SaisieContrainte(Toi);
END
.
Ce programme Exemple40 montre quelle peut être l'utilisation d'une constante. Ici, la procédure SaisieLibre permet à l'utilisateur de ne pas dévoiler son nom, la variable toi prenant une valeur par défaut qui est celle de la constante Nom. Quant à la procédure SaisieContrainte, elle ne laisse guère le choix à l'utilisateur : il doit absolument entrer un nom pour poursuivre le programme.