do..while
Nous venons dans la page précédente de voir la boucle while (on peut dire tant que ... faire), nous allons voir maintenant une boucle très voisine, le do while (faire ... tant que). Il y a une toute petite différence, avec while la condition est vue avant l'action à faire, tandis qu'avec do...while le test est fait après. Cela ne change que pour la première fois, car ensuite il y a dans les deux cas alternance test et action. Dans une boucle do while on exécutera forcément une fois l'action, même si la condition est toujours fausse.
La boucle do...while est plus proche du langage machine et avec les vieux compilateurs elle était plus intéressante. Maintenant cela n'a plus gère d'importance. Cette boucle est moins utilisée que la boucle while.
La syntaxe est la suivante:
do <instruction> while (<condition>);
Notre programme
Reprenons la partie loop du programme que l'on a utilisé pour while:
void loop() { digitalWrite(LED_BUILTIN, HIGH); // Allumer la LED dernierChangement = millis(); while (millis() - dernierChangement <= DEMI_PERIODE) // Pendant 500 ms Serial.println(random(100)); // Affiche un nombre de 0 à 99 digitalWrite(LED_BUILTIN, LOW); // Éteindre la LED dernierChangement = millis(); while (millis() - dernierChangement <= DEMI_PERIODE) // Pendant 500 ms Serial.println(random(100)); // Affiche un nombre de 0 à 99 }
En remplaçant la boucle while par une do...while cela donne:
void loop() { digitalWrite(LED_BUILTIN, HIGH); // Allumer la LED dernierChangement = millis(); do Serial.println(random(100)); // Affiche un nombre de 0 à 99 while (millis() - dernierChangement <= DEMI_PERIODE); // Pendant 500 ms digitalWrite(LED_BUILTIN, LOW); // Éteindre la LED dernierChangement = millis(); do Serial.println(random(100)); // Affiche un nombre de 0 à 99 while (millis() - dernierChangement <= DEMI_PERIODE); // Pendant 500 ms }
Dans ce cas, il n'y a pas de différence car la boucle est faite plusieurs fois.