Ces décisions se baseront toujours sur le même principe : des
tests conditionnels, qui évaluent la véracité d'une expression logique. En d'autres termes, votre programme se posera la question de savoir si, à un instant donné, une condition est remplie ou non ; si elle est vraie, ou fausse. Une telle logique est dire
binaire, car elle n'admet pas de "peut-être", de "pourquoi pas" ou d'autre réponse. On dit aussi qu'elle est
booléenne (du nom de Boole, un mathématicien ayant travaillé sur ces questions).
Supposons un instant que vous soyez un programme (vous ne le prenez pas mal, j'espère). Supposons également que vous souhaitiez sortir de chez vous. Avant toute chose, vous vous demandez si vous êtes habillé, car vous avez horreur de sortir de chez vous nu. Si vous êtes nu, alors vous vous habillez avant de continuer. Sinon, pas la peine de vous habiller à nouveau, vous pouvez continuer à vous exécuter tel quel. Vous vous posez maintenant une nouvelle question : est-ce qu'il pleut ? Si oui, vous prenez des bottes. Sinon, vous mettez vos sandales. Et ainsi de suite...
Traduit en code, cela pourrait ressembler à
Code : Autre1
2
3
4
5
6
7
8
9
10
11
12
13
| Si (je_suis_nu)
{
je_m'habille(); /* Obligatoire ! */
}
/* Arrivé à ce stade, je suis sûr d'être habillé */
Si (il_pleut)
{
je_mets_mes_bottes();
}
Sinon
{
je_mets_mes_sandales();
} |
Naturellement, selon qu'il pleut ou non, une seule des deux paires de chaussures sera mise. En termes plus savants, le second test conditionnel n'exécutera qu'un seul des deux blocs de code qui lui est attaché, selon qu'il fasse beau ou pas.
En Vala, ces conditions s'évaluent dans un type de données particulier, à peine effleuré au chapitre précédent : le type
bool
. Très logiquement, il ne comporte que deux valeurs, qui sont
true
et
false
, respectivement "vrai" et "faux". Chaque expression conditionnelle devra donc invariablement produire
true
ou
false
.
Pour produire des valeurs de type booléen, nous avons besoin d'une liste d'opérateurs particuliers, qui servent à comparer des données d'autres types (n'importe lesquels). Voici ces opérateurs.
| Rôle | Symbole |
|---|
| Égalité |
== |
| Différence |
!= |
| Supérieur à |
>= |
| Supérieur strict |
> |
| Inférieur à |
<= |
| Inférieur strict |
< |
Le test d'égalité est bien un ==, et pas un simple =. En effet, celui-ci sert déjà à l'affectation des variables !
Ainsi, des expressions comme
age >= 18
ou
a == b sont parfaitement correctes, et renverront
true
ou
false
.
Il arrive assez souvent que l'on ait cependant besoin de combiner plusieurs de ces petites expressions pour traiter des cas plus complexes. Par exemple, on veut tester le contraire d'une condition, ou n'exécuter un bloc d'instructions que si une chose
et une autre sont vraies, ou enfin si une condition est vraie,
ou une autre, mais pas nécessairement les deux.
On utilise pour ça trois nouveaux opérateurs. La négation, notée !, le "et logique" &&, et le "ou logique" ||. Par exemple, si vous n'avez pas de rendez-vous galant à l'extérieur et que le réfrigérateur est plein, vous restez chez vous. Avec ces opérateurs, l'expression conditionnelle serait quelque chose comme
(!(rendez_vous)) && (frigo_rempli)
.