⌂ Programmation
Fiche 4 sur 13

Les variables

Les boîtes dans lesquelles l'ordinateur retient vos données.

Après cette fiche, vous saurez :

1Pourquoi a-t-on besoin de variables ?

Jusqu'ici, tout ce que vous affichiez était écrit en dur dans le programme.

Console.WriteLine("Radakass a 50 HP");

Ça fonctionne, mais c'est très limité. Si Radakass perd des points de vie, il faut retaper le nombre à la main partout. Et l'ordinateur ne peut rien calculer, parce qu'il ne sait même pas que 50 est un nombre : entre guillemets, pour lui, c'est du texte.

Il nous faut un endroit où retenir une valeur, pour pouvoir la réutiliser et la modifier. Cet endroit s'appelle une variable.

2Une variable, c'est une boîte

Une variable a trois caractéristiques :

Cliquez sur les boutons pour voir ce qui se passe.

?
pas de boîte

À retenir

La boîte ne contient qu'une seule valeur à la fois.

Quand on en met une nouvelle, l'ancienne est effacée. Elle est perdue.

3Créer une variable

Cela se fait en deux temps.

1. Déclarer : je crée la boîte

int hp;

Deux mots seulement :

MotCe qu'il veut dire
intLe type. Ici : un nombre entier. Le mot vient de l'anglais integer.
hpLe nom de la boîte. C'est vous qui le choisissez.

À ce stade, la boîte existe, mais elle est vide.

2. Donner une valeur : je remplis la boîte

hp = 50;

Le 50 s'écrit sans guillemets. Ce n'est pas du texte, c'est un nombre.

Les deux d'un coup

On peut aussi tout écrire sur une seule ligne :

int hp = 50;

Les deux façons sont correctes. Choisissez celle que vous préférez.

Attention

On écrit int une seule fois, au moment de créer la boîte.

int hp;
hp = 50;      // correct : on remplit la boîte
int hp = 40;  // refusé : la boîte hp existe déjà

Une fois la boîte créée, on ne fait plus que changer son contenu.

4Afficher une variable

Pour afficher le contenu d'une boîte à l'intérieur d'une phrase, il faut deux choses : un dollar devant le guillemet, et le nom de la boîte entre accolades.

int hp = 50;

Console.WriteLine($"Radakass a {hp} HP");
Ce que l'ordinateur affiche
Radakass a 50 HP

L'ordinateur remplace {hp} par le contenu de la boîte.

Attention

Sans le dollar, ça ne marche pas.

Console.WriteLine("Radakass a {hp} HP");    // affiche : Radakass a {hp} HP
Console.WriteLine($"Radakass a {hp} HP");   // affiche : Radakass a 50 HP

Le dollar est minuscule, mais il est indispensable. C'est l'oubli le plus fréquent au début. Prenez le réflexe : dès qu'il y a des accolades dans un texte, il faut un dollar devant.

On peut mettre plusieurs boîtes dans la même phrase :

int hp = 50;
int nbEvents = 3;

Console.WriteLine($"Radakass a {hp} HP et a vécu {nbEvents} évènements");
Ce que l'ordinateur affiche
Radakass a 50 HP et a vécu 3 évènements

5Le signe = ne veut pas dire « égal »

C'est un point important, et il gêne beaucoup de débutants.

En mathématiques, = veut dire « est égal à ». Les deux côtés sont équivalents.

En programmation, ce n'est pas ça du tout. Le signe = veut dire « reçoit ».

hp = 50;

Cela se lit : « hp reçoit 50 ». On lit de droite à gauche : on prend ce qui est à droite, et on le range dans la boîte de gauche.

À retenir

Retenez cette image : le = est une flèche qui va de la droite vers la gauche.

hp ← 50

C'est cette idée qui vous permettra de comprendre, à la fiche suivante, une ligne qui semble impossible en mathématiques : hp = hp - 2;

6Bien nommer ses variables

Le nom n'a aucune importance pour l'ordinateur. Il en a énormément pour vous.

// Difficile à comprendre
int x = 50;
int y = 0;

// Clair
int hp = 50;
int nbEvents = 0;

Les règles à respecter

Attention

Les majuscules comptent, comme pour Console.WriteLine.

hp, HP et Hp sont trois boîtes différentes. Si vous créez hp et que vous écrivez ensuite HP, l'ordinateur vous dira qu'il ne connaît pas cette boîte.

7Il existe d'autres types de boîtes

Cette année, vous en utiliserez surtout quatre. Pour l'instant, nous ne travaillons qu'avec le premier.

TypeContientQuand ?
intUn nombre entierMaintenant
stringDu texteFiche 6
doubleUn nombre à virgulePlus tard
boolVrai ou fauxPlus tard

Ne cherchez pas à retenir les trois derniers aujourd'hui. Sachez simplement qu'ils existent, et que int ne sert qu'aux nombres entiers.

8L'ordinogramme : une nouvelle forme

Vous connaissez déjà l'ovale (début et fin) et le trapèze (afficher). En voici une troisième.

FormeCe qu'elle veut dire
Un ovaleLe début ou la fin
Un trapèzeAfficher quelque chose
Un rectangleUn traitement : donner une valeur à une variable, faire un calcul

Retenez-le ainsi : le rectangle, c'est ce que l'ordinateur fait dans sa tête. On ne le voit pas à l'écran.

Début hp = 50 "Radakass a 50 HP" Fin

Et le programme correspondant :

int hp = 50;

Console.WriteLine($"Radakass a {hp} HP");

Le rectangle correspond à la ligne qui remplit la boîte. Le trapèze correspond à la ligne qui affiche.

À retenir

La différence est simple :

→Exercices

Ces exercices reprennent l'aventure de Radakass, commencée en classe.

1Les points de vie de RadakassRecopier

Recopiez ce programme et lancez-le.

int hp;

hp = 50;

Console.WriteLine("*****************************");
Console.WriteLine("Première aventure de Radakass");
Console.WriteLine("*****************************");

Console.WriteLine();
Console.WriteLine($"Radakass a {hp} HP");

Solution

Ce que l'ordinateur affiche
*****************************
Première aventure de Radakass
*****************************

Radakass a 50 HP

Trois vérifications si ça ne marche pas :

  • Le $ est bien devant le guillemet de la dernière ligne.
  • hp est écrit exactement pareil aux deux endroits, en minuscules.
  • Le 50 est écrit sans guillemets.

Un test parlant : enlevez le $ et relancez. Vous verrez s'afficher Radakass a {hp} HP. C'est la preuve que le dollar sert vraiment à quelque chose.

2Ajouter un compteurModifier

Reprenez le programme de l'exercice 1.

  1. Créez une deuxième variable appelée nbEvents, de type int, et donnez-lui la valeur 0.
  2. Ajoutez une ligne qui affiche Radakass a vécu 0 évènements, en utilisant la variable.
  3. Changez la valeur de départ de hp à 100 et relancez. Combien de lignes avez-vous dû modifier ?

Solution

int hp;
int nbEvents;

hp = 100;
nbEvents = 0;

Console.WriteLine("*****************************");
Console.WriteLine("Première aventure de Radakass");
Console.WriteLine("*****************************");

Console.WriteLine();
Console.WriteLine($"Radakass a {hp} HP");
Console.WriteLine($"Radakass a vécu {nbEvents} évènements");
Ce que l'ordinateur affiche
*****************************
Première aventure de Radakass
*****************************

Radakass a 100 HP
Radakass a vécu 0 évènements

Réponse à la question 3 : une seule ligne.

C'est tout l'intérêt des variables. La valeur n'est écrite qu'à un seul endroit. Partout ailleurs, on utilise le nom de la boîte.

Sans variable, il aurait fallu retrouver et corriger chaque 50 du programme — et en oublier un est vite arrivé.

3Votre propre personnageCréer

Créez la fiche d'un personnage de jeu vidéo.

  1. Trois variables de type int : les points de vie, la force, et le nombre de pièces d'or.
  2. Donnez-leur les valeurs de votre choix.
  3. Affichez une fiche encadrée avec les trois valeurs.

Donnez à vos variables des noms clairs.

Solution

int hp;
int force;
int piecesOr;

hp = 80;
force = 12;
piecesOr = 250;

Console.WriteLine("+---------------------------+");
Console.WriteLine("          GRIMBOLD");
Console.WriteLine("+---------------------------+");
Console.WriteLine($"  Points de vie : {hp}");
Console.WriteLine($"  Force         : {force}");
Console.WriteLine($"  Pièces d'or   : {piecesOr}");
Console.WriteLine("+---------------------------+");
Ce que l'ordinateur affiche
+---------------------------+
          GRIMBOLD
+---------------------------+
  Points de vie : 80
  Force         : 12
  Pièces d'or   : 250
+---------------------------+

Les noms hp, force et piecesOr se comprennent sans explication. C'est exactement ce qu'on demande.

Remarquez piecesOr : pas d'espace, pas d'accent, et une majuscule au début du deuxième mot.

Je sais faire

Une case qui coince ? Relisez la partie concernée avant de passer à la fiche suivante.

← Fiche 3 Fiche 5 : Faire évoluer une variable →