Académique Documents
Professionnel Documents
Culture Documents
(DEBUTANT)/INSTRUCTIONS
IF, IF...ELSE ET SWITCH
Le cours du chapitre 3 : le if, le if...else et le switch
Sections
1 Le cours du chapitre 3 : le if, le if...else et le switch
o 1.1 Les structures de contrôle
o 1.2 Le if
1.2.1 Syntaxe :
o 1.3 Les conditions
o 1.4 Une erreur classique
o 1.5 Exemple 1 : utilisation du if
1.5.1 Exécution n°1 de l'exemple 1
1.5.2 Exécution n°2 de l'exemple 1
1.5.3 Exécution n°3 de l'exemple 1
o 1.6 Le if ... else
o 1.7 Exemple 2 :Utilisation du if ...else
1.7.1 Exécution n°1 de l'exemple 2
1.7.2 Exécution n°2 de l'exemple 2
1.7.3 Exécution n°3 de l'exemple 2
o 1.8 Les conditions complexes
o 1.9 Le ET logique
1.9.1 Syntaxe
o 1.10 Exemple 3 : utilisation du ET logique
o 1.11 Le OU logique
o 1.12 Exemple 4 : Utilisation du OU logique
o 1.13 Le NON logique
o 1.14 Exemple 5 : Utilisation du NON logique
o 1.15 Exemple 6 : Mettre plusieurs instructions dans un if
o 1.16 Exemple 7 : Mettre plusieurs instructions dans un if ...else
o 1.17 Le type bool
o 1.18 Exemple 8 : utilisation du type bool
o 1.19 Le switch
o 1.20 Exemple 9 : utilisation du switch
o 1.21 Exemple 10 : un autre exemple de switch
2 Exercices
o 2.1 EXERCICE 1
o 2.2 EXERCICE 2
o 2.3 EXERCICE 3
o 2.4 EXERCICE 4
o 2.5 EXERCICE 5
o 2.6 EXERCICE 7
o 2.7 EXERCICE 8
o 2.8 EXERCICE 9
le if,
le if else,
le switch.
Le if
Cette structure de contrôle permet d'exécuter une instruction ou une suite d'instructions
seulement si une condition est vraie.
Syntaxe :
if (condition) instruction;
On évalue la condition :
L’instruction peut être remplacée par une suite d ’instructions entre accolades
Les conditions
Par exemple :
if(a==b)…
if(a=b)…
int main()
{
int a;
cout << "Tapez la valeur de a : ";
cin >> a;
if (a > 10) cout << "Gagné !" << endl;
cout << "Le programme est fini" << endl;
return 0;
}
Tapez la valeur de a : 80
Gagné
Le programme est fini
Tapez la valeur de a : 8
Le programme est fini
Tapez la valeur de a : 10
Le programme est fini
Le if ... else
Cette structure de contrôle permet d'exécution soit l'instruction1, soit l'instruction 2 en
fonction du résultat d'une condition.
Syntaxe :
if (condition) instruction1;
else instruction2;
1. On évalue la condition,
2. si elle est vraie, on exécute l’instruction1 et on passe à l’instruction suivante,
3. si elle est fausse, on exécute l’instruction2 et on passe à l’instruction suivante.
L’instruction1 ou l’instruction2 peuvent être remplacées par une suite d’instructions entre
accolades.
int main()
{
int a;
cout<<"Tapez la valeur de a : ";
cin>>a;
if(a>10)cout<<"Gagné !"<<endl;
else cout<<"Perdu"<<endl;
cout<<"le programme est fini"<<endl;
return 0;
}
Tapez la valeur de a : 80
Gagné
Le programme est fini
Tapez la valeur de a : 5
Perdu
Le programme est fini
Exécution n°3 de l'exemple 2
Tapez la valeur de a : 10
Perdu
Le programme est fini
Il est souvent nécessaire d'écrire des conditions assez compliquées. Il faudra alors utiliser le
ET logique, le OU logique et le NON logique. Il faudra une certaine habitude pour ne pas
confondre ces différents opérateurs.
Le ET logique
Syntaxe
Le OU logique
Syntaxe : condition1 || condition2
Rappel sur le OU logique:
VRAI OU VRAI = VRAI
VRAI OU FAUX = VRAI
FAUX OU VRAI = VRAI
FAUX OU FAUX = FAUX
int main()
{
int a;
cout<<"Tapez une valeur entière : ";
cin>>a;
if( a<3 || a>20 )cout<<"GAGNÉ"<<endl;
else cout<<"PERDU"<<endl;
return 0;
}
Le NON logique
Syntaxe : !(condition)
Rappel sur le NON logique :
! VRAI=FAUX
!FAUX=VRAI
int main()
{
int a;
cout << "Tapez une valeur entière : ";
cin >> a;
if (a==12) {
cout << "GAGNÉ" << endl;
a = a+1;
}
cout << "La valeur finale de a vaut " << a << endl;
return 0;
}
int main()
{
int a;
cout<<"Tapez une valeur entière : ";
cin>>a;
if(a!=10){cout<<"GAGNÉ"<<endl;a=a+1;}
else {cout<<"PERDU"<<endl;a=a-1;}
cout<<"La valeur finale de a vaut "<<a<<endl;
return 0;
}
Le type bool
Il s'agit d'un type de base prédéfini du langage C++. Il permet de stocker une valeur
booléenne pouvant prendre 2 valeurs : soit true soit false. Le résultat d’une condition peut être
stocké dans un bool.
int main()
{
int a; bool c,d;
cout<<"Tapez une valeur entière : ";
cin>>a;
c=(a<3);
d=(a>20);
if(c||d)cout<<"GAGNÉ"<<endl;
else cout<<"PERDU"<<endl;
return 0;
}
Le switch
Syntaxe :
switch(identificateur)
{
case c1:instruction1;break;
case c2:instruction2;break;
case c3:instruction3;break;
...
default: instruction;break;
}
Sémantique du switch :
On teste la variable définie par l'identificateur. On la compare successivement aux constantes
c1, c2, c3,…etc… Si la variable vaut c1 alors on exécute l’instruction1 et on passe à
l’instruction suivante. Si elle vaut c2, on exécute l'instruction2 et on passe à l’instruction
suivante. Idem s'il vaut c3. Si elle ne vaut ni c1, ni c2, ni c3 alors on exécute l'instruction
après default et on passe à l’instruction suivante. Le default est facultatif. On peut remplacer
les instructions instruction1, instruction2, instruction3 par des suites d'instructions sans mettre
d'accolades. Les valeurs c1, c2,c3 .. sont obligatoirement des constantes.
int main()
{
int i;
cout<<"Tapez un entier entre 1 et 3 bornes incluses :";
cin>>i;
switch(i)
{
case 1: cout<<"GAGNÉ"<<endl;
i=i+99;
break;
case 2: cout<<"PERDU n° 2"<<endl;
i=0;
break;
case 3: cout<<"PERDU n°3"<<endl;
i=0;
break;
}
cout<<"La valeur finale de i est "<<i<<endl;
return 0;
}
int main()
{
int i;
cout<<"Tapez un entier entre 1 et 3 bornes incluses :";
cin>>i;
switch(i)
{
case 1:
cout<<"GAGNÉ"<<endl;
i=i+99;
break;
case 2 :
cout<<"PERDU n° 2"<<endl;
i=0;
break;
case 3 :
cout<<"PERDU n°3"<<endl;
i=0;
break;
default :
cout<<"J'ai dit entre 1 et 3 !!!"<<endl;
i=-1000;
break;
}
cout<<"La valeur finale de i est "<<i<<endl;
return 0;
}
Exercices
EXERCICE 1
Ecrire un programme qui résout l' équation AX+B=0. Bien évidemment, on n'oubliera pas
tous les cas particuliers (notamment les cas "tout x est solution" et "pas de solution").
Solution
#include<iostream>
using namespace std;
int main()
{
double A,B,X;
if(A==0)
{
if(B==0)cout<<"Tout X est solution"<<endl;
else cout<<"Pas de solution"<<endl;
}
else {
X=-B/A;
cout<<"1 seule solution : "<<X<<endl;
}
return 0;
}
EXERCICE 2
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.
Solution
#include<iostream>
using namespace std;
int main()
{
int a,max;
cout<<"Tapez la valeur numero 1 : ";cin>>a;max=a;
cout<<"Tapez la valeur numero 2 : ";cin>>a;if(a>max)max=a;
cout<<"Tapez la valeur numero 3 : ";cin>>a;if(a>max)max=a;
cout<<"Tapez la valeur numero 4 : ";cin>>a;if(a>max)max=a;
cout<<"Tapez la valeur numero 5 : ";cin>>a;if(a>max)max=a;
return 0;
}
EXERCICE 3
Ecrire un programme qui résout l’équation ax2+bx+c=0 en envisageant tous les cas
particuliers.
Solution
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double A,B,C,X1,X2,d;
if(A==0)
{
if(B==0)
{
if(C==0)cout<<"Tout x est solution"<<endl;
else cout<<"Pas de solution"<<endl;
}
else
{
X1=-C/B;
cout<<"Il y a une solution unique :"<<X1<<endl;
}
}
else
{
d=B*B-4*A*C;
if(d<0)cout<<"Pas de solution"<<endl;
else if(d==0)
{
X1=-B/(2*A);
cout<<"Il y a une solution double :"<<X1<<endl;
}
else
{
X1=(-B-sqrt(d))/(2*A);
X2=(-B+sqrt(d))/(2*A);
cout<<"Il y a 2 solutions : "<<X1<<" et "<<X2<<endl;
}
}
return 0;
}
EXERCICE 4
Solution
#include<iostream>
using namespace std;
int main()
{
double XA,YA,XB,YB,XC,YC,XD,YD,XI,YI;
double DX1,DY1,R1,DX2,DY2,R2,K;
cout<<"Tapez l'abscisse de A : ";cin>>XA;
cout<<"Tapez l'ordonnée de A : ";cin>>YA;
cout<<"Tapez l'abscisse de B : ";cin>>XB;
cout<<"Tapez l'ordonnée de B : ";cin>>YB;
cout<<"Tapez l'abscisse de C : ";cin>>XC;
cout<<"Tapez l'ordonnée de C : ";cin>>YC;
cout<<"Tapez l'abscisse de D : ";cin>>XD;
cout<<"Tapez l'ordonnée de D : ";cin>>YD;
DX1=XB-XA;
DY1=YB-YA;
DX2=XD-XC;
DY2=YD-YC;
if(K==0)
{
if(DX1*(YC-YA)==DY1*(XC-XA))
cout<<"AB et CD sont confondues."<<endl;
else cout<<"AB et CD sont parallèles."<<endl;
}
else
{
cout<<"Les droites sont sécantes."<<endl;
R1=YA*XB-XA*YB;
R2=YC*XD-XC*YD;
XI=(R1*DX2-R2*DX1)/K;
YI=(R1*DY2-R2*DY1)/K;
cout<<"L'abscisse de l'intersection est : "<<XI<<endl;
cout<<"L'ordonnée de l'intersection est : "<<YI<<endl;
}
}
return 0;
}
EXERCICE 5
Ecrire un programme qui demande à l’utilisateur de saisir un entier X et qui affiche la valeur
absolue de X.
Solution
if(X<0)X=-X;;
return 0;
}
</pre>
}}
int main()
{
int A,B;
return 0;
}
EXERCICE 7
Solution
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
if( (C>A && C<B)||(C<A && C>B)) cout<<"C est compris entre A et B"<<endl;
else cout<<"C n'est pas compris entre A et B"<<endl;
return 0;
}
EXERCICE 8
Solution
#include<iostream>
using namespace std;
int main()
{
double A,B,C,D,E,F;
EXERCICE 9
Ecrire un programme qui demande à l’utilisateur de saisir un entier A puis qui affiche
"ERREUR" si A n'est pas un nombre impair compris entre 83 et 101 bornes incluses. Dans le
cas contraire, on affiche "PAS D'ERREUR".
Solution
#include<iostream>
using namespace std;
int main()
{
int A;
return 0;
}