Répéter avec for
Répéter un bloc un nombre connu de fois, compter et accumuler.
Ce que tu vas apprendre
- Écrire une boucle
for(initialisation, condition, pas) - Compter vers le haut, vers le bas ou par pas
- Accumuler un résultat (somme, produit) dans une variable
Les trois parties d'un for
for (int i = 1; i <= n; i++) { ... } se lit : « pour i allant de 1 à n ». Les trois parties sont :
- l'initialisation
int i = 1, faite une seule fois au début - la condition
i <= n, testée avant chaque tour : la boucle s'arrête dès qu'elle est fausse - le pas
i++(qui ajoute 1), exécuté à la fin de chaque tour
Pour compter à rebours : for (int i = n; i >= 1; i--). De 5 en 5 : i += 5.
Accumuler
Pour calculer une somme, on crée une variable avant la boucle, initialisée à 0, puis on lui ajoute une valeur à chaque tour : somme += i;. Pour un produit, on part de 1.
Les grands produits dépassent vite la capacité d'un int (environ 2 milliards) : utilise long long et %lld si besoin.
Afficher une liste proprement
Pour séparer des valeurs par des espaces sans espace en trop, affiche un séparateur avant chaque valeur sauf la première, ou après chaque valeur sauf la dernière.
Exemples commentés
1.Les multiples de 7
#include <stdio.h>
int main(void) {
for (int i = 7; i < 50; i += 7) { // de 7 en 7
printf("%d\n", i);
}
return 0;
}Sortie
7 14 21 28 35 42 49
Le pas n'est pas forcément 1 : i += 7 avance de 7 à chaque tour.
2.Somme des multiples de 3
#include <stdio.h>
int main(void) {
int n;
scanf("%d", &n);
int somme = 0; // initialisée AVANT la boucle
for (int i = 3; i <= n; i += 3) {
somme += i; // somme = somme + i
}
printf("%d\n", somme);
return 0;
}Entrée
10
Sortie
18
3 + 6 + 9 = 18. La variable somme garde le total d'un tour à l'autre.
3.Une ligne séparée par des virgules
#include <stdio.h>
int main(void) {
int n;
scanf("%d", &n);
for (int i = n; i >= 1; i--) { // à rebours
if (i < n) {
printf(", "); // séparateur avant chaque valeur sauf la première
}
printf("%d", i);
}
printf("\n");
return 0;
}Entrée
4
Sortie
4, 3, 2, 1
Le test i < n est faux au premier tour seulement : pas de virgule devant la première valeur.
Chaque exemple est compilé et exécuté automatiquement pour garantir la sortie affichée.
Erreurs fréquentes
Un tour de trop ou de moins
À éviter
for (int i = 1; i < n; i++) // s'arrête à n - 1
À préférer
for (int i = 1; i <= n; i++) // va jusqu'à n
Vérifie la première et la dernière valeur de i sur un petit exemple (n = 1, n = 3).
Un point-virgule après le for
À éviter
for (int i = 0; i < 5; i++);
printf("x");À préférer
for (int i = 0; i < 5; i++) {
printf("x");
}Le ; donne à la boucle un corps vide : printf ne s'exécute qu'une fois, après la boucle.
Initialiser l'accumulateur dans la boucle
À éviter
for (...) {
int somme = 0;
somme += i;
}À préférer
int somme = 0;
for (...) {
somme += i;
}Déclarée dans la boucle, la variable repart de 0 à chaque tour (et n'existe plus après).
Entraîne-toi
6 questions variées pour fixer la leçon : choix, résultat à prévoir, ligne à compléter, code à remettre dans l'ordre, erreur à trouver.
À toi de jouer !
9 exercices pour mettre cette leçon en pratique, du plus simple au plus avancé.