Les boucles for, while et do-while en C et C++
Dans cette leçon, vous allez répéter des traitements avec les boucles for, while et do-while et les contrôler avec break et continue.
Introduction
Les boucles exécutent plusieurs fois le même bloc de code. La boucle for convient quand on connaît le nombre de répétitions, while répète tant que la condition est vraie, et do-while exécute toujours le corps au moins une fois avant de tester la condition.
Points importants
- Activez les avertissements du compilateur (compiler warnings) et corrigez-les tous.
- Comprenez bien le type et la durée de vie (lifetime) de chaque valeur.
- Vérifiez toujours les données d'entrée et les limites des indices de tableau.
Voir comment ça marche
Appuyez sur Étape pour exécuter la boucle pas à pas. Observez la vérification de la condition, l'exécution du corps et le tableau de suivi qui grandit ligne par ligne.
Exemples de code C et C++
#include <stdio.h>
int main(void) {
/* for: start; condition; step */
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
printf("\n");
/* while: repeat as long as the condition holds */
int n = 20;
int steps = 0;
while (n > 1) {
n /= 2;
steps++;
}
printf("halved %d times\n", steps);
/* do-while: the body runs at least once */
int tries = 0;
do {
tries++;
} while (tries < 3);
printf("tries = %d\n", tries);
/* break leaves the loop, continue skips to the next round */
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue;
if (i > 7) break;
printf("%d ", i);
}
printf("\n");
return 0;
}
1 2 3 4 5
halved 4 times
tries = 3
1 3 5 7
#include <iostream>
#include <vector>
int main() {
// for: start; condition; step
for (int i = 1; i <= 5; i++) {
std::cout << i << ' ';
}
std::cout << '\n';
// while: repeat as long as the condition holds
int n = 20;
int steps = 0;
while (n > 1) {
n /= 2;
steps++;
}
std::cout << "halved " << steps << " times\n";
// do-while: the body runs at least once
int tries = 0;
do {
tries++;
} while (tries < 3);
std::cout << "tries = " << tries << '\n';
// range-based for visits every element of a container
std::vector<int> values{1, 3, 5, 7};
int sum = 0;
for (int value : values) {
sum += value;
}
std::cout << "sum = " << sum << '\n';
}
1 2 3 4 5
halved 4 times
tries = 3
sum = 16
Comparaison entre C et C++
L'en-tête d'une boucle for comporte trois parties : la valeur de départ, la condition de répétition et le pas. L'instruction break quitte immédiatement la boucle, tandis que continue saute la fin du tour en cours pour passer au suivant. C++ propose aussi la boucle for basée sur un intervalle (range-based for), qui parcourt tous les éléments d'un conteneur sans utiliser d'indice.
C utilise de petites fonctions procédurales et montre ouvertement comment les données sont représentées en mémoire.
C++ permet toujours de travailler à bas niveau, mais ajoute des types de bibliothèque et des abstractions plus sûres.
Exercices d'approfondissement
Exécutez les deux versions, puis modifiez le code pour observer la différence de sécurité qu'apporte chaque langage.
- Testez des entrées invalides et des valeurs limites.
- Compilez avec les options -Wall -Wextra -Wpedantic pour activer davantage d'avertissements.
- Placez les déclarations communes dans un fichier d'en-tête et l'implémentation dans un fichier séparé.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
- Sum of Odd Numbers Add every odd number up to a limit. Facile
- Compte à rebours jusqu'au décollage Comptez à rebours à partir d'un nombre et terminez par Liftoff! Facile
- Multiplication Table Row List the first multiples of a number. Facile