Vous êtes sur la page 1sur 22

Algorithmique et structure de données

1è𝑟𝑒 Année Prépa


Semestre 1

Enseignante: 𝑀𝑚𝑒 Rahma MILI

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 1


Algorithmique
Leçon4: Les structures itératives
OBJECTIFS:

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 2


Définition
 Une structure répétitive est une structure qui répète un même traitement
autant de fois que l’on veut en fonction d’une condition d’exécution.
 Cette structure s’arrête lorsque cette condition n’est plus vérifiée.
On distingue deux types de répétitions :
• L’Itération : quand on sait le nombre de fois que l’on va répéter un
traitement (la boucle Pour)
• La Répétition Conditionnelle : quand la poursuite d’une répétition
dépend d’une condition booléenne : (la boucle Tant que et la boucle
Répéter)
 L’utilisation d’un tel ou tel schéma dépend essentiellement de la nature du
problème à résoudre.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 3


La boucle « Pour » [1/6]
Définition :

 La boucle Pour est une structure répétitive qui itère le même


traitement pour une plage de valeurs entières comprises entre une
borne inférieure et une borne supérieure.

 La mise à jour étant automatique, l’arrêt du traitement de la boucle


Pour se réalise lorsqu’on dépasse l’une des bornes.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 4


La boucle « Pour » [2/6]
Syntaxe

Pour <compteur i > de <ValeurInitiale> à <ValeurFinale> (Pas = Val_pas) Faire


<séquence d’instructions>
Fin Pour optionnel

Avec:
Compteur i: variable de type entier (en général) servant de compteur
ValeurInitiale: valeur initiale que va prendre le compteur.
ValeurFinale:: valeur finale que prendra le compteur.
Pas: Est une expression dont la valeur sera le pas d'avancement. Il est
facultatif, s'il est omis, le pas sera pris par défaut égal à 1
ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 5
La boucle « Pour » [3/6]
Principe de fonctionnement
Le paramètre compteur reçoit la valeur initiale au moment d’accès à la
boucle, puis à chaque parcours, il passe automatiquement à la valeur
suivante dans son domaine jusqu’à atteindre la valeur finale.
Exécution de la boucle
On suppose qu’on est déjà entrain d’exécuter un algorithme, et on a rencontré une boucle Pour.
1ère étape : Affectation de ValeurInitiale au compteur i .
2ème étape : Vérification si la valeur de i est dans l’intervalle ou non, si elle est dans l’intervalle alors aller à
la 3ème étape, sinon aller à la 5ème étape.
3ème étape : Exécution du traitement de la boucle.
4ème étape : Incrémentation automatique de la valeur de i en fonction de la valeur du Pas (i i + Val_pas)
et retour à la 2ème étape.
5ème étape : Sortie de la boucle et suite de l’exécution du programme à partir de la première instruction qui
vient après Fin pour.
ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 6
La boucle « Pour » [4/6]
Organigramme Remarques
Compteur <- ValeurInitiale  Le traitement de la boucle Pour est exécuté pour toutes les
valeurs comprises entre Val_initiale et Val_finale.
 Le sens de la boucle Pour peut être croissant (Pas > 0) ou
Compteur <= Faux décroissant (Pas < 0).
ValeurFinale
 Si la valeur du Pas = 0, on sera en présence d’une boucle
infinie.
Vrai  L’incrémentation de I est automatique en fonction de la
valeur du Pas.
Séquence d’instructions  Dans le corps de la boucle il est interdit de modifier la
valeur du compteur I, même si on peut s'en servir.
 Dans une boucle Pour, si le Pas n’apparaît pas, il vaut 1 par
Compteur <- Compteur + 1 défaut.
 La boucle Pour est conseillée si le nombre d’itérations à
faire est connu à l’avance.
Suite de programme

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 7


La boucle « Pour » [5/6]
Exemple 1 Exemple 2
POUR i DE 1 À 5 FAIRE POUR i DE 1 À 5 (pas = 2) FAIRE
Ecrire(i*10) Ecrire(i*10)
FIN POUR FIN POUR

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 8


La boucle « Pour » [6/6]
Exercice
Ecrire un algorithme qui permet de lire 10 notes et calculer leur somme et leur moyenne
Algorithme somme_moyenne
Variables
note,moyenne,somme: réel
i:entier
Début
somme <- 0
Pour i de 1 à 10 faire
Lire(note)
somme <- somme + note
Fin pour
Ecrire("la somme est",somme)
moyenne <- somme/10
Ecrire(« la moyenne est » , moyenne)
Fin

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 9


La boucle « Répéter » [1/6]
Définition :

 La boucle Répéter permet de rentrer dans la boucle quelque soit la


condition et réitère l’exécution jusqu'à ce que la condition soit vérifiée.

 La condition est une expression logique qui peut être simple ou


composée mais qui donne toujours un résultat logique.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 10


La boucle « Répéter » [2/6]
Syntaxe
Répéter
<Séquence d’instructions>
<mise_à_jour_condition_arrêt>
Jusqu’à <Condition _Arrêt_Atteinte >

Principe de fonctionnement
A l’exécution de l’algorithme, toutes les instruction sé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.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 11


La boucle « Répéter » [3/6]
Exécution de la boucle Organigramme
On suppose qu’on est déjà entrain d’exécuter un
algorithme, et on a rencontré une boucle Répéter. Séquence d’instructions
1ère étape: on entre directement dans le traitement
associé à Répéter et on l’exécute. Faux
2ème étape: on met à jour les variables impliquées dans la Condition
condition d’arrêt.
3ème étape: on teste la condition d’arrêt : si elle n’est pas
atteinte, on revient à la 1ère étape, sinon on passe à la 4ème
Vrai
étape.
4ème étape: la condition d’arrête étant atteinte, on sort de
la boucle Répéter et on continue l’exécution du Suite de programme
programme à partir de la 1ère instruction qui vient après
Jusqu’à.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 12


La boucle « Répéter » [4/6]
Remarques
 Dans une boucle Répéter, le traitement est exécuté au moins une seule fois quelle que
soit la valeur de la condition d’arrêt.
 Dans une boucle Répéter, on parle de condition d’arrêt ; quant elle est atteinte, on
sort de cette boucle.
 Il est indispensable d’initialiser correctement les variables de la condition d’arrêt et de
les mettre à jour à la fin de chaque itération : condition nécessaire et obligatoire pour
pouvoir reboucler.
 La structure Répéter est conseillée surtout pour les problèmes indiquant dans leur
énoncé une condition d’arrêt.
 Si la condition d’arrêt reste inchangée (non mise à jour), on risque de reboucler
indéfiniment et par conséquent le programme se bloque.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 13


La boucle « Répéter » [5/6]
Exemple 1 Exemple 2
i <- 1 i <- 6
REPETER REPETER
ECRIRE(i*10) ECRIRE(i*10)
i<-i+1 i<-i+1
JUSQU'A(i>5) JUSQU'A(i>5)

La condition n'est testée


qu'après avoir exécuté
une fois la séquence
d'instructions de la
boucle

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 14


La boucle « Répéter » [5/6]
Exemple 1
i <- 1
REPETER
ECRIRE(i*10)
JUSQU'A(i>5)

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.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 15


La boucle « Répéter » [6/6]
Exercice
Ecrire un algorithme qui lit un entier positif n puis affiche tous ses diviseurs.
Algorithme Diviseurs
Variables
n, i : Entier
Début
Ecrire(”Entrer un entier positif : ”) L ire(n)
i <- 1
Répéter
Si (n Mod i = 0) Alors
Ecrire(i)
FinSi
i <- i + 1
Jusqu’à (i > n)
Fin

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 16


La boucle « Tant que » [1/6]
Définition :

 La boucle Tant que permet d’exécuter le corps de la boucle lorsque la


condition d’exécution est vérifiée ; on s'arrêtera dès que la condition
n’est plus vérifiée.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 17


La boucle « Tant que» [2/6]

Syntaxe

Initialisation des variables de la condition d’exécution


Tant que <Condition_exécution_vérifiée> Faire
<Séquence d’instructions>
<mise_à_jour_condition_exécution>
Fin tant que

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 18


La boucle « Tant que » [3/6]
Exécution de la boucle

On suppose qu’on est déjà entrain d’exécuter un algorithme, et on a rencontré


une boucle Tant que.
On suppose également que les variables impliquées dans la condition
d’exécution sont initialisées.
1ère étape : On teste si la condition d’exécution est vérifiée ou non : si oui alors
aller à la 2ème étape sinon aller à la 5ème étape.
2ème étape : On exécute le traitement associé à la boucle.
3ème étape : On met à jour les variables de la condition d’exécution.
4ème étape : Aller à la 1ère étape.
5ème étape : On sort de la boucle et on continue l’exécution du programme à
partir de la première instruction qui vient après Fin Tant que.

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 19


La boucle « Tant que » [4/6]
Remarques
 Dans une boucle Tant que, le traitement associé à la boucle peut ne pas être exécuté :
la condition d’exécution n’est pas vérifiée dès le départ.
 Dans une boucle Tant que, on parle de condition d’exécution ; quant elle n’est plus
vérifiée, on sort de cette boucle.
 Il est indispensable d’initialiser correctement les variables de la condition d’exécution
et de les mettre à jour à la fin de chaque itération : condition nécessaire et obligatoire
pour pouvoir reboucler.
 La structure Tant que est conseillée surtout pour les problèmes indiquant dans leur
énoncé une condition d’exécution.
 Une condition d’exécution est la négation de la condition d’arrêt.
 Si la condition d’exécution reste inchangée (non mise à jour), on risque de reboucler
indéfiniment et par conséquent le programme se bloque (boucle infinie).

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 20


Tableau Comparatif des Trois Schémas itératifs :

Critère Répéter Tant que Pour


Traitement Au moins 1 fois De 0 à N fois De Val_initiale jusuq’à
Val_finale
Initialisation Oui avant Répéter Oui avant Tant que Oui : Val_initiale
Mise à jour variable Oui après traitement Oui après traitement Oui, Automatique en
fonction du Pas
Sortie de la boucle Condition_arrêt atteinte Condition_exécution non Compteur dépassant les
vérifiée bornes
Type de la condition Expression logique avec ET, Expression logique avec ET, Une seule variable de
OU, etc. OU, etc. type Entier

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 21


Merci à vous

ASD 1È𝑟𝑒 ANNÉE PRÉPA 2019/2020 22