한국   대만   중국   일본 
Variable (informatique) ? Wikipedia Aller au contenu

Variable (informatique)

Un article de Wikipedia, l'encyclopedie libre.

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.

Variables et constantes [ modifier | modifier le code ]

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.

Variables en programmation [ modifier | modifier le code ]

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.

Variables et pointeurs [ modifier | modifier le code ]

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 ?] .

Nom des variables [ modifier | modifier le code ]

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 :

  • 2var

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 .

Typage [ modifier | modifier le code ]

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).

Cycle de vie des variables [ modifier | modifier le code ]

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.

Reflexivite [ modifier | modifier le code ]

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 .

Notes et references [ modifier | modifier le code ]

  1. En C, elle varie pas au cours du temps si on utilise le mot-clef const

Voir aussi [ modifier | modifier le code ]

Sur les autres projets Wikimedia :