Upload
samir-haddar
View
12
Download
4
Embed Size (px)
DESCRIPTION
apprendre langage C++
Citation preview
Chapitre 4 : le for, while et do...while
La notion de boucles
Dans ce chapitre, nous allons tudier les structures de contrle permettant d'effectuer des
boucles : le for, le while et le dowhile. On parle de boucles lorsqu'on rpte l'excution d'une srie d'instructions l'intrieur d'un programme. La notion de boucle est une des notions
la base de toute l'algorithmique.
Le for
Le for est une structure de contrle qui permet de rpter un certain nombre de fois une partie
d'un programme.
Syntaxe :
for( instruction1 ; condition ; instruction2 )
instruction3 ;
Smantique du for :
1. on excute linstruction1 2. on teste la condition :
o si elle est vraie, on excute linstruction3, puis linstrution2 puis on revient au 2.
o si elle est fausse on passe linstruction suivante.
Linstruction3 peut tre une suite d'instructions entre accolades.
Exemple 1 : utilisation du for
#include
int main()
{
int i;
for(i=0;i
o Le test i on excute le corps du for avec i=1
o On excute i=i+1 ==> i vaut 2
o Le test i on excute le corps du for avec i=2
o On excute i=i+1 ==> i vaut 3
o Le test i on excute le corps du for avec i=3
o On excute i=i+1 ==> i vaut 4
o Le test i on excute le corps du for avec i=4
o On excute i=i+1 ==> i vaut 5
o Le test i on excute le corps du for avec i=5
o On excute i=i+1 ==> i vaut 6
o Le test i on excute le corps du for avec i=6
o On excute i=i+1 ==> i vaut 7
o Le test i on excute le corps du for avec i=7
o On excute i=i+1 ==> i vaut 8
o Le test i on excute le corps du for avec i=8
o On excute i=i+1 ==> i vaut 9
o Le test i on excute le corps du for avec i=9
o On excute i=i+1 ==> i vaut 10
o Le test i on sort du for avec i=10
Rsum de lexemple 1 o On a excut 10 fois le corps du for.
o Le programme affiche donc 10 fois BONJOUR lcran.
Exemple 2 : un deuxime exemple de for
#include
int main()
{
int i;
for (i=0; i
La valeur de i est : 2
La valeur de i est : 3
La valeur de i est : 4
La valeur de i est : 5
La valeur de i est : 6
La valeur de i est : 7
La valeur de i est : 8
La valeur de i est : 9
La valeur finale de i est : 10
Exemple 3 : encore un exemple de for !
#include
int main()
{
int i;
for (i=8; i
Exemple 6 : un for qui ne s'arrte jamais
#include
int main()
{
int i;
for (i=10; i>3; i++)
cout
instruction;
Smantique du while
1. On teste la condition : o si elle est vraie, on excute linstruction puis on recommence au 1). o si elle est fausse, on passe linstruction suivante.
Linstruction peut tre une suite d'instructions entre accolades.
Exemple 7 : un exemple de while
#include
int main()
{
int i=0;
while(i
int main()
{
int i;
cout i;
while (i20)
{
cout
Exemple 9 : un exemple de do...while
#include
int main()
{
int i=0;
do {
cout
Solution
Cet exercice a pour but de vrifier les points techniques suivants :
La notion de variables et leur dclaration.
L'utilisation de cin et de cout.
Le choix d'une structure de contrle adapte au problme !
Voici le fichier source :
#include
int main()
{
int a;
couta;
if ((a>=56)&&(a
Cet exercice a pour but de vrifier les points techniques suivants :
Utilisation rudimentaire d'un while.
Voici le fichier source :
#include
int main()
{
int i=8;
while(i
EXERCICE 5
Ecrire un programme qui demande lutilisateur de taper 10 entiers et qui affiche le plus petit de ces entiers.
Solution
Voici le fichier source :
#include
int main()
{
int i, ppt, x;
for(i=0; i
s = s + i*i*i;
cout
Utilisation simple du for.
Etude d'un algorithme usuel : calcul d'une suite rcurrente.
Modlisation d'un problme simple issu des mathmatiques.
Voici le fichier source :
#include
int main()
{
int i, u=1, v=1, w, N;
coutN;
w = 1;
for (i=2; i
do {
coutN;
ok = (N=0);
if(!ok)cout
switch(choix)
{
case 1: x++; break;
case 2: x=x*2; break;
case 3: x=x-4; break;
}
}while(choix!=4);
cout
return 0;
}
EXERCICE 12
Ecrire un programme qui demande l'utilisateur de taper un entier N et qui calcule u(N)
dfini par :
u(0)=3
u(1)=2
u(n)=n.u(n-1)+(n+1).u(n-2)+n
Solution
Cet exercice a pour but de vrifier les points techniques suivants :
Utilisation d'un for.
Etude d'un algorithme usuel : calcul d'une suite rcurrente assez difficile.
Modlisation d'un problme issu des mathmatiques.
Voici le fichier source :
#include
int main()
{
int N, u, i=0, v, w;
coutN;
u = 3;
v = 2;
if (N==0) w=u;
else if (N==1) w=v;
else for (i=2; i
Etude d'un algorithme usuel de difficult moyenne : calcul du nombre d'occurence
d'une valeur.
Voici le fichier source :
#include
int main()
{
int nb, max, x, i;
for(i=0;i
EXERCICE 15
Ecrire un programme qui demande de saisir un entier et qui indique si cet entier est premier
ou non.
Solution
Cet exercice a pour but de vrifier les points techniques suivants :
Utilisation d'un while de difficult moyenne.
Etude d'un algorithme usuel assez difficile : primarit d'un entier.
Modlisation d'un problme issu des mathmatiques.
Voici le fichier source :
#include
int main()
{
int n;
bool premier = true;
int d = 2;
coutn;
if (n
Voici le fichier source :
#include
int main()
{
int N, i, nb=0, d;
bool est_premier;
coutN;
for(i=2;i
coutN;
while(nb
coutN;
for(i=1;i
return 0;
}
EXERCICE 20
On considre la suite hongroise : u(0)=a (a entier)
si u(n) pair alors u(n+1)=u(n)/2 sinon u(n+1)=3*u(n)+1
Pour toutes les valeurs a, il existe un entier N tel que u(N)=1 (conjecture admise).
a) Ecrire un programme qui demande l'utilisateur de taper a et qui affiche toutes les valeurs
de u(n) de n=1 n=N.
Solution
Cet exercice a pour but de vrifier les points techniques suivants :
Utilisation du while.
Lire prcisment un nonc.
Modlisation assez complexe d'un problme issu des mathmatiques.
Voici le fichier source :
#include
int main()
{
int a, n, u;
couta;
n = 0;
u = a;
while(u!=1)
{
if(u%2==0) u=u/2; else u=3*u+1;
n++;
cout
Imbrication de boucles.
Lire prcisment un nonc.
Modlisation assez complexe d'un problme issu des mathmatiques.
Voici le fichier source :
#include
int main()
{
int a,n,u,M, amax,nmax;
coutM;
amax = 2;
nmax = 2;
for(a=3; anmax) { amax=a; nmax=n; }
}
cout