Les Structures itératives
Séance 5
Année universitaire 2020/2021 – Semestre 1
1
Structure TANT QUE ..FAIRE 1/6
Syntaxe
TANT QUE <Condition> FAIRE
<Séquence d’instructions>
FIN TANT QUE
Principe de fonctionnement
A l’exécution de l’algorithme, la suite d’instructions est exécutée
tant que la condition (une expression logique) est satisfaite. Si
la boucle ne sera
d’emblée la condition n’est pas remplie,
exécutée aucune fois.
Organigramme
faux
La suite du programme
Condition
vrai
Séquence d'instructions
2
Structure TANT QUE ..FAIRE 3/6
Exemple 1
Algorithme TEST
VAR
i (entier)
Début
Ecrire ("donnez un entier S.V.P")
Lire (i)
Tant que i <> 0 FAIRE
Ecrire ("donnez un entier S.V.P")
Lire (i)
Fin tant que
Fin
L'algorithme continue à
demander à l'utilisateur
de saisir des entiers tant
qu'il n'a pas saisi un zéro
Remarque: Le nombre d'itérations n'est pas connu à l'avance
3
Structure TANT QUE ..FAIRE 3/6
Exemple 2
….
i 1
Tant que i <= 5 FAIRE
ECRIRE (i*10)
i i + 1
10
20
30
40
50
Fin tant que
Remarque: Le nombre d'itérations est connu à l'avance
Exemple 3
….
i 6
Tant que i <= 5 FAIRE
ECRIRE (i*10)
i i + 1
Fin tant que
Rien n'est affiché
4
Structure TANT QUE ..FAIRE 4/6
Exemple 4
Publicité
…
i 1
Tant que i <= 5 FAIRE
ECRIRE (i*10)
Fin tant que
Exemple 5
…
i 1
Tant que i <= 5 FAIRE
ECRIRE (i*10)
i i *2
Fin tant que
10
10
10
10
10
10
…
L'algorithme tourne indéfiniment
car on a omis d'incrémenter le
compteur (on parle d'une boucle
infinie)
10
20
40
5
Structure TANT QUE ..FAIRE 5/6
Exemple 6 calcul de factoriel
Algorithme Facto
VAR
n, f, i (Entier)
DEBUT
Lire(n)
f 1
i n
Tant que i >= 1 Faire
f f * i
i i - 1
Fin Tant que
Ecrire(n," ! = ",f)
FIN.
6
Structure TANT QUE ..FAIRE 6/6
Exemple 7 Affichage des diviseurs
Algorithme Diviseurs
VAR
n, i (Entier)
DEBUT
Lire(n)
i 1
Tant que i <= n Faire
Si n Mod i = 0 Alors
Ecrire(i)
Fin Si
i i + 1
Fin Tant que
FIN
7
Structure REPETER .. JUSQU'A 1/6
Syntaxe
REPETER
<Séquence d’instructions>
JUSQU'A <Condition>
Principe de fonctionnement
A l’exécution de l’algorithme, toutes les instructions écrites entre
Publicité
Répéter et Jusqu’à sont exécutées au moins une fois et leur
exécution sera répétée jusqu’à ce que la condition placée
derrière Jusqu’à soit satisfaite.
Organigramme
Séquence d'instructions
faux
Condition
La suite du programme
vrai
8
Structure REPETER .. JUSQU'A 2/6
Exemple 1
i 1
REPETER
ECRIRE (i*10)
i i + 1
JUSQU'A (i > 5)
Exemple 2
i 6
REPETER
ECRIRE (i*10)
i i + 1
JUSQU'A (i > 5)
10
20
30
40
50
à la différence de l'instruction
TANT QUE, La condition n'est
testée qu'après avoir exécuté
une fois la séquence
d'instructions de la boucle
60
9
Structure REPETER .. JUSQU'A 3/6
Exemple 3
i 1
REPETER
ECRIRE (i*10)
JUSQU'A (i > 5)
10
10
10
10
10
…
Boucle Infinie
Remarque: Il faut toujours s’assurer que la condition de sortie
sera vérifiée après un certain nombre fini de parcours. Sinon
c’est une boucle infinie.
10
Structure REPETER .. JUSQU'A 4/6
Exemple 4 l’algorithme de calcul des diviseurs en
utilisant une boucle “ Répéter ”.
ALGORITHME Diviseurs
VAR
n, i (Entier)
DEBUT
Lire(n)
i 1
Répéter
Si n Mod i = 0 Alors
Ecrire(i)
FinSi
i i + 1
Publicité
Jusqu’à (i > n)
FIN
11
Structure REPETER .. JUSQU'A 5/6
Exemple 5 l’algorithme de calcul du factoriel en
utilisant une boucle “ Répéter ”.
ALGORITHME Factoriel
VAR
n, f, i (Entier)
DEBUT
Lire(n)
f 1
i n
Si n > 0 Alors
Répéter
f f * i
i i - 1
Jusqu’à (i <= 1)
FinSi
Ecrire(n,"! = ",f)
FIN
12
Boucles imbriquées 1/4
Lorsqu'une boucle contient une autre boucle on dit que l'on est en
présence de boucles imbriquées.
Exemple:
Calcul de la moyenne des notes d'un étudiant, puis calcul des
moyennes sur une classe.
Algo Moyennes
Var
moyEtud, moyClass, note (réel)
nbrEtud, nbrNote, i,j (entier)
Début
écrire ("donnez le nombre d'étudiants")
lire(nbrEtud)
écrire ("donnez le nombre de notes par étudiant")
lire (nbrNote)
moyClass 0
13
Boucles imbriquées 2/4
pour i de 1 à nbrEtud faire
moyEtud 0
j 1
Tant que j <= nbrNote
deux boucles imbriquées ;
une 'Tant que' à l'intérieur
d'une 'Pour'.
écrire ("donnez la note numéro ", j," de l'étudiant numéro ",i)
lire (note)
moyEtud moyEtud + note/nbrNote
j j+1
Fin Tant que
écrire ("la moyenne de l'étudiant numéro ",i," est ",moyEtud)
moyclass moyclass + (moyEtud/nbrEtud)
Fin pour
écrire ("la moyenne de la classe est ", moyClass)
fin
14
Boucles imbriquées 3/4
D'une manière générale, étant données deux boucles, deux
situations seulement peuvent exister : soit elles sont
disjointes, soit elles sont imbriquées.
Boucles
imbriquées
Boucles
disjointes
Publicité
Schéma
interdit
15
Boucles imbriquées 4/4
ATTENTION, lorsque la boucle extérieure est une boucle Pour, la
boucle intérieure ne doit pas modifier l'indice de la boucle extérieure,
ainsi, s'il s'agit de deux boucles Pour imbriquées, les indices ne doivent
pas porter le même nom.
L'utilisation de deux boucles imbriquées se rencontre dès que l'on
travaille sur un ensemble d'objets dont
le traitement de chacun
nécessite une boucle.
16
Synthèse 1/2
Passage d’une structure itérative à une autre
Pour cpt de vi à vf Faire
Traitement
Fin Pour
Cpt vi
Répéter
Traitement
Cpt suivant(cpt)
Jusqu’à (cpt > vf)
Cpt vi
Tant Que (cpt <= vf) Faire
Traitement
Cpt suivant(cpt)
Fin Tant que
Remarque: Le passage d’une boucle « répéter » à une boucle
« pour » n’est pas toujours possible (cas où le nombre d'itérations
n'est pas connu d'avance)
17
Synthèse 2/2
Choix de la structure itérative
Nbre d’itérations connu
à l’avance
non
Le traitement s’exécute
au moins une fois
non
Boucle
"Tant que"
oui
Boucle
"Pour"
oui
Boucle
"Répéter"
18
Applications 1/2
Travail à faire 1
Un nombre parfait est un nombre présentant la particularité d’être
égal à la somme de tous ses diviseurs, excepté lui-même.
Le premier nombre parfait est 6 = 3 + 2 + 1.
Écrire un algorithme qui affiche tous les nombres parfaits inférieurs à
1000.
19
Applications 2/2
Travail à faire 2
Ecrire un algorithme qui lit deux entiers A et B puis calcule et affiche
leur PGCD en utilisant la méthode suivante :
Si A = B ; PGCD(A,B) = A
Si A > B ; PGCD(A,B) = PGCD(A–B,B)
Si B > A ; PGCD(A,B) = PGCD(A ,B-A)
20