Aller au contenu

Introduction aux Variables

"L'échec est la variable d'ajustement de l'apprentissage."

Patrick Louis Richard


Objectifs

  • Comprendre ce qu’est une variable et une constante
  • Déclarer et initialiser des variables / constantes
  • Utiliser différents types de données
  • Conversions de type
  • Manipuler des valeurs à l’aide d’opérateurs simples

Définition

Une variable est un emplacement de mémoire dans lequel est stockée une valeur temporaire.
Chaque variable possède :

  • Un nom : qui sert à identifier l'emplacement mémoire.
  • Un type : qui définit la nature de la donnée stockée.
  • Une valeur : qui peut être modifiée au cours de l'algorithme ou du programme.

Pour mieux comprendre :

Image title

Imagine un tiroir avec une étiquette dessus qui dit "age". Tu ouvres le tiroir et tu mets un papier dedans où tu écris "12". Plus tard, tu peux changer le papier et écrire "13" à la place. Ce tiroir, c’est une variable !

La variable est donc comme une boîte étiquetée dans laquelle on place et remplace librement des contenus, mais selon une forme précise.

Image title

  • Physiquement, une variable est un emplacement mémoire repéré par une adresse binaire.
  • Abstraitement, c'est l'association entre un nom et une zone mémoire réservée.

La taille de cette zone mémoire et l'interprétation de son contenu dépendent directement du type de la variable.

Typologie des variables

Le langage C# distingue deux grandes catégories de variables :

Variables de type valeur Stockent directement les données.
Variables de type référence Stockent une référence (adresse) vers l'emplacement où les données sont stockées.

Variables de type valeur

Les variables de type valeur contiennent directement la donnée.
Elles sont stockées sur la pile (Stack), et leur contenu est copié lorsqu’on les assigne à une autre variable.

Exemple

int a = 5;
int b = a; // b reçoit une copie de la valeur de a
b = 10;

Console.WriteLine(a); // Affiche 5
Console.WriteLine(b); // Affiche 10

Ici, a et b sont deux emplacements mémoire distincts.
Modifier b ne change pas la valeur de a.


Variables de type référence

Les variables de type référence ne contiennent pas directement la donnée,
mais une adresse (référence) vers un objet stocké dans le tas (Heap).

Quand on copie une variable de référence, les deux variables pointent vers le même objet.

Exemple

class Personne
{
    public string Nom;
}

Personne p1 = new Personne();
p1.Nom = "Alice";

Personne p2 = p1; // p2 référence le même objet que p1
p2.Nom = "Bob";

Console.WriteLine(p1.Nom); // Affiche "Bob"

💡 p1 et p2 contiennent la même adresse mémoire vers l’objet Personne.
Modifier p2.Nom modifie donc aussi ce que p1 “voit”.


Visualisation simplifiée

Variable Contenu Localisation
p1 ↦ objet Personne("Bob") Pile
p2 ↦ même objet Pile
Personne("Bob") Valeur réelle Tas

Mémoire, pile et ramasse-miettes

Pour bien comprendre ce qu’il se passe “dans la machine”, imaginons deux zones de travail dans la mémoire :

Zone Rôle Exemples
🧱 Pile (Stack) Contient les variables locales et les paramètres des fonctions.
Quand une fonction se termine, tout ce qu’elle a créé sur la pile disparaît automatiquement.
int age = 18;
📦 Tas (Heap) Contient les objets et les données dynamiques créées à l’exécution.
Ces données restent tant qu’elles sont référencées par une variable.
string nom = "Alice";

💡 Garbage Collector
En C#, le ramasse-miettes (garbage collector) parcourt la mémoire du tas et libère automatiquement les objets qui ne sont plus utilisés.
Cela évite les fuites de mémoire, sans que tu aies à t’en occuper manuellement.


À retenir

  • Les types valeur : données copiées, indépendantes (pile).
  • Les types référence : objets partagés, vivants sur le tas.
  • Le Garbage Collector nettoie la mémoire automatiquement. ✨
  • Variables de type valeur -> Stockent directement les données.

Pourquoi connaître les types ?

Bien comprendre la nature des variables est essentiel pour optimiser l'utilisation de la mémoire et écrire des applications performantes.


❌ Exemple de code incorrect

int a = "salut"; // Erreur de type : string assigné à int

!!! warning "Résultat attendu" Le compilateur C# affiche une erreur :
Cannot implicitly convert type 'string' to 'int'

✅ Version corrigée

string a = "salut"; // Correct : a est bien une chaîne de caractères

Syntaxe de base

// Déclaration
int age;

// Initialisation
age = 18;

// Déclaration + initialisation
int taille = 175;

Remarques

  • Une variable possède un nom (identificateur), un type, et une valeur.
  • On peut modifier sa valeur à tout moment :
age = 20;

Types de données simples

Type Description Exemple
int Nombre entier 42
float Nombre réel (flottant) 3.14f
double Nombre réel plus précis 2.71828
char Caractère unique 'A'
string Chaîne de caractères "Bonjour"
bool Booléen (vrai/faux) true

À propos du f

Le suffixe f signifie que la valeur est un float (nombre flottant simple précision) et non un double (double précision).


Bonnes pratiques

Convention de nommage

  • Utilise des noms explicites : poids, hauteur, prenom
  • Respecte la casse : maVariableMavariable
  • En C#, on suit la camelCase

Erreurs fréquentes

  • Oublier de terminer par un point-virgule ;
  • Déclarer deux fois une variable avec le même nom
  • Utiliser une variable avant de l’avoir déclarée

Exemple complet

int age = 25;
float poids = 70.5f;
string nom = "Alice";

Console.WriteLine("Nom : " + nom);
Console.WriteLine("Age : " + age);
Console.WriteLine("Poids : " + poids + " kg");

Résultat

Image title


Exercices

  1. Crée une variable pour stocker un prénom et affiche-la dans la console.
  2. Déclare deux entiers a et b, affecte-leur des valeurs et affiche leur somme.
  3. Crée un programme qui demande à l’utilisateur son âge et affiche s’il est majeur ou mineur.

Navigation

Introduction Types valeur/référence Nommage Déclaration et affectation Portée (Scope)


Pour aller plus loin