En
informatique
, les
variables
sont des espaces memoire "elementaires" qui associent un nom (l'
identifiant
) a une valeur. Dans la plupart des
langages
et notamment les plus courants, les variables peuvent changer de valeur au cours du temps (
dynamique
). Dans les langages de certains
paradigmes
, notamment la
programmation fonctionnelle
, leur valeur est au contraire figee dans le temps (
statique
). Les variables sont utilisees par un programme informatique pour memoriser certaines donnees necessaires au fonctionnement du programme.
Contrairement a une variable, une
constante
est un
identificateur
associe a une valeur fixe. Syntaxiquement, cet identificateur a tous les aspects d'une variable. Cependant, il lui est affecte une valeur definitive, c'est-a-dire
constante
, comme la taille d'un
plateau d'echecs
(8x8). Une constante contient une valeur qui peut avoir des valeurs differentes suivant les executions, a la maniere du jeu
demineur
dont le joueur peut choisir la taille du plateau.
Dans un langage de programmation, une variable est un element qui associe une valeur a un libelle. Cependant, les utilisations et gestion d'une variable sont intimement liees au langage de programmation auquel on fait reference.
Par exemple, une variable en
C++
aura au moins 7 caracteristiques :
- son
nom
c'est-a-dire sous quel nom est declaree la variable ;
- son
type
, c'est la convention d'interpretation de la sequence de bits qui constitue la variable.
- Sa taille de
mot
: Le type de la variable specifie aussi la longueur de cette sequence (8 bits, 32 bits, 64 bits) ;
- sa
valeur
,
c'est la sequence de bits elle-meme
[Information douteuse]
[
1
]
;
- son
adresse
, c'est l'endroit dans la memoire ou elle est stockee ;
- sa
portee
, c'est la portion de code source ou elle est accessible, par exemple, la portee d'une variable (non globale) en C s'entend de sa definition a la fin du bloc ou elle est definie.
- sa
visibilite
, c'est un ensemble de regles qui fixe qui peut utiliser la variable (exemple : mots-clefs
public, private, protected,
ou le masquage d'une variable par une autre) ;
- sa
duree de vie
, c'est le temps d'execution pendant laquelle la variable existe. En C et en C++ une variable contenue dans un bloc de code limite par des accolades "{}" possede la duree de vie correspondant au temps d'execution de ce bloc. Il ne faut pas confondre la duree de vie d'une variable locale et sa visibilite, ou sa portee : une variable hors de portee (ex : masquee par une autre), existe toujours.
Toutefois on peut trouver des langages qui restreignent ces caracteristiques :
- le
PHP
ne possede pas un typage fort, comme une grande partie des langages scripts ;
- le
Prolog
, comme tous les langages de
programmation fonctionnelle
, ne permet pas qu'une variable change de valeur au cours du temps une fois la premiere identification faite ;
- la
visibilite
[Quoi ?]
de la variable
[Laquelle ?]
est publique
par defaut
en C ;
- la notion de pointeur en C++ est remplacee par la notion de reference en
Java
, en Prolog l'adresse d'une variable n'est pas accessible au programmeur.
Dans tous les langages qui permettent la creation dynamique d'adresses (new en C++ ou Java), la notion de variable est completee par la notion de
pointeur
(type de donnee associe a une variable, dont les valeurs sont des adresses). L'adresse contenue dans une variable de type pointeur peut etre inaccessible au programmeur (PHP, Java,Python), ou directement accessible (C++)
[Comment ?]
.
Dans certains langages, les noms de variables (comme ceux des
identificateurs
) doivent necessairement commencer par une lettre (majuscule ou minuscule) ou par un
_
(
souligne
). Les autres caracteres composant le nom de la variable doivent etre une lettre, un chiffre ou un
_
.
La differenciation des majuscules et des minuscules (sensibilite a la casse) dans le nom d'une variable depend du langage considere.
Exemples de noms de variables “valides”, en
C
:
- _var
- __var2
- Var
- vArIAbLe
- v_a_r
Exemple de nom de variable non valide en C :
Ainsi, le premier caractere ne peut etre un chiffre, car cela permet de faciliter la compilation ou l'interpretation du programme en otant une ambiguite : quand le compilateur lit un chiffre, il sait que les caracteres qui suivront constitueront une valeur numerique. De meme, s'il lit une lettre ou un souligne, il saura qu'il a affaire a une variable.
Tous ces noms de variables sont valides en
Lisp
.
Lorsque le type d'une variable est determine a la compilation (explicitement par le programmeur ou automatiquement par
inference de types
), on parle de
typage statique
. Les valeurs de cette variable devront etre obligatoirement de ce type (au sens large, c'est-a-dire du meme type ou d'un type derive).
Le typage statique aide a la
generation de code
objet plus efficace (en consommation memoire et vitesse d'execution). Il interdit toutefois la
reflexivite
a l'execution.
Autrement, dans les cas ou ce ne sont pas les variables qui ont un type, mais les valeurs, on parle de
typage dynamique
, ou typage latent.
On parle de
typage fort
lorsque le langage impose que les variables soient declarees dans un type et utilisees dans ce type (ex : Ada ou C++). On parle de
typage faible
lorsque le langage admet qu'une variable puisse changer de type au cours de son existence (en particulier pour se conformer a la semantique d'une expression).
On distingue generalement cinq operations sur les variables, chacune pouvant revetir des formes syntaxiques differentes.
- la
declaration
permet de declarer un nom de variable, eventuellement de lui associer un type,
- la
definition
permet d'associer une zone memoire qui va etre utilisee pour stocker la variable, comme lorsqu'on lui donne une valeur initiale,
- l'
affectation
consiste a attribuer une valeur a une variable,
- la
lecture
consiste a utiliser la valeur d'une variable,
- la
suppression
realisee soit automatiquement soit par une instruction du langage.
Les langages, comme le
C
,
Caml
ou
Pascal
, imposent de declarer une variable voire de lui donner un type avant son usage. La
declaration
imposee des variables permet au
compilateur
ou a l'
interpreteur
d'identifier les erreurs typographiques comme des variables non declarees ou des variables homonymes. D'autres langages effectuent la declaration au moment de la premiere affectation (c'est le cas de la plupart des
langages de script
) ou lors de leur premiere apparition dans le code (comme dans Prolog).
En ce qui concerne l'initialisation des variables, c'est-a-dire l'affectation d'une valeur en meme temps que la definition, certains langages imposent d'initialiser une variable avant sa premiere lecture, d'autres fournissent une valeur implicite (specifiee ou indeterminee), et d'autres enfin laisse la variable avoir une valeur indeterminee. Des langages comme
Oz
ou Prolog ne realisent pas a proprement parler d'initialisation. Lors de la declaration des variables aucune valeur n'est associee, on dit que la variable n'est pas
liee
. La valeur de la variable est determinee au fur et a mesure de l'execution du programme, on parle alors d'
unification
.
Dans les langages de
programmation fonctionnelle
ou de
programmation 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 expressivite supplementaire, certains langages permettent de considerer un nom de variable comme une valeur comme une autre (par exemple, ce sont les
symboles
de
Common Lisp
et
Smalltalk
). C'est une technique tres utile pour implementer efficacement des algorithmes de
calcul symbolique
.
- ↑
En C, elle varie pas au cours du temps si on utilise le mot-clef
const
Sur les autres projets Wikimedia :