Les boucles for cor­res­pon­dent à un concept fon­da­men­tal dans la plupart des langages de pro­gram­ma­tion. Elles per­met­tent d’exécuter des blocs de code de manière répétée. Il existe plusieurs variantes de boucles for dans C++, mais elles fonc­tion­nent toutes plus ou moins de la même manière.

Comment fonc­tion­nent les boucles for dans C++ ?

Les boucles for comptent parmi les struc­tures de contrôle les plus im­por­tantes du domaine de la pro­gram­ma­tion. Elles per­met­tent aux dé­ve­lop­peurs d’exécuter plusieurs fois des blocs de code spé­ci­fiques. Les cons­truc­tions de boucles sont tout bonnement in­dis­pen­sables aux langages de pro­gram­ma­tion itératifs. Il existe par exemple des boucles for dans Java et des boucles for dans Python. D’autres langages de pro­gram­ma­tion, fonc­tion­nels pour la plupart, préfèrent aux boucles le concept de ré­cur­rence.

Boucles for dans C++

Dans C++, les boucles for les plus répandues com­por­tent trois éléments es­sen­tiels :

  • La partie d’ini­tia­li­sa­tion : elle permet d’ini­tia­li­ser la variable de la boucle, c’est-à-dire de lui attribuer une valeur de départ.
  • La partie con­di­tion­nelle: elle permet de vérifier une condition spécifiée. Si celle-ci est remplie, le « corps » de la boucle peut s’exécuter.
  • La partie d’ins­truc­tion : elle permet de formuler n’importe quelle ins­truc­tion. Gé­né­ra­le­ment, la variable de la boucle est dé­cré­men­tée ou in­cré­men­tée.

Tous ces éléments sont séparés par des points-virgules en tête de la boucle, et sont donc exécutés avant le corps de la boucle en lui-même. Par con­sé­quent, les boucles for dans C++ sont également désignées comme des boucles con­trô­lées par l’en-tête.

Nous allons main­te­nant vous présenter un exemple simple de boucle for dans C++, qui affiche à l’écran les chiffres de 0 à 5 :

for (int i = 0; i <= 5; i++) {
	std:cout << i << std:endl;
}
C++

Dans l’exemple de code ci-dessus, la première ligne contient l’en-tête de la boucle. Elle nous permet, une nouvelle fois, de voir clai­re­ment les éléments dont se compose une boucle for dans C++ :

  • La partie d’ini­tia­li­sa­tion : avec l’ins­truc­tion « int i = 0 », une variable nommée « i » est créée, et la valeur 0 lui est attribuée.
  • La partie con­di­tion­nelle : la spé­ci­fi­ca­tion de la condition « i <= 5 » indique que le corps de la boucle doit être exécuté jusqu’à ce que la valeur de la variable i dépasse le chiffre 5.
  • La partie d’ins­truc­tion : à chaque exécution de la boucle (qualifiée d’« itération »), la valeur de la variable i augmente de 1.

Notez qu’il est possible de laisser de côté la partie con­di­tion­nelle de la boucle for. Si tel est le cas, la condition est supposée s’appliquer de façon per­pé­tuelle, ce qui permet de créer une boucle infinie. Ces boucles infinies peuvent parfois s’avérer utiles, mais les débutants qui ap­pren­nent à maîtriser le langage C++ les créent souvent par erreur, ce qui entraîne des erreurs de la part du programme.

Boucles foreach dans C++

En plus des boucles for que nous vous avons déjà pré­sen­tées, il existe dans le langage C++, et ce, depuis la version C++11, une autre forme de boucle également in­tro­duite par le mot-clé « for ». Dans d’autres langages de pro­gram­ma­tion tels que PHP ou C++++, ces cons­truc­tions sont également appelées des « boucles foreach ». Celles-ci per­met­tent d’accéder fa­ci­le­ment à chaque élément d’une structure de données, sans avoir à utiliser l’in­dexa­tion. Nous avons également choisi un exemple per­met­tant d’afficher les chiffres de 0 à 5 :

int intArr[] = {0, 1, 2, 3, 4, 5};
for (int element: intArr) {
	std:cout << element << std:endl;
}
C++

Comme vous pouvez le voir, la structure de l’en-tête de la boucle n’est pas la même que celle du premier exemple de code. Deux parties seulement sont utilisées, en lieu et place de l’ini­tia­li­sa­tion, de la condition et de l’ins­truc­tion :

  • Élément : cette partie contient le type de données et le nom de la variable.
  • Conteneur : cette partie précise le conteneur sur lequel l’itération doit avoir lieu.

Nous avons commencé par créer un tableau contenant les chiffres allant de 0 à 5. Au sein de la boucle for dans C++, chaque partie du tableau a ensuite été vi­sua­li­sée à l’aide de la variable « element », puis affichée à l’écran dans le corps de la boucle.

À quoi servent les boucles for dans C++ ?

En principe, les boucles for sont toujours utilisées lorsque le nombre d’ité­ra­tions de la boucle est connu au préalable. Si vous souhaitez par exemple afficher tous les multiples du nombre 2 jusqu’à 100, votre boucle for dans C++ pourrait se présenter comme suit :

for (int i = 2; i <= 100; i+=2) {
	std:cout << i << std:endl;
}
C++

De nombreux al­go­rithmes de tri notoires ont également recours à des boucles for. Par rapport aux boucles while, leur principal avantage est leur écriture, bien plus compacte. En réalité, vous avez toujours la pos­si­bi­lité de remplacer les boucles for par des boucles while.

L’ins­truc­tion break : pour mettre un terme aux boucles

Il peut vous arriver de vouloir aban­don­ner plus tôt que prévu votre boucle for dans C++, notamment si vous souhaitez créer une boucle infinie pour afficher des nombres entiers à l’écran jusqu’à ce que le nombre spécifié par l’uti­li­sa­teur soit atteint. L’exemple de code ci-dessous illustre d’ailleurs cette situation :

int i = 0;
int entrée utilisateur = 0;
// L’utilisateur renseigne un nombre qui sera affecté à la variable « entrée utilisateur »
std::cin >> entrée utilisateur
for (;;) {
	std:cout << i << std:endl;
	++i;
	// La boucle est interrompue si la variable est supérieure au nombre renseigné par l’utilisateur
	if (i > entrée utilisateur) {
		break;
}
}
C++

Dans l’exemple de code ci-dessus, « break » est le mot-clé qui permet de mettre un terme à la boucle. Avec ce mot-clé, chaque boucle for dans C++ est im­mé­dia­te­ment in­ter­rom­pue, et l’exécution du programme se poursuit tout sim­ple­ment après la boucle.

L’ins­truc­tion continue : ignorer des ité­ra­tions de la boucle

Na­tu­rel­le­ment, il est possible que vous ne sou­hai­tiez pas mettre un terme à toute la boucle di­rec­te­ment, mais plutôt ignorer sim­ple­ment certaines de ses ité­ra­tions. Si votre but est, par exemple, d’afficher tous les nombres pairs jusqu’à atteindre 100, vous pouvez l’atteindre en utilisant la cons­truc­tion de boucle ci-dessous :

for (int i = 0; i <= 100; i++) {
// Permet de passer à l’itération suivante en cas de nombre impair
if (i % 2 == 1) {
		continue;
}
std:cout << i << std:endl;
}
C++

Vous avez peut-être repéré le mot-clé « continue » dans l’exemple de code ; celui-ci veille à ce que l’itération en cours soit annulée et à ce que le programme passe à l’itération suivante de la boucle. Si cette ins­truc­tion est avan­ta­geuse, c’est surtout parce qu’elle permet d’éviter les calculs inutiles, ce qui améliore l’ef­fi­ca­cité de vos pro­grammes.

Aller au menu principal