fbpixel
Étiquettes : , ,
0
(0)

L’instruction if est la structure conditionnelle de base et se retrouve dans tous les langages de programmation. Elle permet d’exécuter des blocs de code différents en fonction d’une condition. Elle est la base de nombreux algorithmes et permet à un ordinateur de faire un choix en fonction des données qu’on lui envoie.

Syntaxe de l’instruction if

L’instruction if prend, en entrée, une condition sous forme d’une variable booléenne et exécute un bloc d’instructions si elle est vraie (on dit dans ce cas que la condition est réalisée) et un autre si elle est fausse.

  if(condition){
    <liste d'instructions si condition=true>;
  }else{
    <liste d'instructions si condition=false>;
  }

Exemple de code déterminant le signe d’une variable avec l’instruction if:

int val=-10;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(val>=0){
    Serial.println(F("Value is positive"));
  }else{
    Serial.println(F("Value is negative"));
  }
  val=val+2; //increment val
  if(val>10) val=-10; // set val to initial value
  delay(500); //delay for monitor display
}

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 sont initialisées à l’aide du mot clé bool ou boolean. Un booléen peut être obtenu de différentes manières

  • Le résultat d’un test logique <,>,==,!=,!
 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) 
   
  • Le résultat d’une fonction
bool test(int val){
  //retourne vraie si la valeur est supérieur à 200
  return val>200;
}
  • Le résultat de plusieurs conditions
condition=(temperature>30) && (vitesse<20);

Autres syntaxes

L’instruction if peut avoir plusieurs syntaxes selon les cas.

Il est possible d’oublier les accolades lorsque l’instruction qui suit se trouve sur une seule ligne

  if(condition) <instructions>;

Exemple:

if(condtion) Serial.println("Conditon est réalisée");

Si il n’y a pas d’instruction à exécuter lorsque la condition n’est pas réalisée, il est possible d’oublier le bloc else{}

  if(condition){
    <liste d'instructions>;
  }

Si plusieurs conditions sont évaluées en même temps

  if(condition){
   // <liste d'instructions si condition==true>;
  }else if(condition2){
    //<liste d'instructions si condition==false && condition2==true>;
  }else if(condition3){
    //<liste d'instructions si condition==false && condition2==false && condition3==true>;
  }else{
    //<liste d'instructions si aucune condition réalisée>;
  }

Ce qu’il faut retenir

  • l’instruction if prend en entrée une condition représentée par une variable booléenne
  • La condition peut être une fonction qui retourne un booléen ou le résultat d’un test avec les opérateurs logique =, !=, <, >, !
  • la condition se trouve entre parenthèse
  • le bloc d’instruction se trouve entre accolade {}
  • Si la liste d’instruction se trouve sur une seule ligne alors il n’y a pas besoin d’accolade

Bonus

Dans des cas simples, il est possible d’utiliser l’instruction “?” dont la syntaxe est la suivante

resultat = (condition) ? <instruction si vraie> : <instruction si faux>

Exemple, ligne de code qui retourne le signe d’une variable:

 
  int signe= (variable>=0) ? 1:-1; // retourne 1 si la valeur est positive et - 1 si elle est négative

Assurez-vous de bien comprendre les booléens et les opérateurs logique pour bien utiliser l’instruction if. Une fois cette instruction maitrisée, vos algorithmes pourront prendre de bonnes décisions.

Sources

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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?