Vous êtes sur la page 1sur 20

Chapitre 4 :

Les structures itératives


Objectif

 Construire des algorithmes comportant des


traitements itératifs (répétitifs).

Cours Algorithmique et Programmation 1 2


4.1- Introduction

 La notion d’itération est l’une des notions fondamentales


de l’algorithmique.
 On l’utilise souvent quand on doit exécuter le même
traitement un certain nombre de fois qui peut être connu
à l’avance ou non.
 Dans ce dernier cas, l’arrêt de l’itération est déclenché
par une condition sur l’état des variables dans le
programme.

Cours Algorithmique et Programmation 1 3


4.2- La structure « Pour … Faire »
 Syntaxe générale:
Pour compteur De valeur initiale A valeur finale [pas = <pas>]
Faire
<Séquence d’instructions>
FinPour

 Principe de fonctionnement:
Le compteur (variable de contrôle) prend la valeur initiale au
moment d’accès à la boucle puis, à chaque parcours, il passe
automatiquement à la valeur suivante dans son domaine (indiquée
par le pas) jusqu’à atteindre la valeur finale;
 Le « pas » est optionnel, si on ne le met pas, il est par défaut =1.
Cours Algorithmique et Programmation 1 4
4.2- La structure « Pour … Faire »
 Fonction principale est de répéter une suite
d’instructions un certain nombre de fois

 C’est une boucle utilisée quand le nombre d’itérations


est connu

Cours Algorithmique et Programmation 1 5


Exemple

Pour i de 1 à 5 pas=1 Faire


Ecrire(i*10)
FinPour
 Remarque: quand le pas = 1 on peut l’omettre, on aura donc
Pour i de 1 à 5 Faire
Ecrire(i*10)
FinPour
 Cette boucle affiche respectivement les nombres 10, 20, 30, 40 et 50.

Cours Algorithmique et Programmation 1 6


Remarques
1. Une boucle « pour » peut être exécutée 0, 1 ou n fois
2. On ne peut utiliser la boucle « pour » que si on connait au préalable combien
de fois le traitement sera exécuté (valeur finale – valeur initiale + 1).
3. Dans une boucle « pour », l’évolution du compteur peut aussi se faire dans le
sens décroissant comme dans l’exemple suivant :
Pour i de 5 à 1 [pas = -1] Faire
Ecrire(i*10)
FinPour
 Dans ce cas, le compteur i sera décrémenté́ après chaque parcours.

Cours Algorithmique et Programmation 1 7


Exercice d’application

 Ecrire un algorithme qui lit un entier positif n puis affiche


tous ses diviseurs.

Cours Algorithmique et Programmation 1 8


Solution (version Pour)

Algorithme Diviseurs
Variables
n, i : Entier
Début
Ecrire(”Entrer un entier positif : ”) Lire(n)
Pour i de 1 à n Faire
Si (n Mod i = 0) Alors
Ecrire(i)
FinSi
FinPour
Cours Algorithmique et Programmation 1 9

Fin
4.3- La structure « Répéter … Jusqu’à »

 Syntaxe générale
Répéter
<Séquence d’instructions>
Jusqu’à <condition>

 Principe de fonctionnement : La séquence d’instructions est


exécutée une première fois, puis l’exécution se répète
jusqu’à ce que la condition de sortie soit vérifiée.

 Une boucle « répéter » s’exécute toujours au moins une fois.


Cours Algorithmique et Programmation 1 10
Exemple

i←1
Répéter
Ecrire(i*10)
i←i+1
Jusqu’à (i > 5)

 Cette boucle affiche aussi respectivement les nombres 10, 20, 30, 40 et 50.

Cours Algorithmique et Programmation 1 11


Remarques
1. Contrairement à une boucle «pour», dans une boucle
«répéter», l’initialisation et l’avancement du compteur
doivent être gérés manuellement par le programmeur.
2. Dans une boucle « répéter », il faut toujours s’assurer que
la condition de sortie sera vérifiée après un nombre fini de
parcours. Sinon, c’est une boucle infinie comme dans le cas
suivant :
c ← ‘A’
Répéter
Ecrire(c)
Jusqu’à (c > ‘Z’)
Cours Algorithmique et Programmation 1 12
Exercice

 Réécrire l’algorithme diviseurs en remplaçant la boucle


«pour» par une boucle «répéter»

Cours Algorithmique et Programmation 1 13


Solution (version Répéter)
Algorithme Diviseurs Variables
n, i : Entier
Début
Ecrire(”Entrer un entier positif : ”) Lire(n)
i←1
Répéter
Si (n Mod i = 0) Alors
Ecrire(i)
FinSi
i←i+1
Jusqu’à (i > n)
Fin
Cours Algorithmique et Programmation 1 14
4.4- La structure «TantQue … Faire»

 Syntaxe générale

TantQue <condition> Faire


<Séquence d’instructions>
FinTantQue

Cours Algorithmique et Programmation 1 15


Principe de fonctionnement

 Le traitement est exécuté aussi longtemps que la


condition est vérifiée.
 Si dès le début cette condition est fausse, le traitement
ne sera exécuté aucune fois.

 Une boucle « tantque » peut s’exécuter 0, 1 ou n fois.

Cours Algorithmique et Programmation 1 16


Exemple

i←1
TantQue (i<=5) Faire
Ecrire(i*10)
i←i+1
FinTantQue

Cours Algorithmique et Programmation 1 17


Exercice

 Réécrire l’algorithme diviseurs en remplaçant la boucle


«répéter» par une boucle «tantque»

Cours Algorithmique et Programmation 1 18


Solution (version TantQue)
Algorithme Diviseurs
Variables
n, i : Entier
Début
Ecrire(”Entrer un entier positif : ”) Lire(n)
i←1
TantQue (i <= n) Faire
Si (n Mod i = 0) Alors
Ecrire(i)
FinSi
i←i+1
FinTantQue
Cours Algorithmique et Programmation 1 19

Fin
FinTQ
Ecrire(n,”! = ”,f)
Fin.
4.5- PassageV.d’une
Synthèse structure itérative à

une autre V.1. Passage d une structure itérative à une autre


Pour cpt de vi à vf Faire
Traitement
FinPour
(*)
(*) (**)

cpt ¬ vi
cpt ¬ vi
Répéter TantQue (cpt <= vf) Faire
(**) Traitement
Traitement
cpt ¬ suivant(cpt) cpt ¬ suivant(cpt)
Jusqu à (cpt > vf) FinTQ

(*) : Le passage d’une boucle « répéter » ou « tantque » à une boucle « pour » n’est
possible que si le nombre de parcours est connu à l’avance.
(*) : Le passage d’une boucle «répéter» ou «tantque» à une boucle «pour» n’est
(**) : Lors du passage d’une boucle « pour » ou « tantque » à une boucle « répéter », faire
possible que si le nombre decasparcours
attention aux particuliers (le est connu
traitement à l’avance.
sera toujours exécuté au moins une fois).

(**) : Lors du passage


V.2. Choixd’une boucle
de la structure «pour» ou «tantque» à une boucle
itérative
«répéter», faire attention aux cas particuliers (le traitement sera toujours exécuté
au moins une fois). 20

Cours Algorithmique et Programmation 1

Vous aimerez peut-être aussi