Les conditions

Allez on garde du courage, on ne désespère pas ! Ce chapitre et le chapitre suivant seront très simples !

Jusqu'ici, notre programme était cantonné à un déroulement fixe, et prévisible. Si seulement nous pourrions rajouter comme des modules qui s'exécutent seulement et seulement si une condition x est vérifiée...

La structure générale

Mais rassurez vous, c'est possible en C++ ! Et c'est même enfantin. Les conditions (ou structures de contrôle techniquement parlant) sont un composant que l'on retrouve dans absolument tous les langages de programmation, à ma connaissance.

Voici leur syntaxe :

if(condition)
{
    // ...
}
else if(condition2) // facultatif
{
    // ...
}
else // facultatif
{
    // ...
}

Si vous êtes un tantinet anglophone, vous comprendrez aisément le principe. Les conditions en C++ se forment avec trois différents blocs. Le premier bloc est obligatoire et détermine le début d'une structure de contrôle. C'est ce if qui signifie si en anglais.

Son utilisation reste simple, vous écrivez if puis entre parenthèses vous mettez votre condition (par exemple "si l'utilisateur à 3 ans") et enfin entre les accolades { et } vous écrivez le code à exécuter en cas de succès.

Concrètement, la condition est une expression qui peut être plein de choses (nous allons voir juste après). Si elle est évaluée comme étant true, le code entre accolades sera exécuté, sinon l'expression sera évalué comme étant false et le code entre accolades ne sera pas exécuté.

Premièrement, cette expression peut être une comparaison entre deux valeurs, selon le tableau suivant :

Signe Exemple Correspondance
== if(3 == 4) Egal à
!= if(3 != 4) Différent de
< if(3 < 4) Inférieur à
<= if(3 <= 4) Inférieur ou égal à
> if(3 > 4) Supérieur à
>= if(3 >= 4) Supérieur ou égal à

Ainsi en pratique voici plusieurs exemples :

if(3 == 3)
{
    cout << "3 est bien egal a 3" << endl;
}

// On peut aussi utiliser des variables

int a = 3;
int b = 4;

if(a == b) // Ne s'exécutera pas
{
    cout << "a et b sont identiques" << endl;
}
else if(a != b) // S'exécutera
{
    cout << "a est different de b" << endl;
}

// Le else if permet de créer un nouveau bloc si le bloc précédent
// est invalide

if(a < b) // S'exécutera
    cout << "a est plus petit que b" << endl;
else if(a > b) // Ne s'exécutera pas
    cout << "b est plus petit que a" << endl;

// Une forme raccourcie est possible, sans les accolades mais uniquement
// pour insérer une seule instruction.

if(a == b) // Ne s'exécutera pas
    cout << "a et b sont identiques" << endl;
else // S'exécutera
{
    cout << "a et b ne sont pas identiques" << endl;
    cout << "Ceci est un else" << endl;
}

// Le else se lancera que si les précédentes conditions n'ont pas été
// validées.

Je n'utilise pas d'accents car la console Windows a, de base, un peu de mal à les afficher.

Les bool

On en avait parlé il y a quelque chapitres, revenons dessus. C'est un type assez particulier dans le sens où il ne peut contenir que deux valeurs : true et false. Si vous mettez un bool qui vaut true dans une condition, celle-ci sera exécuté, sinon non. Un bool peut être utilisé de multiples manières, voyez ci-contre :

bool a = true;
bool b = false;
bool c = 0; // False
bool d = 1; // True
bool e = 80; // True
bool f = -80; // True
bool g = a != b; // True
bool h = a; // True
bool i = !a; // False

Et oui, regardez bien le dernier exemple ! En réalité, les opérateurs de comparaisons que nous avons eu plus haut retourne un booléen et vous pouvez donc stocker le résultat dans une variable si l'envie vous prend. Ainsi vous pouvez directement passer une variable bool à une condition si cela vous arrange. Et devinez quoi ! Automatiquement, puisque un nombre non nul se "transforme" en true et un nombre nul en false, vous pouvez directement passer un int ou un long ou ce genre de variables dans une condition !

Pratique non :-D ?

Les petits bonus

Car j'aime vous offrir des cadeaux et que je pense à vous, je vais vous offrir une astuce. En effet, vous pouvez mettre plusieurs expressions dans une condition avec les opérateurs logiques qui concatènent (un drôle de mot, oui oui) deux bool en un seul ! Voici un tableau les présentant :

Mot clé Explication Exemple
&& Opérateur logique ET true && true // True et true && false // False
|| Opérateur logique OU false || true // True et false || false // False
! Opérateur logique NON !true // False et !false // True

Ainsi, par exemple, on peut les utiliser de la manière suivante :

bool a = true;
bool b = false;
bool c = true;

if(a && (b || c)) // Valide
    cout << "Condition 1 valide" << endl;

if(!a) // Invalide
    cout << "Condition 2 valide" << endl;

if(!b) // Valide
    cout << "Condition 3 valide" << endl;

Voilà vous savez à peu près tout sur les conditions, ne vous inquiétez pas s'il vous reste des zones d'ombre, nous les éclairerons dans les prochains chapitres au fur et à mesure de la pratique.