Variable

Un article de Wikipédia, l'encyclopédie libre.

Une variable est représenté par un symbole. Elle est utilisée pour marquer un rôle dans une formule, un prédicat ou un algorithme. On distingue les variables qualitatives, quantitatives et ordinales.

Mathématiquement, on distingue variable et inconnue qui sont toutes deux représentées par des symboles. Si le symbole fait l'objet du système d'équations suffisant, on peut calculer sa valeur, c'est à dire la quantité qu'il remplace. Dans ce contexte, l'utilisation du mot variable est abusif car la variable aurait une valeur à priori inconnue, mais fixée.

En statistiques, une variable peut aussi représenter une qualité. En probabilité, la variable aléatoire est une fonction.

Dans les domaines comme la physique, la biologie, la mécanique ou la chimie, la variable représente un paramètre mesurable comme la température, le temps, la vitesse ou l'intensité.

En informatique , une variable associe un nom (le symbole) à une valeur ou un objet. La notion de variable est alors intimement liée au langage de programmation. Il est notable que beaucoup de ces langages autorisent les variables à changer de valeur au cours du temps !

Sommaire

[modifier] En Informatique

Dans un langage de programmation, une variable est un espace de stockage pour un résultat. Cependant les possibilités d'une variable sont intimement liées au langage de programmation auquel on fait référence. Par exemple une variable en C++ aura six caractéristiques:

  • son nom c'est a dire sous quel nom est déclaré la variable;
  • son type, c'est la convention d'interprétation de la séquence de bits qui constitue la variable. Le type de la variable spécifie aussi la longueur de cette séquence ( 8 bits, 32 bits, 64 bits);
  • sa valeur, c'est la séquence de bit elle même, elle ne peut varier au cours du temps si on utilise le mot clef const;
  • son adresse, c'est l'endroit dans la mémoire ou elle est stockée;
  • sa visibilité, c'est un ensemble de règles qui fixe qui peut utiliser la variable (mots clefs public, private, protected);
  • sa durée de vie, c'est la portion de code dans laquelle la variable existe, en C et en C++ la variable est contenue dans un bloc de code limité par des accolades "{}". Il ne faut pas confondre la durée de vie d'une variable locale et sa visibilité.

Toutefois on peut trouver des langages qui simplifient ces caractéristiques:

  • la notion du nom de la variable est problématique dans tous les langages qui permettent la création dynamique de variable (new en C++);
  • le PHP ne possède pas un typage fort, comme une grande partie des langages scripts;
  • le prolog ne permet pas qu'une variable change de valeur au cours du temps une fois la première identification faite;
  • la visibilité de la variable est public par défaut en C;
  • la notion de pointeur en C++ est remplacée par la notion de référence en Java, en prolog l'adresse d'une variable n'a aucun sens;

[modifier] Nom des variables

Dans certains langages, les noms de variables (identificateur) 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 est laissée à la discrétion des langages.

Exemples de noms de variables valides, en C :

  • _var
  • __var2
  • Var

Exemple de nom de variable non valide en C :

  • 2var

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 en Lisp.

[modifier] Typage

Lorsque le type d'une variable est déterminé à la compilation (explicitement par le programmeur ou automatiquement par inférence de types), on parle de typage 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 à la génération de code objet plus efficace (en consommation mémoire et vitesse d'exécution). Il interdit toutefois la réflexivité à l'exécution.

Autrement, dans les cas où 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 déclarées dans un type et utilisées 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 à la sémantique d'une expression).

[modifier] Cycle de vie des variables

On distingue généralement quatre opérations sur les variables, chacune pouvant revêtir des formes syntaxiques différentes.

  • la déclaration permet de déclarer un nom de variable, éventuellement de lui associer un type, ainsi qu'une valeur initiale,
  • l'affectation consiste à attribuer une valeur à une variable,
  • la lecture consiste à utiliser la valeur liée à la variable,
  • la suppression réalisée soit automatiquement soit par une instruction du langage.

Les langages, comme le C, Caml ou Pascal, imposent de déclarer une variable voire de lui donner un type avant son usage. La déclaration imposée des variables permet au compilateur 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 des langages 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'association d'une première valeur, certains langages imposent d'initialiser une variable avant sa première lecture alors que d'autres fournissent une valeur implicite (spécifiée ou indéterminée). Des langages comme Oz 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 pas lié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 de programmation fonctionnelle ou de programmation logique, les variables ne peuvent être associées qu'à une seule valeur au cours de leur existence.

[modifier] Réflexivité

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 les symboles de Common Lisp et Smalltalk). C'est une technique très utile pour implémenter efficacement des algorithmes de calcul symbolique.



[modifier] En mathématiques

En mathématiques une variable est un nom, un symbole ou une lettre parfois indexée, représentant une quantité inconnue ou quelconque appartenant à un ensemble donné.

[modifier] Utilité des variables

[modifier] Généralisation

Les variables permettent de traduire qu'une propriété est générale, c'est-à-dire vérifiée par tous les objets d'un certain domaine.

Par exemple, nous remarquons que

(1+0)^2\geq 1
(1+1)^2\geq 1+2\times 1
(1+0,5)^2\geq 1+2\times 0,5

Alors nous pouvons conjecturer que:

pour tout nombre x, (1+x)^2\geq 1+2\times x

Si par un raisonnement cette affirmation est démontrée alors il sera possible de l'utiliser pour n'importe quel nombre donné. Pour démontrer ce théorème, il suffit de considérer une variable x représentant un nombre réel quelconque et de développer:

(1+x)^2=1+2\times x+x^2

D'autre part nous savons que tout nombre réel élevé au carré est positif, donc x^2\geq 0. De plus en ajoutant de chaque côté de cette dernière inégalité 1+2\times x, il vient

1+2\times x+x^2\geq 1+2\times x

donc

(1+x)^2\geq 1+2\times x.

La propriété est donc générale.

[modifier] Existence

Certains théorèmes affirment l'existence d'objets sans les expliciter.

Par exemple, le théorème suivant

deux droites non parallèles du plan se coupent en un point,

affirme qu'il existe un point appartenant à deux droites non parallèles, sans le donner par une formule.

Dans le cadre d'une démonstration, en partant de deux droites non parallèles on pourra utiliser le théorème et affirmer qu'il existe un point M commun à ces deux droites. En fait M est une variable représentant ce point et cette définition de la variable M, va nous permettre de travailler avec ce point.

Voyons encore un autre exemple. Admettons le théorème:

tout nombre (réel) positif peut s'écrire comme un carré.

Considérons 2, on sait que 2 est positif, d'après le théorème il existe un nombre x tel que 2 = x2. Encore une fois x est une variable représentant un tel nombre (en fait il y en a deux). Maintenant, on peut utiliser x sans le connaître et calculer par exemple x4x2.

x4x2 = (x2)2 − 2 = 22 − 2 = 2.

[modifier] Résolution

Un autre grand intérêt des variables est celui de la résolution de problèmes, comme les équations par exemple, dans lesquels on se propose de trouver une ou plusieurs inconnues. Souvent la résolution du problème est largement simplifiée par l'introduction de variables qui vont représenter les inconnues et la recherche de relations qu'elles vérifient. Nous dirons que nous formalisons le problème.

Commençons par une question: Le capitaine d'un bateau aura 61 ans dans exactement 5 ans. Quel est l'âge du capitaine ?

Il est possible de raisonner directement. Sachant que dans 5 ans il aura 61 ans, il a actuellement 5 ans de moins que cet âge donc le capitaine est âgé de 61-5=56 ans.

En introduisant une variable. Notons x la variable qui représente l'âge du capitaine (x est un nombre entier). D'après l'énoncé x + 5 = 61 donc en retranchant 5 de chaque côté de l'égalité nous obtenons x = 61 − 5 = 56.

Dans ce cas, l'utilité d'avoir défini une variable inconnue peut laisser perplexe étant donné la simplicité du problème.

Voyons un autre problème: Marc et Florence ont a eux deux 40 ans et dans 16 ans Florence aura l'âge que Marc a maintenant. Déterminer les âges de Marc et Florence.

Un raisonnement direct n'est pas impossible, mais délicat à rédiger. En déclarant des variables, soit x l'âge de Marc et y l'âge Florence. D'après les hypothèses x + y = 40 et y + 16 = x. En remplaçant x par y + 16 dans la première relation, nous obtenons (y + 16) + y = 40 donc 2y = 40 − 16 = 24 d'où y = 12 et ainsi x = y + 16 = 12 + 16 = 28. On peut conclure que Marc a 28 ans et Florence 12 ans.

[modifier] Idée d'une variable

On pourrait dire qu'une variable est une enveloppe ou une boîte portant un nom, qui contient un papier sur lequel est écrit une certaine quantité de type connu. Par exemple, une enveloppe marquée x correspond à un entier naturel, et sur la lettre placée à l'intérieur figure la valeur 2, mais nous l'ignorons. Nous pouvons alors considérer l'expression x + 3 qui représente la somme du contenu de l'enveloppe que nous ne connaissons pas et de l'entier 3. Les conditions d'un énoncé pourront dans certains cas nous permettre de connaître la valeur écrite sur la lettre placée dans l'enveloppe, mais ce ne sera pas toujours le cas.

Dans le cas général, une variable peut représenter un nombre entier, un nombre réel, un point du plan ou de l'espace, une fonction, un ensemble etc. bref tout objet mathématique.

La quantité représentée par une variable varie-t-elle ? La réponse est non, du moins ce n'est pas l'interprétation que nous devons avoir d'une variable. Considérons par exemple, une voiture qui se déplace sur une route rectiligne à la vitesse de 50 km/h. On note x sa distance parcourue en km par rapport à un poteau P, situé sur le bord de la route et t représente le temps écoulé en heure à partir de l'instant où elle passe devant le poteau. Il ne faut pas imaginer que la variable x varie au cours du temps, et change en fonction de t, mais que x représente un nombre correspondant à la position de la voiture par rapport au poteau, et de façon intemporelle. De même t représente un temps écoulé et ne doit pas être considéré comme une variable qui représenterait ce qu'indique une horloge mise en marche dès que la voiture passe devant le poteau. Maintenant, d'après l'énoncé les variables x et t sont liées par la relation x=50\cdot t, il apparaît donc que la variable x dépend de la variable t et que x varie en fonction de t. Cette remarque peut laisser croire que finalement x variait bien au cours du temps, mais ce n'est toujours pas le cas. Il est indispensable de rappeler la relation et dire que si t prend une certaine valeur, alors comme x=50\cdot t, x est égal à 50 fois cette valeur, ce qui est tout à fait logique. Par exemple, si on suppose que t = 1, la relation x=50 \cdot t étant vérifiée, alors x=50, donc la voiture aura parcouru 50 km au bout d'une heure. La phrase x est fonction de t signifie qu'il existe une fonction f et telle que x = f(t) dans les conditions supposées. Cette fonction n'est autre que celle qui à un nombre u associe 50\cdot u. Une variable représente l'un des éléments d'un certain ensemble, mais les conditions d'un problème peuvent lier plusieurs variables les unes aux autres par des relations.

Si ce ne sont pas les variables qui varient alors les fonctions varient-elles ? Oui d'une certaine façon puisque suivant la valeur donnée, une fonction prend (ou donne) une valeur correspondante. Mais cette réponse n'est pas tout à fait exacte, puisqu'une fonction en tant qu'objet mathématique associe invariablement à un nombre donné toujours la même valeur. Considérons par exemple la fonction f:x\mapsto 5x+2 et a un nombre réel. L'image de a par f, notée f(a), représente la valeur prise par f en le réel a et est égale à 5a + 2. Encore une fois f(a) ne varie pas, bien que sa valeur nous soit inconnue. Elle est parfaitement déterminée en fonction de a.

[modifier] Paramètre

Un paramètre est une variable définie au début d'un énoncé mathématique. Cette variable sera ensuite susceptible de prendre des valeurs particulières.

[modifier] Variables mathématiques et variables informatiques

En mathématiques comme en informatique les variables symbolisent des objets et peuvent prendre des valeurs qui sont des éléments d'un certain ensemble.

Mais dans certains langages de programmation, les variables représentent des données qui varient au cours du temps et peuvent même prendre une valeur fonction de la valeur qu'elles avaient juste avant. Ces variables doivent impérativement prendre une valeur initiale avant l'exécution des instructions et leur contenu peut changer. Elles ont une conception totalement différentes des variables mathématiques.

Par contre dans les langages fonctionnels, les variables se rapprochent un peu plus des variables mathématiques. Mais par exemple, dans certains cas, il n'est pas toujours nécessaire d'indiquer le type des données qu'elles représentent, ce qui reviendrait en mathématiques à ne pas préciser l'ensemble auquel les variables que l'on considère appartiennent.

[modifier] Définition formelle

Une variable est un ensemble.

[modifier] Histoire

Dans sa logistique spécieuse, François Viète ouvre la voie au formalisme en utilisant des lettres pour représenter les entités utilisés dans un problème mathématique que nous appellerions aujourd'hui une équation. Les inconnues, nos variables mathématiques, y sont représentées par des minuscules latines.

[modifier] Voir aussi

wikt:

Voir « variable » sur le Wiktionnaire.