Vous êtes sur la page 1sur 35

Programmation en C++

MASTER PHYSIQUE
de la Matière
et de Rayonnement

Soufiane DAHMANI
@ : s.dahmani@ump.ac.ma

S.DAHMANI 1
Chapitre 2
Les tests et les boucles en C++ 

S.DAHMANI 2
Introduction

 Un programme écrit en C++ s’exécute


séquentiellement, c’est à dire instruction
après instruction.
 Ce chapitre explique comment, dans un
programme, on pourra :
 ne pas exécuter une partie des instructions, c’est
à dire faire un saut dans le programme,
 revenir en arrière, pour exécuter plusieurs fois de
suite la même partie d’un programme.

S.DAHMANI 3
I- Les conditions

 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 différemment en fonction des
circonstances. Nous allons découvrir ici
comment utiliser ces fameuses conditions
dans nos programmes C++.

S.DAHMANI 4
1-L'INSTRUCTION SI ... ALORS ...
SINON
 ...l'instruction:
Il s'agit de
 si (condition vraie)
 alors {BLOC 1 D'INSTRUCTIONS}
 sinon {BLOC 2 D'INSTRUCTIONS}

S.DAHMANI 5
1- L‘instruction Si ... Alors ...
Sinon ...
Syntaxe en C++:
if (condition)
{
............; // bloc 1 d'instructions
. ............;
............;
}
else
{
............; // bloc 2 d'instructions
............;
............;
}
suite du programme ...

S.DAHMANI 6
 Condition Expression booléenne de la
condition d'exécution.
 Instruction Une instruction ou un bloc
d'instructions exécuté si la condition est
vraie.

S.DAHMANI 7
LES OPÉRATEURS LOGIQUES
 condition d'égalité: if (a==b) " si a est égal à b "
 condition de non égalité: if (a!=b) " si a est différent de b "
 conditions de relation d'ordre: if (a<b) if (a<=b) if (a>b) if
(a>=b) plusieurs conditions devant être vraies
simultanément, ET LOGIQUE:
 if ((expression1) && (expression2)) " si l'expression1 ET
l'expression2 sont vraies "
 une condition devant être vraie parmi plusieurs, OU
LOGIQUE if ((expression1) || (expression2)) " si
l'expression1 OU l'expression2 est vraie "
 condition fausse if (!(expression1)) " si l'expression1 est
fausse "
 Toutes les combinaisons sont possibles entre ces tests.

S.DAHMANI 8
Exemple1 :programme demande à
l'utilisateur de taper un entier a. Si a est
strictement plus grand que 10, il affiche "a est plus
grand que 10". Dans le cas contraire, il n'affiche
rien.

S.DAHMANI 9
Exemple2: programme demande à
l'utilisateur de taper un entier a. Si a est
strictement plus grand que 10, il affiche "a est plus
grand que 10". Dans le cas contraire, il affiche "a
est inférieur ou égal à 10".

S.DAHMANI 10
Exemple :
3

S.DAHMANI 11
S.DAHMANI 12
Remarque:

 les {} ne sont pas nécessaires lorsque les


blocs ne comportent qu'une seule instruction.

S.DAHMANI 13
2-La condition switch

 En théorie, la condition if permet de faire tous


les tests que l'on veut. En pratique, il existe
d'autres façons de faire des tests. La
condition switch, par exemple, permet de
simplifier l'écriture de conditions qui testent
plusieurs valeurs possibles pour une même
variable.

S.DAHMANI 14
2- L'instruction Au cas ou ... Faire ...

 L'instruction switch permet des choix multiples uniquement sur des


entiers (int) ou des caractères (char).
Syntaxe C++:
switch(variable de type char ou int) au cas où la variable vaut:
{
case valeur1: ......; - cette valeur1: exécuter ce bloc
. d'instructions.
.......;
break; - se brancher à la fin du bloc case.
case valeur2: ........; - cette valeur2: exécuter ce bloc
d'instructions.
........;
break; - se brancher à la fin du bloc case.
.
. etc ...
.
default: .......; - aucune des valeurs précédentes:
exécuter ce bloc
........; d'instructions, pas de
"break" ici.
}
 S.DAHMANI 15
2- L'instruction Au cas ou ... Faire ...

le bloc "default" n'est pas obligatoire.


L’instruction switch correspond à une cascade d’instructions if ...else
Exemple :
3 switch

S.DAHMANI
17
 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:

S.DAHMANI 18
S.DAHMANI 19
Remarque
 Switch ne permet de tester que l'égalité.
Vous ne pouvez pas tester « Si le nombre
d'enfants est supérieur à 2 » avec switch: il
faut dans ce cas utiliser if.
De plus, switch ne peut travailler qu'avec des
nombres entiers (int,unsigned int,char). Il est
impossible de tester des nombres décimaux
(double).switch est donc limité en termes de
possibilités mais cette instruction propose
une écriture alternative parfois plus pratique
dans des cas simples.
S.DAHMANI 20
3-Booléens
 Les booléens
 Vous vous souvenez du type bool? Ce type de données
peut stocker deux valeurs : true(vrai) ; false(faux).
 Ce type est souvent utilisé avec les conditions. Quand
on y pense, c'est logique : une condition est soit vraie,
soit fausse.
 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.

S.DAHMANI 21
 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 :

S.DAHMANI 22
II-Les boucles

 Les boucles vous permettent de répéter les


mêmes instructions plusieurs fois dans votre
programme. Le principe est représenté en
figure suivante.

S.DAHMANI 23
 Les boucles sont répétées tant qu'une
condition est vraie. Par exemple on peut faire
une boucle qui dit : « Tant que l'utilisateur
donne un nombre d'enfants inférieur à 0,
redemander le nombre d'enfants ».
 Il existe 3 types de boucles à connaître :
 while;
 do ... while;
 for.

S.DAHMANI 24
1- La boucle Tant que ... faire ...
Syntaxe en C++:
while (condition)
{
............; // bloc d'instructions
............;
. ............;
}
suite du programme ...

 Le test se fait d'abord, le bloc


d'instructions n'est pas forcément
exécuté.

S.DAHMANI 25
Exemple: un programme qui affiche
tous les entiers de 8 jusqu'à 23 (bornes
incluses) en utilisant un while

S.DAHMANI 26
2- L'instruction Répéter ...
Tant que ...
Syntaxe en C++:
do
{
............; // bloc d'instructions
. ............;
............;
}
while (condition);
suite du programme ...

 Cette boucle est très similaire à la précédente... si ce


n'est que la condition n'est testée qu'à la fin. Cela
signifie que le contenu de la boucle sera toujours
lu au moins une fois.
S.DAHMANI 27
Exemple : do …. While( )

S.DAHMANI 28
3- L'instruction Pour ...

Syntaxe en C++:
for(instruction1; condition; instruction2)
{
. ............; // bloc d'instructions
............;
............;
}
suite du programme ...

 Ce type de boucle, que l'on retrouve fréquemment, permet de


condenser :
une initialisation ;
une condition ;
une incrémentation.

S.DAHMANI 29
Exemple 1 : programme qui
affiche des nombres de 0 à
9:

S.DAHMANI 30
Exemple2:  un programme qui
demande à l'utilisateur de taper 10 entiers
et qui affiche leur somme.

S.DAHMANI 31
Exercice-1:
Ecrire un programme qui demande à l'utilisateur de taper 5 entiers
et qui affiche le plus grand. Le programme ne devra utiliser que 2
variables.
Exercice-2:
Dans une élection, I est le nombre d’inscrits, V le
nombre de votants, Q le nombre minimum de
. votants pour que le vote soit déclaré valable, P =
100V/I le pourcentage de votants, M = V/2 + 1 le
nombre de voix pour obtenir la majorité absolue.
Écrire un programme qui
1- demande à l’utilisateur de saisir I, Q et V,
2- teste si le nombre minimum de votants pour que le
vote soit déclaré valable est atteint,
3- si oui calcule et affiche P, M, sinon affiche un
message d’avertissement.

S.DAHMANI 32
Exercice-3:
Écrire un programme permettant de saisir un
entier n, de calculer n!, puis de l’afficher. Utiliser
une boucle do ...while puis while puis for.
Quelle est la plus grande valeur possible de n, si
n est déclaré int, puis unsigned int?
Exercice-4:
La formule récurrente ci-dessous permet de
calculer la racine du nombre 2 :
U0 = 1
Ui = ( Ui-1+ 2/Ui-1 ) / 2
Écrire un programme qui saisit le nombre
d’itérations, puis calcule et affiche la racine de
2.
Exercice-5:
Résoudre ax2 + bx +c = 0.

S.DAHMANI 33
Exercice 6

 Ecrire un programme qui demande à


l’utilisateur de saisir 4 entiers A, B, C et D,
puis qui indique quelle est l'intersection des
intervalles [AB] et [CD].

S.DAHMANI 34
biblio

 https://fr.wikibooks.org/wiki/Programmation_
C%2B%2B/Les_structures_de_contr%C3%B
4les
 https://openclassrooms.com/courses/program
mez-avec-le-langage-c/les-structures-de-cont
role-4
 https://fr.wikibooks.org/wiki/Programmation_
C%2B%2B/Les_structures_de_contr%C3%B
4les

S.DAHMANI 35

Vous aimerez peut-être aussi