Contenu principal
Apprendre à coder
Cours : Apprendre à coder > Chapitre 1
Leçon 10: La logique et les instructions conditionnelles- Instructions conditionnelles
- Défi : la balle qui rebondit
- Plus d'interactions avec la souris
- Défi : votre première application de dessin
- Les booléens
- Défi : l'analyseur de nombres
- Les opérateurs logiques
- Défi : votre premier bouton
- Défi : un bouton plus intelligent
- If/Else - partie 1
- Défi : la fiche flashy
- If/Else - partie 2
- Résumé : la logique et les instructions conditionnelles
- Les nombres aléatoires
- Projet : la boule magique numéro 8
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érateur | Signification | Expressions vraies | Vérification |
---|---|---|---|
=== | Égalité stricte | monAge === 28 | |
!== | Inégalité stricte | monAge !== 29 | 28 !== 29 |
> | Plus grand que | monAge > 25 | 28 > 25 |
>= | Plus grand ou égal | monAge >= 28 | 28 >= 28 |
< | Plus petit que | monAge < 30 | 28 < 30 |
<= | Plus petit ou égal | monAge <= 28 | 28 <= 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 ?
- Y'a t'il pas d'autre type de conditions dans les langages de programmation(7 votes)
- oui il y a d'autre type de conditions dans les langages de programmation: nombres ;chaines; objets(1 vote)
- 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 {}(4 votes)- 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)
- 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 encore
println()
? J'espère que j'ai été assez clair.if(mouseIsPressed){
? text() ? println() ?
} else {
? text() ? println() ?
}
Merci(2 votes) - comment retrouver l exposesur l interaction avec la souris(2 votes)
- *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)- The problem is
draw = function(){
line(mouseX, mouseY, pmouseX, pmouseY);
if (mouseIsPressed == true) {
stroke(250, 3, 80);
} else {
stroke(110, 164, 249);
}
} -<"|||;|||" the poin vigul is essencial!(3 votes)
- est ce que c'est compliqué(1 vote)
- 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)