If you're seeing this message, it means we're having trouble loading external resources on our website.

Si vous avez un filtre web, veuillez vous assurer que les domaines *. kastatic.org et *. kasandbox.org sont autorisés.

Contenu principal

Résumé : la logique et les instructions conditionnelles

Voici un résumé de ce que nous avons couvert dans ce module sur la logique et les instructions conditionnelles.
Souvent, dans nos programmes, nous avons besoin de faire des choses "seulement si" une "condition" est respectée. Nous voulons être capable d'écrire : "Si cette chose est vraie, alors fait ceci, mais si cette autre chose est vraie, alors, fait plutôt cela". C'est comme quand nous nous levons le matin : "S'il pleut dehors, alors je prends un parapluie, mais s'il fait beau, je prends des lunettes de soleil". Nous pouvons écrire des instructions conditionnelles dans nos programmes, c'est-à-dire qui s’exécutent seulement si une condition est respectée, en utilisant les mots if et les mots if/else, combinées avec des expressions conditionnelles.
Une instruction if indique au programme qu'il doit exécuter un bloc de code seulement si une condition est respectée. Dans le code ci-dessous, nous affichons un message seulement si x est plus grand que 0 :
var x = 5;

if (x > 0) {
  text('x est un nombre positif !', 200, 200);
}
Puisque x est égal à 5, qui est plus grand que 0, nous allons voir le message s'afficher dans la zone de dessin. Si nous avions changé la valeur de x par -1, nous n'aurions pas vu le message s'afficher, car x n'aurait pas été plus grand que 0.
x > 0 est ce que nous appelons une expression conditionnelle, ce qui signifie qu'elle s'évalue soit à true (vrai), soit à false (faux). Quand une valeur est soit true, soit false, nous l'appelons une valeur booléenne (qui n'est pas un nombre, ni une chaîne de caractères). Par exemple, nous pouvons afficher l'expression conditionnelle, tout simplement :
text(x > 0, 200, 200); // Affiche "true"
On peut également la stocker dans une variable pour l'afficher ensuite :
var estPositif = x > 0;
text(estPositif, 200, 200);
Nous dirions alors que estPositif contient une valeur booléenne, parce qu'elle s'évalue soit à true, soit à false, en fonction de ce que nous avons affecté à x.
Il y a beaucoup de moyens de former des expressions conditionnelles, qui s'évalueront soit à true, soit à false, parce qu'il y a beaucoup d'opérateurs de comparaison. Voici les plus utilisés :
Soit la variable monAge suivante, voici les opérateurs de comparaison les plus courants et des expressions évaluées vraies correspondantes :
var monAge = 28;
OpérateurSignificationExpressions vraiesVérification
===Égalité strictemonAge === 28
!==Inégalité strictemonAge !== 2928 !== 29
>Plus grand quemonAge > 2528 > 25
>=Plus grand ou égalmonAge >= 2828 >= 28
<Plus petit quemonAge < 3028 < 30
<=Plus petit ou égalmonAge <= 2828 <= 28
C'est une erreur très fréquente de confondre l'opérateur d'affectation (=) avec l'opérateur d'égalité (===), car ils utilisent tous les deux le signe égal, mais ils sont pourtant vraiment différents. L'opérateur d'affectation va modifier la valeur de la variable, alors que l'opérateur d'égalité va seulement la lire pour tester son égalité avec autre chose. Par exemple :
var x = 2 + 2; // Affecte la valeur 4 à la variable x

if (x === 4) { // Pose la question "est-ce que c'est égal à 4 ?"
   text("ouais, 2 + 2 = 4 !", 200, 200);
}
Nous voulons combiner parfois plusieurs comparaisons dans une expression conditionnelle et c'est pourquoi on utilise des opérateurs logiques. Ces opérateurs nous permettent d'écrire dans nos programmes des choses comme "si X et Y sont vrais" ou "si X ou Y est vrai".
Si nous souhaitons que deux conditions soient toutes les deux vraies, on peut utiliser l'opérateur && ("et") :
var temperatureExterieure = 25;
var nombreDeNuages = 50;
if (temperatureExterieure > 25 && nombreDeNuages < 5) {
  text("Mets de la crème solaire !", 200, 200);
}
Nous l'utilisons souvent dans nos programmes pour vérifier si la position de la souris est à l'intérieur d'un rectangle (comme pour un bouton). Dans ce cas, il nous faut plusieurs opérateurs && :
rect(100, 50, 100, 100); 

mousePressed = function() {
    if (mouseX > 100 && mouseX < 200 && mouseY > 50 && mouseY < 150) {
        text("Vous avez cliquez dedans !", 80, 75);
    }
};
Si nous souhaitons qu'une seule condition soit vraie, alors on peut utiliser l'opérateur || ("ou") :
var temperatureExterieure= 25;
var nombreDeNuages = 50;
if (temperatureExterieure > 25 || nombreDeNuages < 5) {
  text("Prends ta crème solaire s'il fait chaud dehors ou s'il n'y a pas assez de nuages !", 200, 200);
}
Nous pouvons utiliser && et || dans la même expression pour des conditions plus complexes. Il suffit d'utiliser des parenthèses pour grouper les expressions, afin que le programme n'évalue pas dans le mauvais ordre :
var monAge = 28;
if ((monAge >= 0 && monAge < 3)  || monAge > 90) {
  println('C'est un bon début !');
}
Revenons à nos instructions if. Il nous arrive souvent de vouloir exécuter un bloc de code dans le cas où la condition n'est pas vérifiée. Dans ce cas, nous ajoutons une instruction else.
var age = 28;
if (age > 14) {
  println('Hey, vous pouvez conduire !');
} else {
  println('Désolé, vous devez attendre ' + (15 - age) + ' ans avant de pouvoir conduire.');
}
Parfois, nous voulons tester plusieurs conditions et faire des choses différentes en fonction des résultats. Dans ce cas, nous pouvons utiliser else if :
var age = 20;
if (age >= 35) {
  println('Vous pouvez voter ET participer au gouvernement ! (aux Etats-Unis)');
} else if (age >= 30) {
  println('Vous pouvez voter ET faire campagne pour le Sénat ! (aux Etats-Unis)');
} else if (age >= 18) {
  println('Vous pouvez voter !');
} else {
  println("Vous n'êtes pas encore citoyen !");
}
Vous pouvez tester autant de conditions que vous voulez. Assurez-vous juste que chaque condition est accessible. Testez votre code en modifiant les variables de façon à ce que votre programme passe dans chaque blocs de code. Vous saurez alors que tout fonctionne.
Comme vous avez pu le constater, les instructions conditionnelles représentent un concept clé en programmation. Elles nous permettent de construire des programmes beaucoup plus riches et flexibles.

Vous souhaitez rejoindre la discussion ?

  • blobby green style l'avatar de l’utilisateur Rahma Maalej
    bonjour , alors je n'ai pas compris la différence entre ces deux situations :
    situation numéro 1
    if (); {}
    if (); {}
    if (); {}

    situation numéro 2
    if();{}
    else if (); {}
    else {}
    (5 votes)
    Default Khan Academy avatar l'avatar de l’utilisateur
    • blobby green style l'avatar de l’utilisateur brnm1811
      De ce que j'ai compris la situation 1, signifie que la condition que va prendre en compte l'ordi est seulement la dernière, contrairement à la situation 2 elle prendra en considération les trois condition qui ne signifie pas la même chose.
      en gros ça veut dire : (if) si le nombre est plus petit que 1, la pièce sera en rouge
      (else if) mais si le nombre est compris entre 1 et 2 et qu'il est plus petit que 2 alors ça couleur est verte
      (else) sinon si le nombre n'est ni plus petit que 1 , ni plus petit que 2, ni compris entre 1 et 2 mais qu'il est compris entre 2 et 3 ça couleur sera jaune.
      Je sais pas si tu comprendra mieux mais j'espère que ça t'aidera.
      (6 votes)
  • marcimus purple style l'avatar de l’utilisateur Marième Diop
    Y'a t'il pas d'autre type de conditions dans les langages de programmation
    (7 votes)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • blobby green style l'avatar de l’utilisateur Isaac Newton
    Avez-vous tous réussi le défi précédent sur la fiche flashy ? Je n'y arrive pas. Entre le 'if' et le 'else' et entre le 'else' et la fin faut-il mettre 'text()' ? Ou encoreprintln() ? J'espère que j'ai été assez clair.

    if(mouseIsPressed){
    ? text() ? println() ?
    } else {
    ? text() ? println() ?
    }


    Merci
    (2 votes)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • purple pi purple style l'avatar de l’utilisateur patrickanga04
    comment retrouver l exposesur l interaction avec la souris
    (2 votes)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • piceratops tree style l'avatar de l’utilisateur mchakiri
    *Where is the problem in this code please??*
    draw = function(){
    line(mouseX, mouseY, pmouseX, pmouseY);
    if (mouseIsPressed == true) {
    stroke(250, 3, 80);
    } else {
    stroke(110, 164, 249);
    }
    }
    (2 votes)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • blobby green style l'avatar de l’utilisateur zizou_du_36
    est ce que c'est compliqué
    (1 vote)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • blobby green style l'avatar de l’utilisateur Xenaco Gold
    Bonjour, j'ai crée un code réalisant la fonction d'un dés. Cependant, j'aimerais crée un bouton virtuel qui permettrait de relancer le programme à chaque fois que l'on clique dessus. j'ai déjà essayer mais cela ne fonctionne pas... quelqu'un pourrais me montrer l'erreur dans ce code :

    ' ' ' rect(95,95,210,210);//Grand carré du dés
    rect(100,100,200,200);// petit carré du dés


    fill(17, 255, 0);
    rect(125,330,150,50); //restart button
    fill (0, 0, 0);
    textSize(20);
    text("Restart",168,362);

    var Trond = 40;
    var nombredepoints = random(1,6);
    var arrondi = round(nombredepoints);
    var posx = 150;
    var posy = posx;


    var lancer = function (){
    if (arrondi === 1){//1

    ellipse (posx+50,posy+50,40,40);

    }else if (arrondi === 2){//2

    ellipse (posx,posy,Trond,Trond);
    ellipse (posx+100,posy+100,Trond,Trond);

    }else if (arrondi ===3){//3

    ellipse(posx,posy,Trond,Trond);
    ellipse(posx+55,posy+55,Trond,Trond);
    ellipse(posx+110,posy+110,Trond,Trond);

    }else if (arrondi === 4){//4

    ellipse(posx,posy,Trond,Trond);
    ellipse(posx+100,posy,Trond,Trond);
    ellipse(posx,posy+100,Trond,Trond);
    ellipse(posx+100,posy+100,Trond,Trond);

    }else if(arrondi === 5){//5

    ellipse(posx,posy,Trond,Trond);
    ellipse(posx+100,posy,Trond,Trond);
    ellipse(posx,posy+100,Trond,Trond);
    ellipse(posx+100,posy+100,Trond,Trond);
    ellipse(posx+50,posy+50,Trond,Trond);

    }else if (arrondi === 6){//6

    ellipse(posx-5,posy-10,Trond,Trond);
    ellipse(posx-5,posy+50,Trond,Trond);
    ellipse(posx-5,posy+110,Trond,Trond);
    ellipse(posx+105,posy-10,Trond,Trond);
    ellipse(posx+105,posy+50,Trond,Trond);
    ellipse(posx+105,posy+110,Trond,Trond);
    }
    };

    if(mouseIsPressed){
    lancer();
    }
    //end ' ' '
    (0 vote)
    Default Khan Academy avatar l'avatar de l’utilisateur
Vous comprenez l'anglais ? Cliquez ici pour participer à d'autres discussions sur Khan Academy en anglais.