Vous êtes sur la page 1sur 5

16/10/2020

Structure TANT QUE ..FAIRE 1/6


Syntaxe TANT QUE <Condition> FAIRE
<Séquence d’instructions>

Les Structures itératives


FIN TANT QUE

Principe de fonctionnement
Chapitre 5 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
d’emblée la condition n’est pas remplie, la boucle ne sera
exécutée aucune fois.
Organigramme
faux La suite du programme
Condition

Année universitaire 2020/2021– Semestre 1 vrai


Séquence d'instructions

1 2

Structure TANT QUE ..FAIRE 3/6 Structure TANT QUE ..FAIRE 3/6
Exemple 1 Exemple 2
10
Algorithme TEST ….
20
VAR i 1 30
i (entier) L'algorithme continue à Tant que i <= 5 FAIRE 40
Début demander à l'utilisateur ECRIRE (i*10) 50
Ecrire ("donnez un entier S.V.P") de saisir des entiers tant ii+1
Lire (i) Fin tant que
Tant que i <> 0 FAIRE qu'il n'a pas saisi un zéro Remarque: Le nombre d'itérations est connu à l'avance
Ecrire ("donnez un entier S.V.P")
Lire (i)
Fin tant que Exemple 3
Fin ….
i 6 Rien n'est affiché
Tant que i <= 5 FAIRE
Remarque: Le nombre d'itérations n'est pas connu à l'avance
ECRIRE (i*10)
ii+1
Fin tant que
3 4

1
16/10/2020

Structure TANT QUE ..FAIRE 4/6 Structure TANT QUE ..FAIRE 5/6
10
Exemple 4
10 Exemple 6 calcul de factoriel
… 10
i 1 10 Algorithme Facto
Tant que i <= 5 FAIRE 10 VAR
n, f, i (Entier)
ECRIRE (i*10) 10
Fin tant que DEBUT
… Lire(n)
L'algorithme tourne indéfiniment f1
car on a omis d'incrémenter le in
compteur (on parle d'une boucle Tant que i >= 1 Faire
ff*i
infinie)
Exemple 5 ii-1
… Fin Tant que
i 1 Ecrire(n," ! = ",f)
Tant que i <= 5 FAIRE 10 FIN.
ECRIRE (i*10) 20
i  i *2 40
Fin tant que 5 6

Structure TANT QUE ..FAIRE 6/6 Structure REPETER .. JUSQU'A 1/6


Exemple 7 Affichage des diviseurs Syntaxe REPETER
<Séquence d’instructions>
Algorithme Diviseurs JUSQU'A <Condition>
VAR
n, i (Entier)
DEBUT Principe de fonctionnement
Lire(n)
A l’exécution de l’algorithme, toutes les instructions écrites entre
i1
Tant que i <= n Faire
Répéter et Jusqu’à sont exécutées au moins une fois et leur
Si n Mod i = 0 Alors exécution sera répétée jusqu’à ce que la condition placée
Ecrire(i) derrière Jusqu’à soit satisfaite.
Fin Si Organigramme
ii+1
Fin Tant que Séquence d'instructions
FIN

faux vrai
Condition La suite du programme

7 8

2
16/10/2020

Structure REPETER .. JUSQU'A 2/6 Structure REPETER .. JUSQU'A 3/6


Exemple 1 Exemple 3

i 1 10 i1 10
REPETER 20 REPETER 10
ECRIRE (i*10) 30 ECRIRE (i*10) 10
i i+1 40 JUSQU'A (i > 5) 10
JUSQU'A (i > 5)
50 10

Boucle Infinie
à la différence de l'instruction
Exemple 2
TANT QUE, La condition n'est
Remarque: Il faut toujours s’assurer que la condition de sortie
i 6 testée qu'après avoir exécuté
sera vérifiée après un certain nombre fini de parcours. Sinon
REPETER 60 une fois la séquence c’est une boucle infinie.
ECRIRE (i*10) d'instructions de la boucle
i i+1
JUSQU'A (i > 5)

9 10

Structure REPETER .. JUSQU'A 4/6 Structure REPETER .. JUSQU'A 5/6


Exemple 4 l’algorithme de calcul des diviseurs en Exemple 5 l’algorithme de calcul du factoriel en
utilisant une boucle “ Répéter ”. utilisant une boucle “ Répéter ”.

ALGORITHME Diviseurs ALGORITHME Factoriel


VAR VAR
n, i (Entier) n, f, i (Entier)
DEBUT DEBUT
Lire(n) Lire(n)
i1 f1
Répéter in
Si n Mod i = 0 Alors Si n > 0 Alors
Ecrire(i) Répéter
FinSi ff*i
ii+1 ii-1
Jusqu’à (i > n) Jusqu’à (i <= 1)
FIN FinSi
Ecrire(n,"! = ",f)
FIN
11 12

3
16/10/2020

Boucles imbriquées 1/4 Boucles imbriquées 2/4 deux boucles imbriquées ;


Lorsqu'une boucle contient une autre boucle on dit que l'on est en
une 'Tant que' à l'intérieur
pour i de 1 à nbrEtud faire d'une 'Pour'.
présence de boucles imbriquées.
moyEtud  0
Exemple:
j1
Calcul de la moyenne des notes d'un étudiant, puis calcul des
Tant que j <= nbrNote
moyennes sur une classe.
écrire ("donnez la note numéro ", j," de l'étudiant numéro ",i)
lire (note)
Algo Moyennes moyEtud  moyEtud + note/nbrNote
Var j  j+1
moyEtud, moyClass, note (réel) Fin Tant que
nbrEtud, nbrNote, i,j (entier) écrire ("la moyenne de l'étudiant numéro ",i," est ",moyEtud)
Début moyclass  moyclass + (moyEtud/nbrEtud)
écrire ("donnez le nombre d'étudiants")
Fin pour
lire(nbrEtud)
écrire ("la moyenne de la classe est ", moyClass)
écrire ("donnez le nombre de notes par étudiant")
fin
lire (nbrNote)
moyClass  0

13 14

Boucles imbriquées 3/4 Boucles imbriquées 4/4


D'une manière générale, étant données deux boucles, deux
situations seulement peuvent exister : soit elles sont  ATTENTION, lorsque la boucle extérieure est une boucle Pour, la
disjointes, soit elles sont imbriquées. 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.

Boucles Boucles Schéma


imbriquées disjointes interdit

15 16

4
16/10/2020

Synthèse 1/2 Synthèse 2/2


Passage d’une structure itérative à une autre
Choix de la structure itérative
Pour cpt de vi à vf Faire
Traitement
Fin Pour non non
Nbre d’itérations connu Le traitement s’exécute Boucle
à l’avance au moins une fois "Tant que"

oui oui
Cpt  vi Cpt  vi
Boucle Boucle
Répéter Tant Que (cpt <= vf) Faire
"Pour" "Répéter"
Traitement Traitement
Cpt  suivant(cpt) Cpt  suivant(cpt)
Jusqu’à (cpt > vf) 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 18

Applications 1/2 Applications 2/2

Travail à faire 1 Travail à faire 2


 Un nombre parfait est un nombre présentant la particularité d’être Ecrire un algorithme qui lit deux entiers A et B puis calcule et affiche
égal à la somme de tous ses diviseurs, excepté lui-même. leur PGCD en utilisant la méthode suivante :

 Le premier nombre parfait est 6 = 3 + 2 + 1.  Si A = B ; PGCD(A,B) = A


 Si A > B ; PGCD(A,B) = PGCD(A–B,B)
Écrire un algorithme qui affiche tous les nombres parfaits inférieurs à  Si B > A ; PGCD(A,B) = PGCD(A ,B-A)
1000.

19 20