Prendre une décision : if et else
Exécuter un bloc seulement si une condition est vraie, et enchaîner plusieurs cas.
Ce que tu vas apprendre
- Écrire une condition avec les opérateurs de comparaison
- Utiliser
if,elseetelse if - Savoir qu'une condition vaut 1 (vrai) ou 0 (faux)
La structure if / else
if (condition) { ... } exécute le bloc seulement si la condition est vraie. Le bloc else { ... } facultatif s'exécute dans le cas contraire.
Les opérateurs de comparaison sont == (égal), != (différent), <, >, <= et >=.
Plusieurs cas : else if
Pour plus de deux cas, on enchaîne des else if. Les conditions sont testées dans l'ordre : seul le premier cas vrai est exécuté, les suivants sont ignorés.
L'ordre des tests compte : commence par le cas le plus précis.
Vrai et faux en C
En C, une comparaison vaut 1 si elle est vraie et 0 si elle est fausse. Toute valeur différente de 0 est considérée comme vraie dans un if.
Pour savoir si un entier est pair, on regarde le reste de sa division par 2 : n % 2 == 0.
Exemples commentés
1.Trois cas selon la température
#include <stdio.h>
int main(void) {
int t;
scanf("%d", &t);
if (t < 0) {
printf("gel\n");
} else if (t < 20) { // ici on sait déjà que t >= 0
printf("frais\n");
} else {
printf("chaud\n");
}
return 0;
}Entrée
12
Sortie
frais
12 n'est pas inférieur à 0, mais il est inférieur à 20 : le deuxième bloc s'exécute, le else final est ignoré.
2.Livraison offerte ?
#include <stdio.h>
int main(void) {
int montant;
scanf("%d", &montant);
if (montant >= 50) {
printf("livraison offerte\n");
} else {
printf("il manque %d euros\n", 50 - montant);
}
return 0;
}Entrée
35
Sortie
il manque 15 euros
Un else peut faire un calcul : on affiche ce qu'il manque pour atteindre le seuil.
Chaque exemple est compilé et exécuté automatiquement pour garantir la sortie affichée.
Erreurs fréquentes
Écrire = au lieu de ==
À éviter
if (n = 0)
À préférer
if (n == 0)
= affecte 0 à n (et la condition est alors fausse) ; == compare. gcc le signale avec -Wall.
Un point-virgule après le if
À éviter
if (n > 0);
printf("positif\n");À préférer
if (n > 0) {
printf("positif\n");
}Le ; termine le if avec une instruction vide : le printf s'exécute toujours.
Tester les cas dans le mauvais ordre
À éviter
if (note >= 10) ... else if (note >= 16) ... // jamais atteint
À préférer
if (note >= 16) ... else if (note >= 10) ...
Une note de 17 est déjà captée par note >= 10 : teste d'abord la condition la plus stricte.
Entraîne-toi
6 questions variées pour fixer la leçon : choix, résultat à prévoir, ligne à compléter, code à remettre dans l'ordre, erreur à trouver.
À toi de jouer !
8 exercices pour mettre cette leçon en pratique, du plus simple au plus avancé.