CHAPITRE 1

auteur: Philippe Moreau (U.P.J.V.)

Conseils pour l'écriture d'une BOUCLE

L'écriture d'une boucle passe par différentes phases. La liste des étapes indiquées ci-dessous a pour but de vous guider dans la mise en forme de l'écriture d'une boucle.

Etape 1: On a repéré une action répétitive
(tant que l'on a pas cerné une action qui se répète plusieurs fois, il n'y a pas lieu de penser à une boucle)
 
Etape 2: Il faut alors choisir la boucle appropriée et uniquement celle-ci.
Pour cela il faudra répondre aux questions suivantes:
Q: Peut-on trouver un moyen de calcul pour connaître le nombre de fois où doit se faire l'action répétitive?
Si OUI alors la boucle est définie (boucle POUR)
Si NON la boucle est indéfinie, il faut donc se poser une autre question:
Q: Il y a t'il un cas particulier, pour lequel l'action ne doit pas être effectuée? (ou encore doit-on toujours réaliser l'action au moins une fois?)
Si OUI alors la boucle a choisir est la boucle TANT QUE
Si NON, on doit prendre la boucle REPETE
On peut alors écrire l'entête de la boucle (POUR Var<-- , TANT QUE ou REPETE)
 
Etape 3: Ecriture de l'intérieure de la boucle
On écrit l'action répétitive (en L.A.)
3bis Puis on regarde s'il y a des préparatifs à faire pour l'action suivante (changement d'affectation des variables, incrémentation de variables, etc...)
On peut alors écrire l'ordre de fin de séquence (Finpour , FinTq ou Jusqu'à)
 
Etape 4: En observant les différentes variables utilisées à l'intérieur de la boucle,
on en déduit les initialisations (éventuelles) de celles-ci (avant d'entrer dans la boucle).
 
Etape 5: On termine l'écriture de la boucle
(Test d'arrêt (pour les boucles indéfinies) ou variation de l'indice de la boucle Pour)
 
Etape 6: On observe les différentes variables utilisées dans les tests de fin (ou dans l'entête de la boucle Pour)
et on en déduit les initialisations (éventuelles) de celles-ci (avant d'entrer dans la boucle).
 

Sur un exemple, nous allons observer le bien fondé de ces conseils:

Exemple: Calcul du PGCD de deux nombres entiers positifs, suivant l'algorithme d'Euclide.

En considérant deux nombres entiers A et B (avec A > B >=0), on calcule de PGCD de la manière suivante:

Principe de l'algorithme d'Euclide:
On effectue des divisions entières successives, jusqu'à trouver un reste nul, de la façon suivante:

Etape 1: repérer l'action répétitive.
On s'aperçoit, ici, que l'action qui consiste à faire une division entière afin de récupérer un reste

Etape 2: Choix de la boucle.
Q: Peut-on trouver un moyen de calcul pour connaître le nombre de fois où doit se faire l'action répétitive?
Ici on ne peut pas savoir à quel moment le reste sera nul donc NON
Q: Il y a t'il un cas particulier, pour lequel l'action ne doit pas être effectuée?
On effectue une division. Le problème se pose lorsque B=0 (Q: cela a t'il un sens? OUI car n'importe quel entier est diviseur de 0)
Donc une boucle TANT QUE
 
Etape 3: Ecrire l'intérieur de la boucle
l'action répétitive: récupérer le reste de la division entière de A par B: R <-- A - (A % B) * B
3 bis : préparatifs: il faut modifier le diviseur et le dividende pour passer à l'itération suivante:
A <-- B, B<-- R
on peut écrire Fintq
 
Etape 4: Initialisation des variables.
On s'aperçoit que les variables A et B doivent être initialisées avant d'entrer dans la boucle, ceci sera fait en demandant à l'utilisateur d'entrer les valeurs initiales (attention: celà est vrai ici, car on se préoccupe d'un algorithme, mais lors de l'analyse d'un problème, les lignes concernant la saisie auraient déjà du être écrites).
 
Etape 5: Ecriture du test de fin
Ici la boucle doit se terminer si le reste calculé est nul ou bien (choix de tant que) si B est initialement nul. Or on s'aperçoit qu'en fin de boucle la valeur de R est identique à celle de B. D'où on peut réduire le test à: B=0 (ou ici: B<>0).
 
Etape 6: Initialisation de variables.
Ici, la seule variable intervenant dans le test est B, il n'y a donc pas d'initialisation à faire (B est déjà initialisé)
 

On récapitule les différentes étapes (à partir de l'étape2) dans l'écriture suivante, en repérant la chronologie avec l'utilisation de différentes couleurs.

 Écriture de l'algorithme

 Chronologie

AFFICHER 'donnez deux entiers positifs'

LIRE A , B

AFFICHER ' le PGCD de ' , A , ' et de ' , B , ' est: '

TANT QUE B <> 0 FAIRE

R <-- A - (A % B) * B

A <-- B

B <-- R

FINTANTQUE

AFFICHER A

Etape 2:choix de la boucle

Etape 3:l'action répétitive

3bis: préparatifs

Etape 4:initialisations

Etape 5: test d'arrêt

Etape 6: néant

 
Sur cet exemple, il est également important de préciser le résultat du calcul. Ici, de couleur noire, nous avons ajouté l'affichage du résultat. On s'aperçoit, en effet, qu'en fin de boucle le dernier diviseur utilisé est dans A (de plus ceci répond également au problème particulier où B est nul et donc A est le PGCD)

 

Auteur: Philippe Moreau (U.P.J.V.)