Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CHAPITRE
5
Les structures de contrôle répétitives
1. Présentation des schémas répétitifs :
Tous les langages de programmation possèdent des structures permettant de répéter un certain
nombre de fois des instructions semblables les unes des autres : les boucles.
Une suite de répétitions délimite une suite ordonnée d’instructions et contrôle le nombre de fois
qu’elle va être exécutée.
On distingue deux types de répétitions :
1- L’Itération : quand on sait le nombre de fois que l’on va répéter une instruction et qu’une
variable compteur peut être initialisée.
2- La Répétition Conditionnelle : quand la poursuite d’une répétition dépend d’une condition
booléenne.
1.1. L’Itération :
Elle permet de répéter N fois une suite ordonnée d’instructions à l’aide d’une variable entière
servant de compteur.
A la fin de chaque répétition, Compt est incrémenté d’une quantité p appelée pas
d’incrémentation ( Compt Compt + p), souvent p vaut 1.
Deb est la valeur initiale de Compt et Fin sa valeur finale.
Deb et Fin sont deux constantes entières.
2
Données ?
Le corps de la boucle peut ne jamais être exécuté si la condition n’est pas vérifiée dés le début.
Cependant, il existe une autre forme de répétition conditionnelle :
Données ?
REPETER
Quand la condition Début
--------------
devient fausse Instructions
la répétition s’arrête --------------
JUSQU'A <Condition est vraie>
3
• Pour toute instruction, on distingue la pré_assertion et la post_assertion qui portent
respectivement sur les variables avant et après l’instruction.
{ pré- assertion } Instruction { post- assertion }
Exemple : Supposons l’assertion { P(x) }est vérifiée juste avant une instruction d’incrémentation
de x : { P(x) } x x+1
Pour savoir quelle sera la post_assertion, nous allons raffiner la pré_assertion en
précisant le contenu de la variable x :
{ P(x) } x x + 1 { P(x – 1) }
4
{A}
Tant que C faire
{ A et C }
J
{A}
Fin Faire
{A}
L’assertion { A } qui est à la fois pré et post- assertion de l’instruction J est l’invariant de
l’Itération.
La notion d’invariant est essentielle lors de la conception d’un algorithme et tout particulièrement
lorsqu’on veut faire une preuve de programme, c’est- à- dire qu’on veut prouver rigoureusement
qu’un programme fait bien ce pour quoi il a été conçu.
5
2. Les Schémas Itératifs :
2.1. Le Schéma Itératif POUR :
Rôle : Ce schéma itératif permet l’exécution d’un traitement donné en un nombre de fois n donné.
On peut donc l’utiliser chaque fois qu’on connaît le nombre d’exécutions souhaitées d’un même
traitement (ensemble d’instructions formant le corps de la boucle).
Syntaxe :
[Initialisation]
POUR < nom_var > DE < vi > A < vf > [PAS < pas >] FAIRE
< Traitements >
FINPOUR
< nom_var > : nom de la variable représentant le compteur des itérations à effectuer
< vi > : valeur initiale
< vf > : valeur finale
< pas > : la valeur du pas pour passer de < nom_var > d’une valeur à la suivante.
< Traitements > : un ou plusieurs blocs d’instructions
6
La réalisation du traitement est directement indépendante de la condition pour entrer dans la
boucle, si la condition est fausse, le traitement ne sera pas exécuté. On peut n’exécuter aucun
parcours dans cette boucle, c’est- à- dire que le traitement peut ne pas être réalisé.
[Initialisation]
REPETER
< Traitements >
FINTANTQUE < condition >
7
< traitement1 >, < traitement2 > : deux blocs d’instructions ;
< Condition > : expression logique qui donne un résultat logique vrai ou faux.
Remarques :
1) Si < Bloc 1 > est vide, on aura le schéma sous la forme suivante :
ITERER
TANTQUE < non Condition > FAIRE
SORTIR Si < Condition >
< Bloc 2 >
< traitement2 >
FINTANTQUE
FIN ITERER
2) Si < Bloc 2 > est vide, ce type de schéma aura la forme suivante :
ITERER REPETER
< Bloc 1 > < Bloc 1 >
SORTIR SI < Condition > JUSQU'A < Condition >
FIN ITERER
8
L’action itérative s’écrit de la manière suivante :
Tantque i < p Faire
Début
r := r * n ;
i := i + 1 ;
Fin ;
Ici l’assertion est r = ni avec i <= p, c’est aussi l’invariant de boucle, il doit être donc vrai avant
le début de l’itération. Pour cela, il faut initialiser r et i avec des valeurs qui vérifient l’invariant.
* Initialisation :
Il suffit d’écrire les affectations suivantes :
r := n ;
i := 1 ;
Pour vérifier que r = ni , i <= p quelle que soit la valeur de p > 0. A la sortie de l’action itérative,
nous pouvons affirmer que :
• D’une part, Ί (i < p) donc i >= p : condition de sortie de la boucle Tantque.
• De i <= p et i > p, nous déduisons que i = p.
• De i = p et r = ni , nous déduisons que r = np .
* L’algorithme complet est le suivant :
ALGORITHME Puissance
Var n, p, r, i, puissance : entier
Début
r := n ;
i := 1 ;
{ r = ni , i <= p }
TANTQUE i < p FAIRE
Début
r := r * n ;
{ r = ni+1, i < p }
i := i + 1 ;
{ r = ni, i <= p }
Fin ;
{ i >= p, r = ni, i <= p r = np }
puissance := r ;
FinPuissance
9
4. Conclusion :
10