Affectation – échange de valeurs | Algorithmique Seconde
Introduction
Découvrez comment manipuler les variables en algorithmique
Définition de la variable
Qu'est-ce qu'une variable ?
En algorithmique, une variable est un conteneur qui stocke une valeur pouvant être modifiée au cours de l'exécution d'un algorithme.
Chaque variable a :
- Un nom (identifiant)
- Un type (entier, réel, chaîne de caractères, etc.)
- Une valeur actuelle
Imagine une boîte nommée x qui contient une valeur :
Cette notation signifie que la variable x reçoit la valeur 5.
Notation de l'affectation
L'opérateur d'affectation
Dans les algorithmes, on utilise souvent le symbole ← pour désigner l'affectation :
Cela signifie que la variable reçoit la valeur.
- a ← 10 (la variable a reçoit la valeur 10)
- b ← "Bonjour" (la variable b reçoit la chaîne "Bonjour")
- c ← a + 5 (la variable c reçoit la valeur de a + 5)
Principe de l'échange de valeurs
Échanger deux variables
Imaginons que nous ayons deux variables :
- a = 5
- b = 10
Nous voulons que a = 10 et b = 5
L'instruction suivante est incorrecte :
b ← a
Résultat : a = 10 et b = 10 (les deux ont la même valeur !)
Méthode avec variable temporaire
La solution : variable temporaire
Soit a = 5 et b = 10
a ← b
b ← temp
- 1 temp ← a : temp = 5
- 2 a ← b : a = 10
- 3 b ← temp : b = 5
Résultat final : a = 10 et b = 5 ✅
Autres méthodes d'échange
Alternatives à la méthode classique
Pour des variables numériques a et b :
b ← a - b
a ← a - b
- 1 a ← 5 + 10 = 15
- 2 b ← 15 - 10 = 5
- 3 a ← 15 - 5 = 10
Résultat : a = 10 et b = 5 ✅
Exemple complet d'algorithme
Algorithme d'échange complet
Algorithme EchangeValeurs
Variables a, b, temp : Entier
Début
Afficher("Entrez la valeur de a : ")
Lire(a)
Afficher("Entrez la valeur de b : ")
Lire(b)
Afficher("Avant échange : a =", a, " et b =", b)
temp ← a
a ← b
b ← temp
Afficher("Après échange : a =", a, " et b =", b)
Fin
| Instruction | a | b | temp |
|---|---|---|---|
| Lire(a) | 5 | ? | ? |
| Lire(b) | 5 | 10 | ? |
| temp ← a | 5 | 10 | 5 |
| a ← b | 10 | 10 | 5 |
| b ← temp | 10 | 5 | 5 |
Erreurs courantes à éviter
Pièges à éviter
b ← a
Cette séquence ne fonctionne pas car a perd sa valeur initiale avant que b ne la récupère.
temp ← a
a ← b
Cette séquence échouera car temp n'est pas encore initialisée.
Assurez-vous que les variables soient du même type ou compatibles :
- a = "texte" et b = 123 → impossible d'échanger directement
- Utilisez des conversions de type si nécessaire
Applications concrètes
Où utiliser l'échange de valeurs ?
Lorsqu'on trie un tableau, on échange souvent des éléments adjacents :
Si tab[i] > tab[i+1] Alors
temp ← tab[i]
tab[i] ← tab[i+1]
tab[i+1] ← temp
FinSi
- 1 Inversion de l'ordre de deux éléments
- 2 Permutation de positions dans un jeu
- 3 Réinitialisation de valeurs dans un programme
- 4 Rotation de valeurs dans un cercle
Exercice d'application
Problème à résoudre
On dispose de trois variables : a, b et c.
Initialement : a = 10, b = 20, c = 30
Écrire un algorithme qui permet d'échanger les valeurs de manière circulaire :
- La valeur de a devient celle de b
- La valeur de b devient celle de c
- La valeur de c devient celle de a
Solution de l'exercice
Correction détaillée
Variables a, b, c, temp : Entier
a ← 10
b ← 20
c ← 30
Afficher("Avant rotation : a=", a, " b=", b, " c=", c)
temp ← a // Sauvegarde de a
a ← b // a prend la valeur de b
b ← c // b prend la valeur de c
c ← temp // c prend la valeur initiale de a
Afficher("Après rotation : a=", a, " b=", b, " c=", c)
- Initialisation : a=10, b=20, c=30
- 1 temp ← a : temp=10
- 2 a ← b : a=20
- 3 b ← c : b=30
- 4 c ← temp : c=10
Résultat final : a=20, b=30, c=10 ✅
Exercice supplémentaire
Inversement sans variable temporaire
Soit deux variables x et y de type Entier.
Initialisation : x = 15, y = 25
Écrire un algorithme qui inverse les valeurs de x et y SANS utiliser de variable temporaire, en utilisant uniquement des opérations arithmétiques.
Solution de l'exercice supplémentaire
Correction arithmétique
Variables x, y : Entier
x ← 15
y ← 25
Afficher("Avant : x=", x, " y=", y)
x ← x + y // x = 15 + 25 = 40
y ← x - y // y = 40 - 25 = 15
x ← x - y // x = 40 - 15 = 25
Afficher("Après : x=", x, " y=", y)
- Initialisation : x=15, y=25
- 1 x ← x + y : x=40
- 2 y ← x - y : y=15
- 3 x ← x - y : x=25
Résultat final : x=25, y=15 ✅
Visualisation de l'échange
Représentation graphique
Imaginons deux personnes A et B avec chacune une valise :
- Personne A a une valise bleue
- Personne B a une valise rouge
Pour échanger sans se marcher dessus :
- A pose sa valise bleue sur une table (variable temporaire)
- B prend la valise rouge et la donne à A
- A récupère la valise bleue de la table et la garde
b: [10] → [ ]
temp: [ ] → [5]
b: [10] → [ ]
temp: [5] → [5]
b: [ ] → [5]
temp: [5] → [5]
Complexité de l'échange
Analyse de performance
| Méthode | Opérations | Complexité | Avantages | Inconvénients |
|---|---|---|---|---|
| Variable temporaire | 3 affectations | O(1) | Simple, universel | +1 variable |
| Arithmétique | 3 opérations | O(1) | Pas de var. supp. | Numérique seulement |
| XOR (avancé) | 3 XOR | O(1) | Très efficace | Complexité |
Pour les débutants et dans la plupart des cas, la méthode avec variable temporaire est la plus claire et la plus fiable :
- Facile à comprendre
- Fonctionne avec tous les types de données
- Moins d'erreurs possibles
- Universellement applicable
Résumé
Points clés
- Une variable est un conteneur pour une valeur
- L'affectation (←) attribue une valeur à une variable
- L'échange consiste à inverser les valeurs de deux variables
- Méthode classique : variable temporaire (recommandée)
- Méthode arithmétique : pour nombres uniquement
- Autres méthodes : XOR, tuples (selon langage)
- Toujours utiliser une variable temporaire pour l'échange simple
- Attention à l'ordre des instructions
- Vérifier la compatibilité des types
- Tester avec des cas limites
Conclusion
Félicitations !
Continuez à pratiquer pour renforcer vos compétences en algorithmique