Il est fréquent que lon doive répéter une action un grand nombre de fois dans un programme ; en fait, la plupart des algorithmes sont basés sur de telles répétitions. On dispose pour cela de trois instructions spéciales que lon appelle instructions de boucle.
Les deux premières se ressemblent beaucoup. Il sagit de la boucle while, dont la syntaxe est la suivante :
while (condition) action;
et de la boucle do...while de syntaxe :
do action while (condition);
La première demande à la machine de calculer dabord la condition (qui doit être une expression entière comme dans le cas de linstruction de branchement) ; si elle est nulle, on passe directement à linstruction suivante. Si elle est non nulle au contraire, linstruction action est exécutée, et le processus recommence (cest-à-dire quon ne passe pas à linstruction suivante, mais on réévalue la condition, etc.). Une telle boucle ne cesse donc que lorsque lexpression condition devient nulle. En conséquence, la séquence suivante :
while (1) cout << "Hello !";
a lintéressant effet décrire indéfiniment le mot « Hello ! » à lécran, puisque 1 nest jamais nul.
La seconde boucle est à peine différente. Elle demande à la machine dexécuter laction, puis dévaluer la condition, et de recommencer ainsi jusquà ce que la condition devienne nulle. La différence réside dans le fait que linstruction action est exécutée au moins une fois, quelle que soit la condition. Une telle boucle est plus adaptée que la première lorsque les variables dont dépend la condition sont calculées par linstruction action, et nont pas de sens à lentrée de la boucle. Nous en verrons des exemples plus tard.
Il arrive souvent que lon souhaite exécuter plusieurs instructions dans une telle boucle. Dans ce cas, comme pour linstruction de branchement, on les enclôt dans des accolades, et lon ne place pas de point-virgule après laccolade fermante. Voici par exemple un programme qui affiche tous les nombres multiples de 7 compris entre 0 et 1000.
#include <iostream.h> main() { int nombre = 0; while (nombre <= 1000) { cout << nombre << '\t'; nombre += 7; } return 0; }
On a écrit une tabulation derrière chaque nombre. Lécriture nombre += 7
est un raccourci décriture pour ajouter 7 à nombre (voir plus loin).
Dans ce cas particulier, on aurait pu aussi écrire :
int nombre = 0; do { cout << nombre << '\t'; nombre += 7; }while (nombre <= 1000);
à la place de lautre boucle, puisquon souhaite écrire au moins un nombre de toute façon. On notera que les accolades sont absolument obligatoires, bien quici les instructions soient encloses par les termes do et while.
Exercice 1.4 | Écrire un programme qui additionne tous les nombres impairs inférieurs à 100, et qui affiche le résultat obtenu. |
Voir solution |
Précédent | Sommaire | Suivant |