• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

Ce cours existe en livre papier.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 17/10/2022

Structurez votre code avec les conditions

Les programmes doivent être capables de prendre des décisions. Pour y parvenir, on utilise deux sortes de structures de contrôle :

  1. Des conditions : elles permettent d'écrire dans le programme des règles du type : "Si ceci arrive, alors fais cela".

  2. Des boucles : elles permettent de répéter plusieurs fois une série d'instructions.

Dans ce chapitre, nous allons voir comment écrire des conditions et dans quelles situations. Nous verrons les boucles dans le chapitre suivant.

Utilisez les opérateurs de comparaison

Vous vous souvenez de ces variables stockées en mémoire ? 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 effectuer ces tests, il y a des symboles à connaître par cœur :

Symbole

Signification

==

Est égal à

>

Est supérieur à

<

Est inférieur à

>=

Est supérieur ou égal à

<=

Est inférieur ou égal à

!=

Est différent de

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

Dans ce screencast, nous allons voir comment utiliser l’ensemble de ces opérateurs pour vérifier des conditions. Ainsi, vous vous familiariserez avec les opérateurs de comparaison.

Testez des variables avec la condition de base : if else

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 :

#include <iostream>

using namespace std;

int main()
{
    int nbAnimaux(2);

    return 0;
}

Ce code-là ne fait rien pour le moment. Il se contente de déclarer une variable nbAnimaux  (qui indique donc un nombre d'animaux de compagnie), puis il s'arrête.

Ouvrez la condition avec un if

Imaginons qu'on souhaite afficher un message si la personne a des animaux de compagnie. On va ajouter une condition qui regarde si le nombre d'animaux est supérieur à 0 et qui, dans ce cas, affiche un message :

#include <iostream>

using namespace std;

int main()
{
    int nbAnimaux(2);

    if (nbAnimaux > 0)
    {
        cout << "Super ! Les animaux de compagnie ca change la vie !" << endl;
    }

    cout << "Fin du programme" << endl;
    return 0;
}

Ce code affiche :

Super les animaux de compagnie ca change la vie !
Fin du programme

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

Elle effectue le test : "Si le nombre d'animaux est supérieur à 0" ("if", en anglais, veut dire "si").
Si ce test est vérifié (donc si la personne a bien des animaux de compagnie), alors l'ordinateur va lire les lignes qui se trouvent entre les accolades : il va donc afficher le message "Super ! Les animaux de compagnie ça change la vie !".

Et si la personne n'a pas d'animaux de compagnie, 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 animal de compagnie, on verra seulement ce message apparaître :

Fin du programme

Changez la valeur de la variable nbAnimaux  , passez-la à 0 et regardez ce qui se produit.

Écrivez ce qu'il faut faire si la condition n'est pas vérifiée avec  else

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'animal de compagnie !

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'animaux chez elle :

#include <iostream>

using namespace std;

int main()
{
    int nbAnimaux(0);

    if (nbAnimaux > 0)
    {
        cout << "Super ! Les animaux de compagnie ca change la vie !" << endl;
    }
    else
    {
        cout << "Vous n'avez pas d'animaux de compagnie" << endl;
    }

    cout << "Fin du programme" << endl;
    return 0;
}

Ce code affiche :

Vous n'avez pas d'animaux de compagnie
Fin du programme

... car j'ai changé la valeur de la variable nbAnimaux 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érifie si la personne a au moins 1 animal de compagnie 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 signifie "sinon". Il effectue donc les actions indiquées après  else  .

Effectuez un autre test avec  else if

Il est possible de faire plusieurs tests à la suite, comme :

  • si le nombre d'animaux est égal à 0, afficher ce message "[...]" ;

  • sinon, si le nombre d'animaux est égal à 1, afficher ce message "[...]" ;

  • sinon, si le nombre d'animaux 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é.

#include <iostream>

using namespace std;

int main()
{
    int nbAnimaux(2);

    if (nbAnimaux == 0)
    {
        cout << "Vous n'avez pas d'animaux de compagnie" << endl;
    }
    else if (nbAnimaux == 1)
    {
        cout << "C'est super d'avoir un fidele compagnon !" << endl;
    }
    else if (nbAnimaux == 2)
    {
        cout << "Ca doit en faire du monde a la maison !" << endl;
    }
    else
    {
        cout << "Votre budget croquettes doit etre important" << endl;
    }

    cout << "Fin du programme" << endl;
    return 0;
}

Dans notre cas, nous avons 2 animaux de compagnie :

  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 animal de compagnie ? Non plus !

  3. L'ordinateur teste donc le second else if  : est-ce qu'on a 2 animaux ? Oui ! Donc on affiche le message "Ca doit en faire du monde a la maison !".

Si aucune des conditions n'avait été vérifiée, c'est le message du else "Votre budget croquettes doit être important" qui serait affiché.

Dans le screencast suivant, nous allons reprendre un exemple différent et voir comment tirer parti de ces 3 mots-clés  if ,  else if  et if  pour effectuer différentes actions en fonction de plusieurs conditions :

Rendez votre code plus lisible avec des conditions switch

Prenez par exemple le test que l'on vient de faire sur le nombre d'animaux de compagnie :

  • A-t-il 0 animal ?

  • A-t-il 1 animal?

  • A-t-il 2 animaux ?...

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, dans ce genre de cas, a tendance à rendre le code plus lisible. Voici ce que donnerait le code précédent avec switch  :

#include <iostream>

using namespace std;

int main()
{
    int nbAnimaux(2);

    switch (nbAnimaux)
    {
        case 0:
            cout << "Vous n'avez pas d'animaux de compagnie" << endl;
            break;

        case 1:
            cout << "C'est super d'avoir un fidele compagnon !" << endl;
            break;

        case 2:
            cout << "Ca doit en faire du monde a la maison !" << endl;
            break;

        default:
            cout << "Votre budget croquettes doit etre important" << endl;
            break;
    }

    return 0;
}

Ce qui affiche :

Ca doit en faire du monde à la maison !

La forme est un peu différente :

  1. On indique d'abord qu'on va analyser la variable nbAnimaux (ligne 9).

  2. On teste tous les cas ( case  ) possibles : si la variable vaut 0, si elle vaut 1, si elle vaut 2...

  3. Les break sont obligatoires si on veut que l'ordinateur arrête les tests une fois que l'un d'eux a réussi. Je vous conseille d'en mettre comme moi à la fin de chaque case  .

  4. Enfin, le default correspond au else  ("sinon"), et s'exécute si aucun des tests précédents n'est vérifié.

Dans la vidéo suivante, nous allons voir comment implémenter un switch case avec un exemple simple. Nous allons évaluer un entier, et proposer différents affichages en fonction des cas. Nous allons aussi voir l’importance du break.

Allons un peu plus loin avec les conditions. Nous allons découvrir deux notions plus avancées et néanmoins essentielles : les booléens et les combinaisons de conditions.

Vérifiez des valeurs true ou false avec des booléens

Si je vous parle du type bool  , c'est parce qu'on peut l'utiliser d'une façon un peu particulière dans les conditions. Pour commencer, regardez ce code :

bool adulte(true);

if (adulte == true)
{
    cout << "Vous etes un adulte !" << endl;
}

Cette condition, qui vérifie la valeur de la variable adulte  , affiche un message si celle-ci vaut vrai ( true  ).

Vous vous demandez peut-être où je veux en venir ? En fait, il est possible d'omettre la partie == true   dans la condition, cela revient au même ! Regardez ce code, qui est équivalent :

bool adulte(true);

if (adulte)
{
    cout << "Vous etes un adulte !" << endl;
}

L'ordinateur comprend que vous voulez vérifier si la variable booléenne vaut true  . Il n'est pas nécessaire de rajouter == true  .

Est-ce que cela ne rend pas le code plus difficile à lire ?

Non, au contraire : le code est plus court et plus facile à lire !
if (adulte)  se lit tout simplement "S'il est adulte".

Je vous invite à utiliser cette notation raccourcie quand vous testerez des variables booléennes. Cela vous aidera à clarifier votre code et à rendre certaines conditions plus faciles à lire.

Combinez des conditions

Pour les conditions les plus complexes, sachez que vous pouvez faire plusieurs tests au sein d'un seul et même if  . Pour cela, il va falloir utiliser de nouveaux mots-clés :

and

ET

or

OU

not

NON

Vous pourriez aussi utiliser les symboles hérités du langage C, car ils sont équivalents :

&&

ET

||

OU

!

NON

… mais je vous incite quand même à utiliser la méthode avec les mots-clés.

Testez "ET" avec  and

Disons qu'on veuille tester si la personne est adulte et si elle a au moins 1 enfant. On va donc écrire :

if (adulte and nbEnfants >= 1)

Le mot-clé and signifie "ET". Notre condition se dirait en français : « Si la personne est adulte ET si le nombre d'enfants est supérieur ou égal à 1 ».

Testez "OU" avec  or

Pour faire un "OU", on utilise le mot-clé or  . 

On peut par exemple tester si le nombre d'enfants est égal à 1 OU 2 :

if (nbEnfants == 1 or nbEnfants == 2)

Testez "NON" avec  not

Il faut maintenant que je vous présente un dernier mot-clé :  not  . 
Vous devez mettre ce mot-clé avant votre condition pour pouvoir dire "Si cela n'est pas vrai" :

if (not adulte)

Cela pourrait se traduire par "Si la personne n'est pas adulte".

En résumé

  • Les conditions permettent de tester la valeur des variables et de modifier le comportement du programme en conséquence.

  • La condition de type if  (si) ... else if  (sinon si) ... else  (sinon) est la plus courante.

  • La condition switch  , plus spécifique, permet de tester les différentes valeurs possibles d'une seule variable.

Dans le chapitre suivant, nous allons partir à la découverte du dernier gros bloc de base de la programmation en C++ : les boucles !

Exemple de certificat de réussite
Exemple de certificat de réussite