Algorithmique et structures de
données I
Cours 3:
Structures itératives
Réalisé par: Dhouha Maatar
2021 / 2022
Semestre I
1
PLAN
Introduction
1. La boucle POUR
2. La boucle TANT QUE
3. La boucle REPETER
4. Relation entre les boucles TANT QUE et REPETER
2
Introduction
Les structures de contrôle itératives (boucles) sont utilisées quand
une ou plusieurs instructions doivent être exécutées de manière
répétitive un certain nombre de fois.
Plutôt de recopier n fois les mêmes instructions, on peut demander à
l’ordinateur d’exécuter n fois le même traitement.
Il existe deux catégories d’itérations:
itérations déterministes: le nombre d’itérations est défini à
l’entrée de la boucle.
itérations indéterministes: l’exécution de la prochaine boucle
est conditionnée par une expression booléenne.
3
Introduction
On distingue trois sortes de boucles en algorithmique:
Boucle POUR
Boucle TANT QUE
Boucle RÉPÉTER
• Une structure itérative peut contenir une structure conditionnelle ou
structures itératives (structures itératives imbriquées).
4
1. La boucle POUR
C’est l’instruction pour qui permet de faire des boucles
déterministes. Il s’agit de répéter une suite d’instructions un certain
nombre de fois.
5
1. La boucle POUR
Syntaxe:
POUR < nom_var > DE <Vi> A <Vf> [PAS <val_pas>] FAIRE
< Traitement >
FINPOUR
• <nom_var>: Variable entière (compteur) qui compte le nombre
d’itérations à effectuer.
• Vi: Valeur initiale du compteur.
• Vf: Valeur finale du compteur. Son dépassement implique la sortie de
la boucle.
• PAS <val_pas>: Optionnel. Valeur qu’on ajoute au compteur à la fin
de chaque itération. Par défaut il est égal à 1 et il peut être positif ou
négatif.
Si le pas est positif => Vi + val_pas (Vi <=Vf)
Si le pas est négatif => Vi - val_pas (Vi >=Vf) 6
1. La boucle POUR
Exemple-1: Affichage de tous les nombres pairs entre 1 et 10.
Version1: Version2:
ALGORITHME NombrePairs ALGORITHME NombrePairs
VAR VAR
i : entier i : entier
DEBUT DEBUT
POUR i DE 1 A 10 FAIRE POUR i DE 2 A 10 PAS 2 FAIRE
SI (i Mod 2 = 0) ALORS Écrire(i)
Écrire(i) FINPOUR
FINSI FIN
FINPOUR
FIN
7
1. La boucle POUR
Exemple-2: Calcul de la somme de n nombres saisis.
Algorithme Somme
Var n, cpt: entier
valeur, total: réel
Début
écrire(" combien de valeurs voulez-vous saisir?" )
lire(n)
total ←0
POUR cpt de 1 à n FAIRE
écrire(" donnez un nombre réel" )
lire (valeur)
total ← total + valeur
FINPOUR
écrire(" la somme est " , total)
Fin
8
2. La boucle TANT QUE
Quand le nombre d’itérations n’est pas connu, alors on peut
utiliser la boucleTant que.
Consiste à répéter une suite d’instructions tant que la condition est
remplie.
9
2. La boucle TANT QUE
Syntaxe:
TANT QUE < Condition > FAIRE
< Traitement >
FINTANTQUE
•<Condition>: Expression logique qui retourne Vrai ou Faux.
• Il est nécessaire d’avoir une action dans <Traitement> qui modifie
la valeur de la condition (réaffectation des variables de condition).
•Les paramètres de la conditions doivent être initialisés par lecture
ou par affectation avant la boucle.
Remarque: si la condition est fausse dès le départ, le traitement
n’est jamais exécuté. Le nombre d’itérations dans ce cas est égal à
zéro.
10
2. La boucle TANT QUE
Exemple-3: Affichage des nombres entiers dont le carré est
inférieur à 100.
ALGORITHME Nombre_carré
VAR
nombre : entier
DEBUT
nombre ← 1
TANT QUE (nombre * nombre < 100) FAIRE
Écrire(nombre)
nombre ← nombre +1
FINTANTQUE
FIN
11
2. La boucle TANT QUE
Exemple-4: Calcul de la somme de nombres saisis. Le calcul
s’arrête pour une valeur (-1).
Algorithme Somme
const STOP = -1
Variable
valeur, total: réel
Début
écrire(" donnez une première valeur")
lire (valeur)
total ←0
TANT QUE (valeur ≠ STOP ) FAIRE
total ← total + valeur
écrire(" donnez une autre valeur " )
lire (valeur)
FINTANTQUE
écrire(" la somme est " , total) 12
Fin
3. La boucle REPETER
Quand le nombre d’itérations n’est pas connu, alors on peut
utiliser la boucle Répéter.
Les instructions sont exécutées au moins une fois et répétées jusqu’à
ce que la condition soit remplie.
Remarque: la boucle répéter est typique pour contrôler la saisie de
données. 13
3. La boucle REPETER
Syntaxe:
RÉPÉTER
<Traitement>
JUSQU’À < Condition_arret >
•<Condition_arret>: Expression logique qui retourne Vrai ou Faux.
• Il doit y avoir une action dans <Traitement> qui modifie la valeur
de la condition.
• La boucle s’arrête quand <Condition_arret> s’évalue à Vrai.
Remarque: Quelque soit l’état de la condition d’arrêt, le traitement
de la boucle répéter est exécuté au moins une fois. Le nombre
d’itérations est donc, toujours, supérieur ou égal à un.
14
3. La boucle REPETER
Exemple-5: Écrire un algorithme qui demande à l'utilisateur s'il veut
un examen facile (O/N) et affiche la réponse de l'utilisateur avec un
message.
ALGORITHME Examen_facile
VAR
rep: caractère
DEBUT
RÉPÉTER
Ecrire(“Voulez-vous un examen facile? (O/N) ")
Lire(rep)
JUSQU’À (Majus(rep) = ‘O’) OU (Majus(rep) = ‘N’)
Si (Majus(rep) = ‘O’) ALORS
Ecrire(“Vous voulez un examen facile”)
SINON
Ecrire(“Vous voulez un examen difficile”)
FINSI 15
FIN
3. La boucle REPETER
Exemple-6: Écrire un algorithme qui demande à l'utilisateur d'entrer
un nombre plus grand que 10. Une fois le nombre est valide (>10),
Afficher le avec un message correspondant.
ALGORITHME Application-5
VAR
n: entier
DEBUT
RÉPÉTER
Ecrire(“Saisir un nombre plus grand que 10: ")
Lire(n)
JUSQU’À (n > 10)
Écrire(" Vous avez saisi le nombre: " , n)
FIN
16
4.Relation entre les boucles REPETER et TANT QUE
tant que A faire B répéter B jusqu’à !A
Attention: il n’est pas toujours possible de remplacer une boucle répéter par
une boucle tant que et vice versa.
Retour sur Exemple-4: Calcul de la somme de nombres saisis. Le calcul s’arrête pour une
valeur (-1).
Algorithme Somme
const STOP= -1
Var
valeur, total: réel
Début
total ←0
répéter
écrire(" donnez une valeur" )
lire(valeur)
total ← total + valeur
jusqu’ à (valeur = STOP)
écrire(" la somme est " , total)
Fin
//mauvais choix de boucle, il est préférable d’utiliser tant que 17
4.Relation entre les boucles REPETER et TANT QUE
tant que A faire B répéter B jusqu’à !A
Attention: Les instructions de B doivent modifier au moins une variable de
l’expression logique A.
Mauvais exemple:
Début
val1← 2
val2 ← 3
Tant que (val1 < 100 )faire
val2 ← val2 *val1
Fintantque
Fin
C’est l’expression logique A (et elle seule!) qui en prenant la valeur faux
provoque l’arrêt de la boucle.
Le problème d’une boucle tant que ou répéter: il faut en sortir.
18
FIN
19