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; }