Introduction aux Variables
"L'échec est la variable d'ajustement de l'apprentissage." ✨
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 :
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.
- 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,
aetbsont deux emplacements mémoire distincts.
Modifierbne change pas la valeur dea.
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"
💡
p1etp2contiennent la même adresse mémoire vers l’objetPersonne.
Modifierp2.Nommodifie donc aussi ce quep1“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 :
maVariable≠Mavariable - 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
Exercices
- Crée une variable pour stocker un prénom et affiche-la dans la console.
- Déclare deux entiers
aetb, affecte-leur des valeurs et affiche leur somme. - 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
-
Notion de variable
Différence entre un type valeur & un type référence (fondamentaux) target="_blank" rel="noopener noreferrer" class="external-link"> educode.fr -
Notion de variable
Aller consulter d'autre vidéo chez educode.fr


