Les Conditions

Apprendre a l'ordinateur a prendre des decisions

Le chemin du if / else

La condition il_pleut est-elle vraie ? Bascule l'interrupteur et regarde quel chemin le programme emprunte.

il_pleut ? False True ☂️ prends parapluie False 😎 sors normalement
il_pleut =

Condition fausse → le bloc else s'exécute.

La logique du choix

Dans la vie, tu fais constamment des choix :

"S'il pleut, je prends un parapluie. Sinon, je sors comme ca."

La programmation fonctionne pareil ! Les conditions permettent au code d'executer differentes actions selon la situation.

Arbre de decision interactif

Clique sur la condition pour voir le chemin

Il pleut ?
Clique pour changer
OUI
☂️
Prendre parapluie
NON
🚶
Sortir normal

Operateurs de comparaison

Pour comparer des valeurs et obtenir vrai ou faux

==
Egal a
5 == 5 → true
!=
Different de
5 != 3 → true
<
Inferieur
3 < 5 → true
>
Superieur
5 > 3 → true
<=
Inf. ou egal
5 <= 5 → true
>=
Sup. ou egal
5 >= 3 → true
Teste une comparaison :
true

Operateurs logiques

Pour combiner plusieurs conditions

AND (&&)

Les DEUX conditions doivent etre vraies

age >= 18 AND permis == true → peut conduire
OR (||)

AU MOINS UNE condition doit etre vraie

weekend == true OR ferie == true → repos
NOT (!)

Inverse la condition

NOT pluie → beau temps

La structure IF

Le bloc de code s'execute SEULEMENT si la condition est vraie

age = 20

if age >= 18:
    print("Tu es majeur !")
let age = 20;

if (age >= 18) {
    console.log("Tu es majeur !");
}
int age = 20;

if (age >= 18) {
    System.out.println("Tu es majeur !");
}
int age = 20;

if (age >= 18) {
    Console.WriteLine("Tu es majeur !");
}
int age = 20;

if (age >= 18) {
    std::cout << "Tu es majeur !" << std::endl;
}
age <- 20

if (age >= 18) {
    print("Tu es majeur !")
}

Note Python : Pas de parentheses ni accolades ! L'indentation (espaces) delimite le bloc.

IF - ELSE

Executer un bloc OU un autre selon la condition

temperature = 15

if temperature > 25:
    print("Il fait chaud")
else:
    print("Il fait frais")
let temperature = 15;

if (temperature > 25) {
    console.log("Il fait chaud");
} else {
    console.log("Il fait frais");
}
int temperature = 15;

if (temperature > 25) {
    System.out.println("Il fait chaud");
} else {
    System.out.println("Il fait frais");
}
int temperature = 15;

if (temperature > 25) {
    Console.WriteLine("Il fait chaud");
} else {
    Console.WriteLine("Il fait frais");
}
int temperature = 15;

if (temperature > 25) {
    std::cout << "Il fait chaud" << std::endl;
} else {
    std::cout << "Il fait frais" << std::endl;
}
temperature <- 15

if (temperature > 25) {
    print("Il fait chaud")
} else {
    print("Il fait frais")
}

# Ou avec ifelse() vectorise
ifelse(temperature > 25, "Chaud", "Frais")

Conditions multiples (elif/else if)

Tester plusieurs conditions en cascade

note = 85

if note >= 90:
    print("Excellent ! A")
elif note >= 80:
    print("Tres bien ! B")
elif note >= 70:
    print("Bien ! C")
elif note >= 60:
    print("Passable. D")
else:
    print("A retravailler. F")
let note = 85;

if (note >= 90) {
    console.log("Excellent ! A");
} else if (note >= 80) {
    console.log("Tres bien ! B");
} else if (note >= 70) {
    console.log("Bien ! C");
} else if (note >= 60) {
    console.log("Passable. D");
} else {
    console.log("A retravailler. F");
}
int note = 85;

if (note >= 90) {
    System.out.println("Excellent ! A");
} else if (note >= 80) {
    System.out.println("Tres bien ! B");
} else if (note >= 70) {
    System.out.println("Bien ! C");
} else if (note >= 60) {
    System.out.println("Passable. D");
} else {
    System.out.println("A retravailler. F");
}
int note = 85;

if (note >= 90) {
    Console.WriteLine("Excellent ! A");
} else if (note >= 80) {
    Console.WriteLine("Tres bien ! B");
} else if (note >= 70) {
    Console.WriteLine("Bien ! C");
} else if (note >= 60) {
    Console.WriteLine("Passable. D");
} else {
    Console.WriteLine("A retravailler. F");
}
int note = 85;

if (note >= 90) {
    std::cout << "Excellent ! A" << std::endl;
} else if (note >= 80) {
    std::cout << "Tres bien ! B" << std::endl;
} else if (note >= 70) {
    std::cout << "Bien ! C" << std::endl;
} else if (note >= 60) {
    std::cout << "Passable. D" << std::endl;
} else {
    std::cout << "A retravailler. F" << std::endl;
}
note <- 85

if (note >= 90) {
    print("Excellent ! A")
} else if (note >= 80) {
    print("Tres bien ! B")
} else if (note >= 70) {
    print("Bien ! C")
} else if (note >= 60) {
    print("Passable. D")
} else {
    print("A retravailler. F")
}

# Ou avec cut() pour classifier (typique R !)
cut(note, c(0,60,70,80,90,100), c("F","D","C","B","A"))

Important : L'ordre compte ! Le code s'arrete a la premiere condition vraie.

Switch / Match

Pour comparer une valeur a plusieurs cas possibles

# Python 3.10+ avec match
jour = "lundi"

match jour:
    case "lundi":
        print("Debut de semaine")
    case "vendredi":
        print("Bientot le weekend !")
    case "samedi" | "dimanche":
        print("Weekend !")
    case _:
        print("Jour normal")
let jour = "lundi";

switch (jour) {
    case "lundi":
        console.log("Debut de semaine");
        break;
    case "vendredi":
        console.log("Bientot le weekend !");
        break;
    case "samedi":
    case "dimanche":
        console.log("Weekend !");
        break;
    default:
        console.log("Jour normal");
}
String jour = "lundi";

switch (jour) {
    case "lundi":
        System.out.println("Debut de semaine");
        break;
    case "vendredi":
        System.out.println("Bientot le weekend !");
        break;
    case "samedi", "dimanche":
        System.out.println("Weekend !");
        break;
    default:
        System.out.println("Jour normal");
}
string jour = "lundi";

switch (jour) {
    case "lundi":
        Console.WriteLine("Debut de semaine");
        break;
    case "vendredi":
        Console.WriteLine("Bientot le weekend !");
        break;
    case "samedi":
    case "dimanche":
        Console.WriteLine("Weekend !");
        break;
    default:
        Console.WriteLine("Jour normal");
}
// C++ switch ne supporte que int/char
int jourNum = 1; // 1=lundi, 5=vendredi...

switch (jourNum) {
    case 1:
        std::cout << "Debut de semaine" << std::endl;
        break;
    case 5:
        std::cout << "Bientot le weekend !" << std::endl;
        break;
    case 6:
    case 7:
        std::cout << "Weekend !" << std::endl;
        break;
    default:
        std::cout << "Jour normal" << std::endl;
}
# R utilise switch() comme fonction
jour <- "lundi"

message <- switch(jour,
    "lundi" = "Debut de semaine",
    "vendredi" = "Bientot le weekend !",
    "samedi" = "Weekend !",
    "dimanche" = "Weekend !",
    "Jour normal"  # default
)

print(message)

Attention : En JS/Java/C#/C++, n'oublie pas le break sinon le code continue dans le cas suivant !

L'operateur ternaire

Un if-else en une seule ligne (pour les cas simples)

age = 20

# Syntaxe Python
statut = "majeur" if age >= 18 else "mineur"

print(statut)  # "majeur"
let age = 20;

// condition ? siVrai : siFaux
let statut = age >= 18 ? "majeur" : "mineur";

console.log(statut);  // "majeur"
int age = 20;

// condition ? siVrai : siFaux
String statut = age >= 18 ? "majeur" : "mineur";

System.out.println(statut);  // "majeur"
int age = 20;

// condition ? siVrai : siFaux
string statut = age >= 18 ? "majeur" : "mineur";

Console.WriteLine(statut);  // "majeur"
int age = 20;

// condition ? siVrai : siFaux
std::string statut = age >= 18 ? "majeur" : "mineur";

std::cout << statut << std::endl;  // "majeur"
age <- 20

# ifelse() vectorise (applique sur tout un vecteur !)
statut <- ifelse(age >= 18, "majeur", "mineur")

print(statut)  # "majeur"

# Super puissant sur vecteurs !
ages <- c(15, 22, 17, 30)
ifelse(ages >= 18, "majeur", "mineur")
# "mineur" "majeur" "mineur" "majeur"

Syntaxe : condition ? valeurSiVrai : valeurSiFaux
(Python inverse : valeurSiVrai if condition else valeurSiFaux)
(R : ifelse(condition, siVrai, siFaux) - fonctionne sur vecteurs !)

Exemple pratique : Systeme de login

username = "alice"
password = "secret123"
is_banned = False

# Verification en cascade
if is_banned:
    print("Compte banni")
elif username == "" or password == "":
    print("Champs vides")
elif len(password) < 8:
    print("Mot de passe trop court")
elif username == "alice" and password == "secret123":
    print("Connexion reussie !")
else:
    print("Identifiants incorrects")
let username = "alice";
let password = "secret123";
let isBanned = false;

// Verification en cascade
if (isBanned) {
    console.log("Compte banni");
} else if (username === "" || password === "") {
    console.log("Champs vides");
} else if (password.length < 8) {
    console.log("Mot de passe trop court");
} else if (username === "alice" && password === "secret123") {
    console.log("Connexion reussie !");
} else {
    console.log("Identifiants incorrects");
}
String username = "alice";
String password = "secret123";
boolean isBanned = false;

// Verification en cascade
if (isBanned) {
    System.out.println("Compte banni");
} else if (username.isEmpty() || password.isEmpty()) {
    System.out.println("Champs vides");
} else if (password.length() < 8) {
    System.out.println("Mot de passe trop court");
} else if (username.equals("alice") && password.equals("secret123")) {
    System.out.println("Connexion reussie !");
} else {
    System.out.println("Identifiants incorrects");
}

Erreurs courantes

Confondre = et ==
if (x = 5) → Assigne 5 a x !
if (x == 5) → Compare x a 5
Oublier les accolades
if (x > 5)
    doA();
    doB();  ← Toujours execute !
Conditions impossibles
if (x > 10 && x < 5) → Jamais vrai !

Debugging : Trouver et corriger les erreurs

Ton code ne marche pas ? Pas de panique ! Le debugging est l'art de trouver et corriger les bugs. Voici tes outils :

🖨️ 1. Print / Console.log - Ton meilleur ami

Affiche la valeur de tes variables pour voir ce qui se passe vraiment :

Python
age = 15
print(f"age vaut: {age}")
if age >= 18:
print("Majeur")
JavaScript
let age = 15;
console.log("age vaut:", age);
if (age >= 18) {
console.log("Majeur");
}

💡 Mets des prints AVANT et DANS tes conditions pour voir quel chemin le code prend !

📖 2. Lire les messages d'erreur

Les erreurs ont l'air effrayantes mais elles t'aident ! Voici comment les lire :

Traceback (most recent call last):
File "script.py", line 5, in <module>
if age = 18:
SyntaxError: invalid syntax. Maybe you meant '==' or ':='?
📍 Ligne 5

Où est le problème

❌ SyntaxError

Type d'erreur

💡 Maybe '=='

Suggestion de fix !

🔍 3. Le Debugger (mode avancé)

Les IDE (VS Code, PyCharm) ont un debugger intégré. Tu peux :

🔴
Breakpoint

Pause le code à une ligne

👁️
Watch

Surveille une variable

⏭️
Step Over

Exécute ligne par ligne

📋
Call Stack

Voir d'où vient l'appel

✅ Checklist quand ça marche pas :
1. Lis le message d'erreur (ligne + type)
2. Ajoute des print() pour voir les valeurs
3. Vérifie tes = vs == et tes accolades
4. Teste avec des valeurs simples d'abord
5. Prends une pause et reviens avec un regard neuf 🧠

Ce qu'il faut retenir

if
Si condition vraie
else
Sinon
elif / else if
Sinon si autre condition
switch / match
Plusieurs cas possibles
print / log
Afficher pour debugger
breakpoint
Pause pour inspecter

Teste tes connaissances

🔀

Mode Survie

10 questions sur les conditions, zéro erreur autorisée.

Prog 2 Prog 4
🎬

Pour aller plus loin

Les excellentes vidéos de Graven sur les conditions :

Java Conditions
Apprendre le Java #3 - Les Conditions
Graven • ☕ Java
Python Conditions
Apprendre le Python #3 - Les Conditions
Graven • 🐍 Python
Glisser pour continuer vers Prog 4 : Les Boucles
⬇️
Débutant