• Aucun résultat trouvé

Pour qu'un programme soit capable de prendre des décisions, on utilise dans le code source des conditions (on parle aussi de structures conditionnelles ). Le principe est simple : vous voulez que votre programme réagisse dié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 au chapitre précédent ? 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 ? , etc.

Pour eectuer ces tests, nous utilisons des symboles. Voici le tableau des symboles à connaître par c÷ur :

Symbole Signication

== Est égal à

> Est supérieur à

< Est inférieur à

>= Est supérieur ou égal à

<= Est inférieur ou égal à

!= Est diérent de

Faites très attention : en C++, 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 signication.

Nous allons utiliser ces symboles pour eectuer des comparaisons dans nos conditions.

Il faut savoir qu'il existe en C++ plusieurs types de conditions 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érier que vous avez bien compris le principe.

On va commencer avec ce code :

#include <iostream>

using namespace std;

LES CONDITIONS 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 donc un nombre d'enfants), puis il s'arrête.

Une première condition if

Imaginons qu'on souhaite acher un message de félicitations si la personne a des en-fants. On va ajouter une condition qui regarde si le nombre d'enfants est supérieur à 0 et qui, dans ce cas, ache un message.

#include <iostream>

cout << "Vous avez des enfants, bravo !" << endl;

}

cout << "Fin du programme" << endl;

return 0;

}

Ce code ache :

Vous avez des enfants, bravo ! Fin du programme

Regardez bien la ligne suivante : if (nbEnfants > 0)

Elle eectue le test : Si le nombre d'enfants est supérieur à 0 1. Si ce test est vérié (donc si la personne a bien des enfants), alors l'ordinateur va lire les lignes qui se trouvent entre les accolades : il va donc acher le message Vous avez des enfants, bravo ! .

1. if , en anglais, veut dire si .

CHAPITRE 6. LES STRUCTURES DE CONTRÔLE

Et si la personne n'a pas d'enfants, qu'est-ce qui se passe ?

Dans le cas où le résultat du test est négatif, l'ordinateur ne lit pas les instructions qui se trouvent entre les 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 appa-raître :

Fin du programme

Faites le test ! Changez la valeur de la variable nbEnfants, passez-la à 0 et regardez ce qui se produit.

else : ce qu'il faut faire si la condition n'est pas vériée

Vous souhaitez que votre programme fasse quelque chose de précis si la condition n'est pas vériée ? C'est vrai que, pour le moment, le programme est plutôt silencieux si vous n'avez pas d'enfant !

Heureusement, vous pouvez utiliser le mot-clé else qui signie sinon . On va par exemple acher un autre message si la personne n'a pas d'enfant :

#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'enfant ?" << endl;

}

cout << "Fin du programme" << endl;

return 0;

}

Ce code ache :

LES CONDITIONS

Eh bien alors, vous n'avez pas d'enfant ? 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 ! Comment cela fonctionne-t-il ? 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. Il vérie 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 else qui signie sinon . Il eectue donc les actions indiquées après else (gure6.1).

Figure 6.1 Condition if - else

else if : eectuer 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, acher ce message [. . .] ; sinon, si le nombre d'enfants est égal à 1, acher ce message [. . .] ; sinon, si le nombre d'enfants est égal à 2, acher ce message [. . .] ; sinon, acher ce message [. . .] .

Pour faire tous ces tests un à un dans l'ordre, on va avoir recours à la condition else if qui signie sinon si . Les tests vont être lus dans l'ordre jusqu'à ce que l'un d'entre eux soit vérié.

#include <iostream>

using namespace std;

int main() {

int nbEnfants(2);

CHAPITRE 6. LES STRUCTURES DE CONTRÔLE

if (nbEnfants == 0) {

cout << "Eh bien alors, vous n'avez pas d'enfant ?" << 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;

}

Cela se complique ? Pas tant que cela.

Dans notre cas, nous avons 2 enfants : 1. L'ordinateur teste d'abord si on en a 0.

2. Comme ce n'est pas le cas, il passe au premier else if : est-ce qu'on a 1 enfant ? Non plus !

3. L'ordinateur teste donc le second else if : est-ce qu'on a 2 enfants ? Oui ! Donc on ache le message Quels beaux enfants vous avez la ! .

Si aucune des conditions n'avait été vériée, c'est le message du else Bon, il faut arreter de faire des gosses maintenant ! qui serait aché (gure6.2).

Documents relatifs