Algorithmique
4. Les structures itératives
Sommaire
I. La boucle « TANTQUE … FAIRE »
II. La boucle « POUR »
III. La boucle « Répéter … JUSQU’À »
2 Algorithmique ESI 2021-2022
Rappel
Rappel
Algorithme informatique
Suite d'instructions ordonnée qui décrit de façon
exhaustive les différentes étapes à suivre par un
processeur pour résoudre un problème donné en un
temps fini
4 Algorithmique ESI 2021-2022
Rappel
Pseudo-code algorithmique
ALGORITHME nom_de_l’algorithme
<partie des déclarations>
DEBUT
<partie des instructions>
//commentaire
FIN
5 Algorithmique ESI 2021-2022
Rappel
Un programme n’est pas purement séquentiel
nécessité d’avoir des structures de contrôle
1. Les structures alternatives (tests)
2. Les structures itératives (boucles)
6 Algorithmique ESI 2021-2022
Rappel
Un programme n’est pas purement séquentiel
nécessité d’avoir des structures de contrôle
1. Les structures alternatives (tests)
2. Les structures itératives (boucles)
7 Algorithmique ESI 2021-2022
Rappel
ALGORITHME nom_de_l’algorithme
<partie des déclarations>
DEBUT
séquence1
SI condition1 ALORS
séquence2
FINSI
séquence3
FIN
8 Algorithmique ESI 2021-2022
Rappel
ALGORITHME nom_de_l’algorithme
<partie des déclarations>
DEBUT
séquence1
SI condition1 ALORS
séquence2
SINON
séquence3
FINSI
séquence4
FIN
9 Algorithmique ESI 2021-2022
Rappel
Une condition est un booléen qui peut être
Valeur booléenne
Expression booléenne
Comparaison
Entre deux valeurs condition simple
Entre plusieurs valeurs condition composée
10 Algorithmique ESI 2021-2022
Rappel
Une condition est un booléen qui peut être
Valeur booléenne
Expression booléenne
Comparaison
Pour qu’un test soit utile, il faut que la condition ne
prenne pas toujours la même valeur (i.e. ne soit pas
toujours fausse ou toujours vraie)
11 Algorithmique ESI 2021-2022
Rappel
Un test imbriqué est exprimé comme suit
SI condition1 ALORS
séquence1
SINON
SI condition2 ALORS
séquence2
SINON
séquence3
FINSI
FINSI
12 Algorithmique ESI 2021-2022
Rappel
Pour alléger l’écriture et améliorer la lisibilité, on peut
fusionner SINON et SI en SINONSI un seul bloc
de test
SI condition1 ALORS
séquence1
SINONSI condition2 ALORS
séquence2
SINON
séquence3
FINSI
13 Algorithmique ESI 2021-2022
Rappel
Les tests imbriqués présentent plusieurs avantages
Simplification de l’écriture des tests
Amélioration de la lisibilité de l’algorithme / programme
Réduction du temps d’exécution
14 Algorithmique ESI 2021-2022
Rappel
Test « SUIVANT … CAS »
Permet de sélectionner le bloc à exécuter en fonction de
la valeur d'une variable
Spécialisation de l'instruction SI … SINONSI
Utile quand une variable a plusieurs valeurs à tester
15 Algorithmique ESI 2021-2022
Rappel
Test « SUIVANT … CAS »
SUIVANT variable FAIRE
CAS valeur_1 : sequence_1
CAS valeur_2 : sequence_2
…
CAS valeur_n : sequence_n
AUTRES CAS : sequence_autre
FINSUIVANT
16 Algorithmique ESI 2021-2022
Rappel
Test « SELONQUE … CAS … »
Permet de sélectionner le bloc à exécuter en fonction de
conditions
Spécialisation de l'instruction SI … SINONSI …
Utile quand il y a plusieurs conditions à tester
17 Algorithmique ESI 2021-2022
Rappel
Test « SELONQUE … CAS … »
SELONQUE
condition_1 : sequence_1
condition_2 : sequence_2
…
condition_n : sequence_n
SINON: sequence_sinon
FINSELONQUE
18 Algorithmique ESI 2021-2022
Rappel
Un programme n’est pas purement séquentiel
nécessité d’avoir des structures de contrôle
1. Les structures alternatives (tests)
2. Les structures itératives (boucles)
19 Algorithmique ESI 2021-2022
Problématique
Il est parfois nécessaire de répéter des instructions
un certain nombre de fois
Exemples :
Calculer le prix TTC d’un produit saisi par l’utilisateur, puis
permettre à ce dernier de saisir un autre, puis un autre …
Tester la valeur saisie au clavier par l’utilisateur et lui
redemander de la saisir si elle est erronée
…
20 Algorithmique ESI 2021-2022
Problématique
Il est parfois nécessaire de répéter des instructions
un certain nombre de fois
La répétition est réalisée en utilisant une boucle
21 Algorithmique ESI 2021-2022
Répétition
Une boucle est une structure de contrôle de type
itératif (ou répétitif)
Elle permet de répéter, plusieurs fois, une instruction
ou un ensemble d’instructions
La répétition est soumise à une condition
22 Algorithmique ESI 2021-2022
Répétition
On utilise trois types de boucles
TANTQUE … FAIRE
POUR
RÉPÉTER … JUSQU’À
23 Algorithmique ESI 2021-2022
La boucle « TANTQUE…FAIRE»
Boucle TANTQUE … FAIRE
Permet de répéter une instruction tant qu’une
condition est vraie
TANTQUE condition FAIRE
instructions
FINTANTQUE
25 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
Permet de répéter une instruction tant qu’une
condition est vraie
TANTQUE condition FAIRE
instructions
FINTANTQUE
La boucle s’arrête quand la condition est fausse
Les instructions doivent modifier la valeur de la condition à
un moment sinon : boucle infinie !
26 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
Permet de répéter une instruction tant qu’une
condition est vraie
TANTQUE condition FAIRE
instructions
FINTANTQUE
La boucle s’arrête quand la condition est fausse
Le nombre d’itérations n’est pas connu à l’avance
27 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
Exemple
ALGORITHME exemple_boucle
VAR n : entier
DEBUT
n0
TANTQUE n < 10 FAIRE
nn+1
FINTANTQUE
FIN
28 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
ALGORITHME exemple_boucle
VAR x : réel
DEBUTTANTQUE condition FAIRE
TANTQUE x < 0 FAIRE
instructions
Afficher("Saisir
FINTANTQUE un nombre positif")
Lire(x)
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN
29 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
ALGORITHME exemple_boucle
VAR x : réel
La boucle ne sera jamais
DEBUTTANTQUE condition FAIRE
exécutée car x n’est pas
initialisé
TANTQUE x < 0 FAIRE
instructions
Afficher("Saisir
FINTANTQUE un nombre positif")
Lire(x)
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN
30 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
ALGORITHME exemple_boucle
VAR x : réel
DEBUT
TANTQUE condition FAIRE
x −1
instructions
TANTQUE x < 0 FAIRE
FINTANTQUE
Afficher("Saisir un nombre positif")
Lire(x)
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN
31 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
ALGORITHME exemple_boucle
VAR x : réel
DEBUT
TANTQUE condition FAIRE
Afficher("Saisir un nombre positif")
Lire(x) instructions
TANTQUE x < 0 FAIRE
FINTANTQUE
Afficher("Saisir un nombre positif")
Lire(x)
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN
32 Algorithmique ESI 2021-2022
Boucle TANTQUE … FAIRE
Il faut veiller à
Avoir une condition d’entrée dans la boucle qui soit
réalisable (i.e. qui ne soit pas toujours fausse)
Initialiser les variables utilisées dans la condition d’entrée
Avoir une condition d’arrêt dans la boucle pour ne pas
avoir de boucle infinie
33 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre compris entre 0 et 10 et répète
jusqu’à ce que la saisie soit correcte
34 Algorithmique ESI 2021-2022
Exercices
ALGORITHME boucle_saisie_nb
VAR n : réel
DEBUT
Afficher("Saisir un nombre compris entre 0 et 10")
Lire(n)
TANTQUE n < 0 OU n > 10 FAIRE
Afficher("Saisir un nombre compris entre 0 et 10")
Lire(n)
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN
35 Algorithmique ESI 2021-2022
ALGORITHME boucle_saisie_nb
Exercices
VAR n : réel
DEBUT
n −1
TANTQUE n < 0 OU n > 10 FAIRE
Afficher("Saisir un nombre compris entre 0 et 10")
Lire(n)
SI n < 0 OU n > 10 ALORS
Afficher("Saisie erroné[Link] recommencer. ")
FINSI
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN
36 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre compris entre 0 et 10 et répète
jusqu’à ce que la saisie soit correcte
Si le nombre est inférieur à 0, afficher un message
demandant un nombre plus grand
Si le nombre est supérieur à 10, afficher un message
demandant un nombre plus petit
37 Algorithmique ESI 2021-2022
ALGORITHME boucle_saisie_nb
VAR n : réel
Exercices
DEBUT
Afficher("Saisir un nombre compris entre 0 et 10")
Lire(n)
TANTQUE n < 0 OU n > 10 FAIRE
SI n < 0 ALORS
Afficher("Donner un nombre plus grand. ")
Lire(n)
SINONSI n > 10 ALORS
Afficher("Donner un nombre plus petit. ")
Lire(n)
FINSI
FINTANTQUE
Afficher("Saisie terminée. Merci. ")
FIN38 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre puis qui décrémente ce nombre de
1 jusqu’à atteindre 0 en affichant la valeur de chaque
décrémentation
39 Algorithmique ESI 2021-2022
Exercices
ALGORITHME boucle_décrémentation
VAR n : réel
DEBUT
Afficher("Saisir un nombre")
Lire(n)
TANTQUE n <> 0 FAIRE
nn−1
Afficher(n)
FINTANTQUE
FIN
40 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre puis qui affiche les 10 nombres
suivants
41 Algorithmique ESI 2021-2022
Exercices
ALGORITHME boucle_dix_nb_suivants
VAR n, max : réel
DEBUT
Afficher("Saisir un nombre")
Lire(n)
max n + 10
Afficher("Les dix nombres suivants sont :")
TANTQUE n <= max FAIRE
nn+1
Afficher(n)
FINTANTQUE
FIN
42 Algorithmique ESI 2021-2022
Exercices
ALGORITHME boucle_dix_nb_suivants
VAR n, i : réel
DEBUT
Afficher("Saisir un nombre")
Lire(n)
i1
Afficher("Les dix nombres suivants sont :")
TANTQUE i <= 10 FAIRE
nn+i
Afficher(n)
ii+1
FINTANTQUE
FIN
43 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre entier n puis qui affiche la somme
de tous les entiers jusqu’à n (1 + 2 + … + n)
44 Algorithmique ESI 2021-2022
Exercices
ALGORITHME somme_1_n
VAR n, i, somme : entier
DEBUT
Afficher("Saisir un nombre")
Lire(n)
i1
somme 0
TANTQUE i <= n FAIRE
somme somme + i
ii+1
FINTANTQUE
Afficher("La somme de 1 à n est : ", somme)
FIN
45 Algorithmique ESI 2021-2022
La boucle « POUR »
Boucle POUR
Permet de répéter une instruction un nombre
déterminé de fois
i.e. le nombre d’itérations est connu à l’avance
Utilise un compteur qui est incrémenté après
chaque exécution du bloc d’instructions de la boucle
Le programmeur n’a pas à gérer l’incrémentation du
compteur
47 Algorithmique ESI 2021-2022
Boucle POUR
Le compteur a une valeur minimale = condition
d’entrée dans la boucle
Le compteur a une valeur maximale = condition de
sortie de la boucle
L’incrémentation du compteur se fait selon un pas
Par défaut, le pas = 1
48 Algorithmique ESI 2021-2022
Boucle POUR
Structure de la boucle POUR
POUR compteur valeur_initiale à valeur_finale pas valeur_pas
instructions
compteur SUIVANT
49 Algorithmique ESI 2021-2022
Boucle POUR
Exemple
ALGORITHME exemple_boucle_pour
VAR n, i : entier
DEBUT
n0
POUR i 1 à 10 pas 1
nn+i
i SUIVANT
FIN
50 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre puis qui affiche les 10 nombres
suivants
51 Algorithmique ESI 2021-2022
Exercices
ALGORITHME boucle_dix_nb_suivants
VAR n, m : réel
VAR i : entier
DEBUT
Afficher("Saisir un nombre")
Lire(n)
Afficher("Les dix nombres suivants sont :")
POUR i 1 à 11 pas 1
mn+i
Afficher(m)
i SUIVANT
FIN
52 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui affiche la table de
multiplication du chiffre 9
53 Algorithmique ESI 2021-2022
Exercices
ALGORITHME boucle_table_neuf
VAR i: entier
DEBUT
POUR i 1 à 11
Afficher("9 *" , i , " = " , 9*i)
i SUIVANT
FIN
54 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre puis affiche la table de multiplication
de ce nombre
55 Algorithmique ESI 2021-2022
ALGORITHME
Exercices boucle_table
VAR n: réel
VAR i: entier
DEBUT
Afficher("Saisir un nombre")
Lire(n)
POUR i 1 à 11
Afficher(n, " * " , i , " = " , n*i)
i SUIVANT
FIN
56 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre entier n puis qui affiche la somme
de tous les entiers jusqu’à n (1 + 2 + … + n)
57 Algorithmique ESI 2021-2022
ALGORITHME boucle_somme
Exercices
VAR n, i, somme: entier
DEBUT
Afficher("Saisir un nombre")
Lire(n)
somme 0
POUR i 1 à n + 1
somme somme + i
i SUIVANT
Afficher(" La somme de 1 à " , n , " est " , somme)
FIN
58 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir un nombre entier n puis qui calcule son produit
factoriel n! (2 * … * n)
59 Algorithmique ESI 2021-2022
ALGORITHME boucle_produit_factoriel
Exercices
VAR n, i, produit: entier
DEBUT
Afficher("Saisir un nombre")
Lire(n)
somme 1
POUR i 2 à n + 1
somme somme * i
i SUIVANT
Afficher(" Le produit factoriel de " , n , " est " , produit)
FIN
60 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir dix nombres positifs puis qui retourne le
nombre le plus grand
61 Algorithmique ESI 2021-2022
ALGORITHME boucle_pgn
Exercices
VAR n, i, pgn: réel
DEBUT
pgn 0
POUR i 1 à 11
Afficher(" Saisir le nombre numéro ", i)
Lire(n)
SI n > pgn ALORS
pgn n
FINSI
i SUIVANT
Afficher(" Le nombre le plus grand est " , pgn)
FIN
62 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir dix nombres positifs puis qui retourne le
nombre le plus grand et sa position
63 Algorithmique ESI 2021-2022
ALGORITHME boucle_pgn
Exercices
VAR n, i, pgn, pos: réel
DEBUT
pgn, pos 0
POUR i 1 à 11
Afficher(" Saisir le nombre numéro ", i)
Lire(n)
SI n > pgn ALORS
pgn n
pos i
FINSI
i SUIVANT
Afficher(" Le nombre le plus grand est " , pgn, " et sa position est ", pos)
FIN
64 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir dix nombres positifs puis qui retourne le
nombre le plus grand, le nombre le plus petit et leurs
positions
65 Algorithmique ESI 2021-2022
La boucle « REPETER … JUSQU’A»
Boucle RÉPÉTER … JUSQU’À
Permet de répéter une instruction jusqu’à ce que la
condition d’arrêt soit vraie
RÉPÉTER
instructions
JUSQU’À condition_arrêt
67 Algorithmique ESI 2021-2022
Boucle RÉPÉTER … JUSQU’À
Permet de répéter une instruction jusqu’à ce que la
condition d’arrêt soit vraie
RÉPÉTER
instructions
JUSQU’À condition_arrêt
Utilisée quand le nombre d’itérations n’est pas connu
d’avance et qu’il faut exécuter les instructions au
moins une fois
68 Algorithmique ESI 2021-2022
Boucle RÉPÉTER … JUSQU’À
Exemple
ALGORITHME exemple_boucle_répéter
VAR n, i : entier
DEBUT
n0
RÉPÉTER
nn+1
JUSQU’À n=10
FIN
69 Algorithmique ESI 2021-2022
Exercices
Écrire un algorithme qui demande à l’utilisateur de
saisir des nombres positifs puis qui retourne le
nombre le plus grand
Le nombre des nombres à saisir n’est pas connu à l’avance
La saisie s’arrête quand l’utilisateur saisit le nombre −1
70 Algorithmique ESI 2021-2022
ALGORITHME boucle_pgn
VAR n, i, pgn, pos : réel
Exercices
DEBUT
pgn , i 0 , 1
RÉPÉTER
Afficher(" Saisir le nombre numéro ", i)
Lire(n)
SI n > pgn ALORS
pgn n
pos i
FINSI
i i +1
JUSQU’À n = −1
Afficher(" Le nombre le plus grand est " , pgn, " et sa position est ", pos)
FIN
71 Algorithmique ESI 2021-2022
Algorithmique
4. Les structures itératives