▶︎ C05 - Structures sélectives

Programmation C++

BTS CIEL Informatique et Réseaux

Lycée Louis Rascol, Albi




Release : v1.0 (11.10.23)
📧 joris.serrand@rascol.net
🖥️ Site Web : ciel-ir-rascol.github.io
🐙 GitHub : ciel-ir-rascol

▶︎ C05 - Structures sélectives

Contrôler le flux d'exécution du programme

Séquentiellement (Ce qu'on faisait jusqu'à présent)

  • On ordonne de manière séquentielle les instructions, elles sont lues de haut en bas.

Sélectivement (Avec des if(), des switch() case)

  • Le programme prend une décision suite à une condition donnée, il choisit une voie ou une autre.

Itérativement (Avec des boucles while(), for())

  • Le programme répète en boucle une suite d'instruction tant qu'une condition est vraie.
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Opérateurs Relationnels

et

Logiques

Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Opérateurs relationnels

L'écriture d'une condition nécessite souvent l'utilisation d'opérateurs pour tester l'égalité, l'infériorité, la différence ...

Test Opérateur
Égalité ==
Différence !=
Infériorité <
Supériorité >
Infériorité ou Égalité <=
Supériorité ou Égalité >=

‼️ Ne confondez pas l'opérateur d'affection = et l'opérateur relationnel d'égalité ==

Exemple :

// Je teste si tutu est égal à 42
if (tutu == 42) 

// Je mets la valeur 42 dans tutu
tutu = 42;
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Opérateurs logiques

Pour connecter plusieurs conditions et former une condition complexe, on utilise des opérateurs logiques :

Connexion logique Opérateur
not (inverse) !
and (ET logique) &&
or (OU logique) ||

ℹ️ La barre verticale du OU logique | se trouve avec la combinaison Alt Gr + 6 sur un clavier Windows

ℹ️ Le joli nom du symbole & est esperluette en français et ampersand en anglais.

Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structure sélective

if() else

Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structure if()

if(condition){
    // Instructions réalisées si condition VRAIE
    // instruction 1
    // instruction 2
}
// On saute la structure si condition FAUSSE

▶︎ Pour une seule instruction à exécuter les {} ne sont pas obligatoires :

if(condition)
    // Instruction réalisée si condition VRAIE

// On saute la structure si condition FAUSSE
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structure if()

▶︎ Exemples

if (toto>=2 && toto<=5) 
    cout << "toto est compris entre 2 et 5" << endl;

if (toto!=20)
    cout << "toto est différent de 20" << endl;

if (!monBooleen)
    cout << "monBooleen est égal à false" << endl;
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structure if() else

if (condition){
    // Instructions à réaliser si condition est vraie
}
else {
    // Instructions à réaliser si condition est fausse
}

▶︎ Pour une seule instruction à exécuter les {} ne sont pas obligatoires :

if(condition)
    // Instruction réalisée si condition VRAIE
else
    // Instruction à réaliser si condition est fausse
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structure if() else

▶︎ Exemples

if (toto%2==0) 
    cout << "toto est pair !" << endl;
else
    cout << "toto est impair !" << endl;


if (num >= 0)
    cout << "Num est positif" << endl;
else
    cout << "Num est négatif" << endl;
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structures if() else imbriquées

La structure if() else peut s'imbriquer à l'infini :

if(condition1){
    if(condition2){
        // Instructions si condition1 VRAIE et condition2 VRAIE
    }
    else {
        // Instructions si condition1 VRAIE et condition2 FAUSSE
    }
}
else{
        // Instructions si condition1 FAUSSE
}
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structures if() else imbriquées

▶︎ Exemple, les trois états de l'eau :

if (eau >= 100)
    cout << "C'est gazeux !" << endl;
else{
    if (eau > 0)
        cout << "C'est liquide !" << endl;
    else
        cout << "C'est solide !" << endl;
}
Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Imbrication avec else if()

▶︎ Pour plus de compacité on peut utiliser else if() pour imbriquer :

if (eau >= 100)
    cout << "C'est gazeux !" << endl;
else if (eau > 0)
    cout << "C'est liquide !" << endl;
else
    cout << "C'est solide !" << endl;

Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Structure sélective

switch() case

Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Squelette de la structure

switch(variableEntiere){
    case valeur1_variableEntiere : 
        // Instructions à réaliser
        break;
    case valeur2_variableEntiere : 
        // Instructions à réaliser
        break;
    default:
        // Instructions à réaliser si on ne rentre pas dans les
        // 2 cas précédents
}

‼️ N'oubliez pas le break à la fin de chaque case sinon C++ exécutera toute les case suivants !

Programmation C++ • Lycée Louis Rascol, Albi
▶︎ C05 - Structures sélectives

Exemple d'utilisation

▶︎ Affichage du menu principal du programme :
int choix {0};

cout << "*** Menu Principal ***" << endl;
cout << " 1. Afficher Hello !" << endl;
cout << " 2. Afficher  I'm hungry !" << endl;
cout << " 3. Afficher  I'm thirsty !" << endl;

cin >> choix;

▶︎ Structure switch() case en fonction de la valeur de l'entier choix :

switch(choix){
    case 1 : 
        cout << "Hello you !" << endl;
        break;
    case 2 : 
        cout << "I'm hungry !" << endl;
        break;
    case 3 :
        cout << "I'm thirsty !" << endl;
        break;
    default:
        cout << "CHOIX INCORRECT !" << endl;
}
Programmation C++ • Lycée Louis Rascol, Albi