
Mes notes sur le C, partie 4 [Les conditions]
Cette partie sur les conditions n’est pas très compliqué mais elle est indispensable pour pouvoir faire des programmes intéressants.
Pour un premier exemple je vais reprendre le code de l’article précédent :
#include int main(int argc, char *argv[]) { int nombre = 4; if (nombre % 2 == 1) { printf("%d est impair \n", nombre); } else { printf("%d est pair \n", nombre); } }
La première condition peut se traduire ainsi : “Si l’opération entre parenthèse est vrai alors exécute le code entre les premières accolades sinon peu importe le résultat exécute le second printf()”.
Pour faire des conditions il faut surtout connaitre les symboles et les différentes manières de faire des conditions.
Voici un tableau des opérateurs de comparaison
Symbole | Signification |
---|---|
== | est égal à |
> | est supérieur à |
< | est inférieur à |
>= | est supérieur ou égal à |
<= | est inférieur ou égal à |
!= | est différent de |
Voici un exemple pour la mise en pratique :
#include int main(int argc, char *argv[]) { int note = 20; if (note >= 10) { printf("Vous pouvez continuer \n"); } else if (note >= 15) { printf("Félication pour cette note \n"); } else if (note == 20) { printf("Whaoouuuu \n"); } else { printf("Vous devez travailler d'avantage \n"); } }
Pour commencer, “else if”, signifie “sinon si”.
La variable note est de 20, on devrait donc voir le message “Whaoouuuu”, sauf que c’est le message “Vous pouvez continuer” qui s’affiche.
Il s’agit ici d’une erreur de débutant, en effet une tel suite de conditions doit être perçu comme un ensemble, le programme analyse le premier if, il rentre dedans car 20 est supérieur ou égal à 10 puis il fait le printf() et il s’arrête la.
Il ne test pas les autres conditions.
On pourrait alors ordonner nos conditions, tester le “note == 20” en premier par exemple…
On pourrait également faire ceci :
#include int main(int argc, char *argv[]) { int note = 20; if (note >= 10) { printf("Vous pouvez continuer \n"); } if (note >= 15) { printf("Félication pour cette note \n"); } if (note == 20) { printf("Whaoouuuu \n"); } if(note < 10) { printf("Vous devez travailler d'avantage \n"); } }
Dans ce cas on aurait 3 réponses car la note 20 permet de rentrer dans les 3 premières conditions.
Ce qui serait génial c’est de pouvoir faire une condition de cette façon “Si note >= 10 et note < 15”.
C’est la qu’intervienne les conditions multiples :
Symbole | Signification |
---|---|
| ET |
| OU |
| NON |
#include int main(int argc, char *argv[]) { int note = 15; if (note >= 10 && note < 15) { printf("Vous pouvez continuer \n"); } if (note >= 15 && note < 20) { printf("Félication pour cette note \n"); } if (note == 20) { printf("Whaoouuuu \n"); } if(note < 10) { printf("Vous devez travailler d'avantage \n"); } }
Le mieux pour bien comprendre étant de faire vos propres tests, voici une série d’exemple avec une traduction en commentaire pour chaque ligne, essayez de changer la variable note pour passer dans chacune des conditions.
#include int main(int argc, char *argv[]) { int note = 15; if (note >= 10 && note < 15) // Si la note est supérieur ou égal à 10 et si la note est également inférieur à 15 { printf("'note >= 10 && note < 15' retourne TRUE \n"); } if (note >= 10 || note == 0) // Si la note est supérieur ou égal à 10 ou si la note est égal à 0 { printf("'note >= 10 || note == 0' retourne TRUE \n"); } if (note) // Si la variable note retourne true, si elle existe et qu'elle n'est pas NULL { printf("'note' retourne TRUE \n"); } if (!note) // Si la variable note retourne false, elle existe pas ou elle vaut NULL { printf("'!note' retourne TRUE \n"); } if (!(note >= 10 && note < 15)) // Il suffit de regarder la premiere condition de ce programme, le signe ! devant une condition inverse le sens, 'Si ce n'est pas (ma condition)' { printf("'!(note >= 10 && note < 15)' retourne TRUE \n"); } if (1) // Il faut savoir que 1 = TRUE { printf("'1' retourne TRUE \n"); } if (0) // Il faut savoir que 0 = FALSE { printf("'0' retourne TRUE \n"); } }
Autre chose d’intéressant avec les conditions, c’est de pouvoir affecter le retour d’une condition dans une variable, un exemple sera plus simple à comprendre :
#include int main(int argc, char *argv[]) { int note = 12; int admissible = note >= 10; if (admissible) // Si admissible vaut 1 (TRUE) { printf("Bravo"); } else { printf("Travaillez plus"); } }
Pour finir voici une manière très utile d’enchaîner les if :
#include int main(int argc, char *argv[]) { int note = 10; switch(note) { case 0: printf("Note de 0 \n"); break; case 5: printf("Note de 5 \n"); break; case 10: printf("Note de 10 \n"); break; case 15: printf("Note de 15 \n"); break; default: printf("DEFAULT"); break; } }
Il s’agit de tester sur la valeur de note “case 0” revient à dire “Si note est égal à 0”.
Il est important de ne pas oublier le “break” sinon le programme continue même si on est déjà rentré dans une condition, essayer d’enlever les “break” pour voir l’effet.
La dernière condition “default” revient au même principe que le “else”.