23
Chapitre 4 : le for, while et do...while La notion de boucles Dans ce chapitre, nous allons étudier les structures de contrôle permettant d'effectuer des boucles : le for, le while et le do…while. On parle de boucles lorsqu'on répète l'exécution d'une série d'instructions à l'intérieur 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 contrôle qui permet de répéter un certain nombre de fois une partie d'un programme. Syntaxe : for( instruction1 ; condition ; instruction2 ) instruction3 ; Sémantique du for : 1. on exécute l’instruction1 2. on teste la condition : o si elle est vraie, on exécute l’instruction3, puis l’instrution2 puis on revient au 2. o si elle est fausse on passe à l’instruction suivante. L’instruction3 peut être une suite d'instructions entre accolades. Exemple 1 : utilisation du for #include <iostream.h> int main() { int i; for(i=0;i<10;i=i+1) cout<<"BONJOUR"<<endl; return 0; } Dans ce programme, il y a une boucle de type for : o L'instruction 1 est : i=0 o L'instruction 2 est : i=i+1 o Le corps du for comporte une seule instruction : cout<<"BONJOUR"<<endl; Exécution pas à pas de l’exemple 1 o i vaut 0 o Le test i<10 est vrai ==> on exécute le corps du for avec i=0 o On exécute i=i+1 ==> i vaut 1

Boucle for Et While Bis

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

  • cout
  • 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