Pour qu'un programme soit capable de prendre des décisions, on utilise des conditions dans le code source (on parle aussi de "structures conditionnelles"). Le principe est simple : vous voulez que votre programme réagisse différemment en fonction des circonstances. Nous allons découvrir ici comment utiliser ces fameuses conditions dans nos programmes C++.
Pour commencer, il faut savoir que les conditions permettent de tester des variables. Vous vous souvenez de ces variables stockées en mémoire que nous avons découvertes ? Eh bien nous allons maintenant apprendre à les analyser : "Est-ce que cette variable est supérieure à 10 ?", "Est-ce que cette variable contient bien le mot de passe secret ?"...
Pour effectuer ces tests, nous utilisons des symboles. Voici le tableau des symboles à connaître
par coeur :
| Symbole | Signification |
|---|
| == |
Est égal à |
| > |
Est supérieur à |
| < |
Est inférieur à |
| >= |
Est supérieur ou égal à |
| <= |
Est inférieur ou égal à |
| != |
Est différent de |
Faites très attention, il y a bien 2 symboles "=" pour tester l'égalité. Les débutants oublient souvent cela et n'écrivent qu'un seul "=", ce qui n'a pas la même signification en C++.
Nous allons utiliser ces symboles pour effectuer des comparaisons dans nos conditions.
Il faut savoir qu'il existe plusieurs types de conditions en C++ pour faire des tests, mais la plus importante qu'il faut impérativement connaître est sans aucun doute la condition
if.
La condition if
Comme je vous le disais, les conditions permettent de tester des variables. Je vous propose donc de créer un petit programme en même temps que moi et de faire des tests pour vérifier que vous avez bien compris le principe.
On va commencer avec ce code :
Code : C++ | #include <iostream>
using namespace std;
int main()
{
int nbEnfants(2);
return 0;
}
|
Ce code-là ne fait rien pour le moment. Il se contente de déclarer une variable nbEnfants (qui indique un nombre d'enfants donc), puis il s'arrête.
Une première condition if
Imaginons qu'on souhaite afficher un message de félicitations si la personne a des enfants. On va ajouter une condition qui regarde si le nombre d'enfants est supérieur à 0 et qui affiche un message dans ce cas.
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | #include <iostream>
using namespace std;
int main()
{
int nbEnfants(2);
if (nbEnfants > 0)
{
cout << "Vous avez des enfants, bravo !" << endl;
}
cout << "Fin du programme" << endl;
return 0;
}
|
Ce code affiche :
Code : Console | Vous avez des enfants, bravo !
Fin du programme |
Regardez bien la ligne suivante :
if (nbEnfants > 0)
Elle effectue le test : "
Si le nombre d'enfants est supérieur à 0" (if, en anglais, veut dire "si").
Si ce test est vérifié (donc si la personne a bien des enfants), alors l'ordinateur va lire les lignes qui se trouvent entre les accolades : il va donc afficher le message "Vous avez des enfants, bravo !".
Et si la personne n'a pas d'enfants, qu'est-ce qui se passe ?
Dans le cas où le test n'est pas vérifié, l'ordinateur ne lit pas les instructions qui se trouvent entre accolades. Il saute donc à la ligne qui suit la fermeture des accolades.
Dans notre cas, si la personne n'a aucun enfant, on verra seulement ce message apparaître :
Code : Console
Faites le test ! Changez la valeur de la variable
nbEnfants, mettez-la à 0, et regardez ce qui se passe.
else : ce qu'il faut faire si la condition n'est pas vérifiée
Vous souhaitez que votre programme fasse quelque chose de précis si la condition n'est pas vérifiée ? C'est vrai que pour le moment, le programme est plutôt silencieux si vous n'avez pas d'enfants !
Heureusement, vous pouvez utiliser le mot-clé
else qui signifie "sinon". On va par exemple afficher un autre message si la personne n'a pas d'enfants :
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | #include <iostream>
using namespace std;
int main()
{
int nbEnfants(0);
if (nbEnfants > 0)
{
cout << "Vous avez des enfants, bravo !" << endl;
}
else
{
cout << "Eh bien alors, vous n'avez pas d'enfants ?" << endl;
}
cout << "Fin du programme" << endl;
return 0;
}
|
Ce code affiche :
Code : Console | Eh bien alors, vous n'avez pas d'enfants ?
Fin du programme |
... car j'ai changé la valeur de la variable nbEnfants au début, regardez bien.

Si vous mettez une valeur supérieure à 0, le message redeviendra celui que nous avons vu avant !
Bien, comment ça fonctionne ? C'est très simple en fait : l'ordinateur lit d'abord la condition du
if et se rend compte que la condition est fausse. On vérifie si la personne a au moins 1 enfant et ce n'est pas le cas.
L'ordinateur "saute" tout ce qui se trouve entre les premières accolades et tombe sur la ligne du
else qui signifie "sinon". Il effectue donc les actions indiquées après le
else.
else if : effectuer un autre test
Il est possible de faire plusieurs tests à la suite. Imaginez qu'on souhaite faire le test suivant :
- Si le nombre d'enfants est égal à 0, afficher ce message "[...]"
- Sinon si le nombre d'enfants est égal à 1, afficher ce message "[...]"
- Sinon si le nombre d'enfants est égal à 2, afficher ce message "[...]"
- Sinon, afficher ce message "[...]"
Pour faire tous ces tests un à un dans l'ordre, on va avoir recours à la condition "else if" qui signifie "sinon si". Les tests vont être lus dans l'ordre jusqu'à ce que l'un d'entre eux soit vérifié.
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | #include <iostream>
using namespace std;
int main()
{
int nbEnfants(2);
if (nbEnfants == 0)
{
cout << "Eh bien alors, vous n'avez pas d'enfants ?" << endl;
}
else if (nbEnfants == 1)
{
cout << "Alors, c'est pour quand le deuxieme ?" << endl;
}
else if (nbEnfants == 2)
{
cout << "Quels beaux enfants vous avez la !" << endl;
}
else
{
cout << "Bon, il faut arreter de faire des gosses maintenant !" << endl;
}
cout << "Fin du programme" << endl;
return 0;
}
|
Ca se complique ? Pas tant que ça.
Dans notre cas, nous avons 2 enfants :
- L'ordinateur teste d'abord si on en a 0.
- Comme ce n'est pas le cas, il passe au premier else if : est-ce qu'on a 1 enfant ? Non plus !
- L'ordinateur teste donc le second else if : est-ce qu'on a 2 enfants ? Oui ! Donc on affiche le message "Quels beaux enfants vous avez la !".
Si aucune des conditions n'avait été vérifiée, c'est le message du else "Bon, il faut arreter de faire des gosses maintenant !" qui se serait affiché.
La condition switch
En théorie, la condition if permet de faire tous les tests que l'on veut. En pratique, il existe d'autres façons de faire des tests. La condition switch, par exemple, permet de simplifier l'écriture de conditions qui testent plusieurs valeurs différentes pour une même variable.
Prenez par exemple le test qu'on vient de faire sur le nombre d'enfants :
A-t-il 0 enfants ?
A-t-il 1 enfant ?
A-t-il 2 enfants ?
...
On peut faire ce genre de tests avec des if... else if... else, mais on peut faire la même chose avec une condition switch qui a tendance à rendre le code plus lisible dans ce genre de cas. Voici ce que donnerait la condition précédente avec un switch :
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | #include <iostream>
using namespace std;
int main()
{
int nbEnfants(2);
switch (nbEnfants)
{
case 0:
cout << "Eh bien alors, vous n'avez pas d'enfants ?" << endl;
break;
case 1:
cout << "Alors, c'est pour quand le deuxieme ?" << endl;
break;
case 2:
cout << "Quels beaux enfants vous avez la !" << endl;
break;
default:
cout << "Bon, il faut arreter de faire des gosses maintenant !" << endl;
break;
}
return 0;
}
|
Cela affiche :
Code : Console | Quels beaux enfants vous avez la ! |
La forme est un peu différente : on indique d'abord qu'on va analyser la variable
nbEnfants(ligne 9). Ensuite, on teste tous les cas (
case) possibles : si ça vaut 0, si ça vaut 1, si ça vaut 2...
Les
break sont obligatoires si on veut que l'ordinateur ne continue pas d'autres tests une fois qu'il en a vérifié un. En pratique, je vous conseille d'en mettre toujours comme moi à la fin de chaque
case.
Enfin, le
default à la fin correspond au
else ("sinon") et s'exécute si aucun test précédent n'est vérifié.
Le switch ne permet de tester que l'égalité. Vous ne pouvez pas tester "Si le nombre d'enfants est supérieur à 2" avec un switch : il faut utiliser un if dans ce cas.
De plus, le switch ne peut tester que des nombres entiers (int, unsigned int, char). Il est impossible de tester des nombres décimaux (double) avec un switch.
Le switch est donc limité en terme de possibilités mais il permet d'utiliser une écriture alternative qui peut être parfois pratique dans des cas simples.