Des Instructions conditionnelles

Dans le dernier article sur les instructions, on a pu voir ensemble la base de la manipulation de variable. Mais les instructions vont plus loin que ça, on peut manipuler les variables selon certaines condition imposées à l’ordinateur.

On va donc voir les Bloc de Conditions ensemble. A mes yeux c’est l’un des concept les plus importants en programmation. Sans les conditions on ne pourrait rien faire. Par exemple, si un utilisateur se connecte à un site web et qu’il donne son mot de passe, il y aura deux situations :

  • Soit le mot de passe est juste.
  • Soit le mot de passe est mauvais.

Une condition abouti toujours à 2 situations possibles maximum, soit la condition est remplie, soit elle ne l’est pas. Oui, on en revient au binaire, soit c’est 0 soit c’est 1.

Alors, une condition ça s’écrit comme ceci :

if(/* Ma super condition */) {
    // Si ma condition est remplie ALORS j'effectue le scenario 1
} else {
    // Sinon j'effectue le scenario 2
}

Le if en anglais veut dire « Si » et le else veut dire « Sinon ».
Donc on peut établir des phrasé par exemple :
« Si mon mot de passe est vrai, alors j’affiche « Bravo ! »
« Sinon j’affiche « Mot de passe incorrect » « 

Testons tout ceci :

var monMotdepasse = "123456";

if(monMotdepasse === "123456") {
    // Si ma variable monMotdepasse est égale à "123456" ALORS j'affiche Bravo!
    console.log("Bravo !");
} else {
    // Sinon j'affiche "Mot de passe incorrect !"
    console.log("Mot de passe incorrect !");
}

Quoi qu’il se passe entre les parenthèse, le résultat devra toujours être « TRUE » (vrai) ou « FALSE » (faux).

Comme vous pouvez le voir, j’utilise ma variable et je la compare à une chaîne de caractère avec un opérateur. J’aurais pu la comparer à une autre variable sans aucun soucis vu que cette dernière contient une valeur.
Il y a plusieurs opérateurs conditionnels utilisables qui permettent de complexifier les conditions en incluant plusieurs comparaisons.

Opérateur « && » (ou AND) :

Admettons qu’on veuille non seulement vérifier le mot de passe mais aussi vérifier le login de l’utilisateur et faire en sorte qu’ils soient juste tous les deux en même temps, on utilisateur l’opérateur AND pour que plusieurs comparaison soient remplies en même temps :

var monMotdepasse = "123456";
var monLogin      = "Morgiver";

if(monMotdepasse === "123456" && monLogin === "Morgiver") {
    // Ici ma condition est remplie
    console.log("Bravo !");
} else {
    // Ici Ma condition n'est pas remplie
    console.log("Mot de passe ou Login incorrect !");
}

L’opérateur AND impose que toutes les comparaisons soit vérifiée pour que la condition soit remplie. Mais on peut aller encore plus loin, avec un autre opérateur.

Opérateur « || » (ou OR) :

Dans notre exemple, on a droit qu’à un seul utilisateur et perso j’aimerais laisser Yuuki remplir la condition aussi ! Là on va s’aider d’un opérateur qui permet de remplir soit une condition, soit l’autre, si l’une des deux est remplie, l’utilisateur peu passer. Pour cela on va diviser la condition en deux partie avec les parenthèses interne (comme en math) :

var monMotdepasse = "123456";
var monLogin      = "Yuuki";

if(monMotdepasse === "123456" && (monLogin === "Morgiver" || monLogin === "Yuuki")) {
    // Ici ma condition est remplie
    console.log("Bravo !");
} else {
    // Ici Ma condition n'est pas remplie
    console.log("Mot de passe ou Login incorrect !");
}

Dans ce nouvel exemple la condition est simple :

« Si la variable monMotdepasse vaut « 123456 », ET que la variable monLogin vaut « Morgiver » OU « Yuuki » ALORS on affiche « Bravo ! »

Je vous invite à changer la valeur de la variable monLogin pour tester !
Et d’ailleurs on peut aussi aller plus loin ! Bah oui, un seul mot de passe pour deux personnes c’est pas très sécurisé ! Complexifions le truc :

var monMotdepasse = "123456";
var monLogin      = "Yuuki";

if((monMotdepasse === "123456" && monLogin === "Morgiver") || (monMotdepasse === "blublublu" && monLogin === "Yuuki")) {
    // Ici ma condition est remplie
    console.log("Bravo !");
} else {
    // Ici Ma condition n'est pas remplie
    console.log("Mot de passe ou Login incorrect !");
}

Dans ce cas-ci on a diviser la condition en deux pour avoir plus de choix :
Si monMotdepasse vaut « 123456 » ET que monLogin vaut « Morgiver » OU
monMotdepasse vaut « blublublu » ET que monLogin vaut « Yuuki »
ALORS on affiche « Bravo ! »

Là tel qu’il est, la condition n’est pas remplie, testez par vous même !

L’opérateur  » !  » (ou NOT)

L’opérateur NOT sert à inverser la condition. Il est utiliser pour dire « N’EST PAS », c’est un opérateur de négation. Reprenons le tout premier exemple :

var monMotdepasse = "123456";

if(monMotdepasse !== "123456") {
    // Si ma variable monMotdepasse N'EST PAS égale à "123456" ALORS j'affiche "Mot de passe incorrect !"
    console.log("Mot de passe incorrect !");
} else {
    // Sinon j'affiche "Bravo !"
    console.log("Bravo !");
}

Avec les conditions tout est une question d’approche. Ça ne change pas grand chose dans un cas si simple, mais dans d’autre cas plus complexe, la façon dont on aborde la condition changera un bonne partie du code.

Les opérateurs mathématique

La plupart des opérateurs mathématique sont utilisables pour comparer des valeurs entre elles :

  • Opérateur d’égalité :  » === « , c’est celui que nous venons d’utiliser.
    Sa négation avec NOT s’écrit :  » !==  » (Attention, il ne faut pas le confondre avec l’opérateur d’affectation de valeur qui est un  » =  » seul).
  • Les opérateur de grandeur : On peut comparer des valeurs entre elles avec les opérateur  » <  » (plus petit que),  » >  » (plus grand que), « <= » (plus petit ou égal à),  » >=  » (plus grand ou égal à).

Un petit exemple pour illustrer :

var pommes  = 562;
var poires  = 560;
var compteur = 10;

if(pommes < poires) {
    console.log('Il y a moins de pommes');
} else {
    console.log('Il y a moins de poires');
}

// Petit exemple spécial, ici nous n'utilisons pas de else
// Le Else n'est pas obligatoir, un if() peut être utilisé tout seul.
if(compteur >= 10) {
    console.log("On a compté au moins jusqu'à 10 !");
}

Enchaîner des conditions

En général les condition sont simples et elles ressemblent à ça :

Si telle condition
            Alors fait ceci
Sinon 
            Fait cela

Parfois on voudrait juste rajouter des scénarios possible sous d’autre condition sans trop complexifier les choses, on peut dès lors faire comme ceci :

Si telle condition
            Alors fait ceci
Sinon Si telle autre condition
            Fait ceci
Sinon 
            Fait ça

En code ça donne ça :

var monLogin      = "Morgiver";
var monMotdepasse = "Prout";

if(monLogin === "Morgiver" && monMotdepasse === "123456") {
    console.log('Bonjour Morgi !')
} else if(monLogin === "Yuuki" && monMotdepasse === "blublublu") {
    console.log('Bonjour Yuuki !')
} else if(monLogin === "Albert" && monMotdepasse === "Prout") {
    console.log('Albeeeeerrrt ! Albeerrrrrrt ! Albert le 5eme mousquetaire !');
} else {
    console.log('Mot de passe ou Login incorrect !')
}

Il suffit d’enchaîner les if et else. Ce n’est pas énormément utilisé comme technique car c’est très verbeux et finalement pour pas grand chose.
Et puis vous verrez que les condition peuvent être TRES TRES complexes et comporter beaucoup de paramètres complexes eux aussi.

Conclusions !

Cela faisait un petit moment que je n’avais pas tapé d’article, boulot oblige je n’ai pas énormément de temps !
N’hésitez pas à trouver des petits scénario de condition par vous même, testez des trucs soyez créatif ! C’est bon pour l’apprentissage.
Vous ne pourrez pas encore faire de choses très complexes parce que les condition dépendent surtout d’où viennent les valeurs !
Mais chaque chose en son temps !

J’espère que l’article vous aura plu ! n’hésitez pas à publier un commentaire et le partager 😉

Bon code !