Vous êtes sur la page 1sur 20

Les Structures itératives

Séance 5

Année universitaire 2013/2014 – 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
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

Remarque: Le nombre d'itérations n'est pas connu à l'avance

3
Structure TANT QUE ..FAIRE 3/6

Exemple 2
10
….
20
i 1 30
Tant que i <= 5 FAIRE 40
ECRIRE (i*10) 50
ii+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)
ii+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

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
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

i1 10
REPETER 10
ECRIRE (i*10) 10
JUSQU'A (i > 5) 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
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
deux boucles imbriquées ;
une 'Tant que' à l'intérieur
pour i de 1 à nbrEtud faire d'une 'Pour'.
moyEtud  0
j1
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

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 Boucles Schéma


imbriquées disjointes 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 Cpt  vi
Répéter Tant Que (cpt <= vf) Faire
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
Synthèse 2/2

Choix de la structure itérative

Nbre d’itérations connu non Le traitement s’exécute non Boucle


à l’avance au moins une fois "Tant que"

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.

É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

Vous aimerez peut-être aussi