A › 4 - Tests et conditions 1 : nombres et booléens

Les tests servent à exécuter certaines instructions à certaines conditions. En fonction de la valeur de variables ou de données, certaines lignes du programme seront ou non exécutées. La syntaxe des tests est la suivante :

if (condition)

  {instructions si la condition est vraie}

else {instructions si la condition est fausse}, cette dernière instruction étant facultative

Egalité

La condition d'égalité de deux nombres s'écrit nombre1 == nombre2.

Cette expression est vraie si les deux nombres sont égaux et fausse sinon.

size(100,100);

if (width==100) // si la largeur vaut 100 pixels

  {background(48,200,150); // fond vert

  rect(30,30,30,30);

  }

else {background(40,135,216); // fond bleu

  ellipse(30,30,30,30);

  }

Le même code, en changeant simplement la première ligne par

size(101,100);

donne la figure ci-contre.

Comparaison

La condition qui permet de tester si un nombre est strictement inférieur à un autre s'écrit nombre1 < nombre2.

Un test presque identique permet de savoir si un nombre est inférieur ou égal à un autre : nombre1 <= nombre2.

On peut bien sûr remplacer le mot inférieur par supérieur, en remplaçant dans le code < par >

int x=65;

int y=50;

if (x+y>100) // permet de déterminer de quel côté de la diagonale se trouve le point (x,y)

  {background(48,200,150); // fond vert si le point est en-dessous de la diagonale

  }

else {background(40,135,216); // fond bleu si le carré est au-dessus de la diagonale

  }

line(0,100,100,0); // tracé de la diagonale, exécuté dans tous les cas

rect(x,y,10,10); // tracé du carré

Le même code, en changeant simplement la première ligne par

int x=15;

donne la figure ci-contre. La condition if (x+y>100) n'étant pas vérifiée, c'est l'instruction suivant else qui est exécutée.

Booléens

Les conditions, comme les tests d'égalités ou de comparaisons, peuvent être remplacés par des booléens. La syntaxe est alors :

if (nomBooléen) // où nomBooléen est une variable de type booléen

  {instructions si nomBooléen est vrai}

else {instructions si nomBooléen est faux}, cette dernière instruction étant facultative.

Là encore, les booléens peuvent être combinés à l'aide des opérateurs ET (&&), OU (||) et NON (!).

boolean bleu=true;

boolean vert=true;

if (bleu && vert)

  {background(126,210,210); // fond turquoise

  }

else

  {if (bleu)

    {background(40,135,216); // fond bleu

    }

  if (vert)

    {background(48,200,150); // fond vert

    }

  } // fin des instructions else

Le même code, en changeant les deux premières lignes par

boolean bleu=false;

boolean vert=true;

donne la figure ci-contre. La condition if (bleu && vert) n'est pas vérifiée, mais l'instruction if (vert) l'est.

De même, en changeant les deux premières lignes par

boolean bleu=true;

boolean vert=false;

on obtient la figure ci-contre. La condition if (bleu && vert) n'est pas vérifiée, mais l'instruction if (bleu) l'est.

Enfin, en changeant les deux premières lignes par

boolean bleu=false;

boolean vert=false;

on obtient la figure ci-contre. Aucune des conditions n'est vérifiée, la couleur de fond n'est pas spécifiée et prend la valeur par défaut.

Combinaison de conditions

Les conditions, exprimées avec égalités et comparaisons, peuvent également être combinées à l'aide des mêmes opérateurs ET (&&), OU (||) et NON (!).

int x=25;

int y=15;

if ((x>50)&&(y>50)) // quart de la fenêtre en bas à droite

  {background(48,200,150); // fond vert

  }

else if ((x<50)&&(y<50)) // quart de la fenêtre en haut à gauche

    {background(40,135,216); // fond bleu

    }

line(50,0,50,100);

line(0,50,100,50);

rect(x,y,10,10); // tracé du carré

Le même code, en changeant simplement les deux premières lignes par

int x=65;

int y=75;

donne la figure ci-contre. La condition if ((x>50)&&(y>50)) étant vérifiée, le fond est en vert.

Enfin, le même code, en changeant les deux premières lignes par

int x=65;

int x=25;

donne la figure ci-contre. Ni la condition if ((x>50)&&(y>50)) ni else if ((x<50)&&(y<50)) n'étant vérifiées, la couleur de fond n'est pas spécifiée et prend la valeur par défaut.