La structure do - while est semblable à la structure while, avec la différence suivante :
* while évalue la condition avant d'exécuter le bloc d'instructions,
* do - while évalue la condition après avoir exécuté le bloc d'instructions. Ainsi le bloc d'instructions est exécuté au moins une fois.
La structure do - while en C
do
<bloc d'instructions>
while ( <expression> );
Le <bloc d'instructions> est exécuté au moins
une fois
et aussi longtemps que l'<expression> fournit une valeur différente
de zéro.
En pratique, la structure do - while n'est pas si fréquente que while; mais dans certains cas, elle fournit une solution plus élégante. Une application typique de do - while est la saisie de données qui doivent remplir une certaine condition:
Exemple 1
float N;
do
{
cout<<"Introduisez un nombre entre 1 et 10 :";
cin>>N;
}
while (N<1 || N>10);
Exemple 2
int n, div;
cout<<"Entrez le nombre à diviser : ";
cin>>n;
do
{
cout<<"Entrez le diviseur ( 0) : ";
cin>>div;
}
while (!div);
cout<<n<<" / "<<div<<" = "<<(float)n/div;
do - while est comparable à la structure répéter du langage algorithmique (repeat until en Pascal) si la condition finale est inversée logiquement.
Exemple 3 Le programme de calcul de la racine carrée :
programme RACINE_CARREE
réel N
répéter
écrire "Entrer un nombre (>=0) : "
lire N
jusqu'à (N >= 0)
écrire "La racine carrée de ",N ,"vaut ", N
fprogramme (* fin RACINE_CARRE *)
se traduit en C par :
#include <iostream.h>
#include <math.h>
main()
{
float N;
do
{
cout<<"Entrer un nombre (>= 0) : ";
cin>>N;
}
while (N < 0);
cout<<"La racine carrée de "<<N<<" est "<<sqrt(N);
return 0;
}