while / do while + break; / continue;.
while( ) { }
Ma définition: while en anglais veut dire "tant que" en français . C'est une expression qui signifie "aussi longtemps que" . Le bloc while entre accolades {} s’exécutera tant que sa condition d'exécution est vraie. Soit "true" .
Elle est construite en deux parties.
- Une condition d’exécution () qui est le déclencheur de la boucle.
- Un bloc {} d'actions programmées à réaliser en boucle.
Se présente sous cette forme.(Exemple)
while ( Condition d’exécution ) { Bloc d’actions programmées ;}
Prenons l’exemple ci-dessus. Cela nous donne :
- Si la condition d'exécution () est vraie "true" , soit la variable de contrôle "resultat" inférieure à 50. L'action programmée sera exécutée.
- Le bloc d'actions programmées entre accolades {}: Réalise le calcul et affiche le résultat tant que la condition d'exécution est vraie "true" soit égale à "1".
Lorsque la variable "resultat" appelée variable de contrôle aura une valeur supérieure à 49, la condition d’exécution deviendra fausse "false" . L'exécution en boucle se terminera et ne reprendra que lorsque la condition redeviendra vraie.
Une fois à l'intérieur de la boucle while, il faut pouvoir en sortir. Il faut donc que la ou les variables de contrôle utilisées dans la condition d'exécution soient manipulées ou changées via une action dans le bloc d'actions programmées. Sans cela while bouclera sans fin.
Il est toutefois possible d'agir de façon extérieure au bloc d'actions programmées en appelant dans la condition d’exécution "fonction" qui retourne une valeur vraie "true" ou fausse "false" après traitement.
Exemple: Ci contre nous attendons un retour de traitement de la fonction égale à zéro pour stopper l’exécution de la boucle while.
NOTE:
- La façon locale ou globale dont sera déclarée la variable de contrôle de la boucle déterminera le traitement de celle-ci et le déroulement de votre programme. Une variable de contrôle déclarée en local du programme principal loop() sera initialisée à sa valeur définie lors de chaque passage, ce qui entraînerait une exécution systématique du bloc while() en boucle, si sa condition est vraie. A l'inverse d'une variable déclarée en global.
- Il faut prendre garde à la manière dont on crée la condition d'exécution du bloc en boucle. L'utilisation d'une variable de type "float" utilisée avec un opérateur de comparaison " == " demanderait une valeur précise pouvant aller jusqu'au dixième près. Il y a risque de bloquer le programme principal dans une boucle sans fin. Dans ce cas là, il est recommandé d'utiliser les opérateurs de comparaison suivants (=> ou <=).
- Utile pour tester ou déboguer un programme; while(1); est parfois utilisé pour stopper un programme à un moment souhaité en le bloquant dans la boucle. Mais pour effectuer un nouveau cycle programmé cela revient à "arracher la prise" par un téléversement ou un re-set de l'Arduino.
do{ } while( );
Ma définition: do en anglais veut dire faire en français. do est un bloc qui est systématiquement exécuté au moins une fois et répété en boucle tant que la condition d'exécution while, sera vraie "true" .while est ici en sortie de bloc.
Elle est construite en deux parties.
- Un bloc d'actions programmées entre accolades {} réalisé au moins une fois.
- Une condition d’exécution qui est cette fois, le déclencheur d'arrêt de la mise en boucle.
Se présente sous cette forme.(Exemple)
do{ bloc d'actions programmées ;} while(condition d’exécution) ;
Prenons l’exemple ci-dessus. Cela nous donne :
- Exécution systématique du bloc d'actions programmées do . Traitement du calcul et affichage de la valeur de "resultat" la variable de contrôle de while().
- Contrôle si la condition d'exécution de while est vraie "true" . Soit inférieure à 100. Réitération en boucle des actions programmées du bloc do tant que la condition d’exécution est vraie "true" . Une fois que la condition d'exécution sera fausse "false", la mise en boucle du bloc ne sera plus exécutée mais seulement exécutée une seule fois à chaque lecture du programme principal loop().
NOTE: Ne pas oublier le point virgule ";" à la suite de while() quand ce dernier succède au bloc do{}.
break;
Ma définition: break en anglais signifie casser ou pause en français. break est une instruction qui va dans notre cas stopper la mise en boucle du bloc dans lequel il est intégré et en sortir.
Se présente sous cette forme.(Exemple)
break ; //Arrête le bouclage du bloc dans lequel il est placé et en sort.
Toutes les instructions antérieures à break sont exécutées, le bloc ne sera exécuté qu'une seule fois, break stoppe le bouclage et sort du bloc pour revenir au programme principal. Si la condition d'exécution est toujours vraie à la prochaine exécution de loop() les instructions du bloc antérieur à break sont tout de même exécutées mais pas celles qui suivront ce dernier.
NOTE:
- break peut être utilisé avec les blocs for, switch, while et do while.
Lorsque break se trouve dans une imbrication de boucle; il stoppera uniquement les instructions contenues dans le bloc (entre les accolades {}) dans lequel il est intégré. Le programme poursuivra ensuite dans le bloc suivant.
continue;
Ma définition: continue en anglais veut dire évidement continuer en français. continue est une instruction qui va continuer la réitération d'un bouclage en ignorant les instructions qui suivent son emplacement
Se présente sous cette forme.(Exemple)
continue; //Ignore les instructions qui vont suivre et reboucler au début.
Dans l'exemple ci-dessus, nous intégrons une condition d’exécution pour activer l'instruction continue. Lorsque celle-ci sera vraie "true" soit "resultat" compris entre 50 et 70 , les instructions suivantes ne seront pas exécutées, c'est-à-dire le calcul numéro 2 et l'affichage de résultat . On rebouclera au début du bloc pour y refaire notre premier calcul.
NOTE:
- continue peut être utilisé dans les blocs for, while et do while.
- Pour l'exploiter il est préférable de conditionner son utilisation.
- Pour des essais et des contrôles, on peut utiliser continue sans conditionnement pour ignorer une portion finale de bloc que l'on ne souhaite pas exécuter en boucle.
FIN.
Vous connaissez à présent les bases des boucles while() et do{} while(); avec l'utilisation des instructions break; et continue;.
Découvrez while / do while / break et continue en téléchargeant les sketchs référents de ce sujet. Merci.
Recevez gratuitement les codes sources de PlaisirArduino
Amusez-vous tout de suite avec les entrées/sorties de votre carte Arduino Uno
Vous y retrouverez : des scketchs, des schémas et des PDF