1 of 19

Chapitre 4 :�Les boucles en algorithmique et en langage C

MIPC

1

2019/2020

2 of 19

Les types de boucle

  • On distingue 2 types de boucles:
    • Les boucles à compteur ou définie
      • On sait à l’avance combien de fois la boucle devra tourner et une variable (le compteur ) compte les répétitions
        • Choisir 10 nombres au hasard. On fera dix fois l’opération choisir un nombre au hasard.
        • Ex : la boucle Pour

    • Les boucles à événement ou indéfinie
      • On ne sait pas à l’avance le nombre de fois que la boucle sera exécutée.
        • Ça peut dépendre du nombre de données à traiter.
        • Ça peut dépendre du nombre d’essais que l’usager a effectués.
        • Ex : la boucle Tanque et la boucle jusqu’a

MIPC

2

2019/2020

3 of 19

La boucle Tant que

TantQue (condition)

instructions

FinTantQue

MIPC

3

2019/2020

condition

instructions

Faux

Vrai

4 of 19

Boucle Tant que : exemple simple

Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100

Algorithme tantq

Var

som, i : entier;Debut

i ← 0;

som← 0;

TantQue (som <=100)

     i ← i+1;

som ← som+i;

FinTantQue

Ecrire (" La valeur de la i est : ", i); Ecrire (" La valeur de la somme est : ", som);

Fin

MIPC

4

2019/2020

5 of 19

Les structures de contrôle : while

  • L’instruction while permet de répéter des instructions, tant qu'une condition est vérifiée.
  • Syntaxe
    • Forme 1

while (condition)

une-instruction;

    • Forme 2

while (condition) {

Des instructions;

}

}

MIPC

5

2019/2020

La syntaxe du langage C

6 of 19

Les structures de contrôle :while

  • La boucle while fonctionne de la façon suivante:
    1. La condition est évaluée,
    2. si cette condition est fausse, l’instruction while se termine,
    3. si la condition est vraie les instructions sont exécutées
    4. l’exécution reprend à l’étape 1.
  • Exemple

#include <stdio.h>

main ()

{ int i=1, N;

printf("N=\n"); scanf("%d",&N);

while (i <= N) {

printf("%d ", i); printf("\n");

i = i+1;}

}

MIPC

6

2019/2020

La syntaxe du langage C

7 of 19

Les structures de contrôle :while

while imbriqué

#define MAX 4

int i=0,j;

while (i < MAX ) {

j=0;

while (j < MAX ) {

printf(" position : %d \t %d\n",i,j);

j++;

}

i++;

}

MIPC

7

2019/2020

La syntaxe du langage C

8 of 19

La boucle Pour

Pour compteur allant de initiale à finale par pas valeur du pas

instructions

FinPour

MIPC

8

2019/2020

i n'a pas atteint finale

instructions

Faux

Vrai

i 🡨initiale

i 🡨i + pas

9 of 19

La boucle Pour

Remarques :

  • Compteur est une variable de type entier. Elle doit être déclarée

  • Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le nombre d'itérations est égal à finale - initiale+ 1

  • Initiale et finale peuvent être des valeurs, des variables définies avant le début de la boucle ou des expressions de même type que compteur

MIPC

9

2019/2020

10 of 19

Boucle Pour :

  • Il faut éviter de modifier la valeur du compteur (et de finale) à l'intérieur de la boucle. En effet, une telle action :

    • perturbe le nombre d'itérations prévu par la boucle Pour
    • rend difficile la lecture de l'algorithme
    • présente le risque d'aboutir à une boucle infinie

Exemple : Pour i allant de 1 à 5

i 🡨 i -1; � écrire(" i = ", i) ;

Finpour

MIPC

10

2019/2020

11 of 19

Déroulement de la boucle Pour

  1. La valeur initiale est affectée à la variable compteur
  2. On compare la valeur du compteur et la valeur de finale :

    • Si la valeur du compteur est > à la valeur finale dans le cas d'un pas positif (ou si compteur est < à finale pour un pas négatif), on sort de la boucle et on continue avec l'instruction qui suit FinPour

    • Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur est >= à finale pour un pas négatif), instructions seront exécutées

      • Ensuite, la valeur de compteur est incrémentée de la valeur du pas si pas est positif (ou décrémenté si pas est négatif)

      • On recommence l'étape 2 : La comparaison entre compteur et finale est de nouveau effectuée, et ainsi de suite

MIPC

11

2019/2020

12 of 19

Boucle Pour : exemple

MIPC

12

2019/2020

Algorithme Plus-Grand-Element: Réécriture de l’algorithme précédent mais avec une boucle ``Pour’’

Entrée: n entiers S1,…, Sn

Sortie: grand contenant le plus grand élément

Algo plus-grand (S,n)

Debut

Grand 🡨 S1;

Pour i =1 à n Faire

Si Si > grand alors // une plus grande valeur a été trouvée

grand 🡨 Si;

FinSi

FinPour

Ecrire (grand);

Fin

13 of 19

Lien entre Pour et TantQue

  • La boucle Pour est un cas particulier de Tant Que (cas où le nombre d'itérations est connu et fixé) . Tout ce qu'on peut écrire avec Pour peut être remplacé avec TantQue (la réciproque est fausse)

Pour compteur allant de initiale à finale par pas valeur du pas

instructions ;

FinPour

peut être remplacé par : (cas d'un pas positif)

compteur ← initiale;

TantQue compteur <= finale

instructions ;

compteur ← compteur+pas;

FinTantQue

MIPC

13

2019/2020

14 of 19

Lien entre Pour et TantQue: exemple

MIPC

14

2019/2020

Calcul de x à la puissance n avec la boucle Pour et la boucle TantQue

x : un réel non nul

n : entier positif ou nul

15 of 19

Solution avec la boucle Pour

Algorithme puissance

Var

x, puiss : réel ;

n, i : entier;

DébutEcrire (" Entrez respectivement les valeurs de x et n ");

Lire (x, n);

puiss ← 1;

Pour i allant de 1 à n

    puiss← puiss*x ; � FinPour

Ecrire (x, " à la puissance ", n, " est égal à ", puiss);

Fin

MIPC

15

2019/2020

16 of 19

Solution avec la boucle Tant Que

Algorithme puissance

Var

x, puiss : réel ;

n, i : entier;

DébutEcrire (" Entrez respectivement les valeurs de x et n ");

Lire (x, n);

puiss ← 1; i ← 1;

TantQue (i<=n);

    puiss← puiss*x ;i ← i+1;

FinTantQue

Ecrire (x, " à la puissance ", n, " est égal à ", puiss);

Fin

MIPC

16

2019/2020

17 of 19

Algorithme de la fonction factorielle : Exemple

  • Écrire deux algorithmes qui calculent pour un entier positif donné n la valeur n!, un de ces algorithmes doit utilisé la boucle Pour et l’autre la boucle Tanque

Entrée : n de type naturel

Sortie : factoriel (n) = 1*2*3*…..*(n-1)*n

MIPC

17

2019/2020

18 of 19

Algorithme de la fonction factorielle

MIPC

18

2019/2020

Algorithme / tantque

Calcul factorielle 1

Variables

i, f, n : Naturel;

Début

lire(n);

i ← 1;

f ← 1;

tant que (i < n)

i ← i+1;

f ← f * i;

Fin de tant que

écrire (f);

Fin

Algorithme / Pour

Calcul factorielle 2

Variables

i, f, n : Naturel;

Début

lire(n);

f ← 1;

pour i variant de 2 à n

f ← f * i;

Fin pour

écrire (f);

Fin

19 of 19

Boucles imbriquées

  • Les instructions d'une boucle peuvent être des instructions itératives. Dans ce cas, on aboutit à des boucles imbriquées

  • Exemple:

Pour i allant de 1 à 5

Pour i allant de 1 à i

écrire("O") ;

FinPour

écrire("X") ;

FinPour

MIPC

19

2019/2020