While, for, if, switch case

Introduction

On va voir dans ce cours les différentes structures de contrôle que l’on peut utiliser en langage C.

Prise de décision : Boucle if

La fonction if permet d’exécuter du code si la condition est vrai. Le else va vous permettre d’exécuter du code si la condition n’est pas vérifié. Enfin le else if permet de proposer une deuxième condition à vérifier si jamais celle du premier if n’était pas vrai.

if (expression){
    // instruction
}
else if (expression) {
    //instruction
}
else {
    //instruction
}

Voic un exemple :

if (7<5) { 
    Serial.println("if");// code non exécuté car la conditon est fausse
}

else {
  Serial.println("else"); // Code exécuté
}

Prise de décision à choix multiples : switch case

switch (variable){
case (expression):
    instruction
    break;
default : instructions;
          break;
}

Dans l’exemple ci-dessus, le switch prends en paramètre une variable et en fonction de la valeur contenu dans celle-ci on traite des cas différents :

int i=0;
switch (i){
case (i==0):
    printf("Vous etes dans le cas 0");
    break;
case (i==1):
    printf("Vous etes dans le cas 1");
    break;
default : printf("vous etes dans le cas par défaut");
          break;
}

While et do While

A) Boucle While

La boucle while est une structure qui va exécuter une partie du programme tant que la condition est vrai. A la différence avec la boucle for, pour le boucle while vous ne spécifier pas combien fois celle-ci va s’executer; mais juste la conditon qui la fera arrêter.

La boucle While correspond plus à une structure if qui serait répétée tant que la condtion est vrai.

while (condition){
    //instruction
}

Voici un exemple :

int comptage = 0; // On initialise la variable qi va compter le nombre de passage dans la boucle.
while (comptage < 200) { // On éxécute la boucle tant que comptage est inférieur a 200 
 comptage +=1;
}

B) Do…while

La fonction do while est la structure inverse que le while : la boucle se situe avant le while et la conditon se situe à la fin de la boucle.

do {
  // Votre Code
} while (condition); // La condition adaptée à votre programme

Voici un exemple avec la boucle do while :

int comptage = 0; // La variable de comptage
do {
  comptage+=1;  // On incrémente la variable
} while (comptage < 100); // On fait la boucle tant que le comptage est inférieur ou égale à 0

L’avantage que la boucle se situe avant la conditon est que la boucle est au moins testé une fois même si la conditon est fausse. De plus, même avec un inférieur stricte, la valeur comptage arrive quand même à 100 car la conditon est à la fin.

For

La boucle for est utilisée pour répéter une série d’instruction un nombre de fois donné. La série d’instruction qui se répète se trouve dans les crochets. La fonction for est très utile pour des actions répétitives, comme faire clignoter une led, faire bouger son servomoteur de 0° à 180° par exemple.

for (initialisation; conditon; opération){
    //instruction
}

La boucle for à 3 paramètres :

  • Initialisation: permet d’initialiser la variable que l’on va incrémenter
  • Condition : Permet d’indique qaund est-ce que le for s’arrête.
  • Opération : permet d’incrémenter la variable que l’on a initialisé

Voici un exemple de la boucle for avec incrémentation croissante  :

for (int i = 0; i < 255; i++) {
    Serial.println(i);// Votre code
  }

Voici une boucle for à incrémentation décroissante :

for (int i = 255; i > 0; i--) {
    Serial.println(i);// Votre code
  }

Sauter des instructions

On va maintenant voir différentes fonctions pour pour aller à la fin d’une boucle, sortir de celle -ci ou aller dans une autre partie du programme.

  • Break

La fonction break permet de sortir d’une boucle. Cela permet de sortir si il y a une interruption ou par exemple au bout d’un certain nombre de passage dans celle-ci. Avec la fonction break vous pouvez sortir d’une seule boucle. Si vous souhaitez sortir de plusieurs boucle on vous conseille d’utiliser la fonction goto.

Voici un exemple avec une boucle while :

for (int i = 255; i > 0; i--) {
    Serial.println(i);// Votre code
    break; // Permet de sortir de la boucle for
  }
  • Continue

Cette fonction permet d’aller à la fin de la boucle sans en sortir.

int comptage = 0; // On initialise la variable qi va compter le nombre de passage dans la boucle.
int chiffre=0;
int continuation=3;
while (comptage < 200) { // On éxécute la boucle tant que comptage est inférieur a 200 
 comptage +=1;
 if (continuation ==3){
  continue; // 
 }
 chiffre++;
}
  • Goto

Cette fonction permet d’aller dans un endroit particulié du programme. Il est à utilliser avec précaution parce que il peut rendre le programme illisible très rapidement. ll peut notamment être utile pour sortir de plusieurs boucle.

for (int i = 255; i > 0; i--) {
    for (int k=100; k < 1000; k++) {
      goto sortie; // permet de sortir des deux boucle pour aller sur sortie.
  }
  }
  sortie: // votre code