Académique Documents
Professionnel Documents
Culture Documents
Séance 5
1
Structure TANT QUE ..FAIRE 1/6
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
d’emblée la condition n’est pas remplie, la boucle ne sera
exécutée aucune fois.
Organigramme
faux
Condition La suite du programme
vrai
Séquence d'instructions
2
Structure TANT QUE ..FAIRE 3/6
Exemple 1
Algorithme TEST
VAR
i (entier) L'algorithme continue à
Début demander à l'utilisateur
Ecrire ("donnez un entier S.V.P") de saisir des entiers tant
Lire (i)
Tant que i <> 0 FAIRE qu'il n'a pas saisi un zéro
Ecrire ("donnez un entier S.V.P")
Lire (i)
Fin tant que
Fin
3
Structure TANT QUE ..FAIRE 3/6
Exemple 2
10
….
20
i 1 30
Tant que i <= 5 FAIRE 40
ECRIRE (i*10) 50
ii+1
Fin tant que
Remarque: Le nombre d'itérations est connu à l'avance
Exemple 3
….
i 6 Rien n'est affiché
Tant que i <= 5 FAIRE
ECRIRE (i*10)
ii+1
Fin tant que
4
Structure TANT QUE ..FAIRE 4/6
10
Exemple 4
10
… 10
i 1 10
Tant que i <= 5 FAIRE 10
ECRIRE (i*10) 10
Fin tant que
…
L'algorithme tourne indéfiniment
car on a omis d'incrémenter le
compteur (on parle d'une boucle
infinie)
Exemple 5
…
i 1
Tant que i <= 5 FAIRE 10
ECRIRE (i*10) 20
i i *2 40
Fin tant que 5
Structure TANT QUE ..FAIRE 5/6
Algorithme Facto
VAR
n, f, i (Entier)
DEBUT
Lire(n)
f1
in
Tant que i >= 1 Faire
ff*i
ii-1
Fin Tant que
Ecrire(n," ! = ",f)
FIN.
6
Structure TANT QUE ..FAIRE 6/6
Algorithme Diviseurs
VAR
n, i (Entier)
DEBUT
Lire(n)
i1
Tant que i <= n Faire
Si n Mod i = 0 Alors
Ecrire(i)
Fin Si
ii+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
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 vrai
Condition La suite du programme
8
Structure REPETER .. JUSQU'A 2/6
Exemple 1
i 1 10
REPETER 20
ECRIRE (i*10) 30
i i+1 40
JUSQU'A (i > 5)
50
à la différence de l'instruction
Exemple 2
TANT QUE, La condition n'est
i 6 testée qu'après avoir exécuté
REPETER 60 une fois la séquence
ECRIRE (i*10) d'instructions de la boucle
i i+1
JUSQU'A (i > 5)
9
Structure REPETER .. JUSQU'A 3/6
Exemple 3
i1 10
REPETER 10
ECRIRE (i*10) 10
JUSQU'A (i > 5) 10
10
…
Boucle Infinie
10
Structure REPETER .. JUSQU'A 4/6
ALGORITHME Diviseurs
VAR
n, i (Entier)
DEBUT
Lire(n)
i1
Répéter
Si n Mod i = 0 Alors
Ecrire(i)
FinSi
ii+1
Jusqu’à (i > n)
FIN
11
Structure REPETER .. JUSQU'A 5/6
ALGORITHME Factoriel
VAR
n, f, i (Entier)
DEBUT
Lire(n)
f1
in
Si n > 0 Alors
Répéter
ff*i
ii-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
deux boucles imbriquées ;
une 'Tant que' à l'intérieur
pour i de 1 à nbrEtud faire d'une 'Pour'.
moyEtud 0
j1
Tant que j <= nbrNote
é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
15
Boucles imbriquées 4/4
16
Synthèse 1/2
Cpt vi Cpt vi
Répéter Tant Que (cpt <= vf) Faire
Traitement Traitement
Cpt suivant(cpt) Cpt suivant(cpt)
Jusqu’à (cpt > vf) Fin Tant que
17
Synthèse 2/2
oui oui
Boucle Boucle
"Pour" "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.
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