Boucles simples while et do

Il est fréquent que l’on 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 l’on appelle instructions de boucle.

Les deux premières se ressemblent beaucoup. Il s’agit 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 d’abord la condition (qui doit être une expression entière comme dans le cas de l’instruction de branchement) ; si elle est nulle, on passe directement à l’instruction suivante. Si elle est non nulle au contraire, l’instruction action est exécutée, et le processus recommence (c’est-à-dire qu’on ne passe pas à l’instruction suivante, mais on réévalue la condition, etc.). Une telle boucle ne cesse donc que lorsque l’expression condition devient nulle. En conséquence, la séquence suivante :

while (1) cout << "Hello !";

a l’intéressant effet d’écrire indéfiniment le mot « Hello ! » à l’écran, puisque 1 n’est jamais nul.

La seconde boucle est à peine différente. Elle demande à la machine d’exécuter l’action, 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 l’instruction 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 l’instruction action, et n’ont pas de sens à l’entrée de la boucle. Nous en verrons des exemples plus tard.

Il arrive souvent que l’on souhaite exécuter plusieurs instructions dans une telle boucle. Dans ce cas, comme pour l’instruction de branchement, on les enclôt dans des accolades, et l’on ne place pas de point-virgule après l’accolade 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 l’autre boucle, puisqu’on souhaite écrire au moins un nombre de toute façon. On notera que les accolades sont absolument obligatoires, bien qu’ici 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 Précédent Sommaire Sommaire Suivant Suivant