Les Structures itératives

Page 1 sur 20Lecteur de document UniversityLib

Les Structures itératives

Computer Science - Algorithms · notes

Browse all programmation documents

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

Advertisement

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

Advertisement

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

Advertisement

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

Advertisement

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