Vous êtes sur la page 1sur 24

Jusqu’ici, toutes les instructions des programmes étaient exécutées, et les unes après

les autres.

Branchements conditionnels Les structures de contrôle permettent de changer ce comportement.

Il y a 3 structures de contrôle:
•  les branchements conditionnels,
•  les itérations, et
•  les boucles conditionnelles.

Nous allons commencer par les branchements conditionnels, qui permet de sauter
certaines parties du programme si certaines conditions sont remplies, et qui utilisent le
mot-clé if.

#include <iostream>
using namespace std;

int main()
{
int n;

cout << "Entrez votre nombre:" << endl;


cin >> n;

if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

cout << "Au revoir" << endl;

return 0;
}

1
Mot-clé if Condition

if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

Une accolade ouvrante Cette instruction sera exécutée si la condition est vraie.

if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

2
Une accolade fermante Le mot-clé else

if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

Une accolade ouvrante

if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

Cette instruction sera exécutée si la condition est fausse.

3
int n;
n
cout << "Entrez votre nombre:" << endl;
cin >> n;
?
if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl;
} else {
cout << "Votre nombre est plus grand ou egal a 5." << endl;
}
if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Au revoir" << endl;
} else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; Ce qui s'affiche dans la fenêtre Terminal:
} ▌

Une accolade fermante

int n; int n;
n n
cout << "Entrez votre nombre:" << endl; cout << "Entrez votre nombre:" << endl;
cin >> n; cin >> n;
? 3
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
▌ 3

4
int n; int n;
n n
cout << "Entrez votre nombre:" << endl; cout << "Entrez votre nombre:" << endl;
cin >> n; cin >> n;
? 3 3
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
3 3
▌ ▌

int n; int n;
n n
cout << "Entrez votre nombre:" << endl; cout << "Entrez votre nombre:" << endl;
cin >> n; cin >> n;
3 3
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
3 3
Votre nombre est plus petit que 5. Votre nombre est plus petit que 5.
▌ ▌

5
int n; int n;
n n
cout << "Entrez votre nombre:" << endl; cout << "Entrez votre nombre:" << endl;
cin >> n; cin >> n;
3 ? 7
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
3 7
Votre nombre est plus petit que 5. ▌
Au revoir

int n; int n;
n n
cout << "Entrez votre nombre:" << endl; cout << "Entrez votre nombre:" << endl;
cin >> n; cin >> n;
? 7 7
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
7 7
▌ ▌

6
int n;
n
cout << "Entrez votre nombre:" << endl;
cin >> n;
7
if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl;
} else { if (n < 5) {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl;
cout << "Au revoir" << endl; }

Ce qui s'affiche dans la fenêtre Terminal:


Entrez votre nombre:
7
Au revoir

Les accolades délimitent un bloc d'instructions Les accolades délimitent un bloc d'instructions
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} else { } else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; cout << "Votre nombre est plus grand ou egal a 5." << endl;
} }

7
On peut mettre autant d'instructions qu'on veut dans un bloc.
Supposons qu'on veuille aussi afficher la valeur de n quand n est plus petit que 5. Quand un bloc contient une seule instruction, il n'est pas obligatoire d'utiliser des accolades.
Il suffit d'ajouter une instruction dans le premier bloc: On aurait pu écrire:

if (n < 5) { if (n < 5)
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
cout << "Votre nombre est " << n << endl; else
} else { cout << "Votre nombre est plus grand ou egal a 5." << endl;
cout << "Votre nombre est plus grand ou egal a 5." << endl;
} Néanmoins, une bonne pratique est de toujours utiliser des blocs, même quand il n'y a qu'une seule
instruction.
Ca facilite l'ajout d'instructions.

n
int n;

Une instruction if peut ne pas avoir de deuxième partie.


Par exemple, si on veut ne rien afficher si n est plus grand ou égal à 5, il suffit d'enlever la deuxième
cout << "Entrez votre nombre:" << endl;
cin >> n; 3
partie, à partir du else:
if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl;
if (n < 5) {
}
cout << "Votre nombre est plus petit que 5." << endl;
}
cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal:


Entrez votre nombre:
3

8
n n
int n; int n;

cout << "Entrez votre nombre:" << endl;


cin >> n; 3 cout << "Entrez votre nombre:" << endl;
cin >> n; 3
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
3 3
Votre nombre est plus petit que 5. Votre nombre est plus petit que 5.
▌ Au revoir

n n
int n; int n;

cout << "Entrez votre nombre:" << endl;


cin >> n; 7 cout << "Entrez votre nombre:" << endl;
cin >> n; 7
if (n < 5) { if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; cout << "Votre nombre est plus petit que 5." << endl;
} }

cout << "Au revoir" << endl; cout << "Au revoir" << endl;

Ce qui s'affiche dans la fenêtre Terminal: Ce qui s'affiche dans la fenêtre Terminal:
Entrez votre nombre: Entrez votre nombre:
7 7
▌ Au revoir

9
Les choix imbriqués Choix imbriqués: exemple
if (x == y) {
L’instruction if suit donc le schéma:
if (y == z) {
if (condition1) {
cout << "Les trois valeurs sont egales." << endl;
... } else {
} else { cout << "Seules les deux premieres valeurs sont egales." << endl;
... }
} } else {
if (x == z) {
Les instructions figurant dans les blocs sont absolument quelconques. Il peut donc s’agir d’autres cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
instructions if. } else {
if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else {
cout << "Les trois valeurs sont differentes." << endl;
}
}
}

Choix imbriqués: exemple Supposons:


x y z

if (x == y) { if (x == y) { 1 1 1
if (y == z) { if (y == z) {
cout << "Les trois valeurs sont egales." << endl; cout << "Les trois valeurs sont egales." << endl;
} else { } else {
cout << "Seules les deux premieres valeurs sont egales." << endl; cout << "Seules les deux premieres valeurs sont egales." << endl;
} }
} else { Attention à ne pas abuser de cette solution. } else {
if (x == z) { if (x == z) {
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
} else { Au-delà de 3 niveaux, le code devient vite illisible! } else {
if (y == z) { if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl; cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { } else {
cout << "Les trois valeurs sont differentes." << endl; cout << "Les trois valeurs sont differentes." << endl;
} }
} }
} }

10
x y z x y z
Supposons: Supposons:
if (x == y) { 1 1 1 if (x == y) { 1 1 1
if (y == z) { if (y == z) {
cout << "Les trois valeurs sont egales." << endl; cout << "Les trois valeurs sont egales." << endl;
} else { } else {
cout << "Seules les deux premieres valeurs sont egales." << endl; cout << "Seules les deux premieres valeurs sont egales." << endl;
} }
Les trois valeurs sont egales. est affiché
} else { } else {
if (x == z) { if (x == z) {
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
} else { } else {
if (y == z) { if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl; cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { } else {
cout << "Les trois valeurs sont differentes." << endl; cout << "Les trois valeurs sont differentes." << endl;
} }
} }
} }

x y z x y z
Supposons: Supposons:
if (x == y) { 1 1 1 if (x == y) { 1 1 1
if (y == z) { if (y == z) {
cout << "Les trois valeurs sont egales." << endl; cout << "Les trois valeurs sont egales." << endl;
} else { } else {
cout << "Seules les deux premieres valeurs sont egales." << endl; cout << "Seules les deux premieres valeurs sont egales." << endl;
} }
} else { } else {
if (x == z) { if (x == z) {
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
} else { } else {
if (y == z) { if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl; cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { } else {
cout << "Les trois valeurs sont differentes." << endl; cout << "Les trois valeurs sont differentes." << endl;
} }
} }
} }

11
x y z x y z
Supposons: Supposons:
if (x == y) { 1 2 2 if (x == y) { 1 2 2
if (y == z) { if (y == z) {
cout << "Les trois valeurs sont egales." << endl; cout << "Les trois valeurs sont egales." << endl;
} else { } else {
cout << "Seules les deux premieres valeurs sont egales." << endl; cout << "Seules les deux premieres valeurs sont egales." << endl;
} }
} else { } else {
if (x == z) { if (x == z) {
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
} else { } else {
if (y == z) { if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl; cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { } else {
cout << "Les trois valeurs sont differentes." << endl; cout << "Les trois valeurs sont differentes." << endl;
} }
} }
} }

x y z x y z
Supposons: Supposons:
if (x == y) { 1 2 2 if (x == y) { 1 2 2
if (y == z) { if (y == z) {
cout << "Les trois valeurs sont egales." << endl; cout << "Les trois valeurs sont egales." << endl;
} else { } else {
cout << "Seules les deux premieres valeurs sont egales." << endl; cout << "Seules les deux premieres valeurs sont egales." << endl;
} }
} else { } else {
if (x == z) { if (x == z) {
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
} else { } else {
if (y == z) { if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl; cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { } else {
cout << "Les trois valeurs sont differentes." << endl; Seules
cout << "Les lesvaleurs
trois deux dernieres valeurs sont
sont differentes." egales. est affiché
<< endl;
} }
} }
} }

12
x y z x y z
Supposons: Supposons:
if (x == y) { 1 2 2 if (x == y) { 1 2 2
if (y == z) { if (y == z) {
cout << "Les trois valeurs sont egales." << endl; cout << "Les trois valeurs sont egales." << endl;
} else { } else {
cout << "Seules les deux premieres valeurs sont egales." << endl; cout << "Seules les deux premieres valeurs sont egales." << endl;
} }
} else { } else {
if (x == z) { if (x == z) {
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; cout << "Seules la premiere et la troisieme valeurs sont egales." << endl;
} else { } else {
if (y == z) { if (y == z) {
cout << "Seules les deux dernieres valeurs sont egales." << endl; cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { } else {
cout << "Les trois valeurs sont differentes." << endl; cout << "Les trois valeurs sont differentes." << endl;
} }
} }
} }

x y z
Supposons:
Les conditions
if (x == y) { 1 2 2
if (y == z) { L’instruction if fait apparaître une condition entre parenthèses
cout << "Les trois valeurs sont egales." << endl;
} else {
Condition
cout << "Seules les deux premieres valeurs sont egales." << endl;
}
} else { if (n < 5) {
if (x == z) { cout << "Votre nombre est plus petit que 5." << endl;
cout << "Seules la premiere et la troisieme valeurs sont egales." << endl; } else {
} else { cout << "Votre nombre est plus grand ou egal a 5." << endl;
if (y == z) { }
cout << "Seules les deux dernieres valeurs sont egales." << endl;
} else { Attention, la condition est toujours entourée de parenthèses.
cout << "Les trois valeurs sont differentes." << endl;
}
}
}

13
Valeurs des conditions

Une condition est un cas particulier d'expression, qui ne peut prendre que deux valeurs. Pour l’instant, nous n’avons rencontré que des conditions simples, comme n < 5 ou x == y.

En C++, ces valeurs se notent true et false. Nous allons voir maintenant comment s’écrivent les conditions d’une façon générale.

•  Une condition vaut true quand elle est vraie, et


•  une condition vaut false quand elle est fausse.

Par exemple, la condition n < 5 vaut true si n vaut 0, et false si n vaut 10.

Les conditions Les conditions simples


L’instruction if fait apparaître une condition entre parenthèses Les opérateurs de comparaison
Condition Une condition simple compare deux expressions.
Elle utilise un opérateur de comparaison, comme < ou >
if (n < 5) {
cout << "Votre nombre est plus petit que 5." << endl; Opérateurs de comparaison du langage C++:
} else {
cout << "Votre nombre est plus grand ou egal a 5." << endl; Opérateur de comparaison Signification
} < inférieur à
> supérieur à
Attention, la condition est toujours entourée de parenthèses.
== égal à
<= inférieur ou égal à
Pour l’instant, nous n’avons rencontré qu'une condition simple, n < 5
>= supérieur ou égal à
!= différent de
Nous allons voir maintenant comment s’écrivent les conditions d’une façon générale.

14
Les conditions
Attention: simples
L'opérateur pour tester si deux valeurs sont égales s'écrit avec deux
Les opérateurs de comparaison
signes égal ==

Une conditionUn seul signe


simple = représente
compare l'affectation
deux expressions. Attention:
Elle utilise un opérateur de comparaison, comme < ou > Il n'y a pas d'espaces entre les deux
Par exemple, si on veut tester si la variable n est égale à 5, il faut caractères
écrire:
Opérateurs de comparaison du langage C++:
if (n == 5)
Opérateur de comparaison Signification Opérateur de comparaison Signification
et non pas: < inférieur à < inférieur à
if (n = 5)> >
supérieur à supérieur à
== égal à == égal à
<= inférieur ou égal à <= inférieur ou égal à
>= supérieur ou égal à >= supérieur ou égal à
!= différent de != différent de

int a(1); int a(1);


int b(2); int b(2);

if (a == b) { if (a != b) {
cout << "Cas 1" << endl; cout << "Cas 2" << endl;
} else { } else {
cout << "Cas 2" << endl; cout << "Cas 1" << endl;
} }

if (2 * a == b){ if (2 * a != b) {
cout << "b est egal au double de a." << endl; cout << "b est different du double de a." << endl;
} }

affiche affiche

Cas 2 Cas 2
b est egal au double de a. b est different du double de a.

15
int a(1);
int b(2); Les opérateurs logiques
if (a <= b) { On peut relier des conditions simples par des opérateurs logiques.
cout << "Cas 3" << endl;
} else { L'opérateur logique and (ET):
cout << "Cas 4" << endl;
} par exemple, la condition

if (2 * a <= b) { (a < b) and (c < d)


cout << "b est superieur ou egal au double de a." << endl;
} est vraie uniquement si les deux conditions (a < b) et (c < d) sont toutes les deux vraies.

affiche L'opérateur and peut aussi s'écrire &&: On aurait pu écrire

Cas 3 (a < b) && (c < d)


b est superieur ou egal au double de a.

Exemple avec l'opérateur logique and Exemple avec l'opérateur logique and
n
cout << "Entrez un nombre entre 1 et 10:" << endl; cout << "Entrez un nombre entre 1 et 10:" << endl;
cin >> n; cin >> n;
faux 0
faux
Supposons que la valeur
if ((n >= 1) and (n <= 10)) { if ((n >= 1) and (n <= 10)) { entrée pour n soit 0
cout << "correct" << endl; cout << "correct" << endl;
} else { } else {
cout << "incorrect" << endl; cout << "incorrect" << endl; incorrect est affiché
} }

16
Exemple avec l'opérateur logique and Exemple avec l'opérateur logique and
n n
cout << "Entrez un nombre entre 1 et 10:" << endl; cout << "Entrez un nombre entre 1 et 10:" << endl;
cin >> n; cin >> n;
faux 12 vrai 5
vrai faux vrai vrai
Supposons que la valeur Supposons que la valeur
if ((n >= 1) and (n <= 10)) { entrée pour n soit 12 if ((n >= 1) and (n <= 10)) { entrée pour n soit 12
cout << "correct" << endl; cout << "correct" << endl;
} else { } else {
cout << "incorrect" << endl; incorrect est affiché cout << "incorrect" << endl; correct est affiché
} }

Les opérateurs logiques Exemple avec l'opérateur logique or


L'opérateur logique or (OU): cout << "Entrez deux valeurs:" << endl;
cin >> m >> n;
par exemple, la condition

(a < b) or (c < d) if ((m >= 0) or (n >= 0)) {


cout << "au moins une valeur est positive" << endl;
} else {
est vraie si au moins une des deux conditions (a < b) ou (c < d) est vraie.
cout << "les deux valeurs sont negatives" << endl;
}
L'opérateur or peut aussi s'écrire ||: On aurait pu écrire

(a < b) || (c < d)

17
Exemple avec l'opérateur logique or Exemple avec l'opérateur logique or
cout << "Entrez deux valeurs:" << endl; m n cout << "Entrez deux valeurs:" << endl; m n
cin >> m >> n; cin >> m >> n;
vrai
vrai
vrai 1 -1 faux vrai -1 1
if ((m >= 0) or (n >= 0)) { if ((m >= 0) or (n >= 0)) {
cout << "au moins une valeur est positive" << endl; cout << "au moins une valeur est positive" << endl;
} else { } else {
cout << "les deux valeurs sont negatives" << endl; cout << "les deux valeurs sont negatives" << endl;
} }
Supposons que la valeur entrée pour m soit +1, et la Supposons que la valeur entrée pour m soit -1, et la
valeur entrée pour n soit -1 valeur entrée pour n soit +1

au moins une valeur est positive est affiché au moins une valeur est positive est affiché

Exemple avec l'opérateur logique or Les opérateurs logiques

cout << "Entrez deux valeurs:" << endl; m n L'opérateur logique not (NON):
cin >> m >> n;
faux
par exemple, la condition
faux faux -1 1
if ((m >= 0) or (n >= 0)) { not(a < b)
cout << "au moins une valeur est positive" << endl;
} else { est vraie si (a < b) est fausse, et fausse si (a < b) est vraie.
cout << "les deux valeurs sont negatives" << endl;
}
L'opérateur not peut aussi s'écrire !: On aurait pu écrire
Supposons que la valeur entrée pour m soit -1, et la !(a < b)
valeur entrée pour n soit -1
Nous verrons des exemples d'utilisation de cet opérateur plus loin dans la suite du cours.
les deux valeurs sont negatives est affiché

18
Erreurs classiques Erreurs classiques
Le test d'égalité s'écrit ==, et pas = if (a == 1); // !!!
cout << "a vaut 1" << endl;
if (a = 1) // !!!
a vaut 1 est toujours affiché quelle que soit la valeur de a!
est accepté par le compilateur mais
–  ne teste pas si a vaut 1, et Le point-virgule est considéré comme une instruction, qui ne fait rien.
–  affecte la valeur 1 à a. Le code précédent est compris par le compilateur comme:
if (a == 1)
Utilisé avec –Wall, g++ affiche le warning suivant: ;
warning: suggest parentheses around assignment used as truth value cout << "a vaut 1" << endl;
ou si vous avez une installation en Français:
attention : parenthèses suggérées autour de l'affectation utilisée le cout est donc situé après le if.
comme valeur de vérité Aucun warning n'est affiché.

Erreurs classiques
Ne pas oublier les accolades, l'indentation ne suffit pas:
if (n < p)
Si on utilise des accolades même quand il n'y a qu'une instruction dans le bloc, et cout << "n est plus petit que p" << endl;
qu'on écrive le test de la façon suivante: max = p;
else
cout << "n est plus grand ou egal a p" << endl;
if (a == 1) {
cout << "a vaut 1" << endl; génère à la compilation l'erreur:
} syntax error before "else"

Voici une meilleure présentation du code précédent:


l'erreur précédente a beaucoup moins de chance d'arriver.
if (n < p)
cout << "n est plus petit que p" << endl;

max = p;
L’instruction max = p; est déjà en
else
dehors du if !
cout << "n est plus grand ou egal a p" << endl;

19
cout << "Entrez le premier nombre:" << endl; cout << "Entrez le premier nombre:" << endl;
cin >> n; cin >> n;
cout << "Entrez le deuxieme nombre:" << endl; cout << "Entrez le deuxieme nombre:" << endl;
cin >> p; cin >> p;

if ((n < p) and (2 * n >= p)) { if ((n < p) and (2 * n >= p)) {
cout << "1"; cout << "1";
} }
Rappel: Rappel:
if ((n < p) or (2 * n >= p)) { if ((n < p) or (2 * n >= p)) {
cout << "2"; •  Pour le ET (and): cout << "2"; •  Pour le ET (and):
} les deux conditions doivent être vraies; } les deux conditions doivent être vraies;

if (n < p) { •  Pour le OU (or): if (n < p) { •  Pour le OU (or):


if (2 * n >= p) { au moins l’une des conditions doit être vraie. if (2 * n >= p) { au moins l’une des conditions doit être vraie.
cout << "3"; cout << "3";
} else { } else {
cout << "4"; cout << "4";
} }
} A: 2 } A: 2
? ?
cout << endl; B: 24 cout << endl; B: 24
Qu’affiche ce programme quand l’utilisateur entre 1 et 2 ? C: 123 Qu’affiche ce programme quand l’utilisateur entre 1 et 3 ? C: 123
D: 1234 D: 1234

cout << "Entrez le premier nombre:" << endl;


cin >> n;
cout << "Entrez le deuxieme nombre:" << endl;
cin >> p;

if ((n < p) and (2 * n >= p)) {


cout << "1";
}

if ((n < p) or (2 * n >= p)) {


cout << "2";
Rappel:

•  Pour le ET (and):
Le type booléen (bool)
} les deux conditions doivent être vraies;

if (n < p) { •  Pour le OU (or):


if (2 * n >= p) { au moins l’une des conditions doit être vraie.
cout << "3";
} else {
cout << "4";
}
} A: 2
?
cout << endl; B: 24
Qu’affiche ce programme quand l’utilisateur entre 2 et 1 ? C: 123
D: 1234

20
Le type bool Le type bool
Le type bool (pour boolean, ou booléen) est le type des conditions. Le type bool (pour boolean, ou booléen) est le type des conditions.

Il permet de déclarer des variables contenant la valeur d'une condition. Il permet de déclarer des variables contenant la valeur d'une condition.

Une variable de type booléen est souvent appelée simplement un booléen. Une variable de type booléen est souvent appelée simplement un booléen.

Comme les conditions, un booléen ne peut prendre que deux valeurs possibles: true ou false Comme les conditions, un booléen ne peut prendre que deux valeurs possibles: true ou false

Exemple: Exemple:
int a(1); int a(1);
int b(2); int b(2);
bool test1(a == b); bool test1(a == b);
bool test2(a < b); bool test2(a < b);

Le type bool Le type bool


Le type bool (pour boolean, ou booléen) est le type des conditions. Le type bool (pour boolean, ou booléen) est le type des conditions.

Il permet de déclarer des variables contenant la valeur d'une condition. Il permet de déclarer des variables contenant la valeur d'une condition.

Une variable de type booléen est souvent appelée simplement un booléen. Une variable de type booléen est souvent appelée simplement un booléen.

Comme les conditions, un booléen ne peut prendre que deux valeurs possibles: true ou false Comme les conditions, un booléen ne peut prendre que deux valeurs possibles: true ou false

test1 test1
Exemple: Exemple:
int a(1); int a(1);
int b(2); false int b(2); false
bool test1(a == b); bool test1(a == b);
bool test2(a < b); bool test2(a < b);

21
Le type bool On peut initialiser des booléens à l'aide des constantes false et true.

Le type bool (pour boolean, ou booléen) est le type des conditions. On peut utiliser des booléens comme des conditions. Par exemple:
•  on peut utiliser des opérateurs logiques (and, or et not) entre booléens;
Il permet de déclarer des variables contenant la valeur d'une condition. •  on peut utiliser un booléen comme condition dans un if.

Une variable de type booléen est souvent appelée simplement un booléen. int a(1);
int b(2);
Comme les conditions, un booléen ne peut prendre que deux valeurs possibles: true ou false
bool c(true);
bool d(a == b);
test1 test2 bool e(d or (a < b));
Exemple:
int a(1);
int b(2); false true if (e) {
bool test1(a == b); cout << "e vaut true" << endl;
bool test2(a < b); }

On peut initialiser des booléens à l'aide des constantes false et true. On peut initialiser des booléens à l'aide des constantes false et true.

On peut utiliser des booléens comme des conditions. Par exemple: On peut utiliser des booléens comme des conditions. Par exemple:
•  on peut utiliser des opérateurs logiques (and, or et not) entre booléens; •  on peut utiliser des opérateurs logiques (and, or et not) entre booléens;
•  on peut utiliser un booléen comme condition dans un if. •  on peut utiliser un booléen comme condition dans un if.

int a(1); int a(1);


int b(2); c int b(2); c

bool c(true); true bool c(true); true


bool d(a == b); bool d(a == b);
bool e(d or (a < b)); bool e(d or (a < b));

if (e) { if (e) {
cout << "e vaut true" << endl; cout << "e vaut true" << endl;
} }

22
On peut initialiser des booléens à l'aide des constantes false et true. On peut initialiser des booléens à l'aide des constantes false et true.

On peut utiliser des booléens comme des conditions. Par exemple: On peut utiliser des booléens comme des conditions. Par exemple:
•  on peut utiliser des opérateurs logiques (and, or et not) entre booléens; •  on peut utiliser des opérateurs logiques (and, or et not) entre booléens;
•  on peut utiliser un booléen comme condition dans un if. •  on peut utiliser un booléen comme condition dans un if.

int a(1); int a(1);


int b(2); c d int b(2); c d

bool c(true); true false bool c(true); true false


bool d(a == b); bool d(a == b);
bool e(d or (a < b)); bool e(d or (a < b));

if (e) { if (e) {
cout << "e vaut true" << endl; cout << "e vaut true" << endl;
} }

On peut initialiser des booléens à l'aide des constantes false et true. On peut initialiser des booléens à l'aide des constantes false et true.

On peut utiliser des booléens comme des conditions. Par exemple: On peut utiliser des booléens comme des conditions. Par exemple:
•  on peut utiliser des opérateurs logiques (and, or et not) entre booléens; •  on peut utiliser des opérateurs logiques (and, or et not) entre booléens;
•  on peut utiliser un booléen comme condition dans un if. •  on peut utiliser un booléen comme condition dans un if.

int a(1); int a(1);


int b(2); c d int b(2); c d

bool c(true); true false bool c(true); true false


bool d(a == b); bool d(a == b);
bool e(d or (a < b)); bool e(d or (a < b));
e e
if (e) { if (e) {
cout << "e vaut true" << endl; true cout << "e vaut true" << endl; true
} }

23
On peut initialiser des booléens à l'aide des constantes false et true.

On peut utiliser des booléens comme des conditions. Par exemple:


•  on peut utiliser des opérateurs logiques (and, or et not) entre booléens;
•  on peut utiliser un booléen comme condition dans un if.
Les booléens sont utiles pour de nombreux problèmes, nous rencontrerons
int a(1); des exemples concrets dans la suite du cours.
int b(2); c d

bool c(true); true false


bool d(a == b);
bool e(d or (a < b));
e
if (e) {
cout << "e vaut true" << endl; true
}

24

Vous aimerez peut-être aussi