Pour les articles homonymes, voirvariable.
Eninformatique, lesvariables sont des espaces mémoire "élémentaires" qui associent un nom (l'identifiant) à une valeur. Dans la plupart deslangages et notamment les plus courants, les variables peuvent changer de valeur au cours du temps (dynamique). Dans les langages de certainsparadigmes, notamment laprogrammation fonctionnelle, leur valeur est au contraire figée dans le temps (statique). Les variables sont utilisées par un programme informatique pour mémoriser certaines données nécessaires au fonctionnement du programme.
Contrairement à une variable, uneconstante est unidentificateur associé à une valeur fixe. Syntaxiquement, cet identificateur a tous les aspects d'une variable. Cependant, il lui est affecté une valeur définitive, c'est-à-direconstante, comme la taille d'unplateau d'échecs (8x8). Une constante contient une valeur qui peut avoir des valeurs différentes suivant les exécutions, à la manière du jeudémineur dont le joueur peut choisir la taille du plateau.
Dans un langage de programmation, une variable est un élément qui associe une valeur à un libellé. Cependant, les utilisations et gestion d'une variable sont intimement liées au langage de programmation auquel on fait référence.
Par exemple, une variable enC++ aura au moins 7 caractéristiques :
- sonnom c'est-à-dire sous quel nom est déclarée la variable ;
- sontype, c'est la convention d'interprétation de la séquence de bits qui constitue la variable.
- Sa taille demot : Le type de la variable spécifie aussi la longueur de cette séquence (8 bits, 32 bits, 64 bits) ;
- savaleur,c'est la séquence de bits elle-même[Information douteuse][1] ;
- sonadresse, c'est l'endroit dans la mémoire où elle est stockée ;
- saportée, c'est la portion decode source où elle est accessible, par exemple, la portée d'une variable (non globale) en C s'entend de sa définition à la fin du bloc où elle est définie.
- savisibilité, c'est un ensemble de règles qui fixe qui peut utiliser la variable (exemple : mots-clefspublic, private, protected, ou le masquage d'une variable par une autre) ;
- sadurée de vie, c'est le temps d'exécution pendant laquelle la variable existe. En C et en C++ une variable contenue dans un bloc de code limité par des accolades "{}" possède la durée de vie correspondant au temps d'exécution de ce bloc. Il ne faut pas confondre la durée de vie d'unevariable locale et sa visibilité, ou sa portée : une variable hors de portée (ex : masquée par une autre), existe toujours.
Toutefois on peut trouver des langages qui restreignent ces caractéristiques :
- lePHP ne possède pas un typage fort, comme une grande partie des langages scripts ;
- leProlog, comme tous les langages deprogrammation fonctionnelle, ne permet pas qu'une variable change de valeur au cours du temps une fois la première identification faite ;
- lavisibilité[Quoi ?] de la variable[Laquelle ?] est publiquepar défaut en C ;
- la notion de pointeur en C++ est remplacée par la notion de référence enJava, en Prolog l'adresse d'une variable n'est pas accessible au programmeur.
Dans tous les langages qui permettent la création dynamique d'adresses (new en C++ ou Java), la notion de variable est complétée par la notion depointeur (type de donnée associé à une variable, dont les valeurs sont des adresses). L'adresse contenue dans une variable de type pointeur peut être inaccessible au programmeur (PHP, Java,Python), ou directement accessible (C++)[Comment ?].
Dans certains langages, les noms de variables (comme ceux desidentificateurs) doivent nécessairement commencer par une lettre (majuscule ou minuscule) ou par un_ (souligné). Les autres caractères composant le nom de la variable doivent être une lettre, un chiffre ou un_.La différenciation des majuscules et des minuscules (sensibilité à la casse) dans le nom d'une variable dépend du langage considéré.
Exemples de noms de variables “valides”, enC :
- _var
- __var2
- Var
- vArIAbLe
- v_a_r
Exemple de nom de variable non valide en C :
Ainsi, le premier caractère ne peut être un chiffre, car cela permet de faciliter la compilation ou l'interprétation du programme en ôtant une ambiguïté : quand le compilateur lit un chiffre, il sait que les caractères qui suivront constitueront une valeur numérique. De même, s'il lit une lettre ou un souligné, il saura qu'il a affaire à une variable.
Tous ces noms de variables sont valides enLisp.
Lorsque le type d'une variable est déterminé à la compilation (explicitement par le programmeur ou automatiquement parinférence de types), on parle detypage statique. Les valeurs de cette variable devront être obligatoirement de ce type (au sens large, c'est-à-dire du même type ou d'un type dérivé).
Le typage statique aide à lagénération de code objet plus efficace (en consommation mémoire et vitesse d'exécution). Il interdit toutefois laréflexivité à l'exécution.
Autrement, dans les cas où ce ne sont pas les variables qui ont un type, mais les valeurs, on parle detypage dynamique, ou typage latent.
On parle detypage fort lorsque le langage impose que les variables soient déclarées dans un type et utilisées dans ce type (ex : Ada ou C++). On parle detypage faible lorsque le langage admet qu'une variable puisse changer de type au cours de son existence (en particulier pour se conformer à la sémantique d'une expression).
On distingue généralement cinq opérations sur les variables, chacune pouvant revêtir des formes syntaxiques différentes.
- ladéclaration permet de déclarer un nom de variable, éventuellement de lui associer un type,
- ladéfinition permet d'associer une zone mémoire qui va être utilisée pour stocker la variable, comme lorsqu'on lui donne une valeur initiale,
- l'affectation consiste à attribuer une valeur à une variable,
- lalecture consiste à utiliser la valeur d'une variable,
- lasuppression réalisée soit automatiquement soit par une instruction du langage.
Les langages, comme leC,Caml ouPascal, imposent de déclarer une variable voire de lui donner un type avant son usage. Ladéclaration imposée des variables permet aucompilateur ou à l'interpréteur d'identifier les erreurs typographiques comme des variables non déclarées ou des variables homonymes. D'autres langages effectuent la déclaration au moment de la première affectation (c'est le cas de la plupart deslangages de script) ou lors de leur première apparition dans le code (comme dans Prolog).
En ce qui concerne l'initialisation des variables, c'est-à-dire l'affectation d'une valeur en même temps que la définition, certains langages imposent d'initialiser une variable avant sa première lecture, d'autres fournissent une valeur implicite (spécifiée ou indéterminée), et d'autres enfin laisse la variable avoir une valeur indéterminée. Des langages commeOz ou Prolog ne réalisent pas à proprement parler d'initialisation. Lors de la déclaration des variables aucune valeur n'est associée, on dit que la variable n'est pasliée. La valeur de la variable est déterminée au fur et à mesure de l'exécution du programme, on parle alors d'unification.
Dans les langages deprogrammation fonctionnelle ou deprogrammation logique, les variables ne peuvent avoir qu'une seule valeur au cours de leur existence.
Dans la plupart des langages, les variables n'existent qu'en tant qu'outils pour le programmeur. Ainsi, renommer toutes les occurrences d'une variable ne modifiera pas le fonctionnement du programme.
Au contraire, pour offrir une expressivité supplémentaire, certains langages permettent de considérer un nom de variable comme une valeur comme une autre (par exemple, ce sont lessymboles deCommon Lisp etSmalltalk). C'est une technique très utile pour implémenter efficacement des algorithmes decalcul symbolique.
- ↑ En C, elle varie pas au cours du temps si on utilise lemot-clefconst
Sur les autres projets Wikimedia :