Les boucles en langage C permettent de répéter l’exécution d’un bloc de code tant qu’une condition est vraie ou pour un nombre déterminé d’itérations. Elles sont essentielles pour de nombreuses tâches comme le parcours de tableaux, l’exécution répétée d’instructions ou encore la gestion des structures de données. Dans ce guide, nous allons passer en revue les types de boucles disponibles en C et les meilleures pratiques pour les utiliser efficacement.
En C, il existe trois types de boucles principales :
forwhiledo-whileforLa boucle for est généralement utilisée lorsque le nombre d’itérations est connu à l’avance. Elle permet d’initialiser une variable de contrôle, de spécifier une condition et d’incrémenter ou décrémenter cette variable à chaque itération.
for (initialisation; condition; incrémentation) {
// Instructions
} #include <stdio.h>
int main() {
int i;
for (i = 0; i < 5; i++) {
printf("Itération %d\n", i);
}
return 0;
} i = 0 et s’arrête lorsque i devient égal à 5. À chaque itération, la valeur de i est affichée et incrémentée de 1.whileLa boucle while est utilisée lorsque vous ne savez pas à l’avance combien de fois vous devrez répéter l’exécution du bloc de code, mais vous avez une condition qui décide de la continuation de la boucle.
while (condition) {
// Instructions
} #include <stdio.h>
int main() {
int compteur = 0;
while (compteur < 5) {
printf("Compteur = %d\n", compteur);
compteur++;
}
return 0;
} compteur est inférieur à 5, la boucle s’exécute. À chaque itération, compteur est incrémenté de 1.do-whileLa boucle do-while est similaire à la boucle while, mais avec une différence majeure : le bloc d’instructions s’exécute au moins une fois, car la condition est vérifiée après l’exécution du bloc.
do {
// Instructions
} while (condition); #include <stdio.h>
int main() {
int compteur = 0;
do {
printf("Compteur = %d\n", compteur);
compteur++;
} while (compteur < 5);
return 0;
} Il est possible d’imbriquer des boucles en C, c’est-à-dire de mettre une boucle à l’intérieur d’une autre boucle. Cela est souvent utilisé pour parcourir des structures bidimensionnelles comme des matrices.
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
printf("i = %d, j = %d\n", i, j);
}
}
return 0;
} i, et la boucle intérieure contrôle la variable j. À chaque itération de la boucle extérieure, la boucle intérieure s’exécute complètement.break et continue dans les BouclesbreakL’instruction break permet de sortir immédiatement de la boucle, même si la condition n’est pas encore fausse. Cela peut être utile si vous souhaitez arrêter une boucle lorsqu’une certaine condition est remplie.
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i == 5) {
break; // Sort de la boucle si i est égal à 5
}
printf("i = %d\n", i);
}
return 0;
} i atteint 5, grâce à l’instruction break.continueL’instruction continue permet de passer immédiatement à la prochaine itération de la boucle, en ignorant les instructions restantes du bloc courant.
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Saute à l'itération suivante si i est pair
}
printf("i = %d\n", i);
}
return 0;
} i est pair, continue force le saut à la prochaine itération. Seuls les nombres impairs sont affichés.Une boucle infinie se produit lorsque la condition de terminaison d’une boucle n’est jamais remplie. Cela peut être dû à une erreur dans l’incrémentation ou à une condition toujours vraie.
#include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
printf("i = %d\n", i);
// Erreur : i n'est jamais incrémenté, boucle infinie
}
return 0;
} Il faut ajouter i++ dans la boucle pour qu’elle se termine.
Lorsqu’une boucle est utilisée pour parcourir un tableau, il est important de ne pas dépasser les limites de ce tableau. Cela peut provoquer un comportement indéfini.
#include <stdio.h>
int main() {
int tableau[5] = {1, 2, 3, 4, 5};
for (int i = 0; i <= 5; i++) { // Erreur : i <= 5 dépasse les limites du tableau
printf("%d\n", tableau[i]);
}
return 0;
} i < 5 pour éviter d’accéder à un index hors limites.break et continue : Ces instructions peuvent rendre le flux de la boucle difficile à suivre. Utilisez-les avec parcimonie.for lorsque le nombre d’itérations est connu : Cela rend le code plus lisible et évite les erreurs d’incrémentation.Écrivez un programme qui calcule la somme des nombres pairs compris entre 1 et 10 en utilisant une boucle.
#include <stdio.h>
int main() {
int somme = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
somme += i; // Ajouter les nombres pairs à la somme
}
}
printf("La somme des nombres pairs entre 1 et 10 est : %d\n", somme);
return 0;
} for parcourt les nombres de 1 à 10.i % 2 == 0 vérifie si le nombre est pair. Si c’est le cas, le nombre est ajouté à la variable somme.Écrivez un programme qui trouve et affiche le plus grand nombre dans un tableau d’entiers donné.
#include <stdio.h>
int main() {
int tableau[] = {5, 12, 8, 20, 7};
int taille = sizeof(tableau) / sizeof(tableau[0]); // Calcul de la taille du tableau
int max = tableau[0]; // On suppose que le premier élément est le plus grand
for (int i = 1; i < taille; i++) {
if (tableau[i] > max) {
max = tableau[i]; // Mettre à jour le plus grand nombre
}
}
printf("Le plus grand nombre est : %d\n", max);
return 0;
} max est initialisée avec la première valeur du tableau (tableau[0]).for parcourt le tableau à partir du deuxième élément (i = 1) et compare chaque élément avec max. Si un élément est plus grand, max est mis à jour.Écrivez un programme qui calcule la factorielle d’un nombre entier donné en utilisant une boucle while.
#include <stdio.h>
int main() {
int n, i = 1;
unsigned long long factorielle = 1;
printf("Entrez un nombre entier : ");
scanf("%d", &n);
while (i <= n) {
factorielle *= i; // Multiplier par i à chaque itération
i++;
}
printf("La factorielle de %d est %llu\n", n, factorielle);
return 0;
} while pour multiplier successivement les entiers de 1 à n.factorielle accumule le produit de chaque entier, et la valeur finale est la factorielle de n.n = 5, la sortie sera La factorielle de 5 est 120 (car 5! = 5 * 4 * 3 * 2 * 1 = 120).forÉcrivez un programme qui inverse les éléments d’un tableau d’entiers en place.
#include <stdio.h>
int main() {
int tableau[] = {1, 2, 3, 4, 5};
int taille = sizeof(tableau) / sizeof(tableau[0]);
int temp;
for (int i = 0; i < taille / 2; i++) {
temp = tableau[i]; // Sauvegarder la valeur de tableau[i]
tableau[i] = tableau[taille - 1 - i]; // Copier l'élément symétrique
tableau[taille - 1 - i] = temp; // Placer la valeur sauvegardée à l'autre extrémité
}
// Affichage du tableau inversé
printf("Tableau inversé : ");
for (int i = 0; i < taille; i++) {
printf("%d ", tableau[i]);
}
printf("\n");
return 0;
} for parcourt le tableau jusqu’à son milieu, en échangeant les éléments symétriques de part et d’autre du tableau.temp est utilisée pour sauvegarder l’élément avant l’échange.{1, 2, 3, 4, 5} devient {5, 4, 3, 2, 1} après inversion.Les boucles en C sont des outils puissants pour gérer des tâches répétitives. Que ce soit pour parcourir des tableaux, effectuer des calculs itératifs ou manipuler des structures de données, les boucles for, while et do-while permettent de simplifier la programmation. Ce guide vous a présenté les différents types de boucles, leurs applications pratiques, ainsi que des exemples concrets pour maîtriser leur usage dans des situations variées.
Pour éviter les erreurs courantes telles que les boucles infinies ou l’accès hors limites des tableaux, il est essentiel de bien structurer vos boucles et de vérifier les conditions de sortie. Les exercices corrigés proposés vous aideront à appliquer ces concepts de manière pratique.
Deux outils concrets pour piloter la qualité sans alourdir vos équipes Cette page met à…
Un chantier se gagne souvent avant même l’arrivée des équipes. Quand tout est clair dès…
Le mariage a du sens quand il repose sur une décision libre, mûrie et partagée.…
Une étude de cas réussie commence par une structure sûre. Ce modèle Word vous guide…
Les soft skills se repèrent vite sur une fiche, mais elles ne pèsent vraiment que…
Outil de comparaison et repérage des offres étudiantes Choisir des verres progressifs ressemble rarement à…
This website uses cookies.