Site icon AranaCorp

Petit tour sur l’instruction while en C

L’instruction while est la structure conditionnelle qui permet de créer une boucle sur une condition. Elle se retrouve dans tous les langages de programmation. Elle permet d’exécuter en boucle un bloc de code tant qu’une condition est réalisée.

Syntaxe de l’instruction while

L’instruction prend, en entrée, une condition sous forme d’une variable booléenne et exécute un bloc d’instructions en boucle tant que cette condition est vraie. Si la condition reste toujours vraie, le code qui suit le bloc while ne sera jamais exécuté. Faites bien attention à mettre à jour votre condition.

  while(condition){
    <liste d'instructions tant que condition=true>;
    <mise à jour de la condition>;
  }

Exemple d’un code qui compte jusqu’à 10:

int val=0;
void setup() {
  Serial.begin(9600);
}

void loop() {
  while(val<=10){
    Serial.println(val);
    val++;
  }
}

Un booléen est un type de variable égale à true( 1-vrai) ou false(0-faux). Dans le langage C(Arduino), les variables booléennes s’initialisent à l’aide du mot clé bool ou boolean. Un booléen peut être obtenu de différentes manières

 condition = variable == 10;    // variable égale à 10? 
 condition = temperature>30;   // temperature est supérieure à 30 
 condition = vitesse <= 100    // vitesse inférieure ou égale à 100 
 condition = !true // condition égale  non vraie (faux) 
   
condition=(temperature>30) && (vitesse<20);
bool test(int val){
  //retourne vraie si la valeur est supérieur à 200
  return val>200;
}

Il est bon de noter que la fonction en entrée de l’instruction s’exécute à chaque boucle.

int val=0;
void setup() {
  Serial.begin(9600);
}

void loop() {
  while(condition()){
    Serial.println(val);
  }
  delay(10);//sanity delay
}

bool condition(){
  val++;
  return val<=10;
}


Autres syntaxes

Une autre version de l’instruction while existe: do..while qui est en fait une toute autre instruction. La différence principale est qu’elle est exécutée au moins une fois.

Le code suivant compte jusqu’à 10. Le bloc do..while doit être mis dans la fonction setup sinon la variable val s’incrémentera à l’inifini. En effet, comme le bloc dowhile est exécuté au moins une fois, val s’incrémentera une fois à chaque exécution de loop().

int val = 0;
void setup() {
  Serial.begin(9600);
  do{
    Serial.println(val);
    val++;
  } while(val<=10);
}

void loop() {
  delay(10);//sanity delay
}

En conclusion, ce qu’il faut retenir

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Quitter la version mobile