sciences numériques et technologie (seconde) · Chapitre 2 · Exercice de TD
Échanger deux variables sans en créer une troisième
Variables, types et affectations · Affectation et séquence d'instructions · niveau 3 (difficile)
Énoncé
On dispose de a = 3 et b = 8. On veut échanger leurs contenus sans utiliser a, b = b, a et sans créer de variable auxiliaire.
- Exécuter à la main la séquence suivante et vérifier qu'elle échange bien les valeurs.
- Expliquer pourquoi elle fonctionne.
- Sur quel type de données cette astuce échouerait-elle ?
a = a + b
b = a - b
a = a - bCorrigé
1. Départ : , .
| ligne | a | b |
|---|---|---|
a = a + b | 11 | 8 |
b = a - b | 11 | 3 |
a = a - b | 8 | 3 |
Les valeurs sont bien échangées.
2. Notons et les valeurs initiales. Après la première ligne, a contient : cette somme retient à elle seule les deux informations. La deuxième ligne en retire , ce qui laisse dans b. La troisième en retire ce nouveau b, c'est-à-dire , ce qui laisse dans a.
3. L'astuce repose sur l'addition et la soustraction : elle échoue sur les chaînes de caractères, où + concatène mais où - n'existe pas (TypeError). Elle est aussi risquée sur les flottants, où les arrondis peuvent faire perdre des décimales. C'est pourquoi on préfère en pratique a, b = b, a, qui fonctionne sur n'importe quel type.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 14 autres exercices corrigés dans ce chapitre, et 22 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.