1. Les conditions
Après cette quête, tu comprendras l'utilité des conditions et sauras comment les utiliser
Objectifs
- Comprendre les booléens
- Utiliser des conditions
- Connaître les opérateurs logiques
Un examen tordu

Ahhh, les maths…!!!... Pendant un partiel, tu n'étais pas d'humeur à manipuler des équations démontrant des vérités fondamentales que le professeur n'a peut-être lui-même pas comprises. Par lassitude, tu as laissé feuille blanche et est rentré chez toi. Tu aurais dû te lever avec le pied droit ce matin, mais visiblement la roue de la fortune n'a pas joué en ta faveur.
Une fois assis.e chez toi, tu regrettes d'avoir laissé tomber ton examen et appelle l'université pour savoir si un rattrapage est possible au motif de souci de santé mentale causé par une overdose de mathématiques. Au bout du fil, la responsable pédagogique t'explique qu'il y a un moyen et un seul pour pouvoir rattraper tes erreurs : un quizz vrai/faux. Mais pas un quizz comme les autres (bah oui, tu fais des maths quand même). Ce quizz te demande de combiner plusieurs affirmations et de déterminer si certaines d'entre elles, mises les unes après les autres, sont vraies ou non.
Tu sais qu'il y a des pièges dans ce quizz, et tu as compris qu'afin de pouvoir répondre correctement aux questions du quizz, il te faudra réviser des bases algébriques fondamentales. En écoutant ton intuition, tu ressors tes vieux cours de logique et la page sur laquelle tu tombes est le chapitre qui correspond le plus à ton cas : celui concernant l'algèbre de Boole qui permet de quantifier des valeurs de vérité en termes mathématiques.
Ah ! Tu as désormais ce qu'il te faut. Y a plus qu'à bûcher. Et je vais t'y aider.
L'algèbre de Boole
Boole était apparemment un homme simple. La branche de l'algèbre qu'il a créée ne manipule que deux valeurs : vrai et faux et très peu d'opérations. A son époque, sa trouvaille a eu très peu de retentissement parce qu'elle ne servait à rien, mis à part étudier des propriétés de ce monde du point de vue théorique.

A son époque, Boole ne le savait pas, mais la branche de l'algèbre qu'il a mise au point allait le faire se retourner dans sa tombe ! En effet, une centaine d'années plus tard, on a ressorti son algèbre poussiéreuse parce que l'on avait découvert qu'elle pouvait finalement servir à quelque chose ... Un ordinateur comprend uniquement deux valeurs qui sont 0 et 1. Ce sont les deux chiffres de la base arithmétique binaire. En électronique, on appelle 0 l'état bas et 1 l'état haut.
En 1854, les trouvailles de George Boole ont posé des termes mathématiques sur des valeurs de vérité. En clair, son système permet d'approcher de la logique pure en termes mathématiques. L'algèbre de Boole, du nom de son créateur, dispose de deux valeurs et de deux opérations. Les deux valeurs correspondent à des valeurs de vérité: vrai ou faux. Les deux opérations composant l'algèbre de Boole sont et et ou.
L'algèbre de Boole permet de décortiquer de la logique grâce à des opérations entre les deux valeurs fondamentales de la vérité (vrai/faux). Ainsi:
-
vrai et vrai est vrai
-
faux et vrai est faux
-
vrai ou faux est vrai
-
faux ou faux est faux
La table de vérité de l'opérateur ou:
x1 | x2 | x1 OU x2
----- | ----- | ----- 0 | 0 | 0 0 | 1 | 1 1 | 0 | 1 1 | 1 | 1
La table de vérité de l'opérateur et:
x1 | x2 | x1 ET x2
----- | ----- | ----- 0 | 0 | 0 0 | 1 | 0 1 | 0 | 0 1 | 1 | 1
Ces constats permettent d'établir des lois fondamentales concernant la logique pure. L'algèbre de Boole fut une avancée majeure dans la compréhension du monde qui nous entoure. L'algèbre de Boole est de nos jours très utilisée sur les circuits électroniques pour réaliser des opérations logiques.
Mais on ne fait pas d'électronique, ni de mathématiques ? Qu'est-ce que ça a à voir avec mon PC ?
La représentation d'un booléen
Si l'algèbre de Boole est très utilisée en électronique, elle l'est d'autant plus en informatique et plus précisément en programmation. Si l'algèbre de Boole n'existait pas, il nous serait très difficile, voire impossible, d'enchaîner des opérations logiques sur un circuit électronique.
Un ordinateur n'interagissant qu'en 1 et 0 et l'algèbre booléenne n'étant composée que de deux valeurs vrai et faux, l'utilisation de l'algèbre de Boole pour résoudre des opérations de logique pure s'est très vite imposée comme étant naturelle sur un circuit informatique.

Ainsi, vrai est équivalent à un bit à l'état haut (1), et faux est équivalent à un bit à l'état bas (0). Ainsi, une valeur de type booléen est codée sur un seul bit car elle ne doit prendre que deux valeurs: 0 ou 1.
En programmation, un langage dit haut niveau représentera vrai par true et faux par false.
Très bien, et en C#, ça donne quoi ?
Des blocs conditionnels
On enchaîne des opérations logiques grâce à des conditions en programmation. Une condition exécute un bout de code si et seulement si elle est satisfaite, c'est-à-dire si la valeur en mémoire, après réalisation de l'opération booléenne lui étant associée, est 1.

Le code exécuté, si la condition est satisfaite, est contenu dans ce que l'on appelle un bloc. Un bloc en C# est délimité par deux accolades. Par conséquent, la syntaxe d'un code dans un bloc est la suivante: { [ton code} }. Tu peux bien entendu enchaîner plusieurs instructions dans un bloc.
Et les conditions dans tout ça ?
Eh bien, si le résultat de l'opération booléenne est vrai, le code exécuté est contenu dans un bloc. Ce bloc délimite le code qui est exécuté si la condition est vraie, et uniquement si elle est vraie. Cela permet d'exécuter un morceau de code dans un cas particulier et pas dans un autre.
Exemple:
Je veux retirer 100 € sur mon compte en banque et, dans le cas où j'ai déjà dépassé mon découvert autorisé, le distributeur me répondra Solde insuffisant et aucune monnaie ne sortira du guichet automatique. Dans le cas où j'ai assez d'argent, celui-ci sort du distributeur dont l’écran affiche un message indiquant que la somme que j'ai demandée a bien été retirée. Chacune des réactions aux deux cas est écrite dans un bloc séparé. On pourrait représenter ce cas avec ce pseudo-code:
Si soldeSuffisant {
Retirer(sommeDemandée)
Afficher("Transaction réussie")
} Sinon {
Afficher("Solde insuffisant")
}
C'est bien beau, mais je ne sais toujours pas comment écrire une condition en C# ...
Les mots-clés else et if
En C#, on note une condition de cette manière :
if (booleanValue) {
// [executed code if condition is true]
}
En clair, une condition commence par le mot-clé if, suivi de la condition à remplir entre parenthèses. Puis vient l'ouverture du bloc qui contient le code exécuté si la condition est satisfaite. Ainsi, si booleanValue est vraie, le code à l'intérieur du bloc qui suit la condition est exécuté.
Et donc
ifest le seul mot-clé ?
Eh bien, non. Il existe un autre mot-clé à connaître pour constituer un enchaînement de conditions : il s'agit du mot-clé else.
else est un mot-clé qui, s’il est placé après un bloc conditionnel, exécutera le code contenu dans son bloc, si le résultat de l'opération booléenne du bloc précédent est faux.
Attends, c'est du charabia, là ...
Rien ne vaut du code pour illustrer le principe:
if (false) {
// This will never, ever execute because the boolean evaluated is false
} else {
// This will always execute because the preceding condition is false
}
En clair, else permet de réaliser une opération dans le cas où une condition est fausse.
Décortiquons un peu l'exemple au-dessus :
-
Le code dans le bloc de la première condition ne s'exécutera JAMAIS puisque la valeur booléenne évaluée est false
-
Le code dans le bloc du
elseest exécuté car la condition précédente a été évaluée à false
Voici un diagramme montrant comment fonctionne une condition:
![]()
Et dans le cas où je veux chaîner plus de conditions
Tu peux combiner les mots-clés else et if pour décrire un troisième comportement : sinon si:
if (age > 24)
{
Console.WriteLine("You are older enough.");
}
else if(age > 17)
{
Console.WriteLine("You are still young but getting wiser.");
}
else
{
Console.WriteLine("You are too young.");
}
Analysons le code écrit ci-dessus :
-
La première condition affiche "You are older enough" si l'âge est supérieur à 24.
-
Si la première condition n'est pas satisfaite, on affiche "You are still young but getting wiser" si l'âge est supérieur à 17 ans.
-
Sinon, on affiche "You are too young" car l'âge n'est ni supérieur à 20, ni supérieur à 17, il est donc forcément inférieur ou égal à 17.
Donc, je sais comment écrire une condition, par contre, comment je produis des valeurs booléennes ?
Les expression booléennes
Tout comme en mathématiques, en programmation, on dispose d'opérateurs d'équivalence qui permettent de décrire si une valeur possède certains attributs d'une autre valeur.
Une expression booléenne (aussi appelée prédicat) en programmation est une expression renvoyant une valeur booléenne. Voici la syntaxe d'une expression booléenne : [valeur1] [opérateur d'équivalence] [valeur2]. Une expression booléenne sert donc à comparer deux valeurs sur certains critères. Les critères à satisfaire pour que l'expression renvoie vrai sont spécifiés par l'opérateur d'équivalence. Ainsi, si les deux valeurs de l'expression booléenne satisfont certains critères entre elles, l'expression booléenne renvoie vrai.
Voici les principales expressions booléennes avec leur correspondance en langage parlé :
-
x est égal à y:
x == y -
x est différent de y:
x != y -
x est supérieur à y:
x > y -
x est supérieur ou égal à y:
x >= y -
x est inférieur à y:
x < y -
x est inférieur ou égal à y:
x <= y
Exemple:
if (moneyAmount <= 0)
{
Console.WriteLine("Looks like you are running out of money ...");
}
else if (moneyAmount < 100)
{
Console.WriteLine("This is not so much money, but it's ok");
}
else if (moneyAmount >= 10000)
{
Console.WriteLine("You are a rich guy !");
}
Combiner les conditions
En algèbre booléenne, des opérations sont réalisées entre deux valeurs vrai et faux. Ces opérations permettent de combiner les opérandes, afin de n'en retirer qu'une seule valeur booléenne qui caractérise l'état vrai ou faux de l'expression complète.
La programmation faisant usage de l'algèbre de Boole à outrance dispose aussi d'opérateurs permettant d'obtenir une valeur booléenne à partir de plusieurs valeurs booléennes.
Ainsi, l'opérateur && vaut pour et et l'opérateur || vaut pour ou. Il existe un troisième opérateur de l'algèbre de Boole qui inverse une valeur booléenne. Cette opérateur en C# se note !. Ainsi, !true == false et !false == true. On peut aussi traduire l'opérateur !boolean par boolean == false.
Exemple:
if (age >= 70 && isMale == true)
{
Console.WriteLine("You are an old man");
}
else if (age > 70 && !isMale)
{
Console.WriteLine("You are an old female");
}
else if (age > 100 || age < 0)
{
Console.WriteLine("Impossible, you cannot be so young or old.");
}
En détail :
-
L'expression booléenne
age > 70 && isMale == truecaractérisant la première condition est vraie si l'âge est supérieur ou égal à 70 et que la personne est un homme. -
L'expression booléenne
age >= 70 && !isMalecaractérisant la deuxième condition est vraie si l'âge est supérieur ou égal à 70 et que la personne est une femme. -
L'expression booléenne
age > 99 || age < 0caractérisant la troisième condition est vraie si l'âge est strictement supérieur à 99 ou s'il est négatif.
Challenge
Borner une saisie utilisateur
Fais saisir à l'utilisateur deux valeurs entières : un minimum et un maximum.
Fais saisir un troisième entier à l'utilisateur et borne-le au maximum et au minimum.
Limit1: 0
Limit2: 100
Integer: 101
You have entered 101 which is greater than 100 which is the maximum
Resulting integer: 100
Limit1: 40
Limit2: -50
Integer to limit: 50
You have entered 50 which is greater than 40 which is the maximum
Resulting integer: 40
Limit1: -20
Limit2: 20
Integer to limit: -40
You have entered -40 which is lower than -20 which is the minimum
Resulting integer: -20
Critères de validation
-
Lien vers le GitHub de ta solution
-
La valeur du dernier entier fourni par l'utilisateur est bornée par les deux valeurs fournies par l'utilisateur