Aller au menu - Aller au contenu

Icône Les boucles

Avatar
Mise à jour : 22/08/2008
1 010 visites depuis 7 jours, dont 61 sur ce chapitre classé 126/786
Jusqu'à présent, les programmes que nous avons écrits s'éxecutent linéairement. Ils commençent à la première ligne du code et lisent chaque ligne les unes après les autres jusqu'à la dernière sans retour en arrière.

Eh bien, il est possible de "boucler" un programme, c'est à dire de pouvoir re-éxecuter plusieurs fois une même partie du programme grâce à trois instructions : While, Repeat & For.

;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

While

Si vous êtes un peu anglophone, vous avez compris que While voulait dire "Tant que".
L'intérêt de cette boucle est d'exécuter une partie du code tant qu'une condition est vraie.
Si elle est vraie, on recommence.
Par contre si elle devient fausse, on exécute le code situé après la boucle.

Citation : Situation
Tant que ça ne fait pas 10 minutes que j'attends
Je reste à l'arrêt de bus.
Refaire
Je m'en vais.

Voilà pour la mise en situation.
En Ti-Basic, cette boucle s'écrit avec deux instructions :
  • While : [PRGM], Clt, ligne 5. C'est lui qui marque le début de la boucle.
  • End : [PRGM], Clt, ligne 7. Pour définir la fin de la boucle.
  • Code : Pascal
    1
    2
    3
    4
    :While [Condition]
    : // Code à exécuter dans la boucle
    :End
    : // Code à exécuter après la boucle
    


Code : Pascal
1
2
3
4
5
6
7
8
:ClrHome
:0->A
:While A<6
:Disp A
:A+1->A
:End
:Disp "FIN"
:Output(1,1,"

Image utilisateur


Que se passe-t-il dans ce code ? ^^
On efface l'écran et on met la variable A à zéro.
On entre dans la boucle, elle s'exécutera tant que A est inférieur à 6. Si jamais A est supérieur ou égal à 6, la boucle s'arrête.
On affiche la valeur de A (ici 0).
On ajoute 1 à A.
On arrive à la fin de la boucle (End) et on remonte au niveau du While.
On affiche la valeur de A (ici 1).
On ajoute 1 à A.
On arrive à la fin [...]
On continue ainsi jusqu'à ce que A soit égal à 6. A ce moment-là, le programme sort de la boucle, affiche la ligne "FIN" et termine le processus.


Les applications de cette boucle sont multiples. Par exemple, si vous voulez qu'un utilisateur entre une valeur, mais qu'elle soit obligatoirement différente de 0, vous pouvez vérifier cette valeur avec une boucle While, pour redemander à l'utilisateur d'entrer une valeur en cas d'erreur.
Code : Pascal
1
2
3
4
5
6
:ClrHome
:0->V
:While V=0
:Input "ENTER A:",A
:If A!=0:1->V
:End

Le If vérifie la valeur de A. Si la valeur entrée est bonne, on passe la variable V à 1 pour finir l'exécution de la boucle. Par contre si A vaut 0, alors V reste à 0 et la boucle continue à s'exécuter, demandant une nouvelle fois l'entrée d'une valeur.
N'oubliez pas de déclarer la variable utilisée dans le While avant de lancer la boucle ! :)

Repeat

Moins utilisée, cette boucle est semblable à While. La syntaxe est équivalente. On la trouve dans [PRGM], Clt, ligne 6.
Code : Pascal
1
2
3
:Repeat [Condition]
: // Code à exécuter dans la boucle
:End


La boucle se répète jusqu'à ce que la condition soit vraie.
Elle s'exécute donc tant que la condition testée est fausse.

De plus, le test n'est pas effectué au début, mais à la fin de la boucle, de sorte que le code situé dans la boucle soit exécuté au moins une fois.

Code : Pascal
1
2
3
4
5
6
:ClrHome
:0->A
:Repeat A=6
:Disp A
:A+1->A
:End

Image utilisateur

A débute à 0.
On affiche une première fois la valeur de A, et on ajoute 1 à A.
Le test est effectué : A ne vaut pas 6, on recommence la boucle.
On continue ainsi jusqu'à ce que A soit égal à 6. A ce moment-là, le programme sort de la boucle.

For

Cette dernière boucle fonctionne en incrémentant ou en décrémentant une variable.

La boucle s'écrit ainsi.
Code : Pascal
1
2
3
:For(variable,départ,arrivée[,incrément]
: // La boucle
:End


  • variable : c'est la variable qui va être utilisée dans la boucle.
  • départ : c'est la valeur à laquelle la variable va démarrer au début de la boucle.
  • arrivée : c'est la valeur à laquelle la variable doit s'arrêter.
  • incrément : il n'est pas indispensable, c'est la valeur qui sera rajoutée à la variable à chaque tour de boucle ; elle peut être positive, ou bien négative. S'il n'est pas précisé, il est défini à 1 (on rajoute 1 à la variable à chaque boucle).


Code : Pascal
1
2
3
4
:ClrHome
:For(X,1,16
:Output(1,X,"A"
:End

On affiche des A sur toute une ligne. A chaque tour de boucle, X va augmenter de 1 (valeur par défaut) : 1, 2, 3, ..., 15, 16, remplissant ainsi toute une ligne.

Essayons autre chose : affichons des A sur tout l'écran !
Pour cela, il vous faut deux variables et deux boucles qu'il faudra imbriquer. :)
Je vous laisse essayer.
Secret (cliquez pour afficher)
Code : Pascal
1
2
3
4
5
6
:ClrHome
:For(X,1,8
:For(Y,1,16
:Output(X,Y,"A"
:End
:End

On a tout à fait le droit de mettre des boucles (While, Repeat, For) les unes dans les autres, à la manière de poupées russes.

Allez, je vous montre encore plein d'exemples de boucles For possibles.
Code : Pascal
1
2
3
4
5
:For(X,2,20,2 // On compte de 2 en 2
:For(X,10,0,-1 // On compte de 10 à 0
:5->A
:For(X,1,A // De 1 à 5
:For(X,-5,5,2 // -5,-3,-1,1,3,5


Pendant toute la durée de la boucle, une variable est utilisée. Faites attention de ne pas la modifier, sinon votre boucle risque d'avoir un comportement étrange. Je vous conseille d'utiliser une variable qui vous servira dans toutes vos boucles.
Vous avez donc trois outils à votre disposition.

  • While: s'exécute tant qu'une condition est vraie ou jusqu'à qu'elle soit fausse.
  • Repeat: s'exécute tant qu'une condition est fausse ou jusqu'à qu'elle soit vraie. (s'exécute au moins une fois).
  • For:s'exécute en fonction de la valeur d'une variable.


Pour le prochain chapitre, on passe à un TP. ^^
Chapitre précédent Sommaire Chapitre suivant

Partager

3 commentaires pour "Les boucles"
Note moyenne : 3.82 / 4 (60 votes)
Pseudo Commentaire
Hors ligne haxi # Posté le 08/02/2007 à 18:01:58
Freedom
Avatar

Ville : Toulouse
Pays : France métropolitaine
Études : IUT A Toulouse

Malgrès qu'il ne soit pas [encore] fini au moment ou je poste, ce tuto est génial !
Personnellement, j'ai fait un programme qui calcule les aires d'une figure donnée (rectangle,triangle,cercle,trapeze,parallelogramme ect ..)


Vraiment très bien, 18/20; je suis sur que la suite sera tout autant géniale ;)




 
Hors ligne letijan # Posté le 04/10/2008 à 16:09:10
transmutation
Avatar

super bien le tuto
j'ai crée un programme qui me calcul thalès pour la hauteur des objet.
Vivement la suite :D
 
Hors ligne MrKooky # Posté le 01/12/2008 à 14:07:40
10h
Avatar
Flux RSS

Ville : Paris
Pays : France métropolitaine
Études : Paris 6 - Université Pierre et Marie Curie (Jussieu)

trs bien, mais goto est aussi une boucle
 

Voir tous les commentaires