Vous êtes sur la page 1sur 21

27/03/2022

Faculté des Sciences


Département
d’Informatique

Chapitre.03
Structures de contrôle.

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

62
Objectif de ce chapitre

 Nous allons aborder dans ce chapitre un autre aspect du langage


indispensable a la programmation, a savoir : les structures de
contrôle. Ces structures permettent, comme leur nom l'indique, de
contrôler l’exécution du programme en fonction de critères
particulier.
 Le C + + dispose de toutes structures de contrôle classiques des
langages de programmation comme les tests, les boucles, les
sauts, etc. Dans ce chapitre, je vais vous expliquer comment, dans
un programme C + + , on pourra :
 ne pas exécuter une partie des instructions, c’est a 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.
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 1


27/03/2022

63
Plan

Structures de contrôle conditionnelles


La structure conditionnelle if
Le branchement conditionnel switch
Structures de contrôle itérative
La boucle for
La boucle while
La boucle do ... while
Le break
Le continue

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Structures de contrôle
64
conditionnelles
On appelle structures de contrôle conditionnelles les
instructions qui permettent de tester si une condition est vraie
ou non. Il s'agit des instructions suivantes :

 La structure conditionnelle if
 Le branchement conditionnel switch

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 2


27/03/2022

65
La structure conditionnelle if(…)…

 La structure conditionnelle if permet de réaliser un test et


d'exécuter une instruction ou non selon le résultat de ce
test. Sa syntaxe est la suivante :
if (condition ) {
Bloc d’instruction ;
}
Ou condition est une expression dont la valeur est booléenne
ou entière. Toute valeur non nulle est considérée comme
vraie. Si le test est vrai, instruction est exécutée.

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

66
La structure conditionnelle if(…)…

 Exemple: MAX

int a =3, b=7, Max ;


Max = a ;
if (Max < b)
Max = b ;
cout << ‘’le maximum est ’’ <<max ;

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 3


27/03/2022

La structure conditionnelle if … else …


67

 L'instruction if dans sa forme basique ne permet de tester


qu'une condition, or la plupart du temps on aimerait
pouvoir choisir les instructions à exécuter en cas de non
réalisation de la condition. L'expression if . . . else permet
d'exécuter une autre série d'instructions en cas de non-
réalisation de la condition. Voici sa syntaxe :
if (condition ) {
Bloc d‘instruction 1 ;
}
else {
Bloc d‘instruction 2 ;
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

La structure conditionnelle if … else …


68

 Exemple : Val_Abs

int a = -3, Val_Abs;


if (a > 0)
Val_Abs = a ;
else
Val_Abs = -a;
cout<< ‘’ la valeur absolue de a est ‘’<< Val_Abs;

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 4


27/03/2022

69
Exemple :

tester la divisibilité de m par n


(m, n sont entiers) !

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Exemple : tester la divisibilité de m par n (m, n sont entiers) !


70
#include <iostream>
using namespace std ;
int main () {
int m, n ;
cout << " Donnez les deux valeur pour m et n :" << endl ;
cin >> m >> n;
if (m%n == 0)
cout << n <<"divise "<< m <<endl;
if (m%n != 0)
cout << n <<" ne divise pas "<< m <<endl;
return 0;
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 5


27/03/2022

Exemple : tester la divisibilité de m par n (m, n sont entiers) !


71
#include <iostream>
using namespace std ;
int main () {
int m, n ;
cout << " Donnez les deux valeur pour m et n :" << endl ;
cin >> m >> n;
if (m%n == 0)
cout << n <<"divise "<< m <<endl;
else
cout << n <<" ne divise pas "<< m <<endl;
return 0;
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

72
exemple

Voici un exemple simple de programme de conversion « cm / inch » qui utilise une


instruction if … else ….
 int main()
 {
 const double conversion = 2.54; // nombre de cm pour un pouce (inch)
 int longueur = 1; // longueur (en cm ou en in)
 char unite = 0; // ’c’ pour cm ou ’i’ pour inch
 cout << "Donnez une longueur suivi de l’unité (c ou i):\n";
 cin >> longueur >> unite;
 if (unite == ’i’)
 cout << longueur << " in == " << conversion*longueur << " cm\n";
 else
 cout << longueur << " cm == " << longueur/conversion << " in\n";
 }

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 6


27/03/2022

Branchement conditionnel imbriqué


73
if-else if-else
 Syntaxe générale:
if ( expression1 )
{ bloc d’instructions 1; }
else if ( expression2 )
{ bloc d’instructions 2; }
else if ( expression3 )
{ bloc d’instructions 3; }
...
else
{
bloc d’instructions ;// si aucune condition n’est vraie.
}

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Exemple :
74
 Le paiement des Amendes Transactionnelles pour l’excès de
vitesse

• Dépassement de Vitesse < 7


• pas une infraction

• Dépassement de Vitesse < 20


300 DH • contravention de troisième classe

• Dépassement de Vitesse < 30


500 DH • contravention de deuxième classe

• Dépassement de Vitesse < 50


700 DH • contravention de prmière classe

• Dépassement de Vitesse > 50


• c’est un délit « amende judiciaire »

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 7


27/03/2022

Programme : paiement des


75
Amendes Transactionnelles
#include <iostream>
using namespace std;
int main ()
{
float limite, vitesse, depassementVitesse;
cout << "Donner la limite de la vitesse : ";
cin >> limite ;
cout << "Donner la vitesse de véhicule: ";
cin >> vitesse;
depassementVitesse = vitesse – limite ;

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

if(depassementVitesse < 7)
76
cout << " pas une infraction" << endl;
else if (depassementVitesse < 20)
cout << "contravention de troisième classe : 300 dh. " << endl;
else if (depassementVitesse <30)
cout << " contravention de deuxième classe : 500 dh." << endl;
else if (depassementVitesse < 50)
cout << " contravention de prmière classe : 700 dh ." << endl;
else
cout << " c’est un délit et non pas une contravention et \
possible d’une amende judiciaire. " << endl;
return 0;
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 8


27/03/2022

branchement conditionnel switch


77

 Dans le cas ou plusieurs instructions différentes doivent être


exécutées selon la valeur d'une variable de type intégral,
l'écriture des if successifs peut être relativement lourde.
 Le C++ fournit donc la structure de contrôle switch , qui
permet de réaliser un branchement conditionnel. Sa syntaxe
est la suivante :
switch (expression) {
case const1: instructions1;
...
case constn: instructionsn;
default: instructions0; }
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

78
Syntaxe générale :
switch ( expression )
{
case const1 :
Liste d’instructions 1;
break ; //L’instruction d’échappement
case const2 :
Liste d’instructions 2;
break ;
...
default :
Liste d’instructions ;
break ; // break est facultative ici
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 9


27/03/2022

79
Exemple 1 :

switch(sexe) {
case ’m’ : cout << "Bonjour Monsieur.";
break;
case ’f’ : cout << "Bonjour Madame.";
break;
default : cout << "Bonjour.";
}

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

80
Exemple 1 :

switch ( chiffre ) {
case 0 :
case 2 :
case 4 : cout << " le nombre est pair \n" ;
break ;
case 1 :
case 3 :
case 5 : cout << " le nombre est impair \n" ;
break ;
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 10


27/03/2022

81
Exercices
Exercice 1 :
Écrire un programme qui détermine si un entier saisi est pair
ou impair.
Exercice 2 :
Proposer un programme C++ permettant de calculer et
afficher la valeur absolue |x − y| de deux réels x et y sans
utiliser la fonction prédéfinie abs().
Exercice 3 :
Écrire un programme C++ qui lit deux notes d’examen et
leurs coefficients, puis affiche la moyenne en précisant
"ajourné" si la moyenne est inférieur à 10, "validé" dans le
cas contraire.

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

82
Corrigé d’exercice 1
#include <iostream>
using namespace std;
int main ( ) {
int n ;
cout << "Donner un nombre entier positif : ";
cin >> n ;
if (n%2 == 0)
cout << n <<" est pair"<<endl;
else
cout << n <<" est impair " <<endl;
return 0; }
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 11


27/03/2022

83
Corrigé d’exercice 2
int main ( ) {
float x, y ;
cout << " Saisissez deux réels x et y \n";
cin >> x >> y;
if (x == y)
cout << " la valeur absolue est nulle"<<endl;
else if (x > y)
cout << " la valeur absolue est "<<x-y <<endl;
else
cout << " la valeur absolue est "<<y-x <<endl;
return 0; }
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

84
Corrigé d’exercice 3
int main ( ) {
float note1, note2, note3, Moy;
int coef1, coef2, coef3 ;
cout << " Saisissez les trois notes \n";
cin >> note1 >> note2 >> note3;
cout << " Saisissez leurs coefficients resp. \n";
cin >> coef1 >> coef2 >> coef3;
Moy = (note1*coef1+note2*coef2+note3*coef3)/(coef1+coef2+coef3);
if (Moy >= 10)
cout << " VALIDE : " <<Moy<<endl;
else
cout << " AJOURNE : " <<Moy<<endl;
return 0; }
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 12


27/03/2022

85
Structures de contrôle itérative

 Les structures de contrôle itératives sont des structures qui


permettent d'exécuter plusieurs fois la même série
d'instructions jusqu'à ce qu'une condition ne soit plus
réalisée. On appelle ces structures des boucles.
 Il existe 3 types de boucles à connaître :
 la boucle for ,
 la boucle while et
 la boucle do ... while .

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

La boucle for
86

 La structure de contrôle for est sans doute l'une des plus


importantes. Elle permet de condenser :
Syntaxe :
for ( initialisation ; condition ; mise à jour )
{
bloc d’instructions ;
}
Exemple : affichage des nombres de 1 à 9
int compteur(0);
for (compteur = 1 ; compteur < 10 ; compteur++)
{
cout << compteur << endl;
} Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 13


27/03/2022

Exemple :Addition des n (=100) premiers termes d’une série


87

#include <iostream>
using namespace std ;
int main ()
{
int somme = 0;
for ( int i=0 ; i<=100 ; i++ )
{
somme = somme + i ;
}
cout<< " La somme est : "<< somme <<endl ;
return 0 ;
}
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

La boucle while
88
 Le while permet d'exécuter des instructions en boucle tant
qu'une condition est vraie.
Sa syntaxe est la suivante :
while ( expression logique )
{
bloc d’instructions ; //code à exécuter.
}
Tout ce qui est entre accolades sera répété tant que la
condition est vérifiée. Essayons de refaire l'exemple
précédent, qui affiche les nombre de 1 à 9, en utilisant cette
fois-ci la boucle while :

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 14


27/03/2022

Exemple : calcul du factoriel


89

#include <iostream>
using namespace std ;
int main () {
int n ;
long fact=1;
cout << " donner un entier positif " <<endl ;
cin >> n;
while ( n > 0 )
fact = fact * n−− ;
cout << "le factor de"<< n<<" est " << fact << endl ;
return 0 ; }

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

90
La boucle do ... while

 La structure de contrôle do ... while permet, tout comme le


while , de réaliser des boucles en attente d'une condition .
Cependant, contrairement à celui-ci, le do ... while
effectue le test sur la condition après l'exécution des
instructions. Cela signifie que les instructions sont
toujours exécutées au moins une fois, que le test soit
vérifié ou non. Sa syntaxe est la suivante :
do
{
bloc d’instructions ;
}
while(expression logique);
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 15


27/03/2022

Exemple : contrôle de saisie donner


91
« Entier positif »
#include <iostream>
using namespace std ;
int main () {
int n ;
do
{
cout << " donner un entier positif " <<endl ;
cin >> n;
}while ( n < 0 ) ;
return 0 ;
}

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

92
Exercices
 Exercice 4 :
Ecrire un programme en langage C++ qui lit deux entiers
entrés au clavier n et p et permet d’afficher les nombres de n
à p, sauf les multiples de 3 et les multiples de 5.
 Exercice 5 :
Écrire un programme en langage C++ qui permet de calculer
le factoriel d’un entier positif n entré au clavier.
 1Le programme doit faire un contrôle de saisi de n en utilisant la
boucle while.
 2 Le programme calcule le factoriel de n avec la boucle for.
 3Le programme doit continuer son exécution pour calculer le factoriel
d’un autre nombre jusqu’à ce que l’utilisateur quitte le programme
do...while.
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 16


27/03/2022

93

 Exercice 6 :
Écrire un programme en langage C++ permettant l’affichage
suivant :
*
**
***
****
*****
******
*******
********
Pr. EL MAKRANI Adil SMC S4 : Programmation C++

94
Correction d’exercice 4

# include <iostream >


using namespace std;
int main () {
int n, p;
cout <<" Introduire deux entiers (n>p)" <<endl ;
cin >> n >> p ;
for(int i=n ; i <=p ; i++)
{
if ((i %3!=0) && (i %5!=0))
cout <<i<<"\t";
}
return 0; }

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 17


27/03/2022

95
Correction d’exercice 5

//calcul de la factorielle
int main() {
int i = 1; //variable de controle pour la premiere boucle
int n;
do { // premiere boucle
//saisi d’un entier > 0
cout << "Calcul de la factorielle, entrez n (> 0) : " ;
cin >> n;
while (n <= 0) { // deuxieme boucle
cout << "n est <= 0 ! Entrez un autre nombre > 0 : " ;
cin >> n;
}

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

96
//calcul de la factorielle (1 * 2 * ... * n-1 * n)
long fact = 1;
for (int k=1 ; k <= n ; k++)
fact = fact * k;
cout << "La factorielle de " << n << " est : " << fact
<< endl;
//refaire le calcul ?
cout << "Voulez vous continuer (1 pour continuer, 0 pour
sortir) ? ";
cin >> i;
} while (i); // fin de la boucle do... while
return 0; } //fin programme

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 18


27/03/2022

97
Correction d’exercice 6
# include <iostream >
using namespace std;
int main () {
for(int i=0;i <8;i++)
{
for(int j=0;j <=i;j++)
{
cout <<"*";
}
cout << endl ;
}
return 0; }

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Les instructions : break et continue


98

On peut contrôler ou modifier l’exécution d’une boucle avec


les instructions de saut : break et continue.
 L’instruction break : elle permet de sortir d’une boucle
(while, do-while, for) ou d’une instruction de sélection
(switch-case).
 L’instruction continue : elle permet d’arrêter l’itération
en cours d’une boucle (while, do-while, for) et passer à
l’itération suivante.

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 19


27/03/2022

Exemple d’utilisation de l’instruction


99
break dans une boucle.
 Les deux boucles suivantes sont équivalentes. Le
programme calcule la somme des n premiers terme d’une
série.

while (1) { // boucle infinie while (i <= n) {


if (i > n) break ; somme += i*i;
somme = somme + i*i; i++;
i++; }
}

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

10
Exemple d’utilisation de l’instruction
0 continue dans une boucle.
 Les deux morceaux de programme suivants donnent le
même résultat. Le programme cumule au maximum 100
entiers positifs lus au clavier.

int somme = 0, i, n ; int somme = 0, i, n ;


for (i = 1; i <= 100; i++) for (i = 1; i <= 100; i++)
{ {
cin >> n; cin >> n;
if (n < =0) continue ; if (n < =0) i = i + 1;
somme += n; else somme += n;
} }

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 20


27/03/2022

10 Ce que vous devez retenir !


1

 Les conditions permettent de tester la valeur des variables


et de modifier le comportement du programme en
conséquence.
 Les boucles permettent de répéter les mêmes instructions
plusieurs fois jusqu'à ce qu'une condition spécifique soit
vérifiée..
 On distingue trois types de boucles : for , while et do . . .
while .

Pr. EL MAKRANI Adil SMC S4 : Programmation C++

Pr. EL MAKRANI Adil 21

Vous aimerez peut-être aussi