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 { printf("Introduisez un nombre entre 1 et 10 :"); scanf("%f", &N); } while (N<1 || N>10);
Exemple 2
int n, div; printf("Entrez le nombre à diviser : "); scanf("%i", &n); do { printf("Entrez le diviseur ( 0) : "); scanf("%i", &div); } while (!div); printf("%i / %i = %f\n", 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 <stdio.h> #include <math.h> main() { float N; do { printf("Entrer un nombre (>= 0) : "); scanf("%f", &N) } while (N < 0); printf("La racine carrée de %.2f est %.2f\n", N, sqrt(N)); return 0; }