English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Toutes les catégories

alors que l'on peut utiliser des variables et ne pas changer leur valeur tout simplement.

Est-ce un souci de mémoire : les variables sont mémorivores ?

2007-01-15 05:08:16 · 5 réponses · demandé par mtaveau 2 dans Informatique et internet Programmation

Quand je vois vos réponses, ça parait logique effectivement. Il fallait tilter !!

2007-01-15 06:14:05 · update #1

5 réponses

Les constantes n'ont pas le même cahier des charges" que les variables : (ceci n'est pas un réquisitoire exclusif, ce serait trop long...)
L'une de leurs utilités est de "nommer" dans ton code des valeurs qui ne doivent pas changer lors de l'exécution ou de la version. cela permet d'écrire du code plus lisible qu'avec des valeurs litérales tout en garantissant que ces valeurs ne soient pas altérées par erreur : par exemple :
* la valeur de pi de e, les constantes physyques comme G...
* il est plus facile de relire putline(MIN_X, MIN_Y, MAX_X, MAX_Y, NOIR); que putline(0,0,800,600,0); pour tracer une ligne.

Deplus quand tu passera la résolution graphique cible de ton programme (en recompilant ) de 800/600 à 1152/864 par exemple, tu sera content de ne corriger que les valeurs MAX_X et MAX_Y au lieu des 3000 références à ces valeurs dans tes 2000? appels de fonctions graphiques. De façon générale, cela permet de fixer à un endroit une valeur et s'il faut la changer d'une version à l'autre ,c'est plus rapide et (surtout) moins risqué.

Enfin, dans les projets où interviennent différents codeurs durant différentes étapes, si un de tes composants définit des valeurs qui ne doivent pas changer et que quelqu'un d'autre peut la modifier, cela devient ingérable : "ne pas les changer" est possible quand tu est seul à développer, et que tu as bien ton code en tête (reprends 20 000 lignes de code, même faites par toi, 3 ans après, comment te souvenir quelle variable changer ou non?)

C'est loin d'être la raison mais pour les objets constants, plusieurs langages, comme java ou les langages .NET, ne stoquent lorsque le contexte le permet ( en général transparent au développeur), une seule instance (souvent de "grande" taille) de la valeur constante est stoquée en mémoire (heap) et seules des références (poineurs gérés par le système) vers cette instance sont multiples. Par exemple, si comme souvent, un pointeur mesure 4 octets, une chaine de caractère référencée 30 fois et mesurant 200 caractères (2 octets en unicode, comme en java par exemple) "coûtera" 4*30+200*2 = 520 octets contre 30*200*2 = 12000 octets au max (sans aucune mise en commun...).

Mais garde en mémoire les 2 points lisibilité et sécurisation des valeurs qui ne doivent pas changer.

2007-01-15 06:20:11 · answer #1 · answered by Hum... 3 · 0 0

je vois deux autres raisons de les utiliser :

dans certains langages comme le C, les constantes sont traitées par le précompilateur et remplacées par des littéraux. du coup, le programme est mieux optimisé.

dans d'autre, la valeur de la constante va déterminer le jeu d'instructions à utiliser par exemple, en Pascal,
l'instruction
a:=b shl 2
va être codée par
mov ax,[@b]
shl
shl
mov [@a],ax

alors que si le 2 avait été dans une variable, il aurait été obligé d'utiliser une instruction plus générale qui consomme plus de cycles...

la dernière raison est que les constantes sont stockées dans le segment de code et non dans le segment de données. du coup, si le programme doit être lancé en plusieurs instances, le code est chargé en mémoire une seule fois et seuls les segments de données et de pile sont dupliqués.
en plus le segment de code est protégé contre les écritures par le système d'exceptions du processeur.
si ton programme écrit par erreur à l'adresse d'une chaîne constante, le système tuera le programme avec un message d'erreur de débogage au lieu de le laisser avoir un comportement imprévisible...

2007-01-15 17:07:21 · answer #2 · answered by Ramis V 7 · 0 0

une question de bon sens, notion tres importante pour un programmeur

2007-01-15 13:56:27 · answer #3 · answered by Fabi 3 · 0 0

Ben, imagine que 5 ans après avoir écrit ton programme de quelques centaines de milliers de lignes, sur des dizaine de fichiers, on doive le changer.

La personne qui te remplace (parce que tu auras changé de poste entre-temps), il va pas bien connaitre ton code, intervient sur un point précis, a besoin d'utiliser 2-3 variables. Et boum pas de chance, écrase une de tes variables "constante".

Le programme ne marchera plus et il ne comprendra pas pourquoi.

2007-01-15 13:41:40 · answer #4 · answered by wiwi 2 · 0 0

pour un programmeur c'est une question de simplicité de créer des constantes a qui on affecte une valeur au départ mais aussi une question de mémoire , dsl j'ai pas mon cours sous les yeux pour te donner les valeurs ...
et pis le programme est susceptible d'évoluer donc déclarer des constantes est très utile , ca t'évite de te mélanger avec tes variables ...

2007-01-15 13:15:16 · answer #5 · answered by ultimate 2 · 0 0

fedest.com, questions and answers