Vous êtes sur la page 1sur 38

Langages de Programmation et

Compilation: “C++”
By
Ts. Dr. Ir. HIKMA Shabani
Email: hikma_shabani@outlook.com
PRÉSENTATION DU MODULE

* PLAN – Huit Chapitres


* VALIDATION DU MODULE/Contrôle des connaissances:
– TP notés
– Examen à la Fin du module
* OBJECTIFS:
– Faire découvrir le langage C++
– Être capable d’écrire et de concevoir un programme
C++ simple de bout en bout.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté des 2
Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
CHAPT_III: Structures Conditionnelles et Boucles

* Plan Prévisionnel
1. Introduction
2. Les conditions
3. Les boucles
4. Exercice

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté des 3
Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 1. Introduction
 Une structure de contrôle ou instruction de contrôle sert à
contrôler le déroulement d’un traitement.
 Un traitement peut s’exécuter de différentes manières :
1) Séquentiellement (l’un à la suite de l’autre).
2) Alternativement (soit l’un soit l’autre ou les autres selon une
condition fixée).
i. Alternative simple (if…),
ii. alternative composée (if… else),
iii. alternative imbriquée (if… else if… else),
iv. alternative multiple (switch)
3) Répétitivement (en répétant le traitement un nombre fini de
fois).
i. La boucle while,
ii. la boucle do while,
iii. la boucle for
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 4
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 1. Introduction
 Le terme instruction désignera indifféremment :
 une instruction simple (terminée par un point-virgule),
 une instruction structurée (choix, boucle) , ou
 un bloc (instructions entre {et}).
 Structures de contrôle.
- Ce nom cache en fait deux éléments :
 Les conditions : elles permettent d'écrire dans le programme
des règles comme "Si ceci arrive, alors fais cela".
 Les boucles : elles permettent de répéter une série
d'instructions plusieurs fois.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 5


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 2. Les conditions
 Pour qu'un programme soit capable de prendre des
décisions, on utilise des conditions dans le code source
 on parle aussi de "structures conditionnelles".
 Pour effectuer ces tests, nous utilisons des symboles.
 Voici le tableau des symboles à connaître par coeur :
Symbole Signification
== Égale à
!= Différent de
> Strictement supérieur à
>= Supérieur ou égale à
< Strictement inférieur à
<= Inférieur ou égale à

Il existe plusieurs types de conditions en C++ pour faire des tests, mais la plus
importante qu'il faut impérativement connaître est sans aucun doute la condition if.
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 6
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 2.1 Traitements Alternatifs
A. Traitement Alternatif Simple “ if… ”
1. Syntaxe :
if (condition)
{
………....;
…………; //Séquence or bloc d'instructions
…………;
}
suite du programme ...

NB:
- Si la condition est vraie, le bloc d’instructions est exécuté,
- Si elle est fausse, la suite du programme sera directement
exécutée.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 7


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …”
2. Schéma fonctionnel :

Oui Non
Condition vraie ?

bloc d'instructions

suite du programme ...

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 8


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if… ”
 Exemple:
- Imaginons qu'on souhaite afficher un message de félicitations si la
personne a des enfants.
 On va ajouter une condition qui regarde si le nombre d'enfants est
supérieur à 0 et qui affiche un message dans ce cas.
 Code :
#include <iostream>
 Ce code affiche :
using namespace std;  Code : Console -
int main()
{ Vous avez des enfants, bravo !
int nbEnfants(2); Fin du programme
if (nbEnfants > 0)
{
cout << "Vous avez des enfants, bravo !"
<< endl;
}
cout << "Fin du programme" << endl;
return 0;
}
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 9
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 2.1 Traitements Alternatifs
B. Traitement Alternatif Composé “ if… else ”
1. Syntaxe:
if (condition)
{
………....;
…………; //Séquence 1 or bloc 1 d'instructions
…………;
}
else
{
………....;
…………; //Séquence 2 or bloc 2 d'instructions
…………;
}
suite du programme ...
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 10
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else”
2. Schéma fonctionnel :

Oui Non
Condition vraie ?

Bloc 1 d'instructions Bloc 2 d'instructions

suite du programme ...

NB:
- Si la condition est vraie, le bloc 1 d’instructions est exécuté,
- Si elle est fausse, le bloc 2 d’instructions sera exécutée.
 Dans tous les cas, la suite du programme sera exécutée.
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 11
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else”
 Exemple:
- Pour le même exemple précédant : Vous souhaitez que votre programme fasse
quelque chose de précis si la condition n'est pas vérifiée. Vous pouvez
utiliser le mot-clé else qui signifie "sinon". On va par exemple afficher un
autre message si la personne n'a pas d'enfants.
 Code: #include <iostream>
using namespace std;
int main()
{
int nbEnfants(0);
if (nbEnfants > 0)
{
cout << "Vous avez des enfants, bravo !" << endl;
}
else
{
cout << "Eh bien alors, vous n'avez pas d'enfants ?" <<endl;
}
cout << "Fin du programme" << endl;
return 0;
}
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 12
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else”
 Exemple:
 Le code précédent affiche :
 Code : Console -
Eh bien alors, vous n'avez pas d'enfants ?
Fin du programme

NB:
- L’ordinateur lit d'abord la condition du if et se rend compte
que la condition est fausse.
 On vérifie si la personne a au moins 1 enfant et ce n'est pas le
cas.
 L'ordinateur "saute" tout ce qui se trouve entre les premières
accolades et tombe sur la ligne du else qui signifie "sinon".
 Il effectue donc les actions indiquées après le else.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 13


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 2.1 Traitements Alternatifs
C. Traitement Alternatif Imbriqué “ if… else if…else”
1. Syntaxe : if (condition 1)
{
…………; //Séquence 1 or bloc 1 d'instructions
}
else if (condition 2)
{
…………; //Séquence 2 or bloc 2 d'instructions
}

else if (condition 𝑛)
{
…………; //Séquence 𝑛 or bloc 𝑛 d'instructions
}
else
{
…………; //Séquence 3 or bloc 3 d'instructions
}
suite du programme ...
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 14
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else if…else”
2. Schéma fonctionnel :

Oui Condition 1 Non Non


Condition 2 Condition 𝑛
vraie ? vraie ? vraie ?

Oui Oui

Bloc 1 d'instructions Bloc 2 d'instructions Bloc 𝑛 d'instructions Bloc d'instructions

suite du programme ...

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 15


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else if…else”
 Exemple:
- Avec le traitement alternatif imbriqué, il est possible de faire
plusieurs tests à la suite :
 Imaginez qu'on souhaite faire le test suivant :
• Si le nombre d'enfants est égal à 0, afficher ce message "[...]"
• Sinon si le nombre d'enfants est égal à 1, afficher ce message "[...]"
• Sinon si le nombre d'enfants est égal à 2, afficher ce message "[...]"
• Sinon, afficher ce message "[...]"
- Pour faire tous ces tests un à un dans l'ordre, on va avoir
recours à la condition "else if" qui signifie "sinon si" :
 Les tests vont être lus dans l'ordre jusqu'à ce que l'un d'entre
eux soit vérifié.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 16


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else if…else”
 Exemple: #include <iostream>
using namespace std;
 Code: int main()
{
int nbEnfants(2);
if (nbEnfants == 0)
{
cout << "Eh bien alors, vous n'avez pas d'enfants ?" <<endl;
}
else if (nbEnfants == 1)
{
cout << "Alors, c'est pour quand le deuxième ?" << endl;
}
else if (nbEnfants == 2)
{
cout << "Quels beaux enfants vous avez la !" << endl;
}
else
{
cout << "Bon, il faut arrêter de faire des gosses maintenant !" << endl;
}
cout << "Fin du programme" << endl;
return 0;
}
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 17
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ if …else if…else”
 Le code précédent affiche :  Code : Console -
Quels beaux enfants vous avez la !
Fin du programme
 NB :
- Dans notre cas, nous avons 2 enfants :
 L'ordinateur teste d'abord si on en a 0.
• Comme ce n'est pas le cas, il passe au premier else if : est-
ce qu'on a 1 enfant ? Non plus !
• L'ordinateur teste donc le second else if : est-ce qu'on a 2
enfants ? Oui !
• Donc on affiche le message " Quels beaux enfants vous
avez la !".
Si aucune des conditions n'avait été vérifiée, c'est le message
du else "Bon, il faut arrêter de faire des gosses maintenant !" qui
se serait affiché.
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 18
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 2.1 Traitements Alternatifs
D. Traitement Alternatif Multiple “ switch…”
1. Syntaxe :
switch (expression: variable de type char ou int)
{
case valeur 1 :
…………; //Séquence 1 or bloc 1 d'instructions
break;
case valeur 2 :
…………; //Séquence 2 or bloc 2 d'instructions
break;
…………; // ……………………………………
case valeur N :
…………; //Séquence N or bloc N d'instructions
break;
default :
…………; //Séquence de défaut or bloc défaut d'instructions
break;
}
suite du programme ...
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 19
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ switch…”
2. Schéma fonctionnel
Switch
L’ expression conditionnelle

Oui Statements
Case 1
Break;

Non

Oui Statements
Case 2
Break;

Non

Oui Statements
Case n
Break;

Non

default Default statement


Break;
suite du programme ...
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 20
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La condition “ switch…”
 La condition switch permet de simplifier l'écriture de
conditions qui testent plusieurs valeurs différentes pour
une même variable.
 Exemple:
 Résolvons l’ exemple précédent avec l’expression switch :
• A-t-il 0 enfants ?
• A-t-il 1 enfant ?
• A-t-il 2 enfants ?
• ...

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 21


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 L’ expression conditionnelle “ switch…”
 Exemple:
#include <iostream>
 Code: using namespace std;
int main()
{
int nbEnfants(2);
switch (nbEnfants)
{
case 0:
cout << "Eh bien alors, vous n'avez pas d'enfants ?" <<endl;
break;
case 1:
cout << "Alors, c'est pour quand le deuxieme ?" << endl;
break;
case 2:
cout << "Quels beaux enfants vous avez la !" << endl;
break;
default:
cout << "Bon, il faut arrêter de faire des gosses maintenant !" << endl;
break;
}
return 0;
}
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 22
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 L’ expression conditionnelle “ switch…”
 Le code précédent affiche :
 Code : Console -
Quels beaux enfants vous avez la !

 NB :
- On doit d'abord analyser la variable nbEnfants (ligne 6).
- Ensuite, on teste tous les cas (case) possibles :
 si ça vaut 0, si ça vaut 1, si ça vaut 2...
- Les break sont obligatoires si on veut que l'ordinateur ne
continue pas d'autres tests une fois qu'il en a vérifié un.
- Enfin, le default à la fin correspond au else ("sinon") et
s'exécute si aucun test précédent n'est vérifié.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 23


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 3. Les boucles
 Les boucles permettent de répéter les mêmes instructions
plusieurs fois dans votre programme.
 Le principe est le suivant :
Instructions
Instructions
……………
Instructions
 L'ordinateur lit les instructions de haut en bas (comme
d'habitude)
 Puis, une fois arrivé à la fin de la boucle, il repart à la première
instruction
 Il recommence alors à lire les instructions de haut en bas...
 Et il repart au début de la boucle.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 24


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 3. Les boucles
 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 :
 for…
 while….
 do ... while…

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 25


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 3.1 La boucle “for…”
 Ce type de boucle permet de condenser :
 Une initialization
 Une condition
 Une Instruction

1. Syntaxe :
for (initialisation; condition; instruction)
{
………....;
…………; //Séquence or bloc d'instructions
…………;
}
suite du programme ...

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 26


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ for …”
2. Schéma fonctionnel :
Initialisation

Non
Condition vraie ? suite du programme ...

Oui

bloc d'instructions

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 27


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ for… ”
 Exemple:
- Voici un exemple concret qui affiche des nombres de 0 à 3 :
 Code :
 Ce code affiche :
#include <iostream>
using namespace std;  Code : Console -
int main()
0
{ 1
int compteur(0); 2
for (compteur = 0 ; compteur < 4 ; compteur++) 3
{
cout << compteur << endl;
}
return 0;
}

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 28


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 3.2 La boucle “while…”
1. Syntaxe :
while (condition)
{
………....;
…………; //Séquence or bloc d'instructions à répéter
…………;
}
suite du programme ...

 Remarque:
 On peut rencontrer la construction suivante:
while (expression); terminée par un ; et sans la présence du
bloc d'instructions.
- Cette construction signifie: "tant que l'expression est vraie
attendre".

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 29


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ while …”
2. Schéma fonctionnel :

Non
Condition vraie ? suite du programme ...

Oui

bloc d'instructions

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 30


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ while… ”
 Exemple:
- On redemande le nombre d'enfants à l'utilisateur tant que celui-
ci est inférieur à 0.
 Ce genre de boucle permet de s'assurer que l'utilisateur rentre un
nombre correct.
 Code :
#include <iostream>
using namespace std;
int main()
{
int nbEnfants(-1); // Nombre négatif pour pouvoir rentrer dans la boucle
while (nbEnfants < 0)
{
cout << "Combien d'enfants avez-vous ?" << endl;
cin >> nbEnfants;
}
cout << "Merci d'avoir indique un nombre d'enfants correct. Vous en avez "
<< nbEnfants << endl;
return 0;
}
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 31
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ while… ”
 Exemple:
 Le code precedent affiche :
 Code : Console -
Combien d'enfants avez-vous ?
-3
Combien d'enfants avez-vous ?
-5
Combien d'enfants avez-vous ?
2
Merci d'avoir indiqué un nombre d'enfants correct. Vous en avez 2

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 32


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 3.3 La boucle “do… while…”
1. Syntaxe :
do
{
………....;
…………; //Séquence or bloc d'instructions à répéter
…………;
}
while (condition)
suite du programme ...

 Remarque:
 Le test se faisant après, le bloc d’ instructions est exécuté au
moins une fois.

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 33


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ do…while …”
2. Schéma fonctionnel :

bloc d'instructions

Non
Condition vraie ? suite du programme ...

Oui

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 34


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ do…while… ”
 Exemple:
- Reprenons les codes de l’ exemple précédent en utilisant cette
fois-ci la boucle do… while…
 Code :
#include <iostream>
using namespace std;
int main()
{
int nbEnfants(0);
do
{
cout << "Combien d'enfants avez-vous ?" << endl;
cin >> nbEnfants;
}
while (nbEnfants < 0);
cout << "Merci d'avoir indique un nombre d'enfants correct. Vous en avez "
<< nbEnfants << endl;
return 0;
}

8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 35


des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
 La boucle “ do…while… ”
 Exemple:
 Le code precedent affiche :
 Code : Console -
Combien d'enfants avez-vous ?
-3
Combien d'enfants avez-vous ?
-5
Combien d'enfants avez-vous ?
2
Merci d'avoir indiqué un nombre d'enfants correct. Vous en avez 2
NB:
- Ici, il n'est pas nécessaire d'initialiser nbEnfants à −1
• En effet, ici le nombre d'enfants est initialisé à 0 (comme on a
l'habitude de faire), et
• comme la condition n'est testée qu'après le premier passage de
la boucle, les instructions sont bien lues au moins une fois.
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 36
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
III. 4. Exercice
 Écrire une fonction qui reçoit en arguments 2 nombres
flottants et un caractère, et qui fournit un résultat
correspondant à l’une des 4 opérations appliquées à ses
deux premiers arguments, en fonction de la valeur du
dernier, à savoir : addition pour le caractère + ,
soustraction pour −, multiplication pour ∗ et division
pour / (tout autre caractère que l’un des 4 cités sera
interprété comme une addition). On ne tiendra pas
compte des risques de division par zéro.
 NB:
- Résoudre en utilisant la fonction switch et une autre de
votre choix.
- Comparer ces deux méthodes…
8/11/2022 Langages de Programmation et Compilation pour le Départment de Génie Electrique, Faculté 37
des Sciences Appliquées (FSA), Université MAPON @ Ts. Dr. Ir. HIKMA Shabani.
FIN!

Vous aimerez peut-être aussi