Accueil
 COURS INFORMATIQUE
 Cours Algorithmique
 Cours ASP
 Cours CSS
 Cours HTML
 Cours PHP / MySQL
 Cours Réseaux
 Cours SQL
 Cours Visual Basic
 ARTICLES
  Conception de sites
  Droit & Internet
  e-commerce
  Société
  Strategies du web
  Technologies Web
  Marketing Web
 LIVRES
  ASP/ASP.Net
  C/C++/C#
  Conception de sites
  DHTML/CSS
  Gestion de Projet
  HTML/Internet
  Java/JSP/J2EE
  JavaScript/VbScript
  Juridique
  Marketing/Stratégie
  PHP/Linux/Unix
  Réseaux
  XML/XHTML/XSL
 NETALYA RECOMMANDE
Reussir un projet de site web

Cours d'algorithmique Cours d'algorithmique N°4 : les boucles

Auteur : Christophe Darmangeat

Infinite Menus, Copyright 2006, OpenCube Inc. All Rights Reserved.
Et ça y est, on y est, on est arrivés, la voilà, c’est Broadway, la quatrième et dernière structure : ça est les boucles. Si vous voulez épater vos amis, vous pouvez également parler de structures répétitives, voire carrément de structures itératives. Ca calme, hein ? Bon, vous faites ce que vous voulez, ici on est entre nous, on parlera de boucles.

1. A quoi cela sert-il donc ?

Prenons le cas d’une saisie au clavier (une lecture), par exemple, on pose une question à laquelle l’utilisateur doit répondre par O (Oui) ou N (Non). Mais l’utilisateur, facétieux ou maladroit, risque fort tôt ou tard de taper autre chose que cela. Dès lors, le programme peut soit planter par une erreur d’exécution (parce que le type de réponse ne correspond pas au type de la variable attendu) soit se dérouler normalement jusqu’au bout, mais en produisant des résultats fantaisistes. Alors, dans tout programme un tant soit peu sérieux, on met en place ce qu’on appelle un contrôle de saisie (pour vérifier que les données entrées au clavier correspondent bien à celles attendues par l’algorithme.

A vue de nez, on pourrait essayer avec un SI. Voyons voir ce que ça donne :

Variable Rep en Caractère
Ecrire
"Voulez vous un café ? (O/N)"
Lire Rep
Si Rep <> "O" ET Rep <> "N" Alors
Ecrire
"Saisie erronnée. Recommencez"
Lire Rep
FinSi C’est impeccable. Du moins tant que l’utilisateur a le bon goût de ne se tromper qu’une seule fois, et d’entrer une valeur correcte à la deuxième demande. Si l’on veut également bétonner en cas de deuxième erreur, il faudrait rajouter un SI. Et ainsi de suite, on peut rajouter des centaines de SI, et écrire un algorithme aussi lourd qu’une blague des Grosses Têtes, on n’en sortira pas, il y aura toujours moyen qu’un acharné flanque le programme par terre. C’est donc une impasse.

2. Une première structure de boucle

La seule issue est donc cette structure de boucle, qui se présente ainsi :

TantQue booléen
...
Instructions
...
FinTantQue Le principe est simple : le programme arrive sur la ligne du TantQue. Il examine alors la valeur du booléen (qui, je le rappelle, peut être une variable booléenne ou, plus fréquemment, une condition). Si cette valeur est VRAI, le programme exécute les instructions qui suivent, jusqu’à ce qu’il rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue, procède au même examen, et ainsi de suite. Le manège enchanté ne s’arrête que lorsque le booléen prend la valeur FAUX. Illustration avec notre problème de contrôle de saisie :

Variable Rep en Caractère
Ecrire
"Voulez vous un café ? (O/N)"
TantQue Rep <> "O" ET Rep <> "N"
Lire Rep
Si Rep <> "O" ET Rep <> "N" Alors
Ecrire
"Saisie erronnée. Recommencez"
FinSi
FinTantQue
On remarquera que la présence du bloc " Si " est uniquement là pour l’affichage éventuel du libellé de saisie erronée. En lui-même, le bloc " tant que " est d’une simplicité biblique. Le gag de la journée : c’est d’écrire une structure TantQue dans laquelle le booléen ne devient jamais faux ! L’ordinateur tourne alors dans la boucle comme un dératé et n’en sort plus. Seule solution, quitter le programme avec un démonte-pneu ou un bâton de dynamite. Cette faute de programmation grossière – mais fréquente - ne manquera pas d’égayer l’ambiance collective de cette formation… et accessoirement d’étancher la soif proverbiale de vos enseignants.

3. Boucler en comptant, ou compter en bouclant

Dans le dernier algorithme, vous avez remarqué qu’une boucle était fréquemment utilisée pour augmenter la valeur d’une variable. Il arrive également très souvent qu’on ait besoin d’effectuer un nombre déterminé de passages. Or, a priori, notre structure TantQue ne sait pas à l’avance combien de tours de boucle elle va effectuer (cela dépend d’une condition). C’est pourquoi une autre structure de boucle est à notre disposition :

Variable Truc en Entier
Truc ï 0
TantQue Truc < 15
Truc = Truc + 1
Ecrire "Passage numéro : ", Truc
FinTantQue Equivaut à :

Variable Truc en Entier
Pour
Truc = 1 à 15
Ecrire "Passage numéro : ", Truc
Truc Suivant Au sens strict, on pourrait donc s’en dispenser, mais c’est tellement agréable de faire moins d’efforts…

4. Des boucles dans des boucles

On rigole, on rigole ! De même que les poupées russes contiennent d’autres poupées russes, de même qu’une structure SI … ALORS peut contenir d’autres structures SI … ALORS, une boucle peut contenir d’autres boucles.

Variables Truc, Trac en Entier
Pour
Truc ï 1 à 15
Ecrire "Il est passé par ici"
Pour Trac ï 1 à 6
Ecrire "Il repassera par là"
Trac Suivant
Truc Suivant Dans cet exemple, le programme écrira une fois "il est passé par ici" puis six fois de suite "il repassera par là", et ceci quinze fois en tout. A la fin, il y aura donc eu 15 x 6 = 90 passages dans la deuxième boucle (celle du milieu). Notez la différence marquante avec cette structure :

Variables Truc, Trac en Entier
Pour Truc
ï 1 à 15
Ecrire "Il est passé par ici"
Truc Suivant
Pour
Trac ï 1 à 6
Ecrire "Il repassera par là"
Trac Suivant Ici, il y aura quinze écritures consécutives de "il est passé par ici", puis six écritures consécutives de "il repassera par là" , et ce sera tout. Si des boucles peuvent être imbriquées (cas n°1) ou successives (cas n°2), elles ne peuvent jamais, au grand jamais, être croisées. Cela n’aurait aucun sens logique, et de plus, bien peu de langages vous autoriseraient ne serait-ce qu’à écrire cette structure aberrante.

Variables Truc, Trac en Entier


Pour Truc ï...
instructions
Pour Trac ï ...
instructions
Truc Suivant

instructions
Trac Suivant

5. Et encore une tournée générale !

Examinons l’algorithme suivant :

Variable Truc en Entier
Pour
Truc ï 1 à 15
Truc ï Truc * 2
Ecrire "Passage numéro : ", Truc
Truc Suivant Vous remarquerez que nous faisons ici gérer " en double " la variable Truc, ces deux gestions étant contradictoires. D’une part, la ligne " Pour… " augmente la valeur de Truc de 1 à chaque passage. D’autre part la ligne " Truc ï Truc * 2 " double la valeur de Truc à chaque passage. Il va sans dire que de telles manipulations perturbent complètement le déroulement normal de la boucle, et sont sources d’exécutions erratiques. Le gag de la journée : consiste donc à manipuler, au sein d’une boucle Pour, la variable qui sert de compteur à cette boucle. Cette technique est à proscrire absolument… sauf bien sûr, si vous cherchez un prétexte pour régaler tout le monde au bistrot. Mais dans ce cas, n’ayez aucune inhibition, proposez-le directement, pas besoin de prétexte.


Nous vous informons que ce cours constitue une œuvre protégée en France par le Code de la Propriété Intellectuelle, et à l’étranger par les conventions internationales en vigueur sur le droit d’auteur. La violation de l’un des droits d’auteur de l’œuvre est un délit de contrefaçon. Il est donc interdit, à titre privé ou public, de reproduire, copier, vendre, revendre ou exploiter, que ce soit dans un but commercial ou purement gratuit, ce cours, sauf accord exprès et préalable de son auteur.


Google
 
 RESSOURCES GRATUITES
 Caractères spéciaux
 Code Couleurs HTML
 Générateur Méta Tags
 Références HTML
 Scripts : ASP
 Scripts : Java Scripts
 PRATIQUE / OUTILS
 Salons Informatiques
 Astuces Windows
 TÉLÉCHARGEMENTS
 Utilitaires système
 Logiciels pratiques
 Jeux & démos
 INFOS SITE
 Contacts
 Mentions légales
 Qui sommes-nous ?
 PARTENAIRES
 Jeux et Jouets
 Murielle Cahen
 Cours d'anglais
 Droit NTIC
 Directeur Internet
 Australie
 Création site Internet
 VOD News
 Web Hostings