Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Calculatrices > Casio > Lecture du tutoriel

Les boucles.

Auteur : Deltod
Créé : le 27/07/2006 22:47:05
Modifié : le 09/05/2007 16:16:16
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Vous voici donc au dernier chapitre de cette Première Partie. Un chapitre indispensable, car vous vous servirez des boucles dans chaque programme futur.
Allez bonne chance, c'est la dernière ligne droite de l'apprentissage des bases du Basic Casio. ;)
Sommaire du chapitre :
Chapitre précédent Sommaire Chapitre suivant

Do: LpWhile

La première boucle que nous allons voir dans ce chapitre est la boucle Do: LpWhile.
Mais tout d'abord, qu'est-ce qu'une boucle, me direz-vous ?
Une boucle est, comme son nom l'indique, une série d'instructions qui sera répétée en boucle tant qu'une ou plusieurs conditions ne sont remplies.

L'emplacement des boucles sur la calto


Tout au long de ce chapitre sur les boucles, vous allez découvrir de nouvelles fonctions. Pour éviter de vous indiquer à chaque fois leur emplacement, je vous indique ici, en début de chapitre, leur emplacement général. Vous vous rappelez de l'onglet COM ? Eh bien il va encore nous servir, car toutes les boucles se trouvent dedans.

Revenons-en à nos moutons


Entrons maintenant dans le vif du sujet. Comme je vous l'ai dit un peu plus haut, la première boucle que nous allons voir est la boucle Do:LpWhile.
La syntaxe sera la suivante :
Code : Autre
1
2
3
4
5
6
7
Do ##on initialise la boucle

##instructions à répéter en boucle

LpWhile ##on indique à la suite du LpWhile les conditions à respecter

##fin de la boucle

Vous remarquerez que j'ai ajouté plusieurs doubles dièses (##) directement dans le code. Vous l'aurez compris, c'est ma façon à moi d'entrer des commentaires pour vous aider. MAIS ATTENTION, vous ne pouvez pas entrer de commentaires de cette façon sur votre calculatrice. En Basic Casio, il est impossible de faire figurer des commentaires en plein milieu du code !


Je vais maintenant expliquer un peu plus en détail ce bout de code. Comme un bon exemple vaut toujours mieux qu'un long discours :
Code : Autre
1
2
3
4
5
6
7
8
9
1->A

Do

"TEST BOUCLES"

A+1->A

LpWhile A<5


Essayez de comprendre ce code par vous-mêmes, combien de fois sera affiché le message "TEST BOUCLES" ?
Secret (cliquez pour afficher)
4 fois, eh oui, et non pas 5.

Vous êtes tombés dans le piège ? C'est que vous n'avez pas lu attentivement le code ci-dessus. Bon : je vais expliquer quand même. :p
Code : Autre
1
1->A

Tout d'abord on initialise la variable A à 1.
Code : Autre
1
Do

Ensuite on initialise (j'aime bien ce mot ;) )la boucle.
Code : Autre
1
"TEST BOUCLES"

1ère instruction : TEST BOUCLES : c'est le texte qui s'affichera en boucle tant que la condition ne sera pas respectée.
Code : Autre
1
A+1->A

2ème instruction : sur cette ligne, on demande à la calculatrice d'ajouter 1 à la valeur de A tant que la condition n'est pas remplie. Ainsi, au premier passage de la boucle, la variable A vaudra 2 (1+1), puis au deuxième, elle vaudra 3 (2+1), et ainsi de suite.
Code : Autre
1
LpWhile A<5

La boucle se terminera lorsque la condition sera remplie, à savoir lorsque la variable A sera inférieure à 5, et non pas égale à 5. Et je pense que ce fut la raison de votre erreur, si erreur il y eut. ;)

Vous devez impérativement comprendre ce bout de code parfaitement. N'hésitez pas à créer vos propres boucles pour bien comprendre. ;)

Tiens, j'allais oublier. Vous vous souvenez de la fonction Getkey ? Elle peut déjà nous servir ici. Par exemple, pour attendre que l'utilisateur appuie sur une touche pour continuer.
Exemple : vous voulez que le suite du programme s'affiche seulement si l'on appuie au préalable sur la touche EXE. C'est tout à fait possible ! Regardez ce bout de code :

Code : Autre
1
2
3
4
5
Do

LpWhile Getkey!=31

##suite du code


Heu... :euh: il ne manquerait pas des instructions par hasard ?

Eh bien non. Car si l'on réfléchit, que veut-on voir se répèter en boucle ? Oui, rien ! La calculette ne doit rien faire tant que l'on a pas appuyé sur la touche voulue. Examinez la dernière ligne, si l'on traduit cela donnerait : "Continuer la boucle tant que la valeur de la touche pressée n'est pas égale à 31". Or, la valeur 31 est assignée à la touche EXE, cela revient donc à dire "Continuer la boucle tant que la touche EXE n'a pas été pressée.
En résumé, on pourrait dire que la calculette va continuer à "ne rien faire" tant que l'on aura pas appuyé sur EXE.

Un petit exercice pour vous entraîner : écrivez un texte bidon, puis demandez à l'utilisateur d'appuyer sur EXE pour continuer le programme.

Secret (cliquez pour afficher)
Vous avez fini ? Sûr ? J'espère que vous avez réussi, car ce n'est vraiment pas le plus compliqué.
<secret cache="0"><span class="code">Code : Autre</span><div class="code2"><table class="syntaxtable"><tbody><tr><td class="linenos"><pre>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 </pre></td><td class="code"><div class="syntax"><pre>"BONJOUR" "VOICI UN TEXTE TRES" "BIDON" " " " " " " "SUITE->[EXE]" Do:LpWhile Getkey!=31 ClrText "ET VOILA, C'EST FINI"</pre></div></td></tr></tbody></table></div></secret>

Vous remarquerez que j'ai mis des : . Ils permettent de séparer deux instructions. C'est exactement comme la flèche, lorsque l'on appuie sur EXE, mais ça permet de gagner de la place. Mais je vous conseille de n'utiliser les : que pour ce genre de cas-là.

Whle/WEnd

La boucle While / Wend (comprenez While / While End) est quasiment identique à la précédente. Ainsi, je n'aurai pas grand chose à rajouter. La syntaxe n'est par contre pas tout à fait la même, car ici, la condition sera exprimée en début de boucle (alors que, rappelez-vous, avec la boucle précédente, elle était à la fin). Voici donc la syntaxe à respecter :

While condition(s) à respecter
Instruction(s)
WhileEnd

Si elles sont si identiques, pourquoi choisir l'une ou l'autre, alors ?


Eh bien tout simplement parce qu'elles ne sont pas si identiques que ça. Vous l'aurez peut-être remarqué, mais la seconde boucle présente une différence notoire par rapport à la première. Dans le cas d'une boucle Do/LpWhile, la boucle sera toujours lue au moins une fois, alors que dans le cas d'une boucle Whle/WEnd, si la condition est déjà remplie dès le départ, la calto (abréviation de calculatrice ;) ) sautera la boucle.

For/To/Next/Step

Cette boucle inclue en elle-même un compteur, ce qui est très utile lorsque vous voulez faire marcher les fonctions à l'intérieur de la boucle un cetain nombre de fois. Et puis il est simple à utiliser. Mais bon, si vous m'écoutez, tout est très simple ; c'est vrai qu'une fois compris, c'est toujours simple ...

For, To, Next



Cette fonction demande une petite chose : une variable, et c'est tout.
Comme d'habitude, la syntaxe :

For la valeur de départ que vous donnez à la variable, To la valeur d'arrivée de la variable
les fonctions à éxécuter
Next

Le chemin d'accès des fonctions For, To et Next est : SHIFT \ PRGM \ F1 \ COM \ F6 .
Toutes les fonctions sont là : For , To, Step (une fonction que nous verrons à la fin de cette partie), et Next.

Je reconnais que comme ça, ça ne parait pas évident ; mais un petit exemple vous aidera à mieux comprendre : imaginez que vous ayez copier sur votre voisin, et que vous ayez eu comme punition à copier 10 fois "Je ne dois pas tricher". Eh bien à la calculatrice, ce serait un jeu d'enfant :
Code : Autre
1
2
3
4
5
For 1->A To 10

"JE NE DOIS PAS COPIER"

Next


Alors, les explications :

La boucle s'exécutera alors jusqu'à ce que la variable A ait atteint la valeur 10 ; c'est-à-dire lorsqu'elle aura écrit 10 fois la phrase.
Voilà déjà un premier avantage à être programmeur... non ? Les punitions faites en 30 secondes, c'est pas beau, ça ?

Est-on obligé d'augmenter la valeur de 1 ? Est-ce qu'on pourrait l'augmenter de 2, par exemple ?

Ben on ne peut pas dire que vous n'êtes pas curieux. Mais de toute manière, cette question tombe à pic : c'est exactement ce que je veux vous montrer après. Il est donc possible de choisir le pas (eh oui, c'est comme ça que ça s'appelle) pour augmenter la valeur différement.

For, To, Step, Next



C'est exactement la même syntaxe, sauf que sur la ligne où l'on déclare les valeurs de départ et d'arrivée, on rajoute le pas :

For valeur de départ To valeur d'arrivée Step pas

Je n'ai pas vraiment d'idée pour trouver un bon exemple ; on va donc en faire un débile. Créons un programme qui compte de 2 en 2 en partant de 10, et en allant à 30 :
Pour ce faire, je vais utiliser une nouvelle fonction stoppant le programme à chaque fois que l'opération aura été faite. Ceci car sinon, la calculatrice affichera les fonctions quasiment instantanémant, et vous n'aurez pas le temps de les voir ; ce sera même tellement rapide qu'elle même n'aura pas le temps de les afficher. Cette fonction se nomme Disp. C'est un petit triangle noir ; son chemin d'accès est : SHIFT\PRGM\F5. Comme ce petit traingle noir n'existe pas sur mon clavier, j'utiliserai ce symbole pour le signaler : "¤". Cette fonction mettra en pause le programme, et tant que vous n'appuierez pas sur [EXE], il restera en pause. Retenez cette fonction, car elle pourra vous être très utile plus tard ;) .
Une fois cette fonction insérée, votre curseur ira directement à la ligne : c'est normal.

Code : Autre
1
2
3
4
5
For 10->A To 30 Step 2

A¤

Next

Pas besoin de vous expliquer ce programme, vous l'avez compris ?
Vous devez vous dire (vu les exemples que j'ai choisis) que cette fonction n'est pas très utile, mais vous vous trompez lourdement ; lorsque vous ferez des jeux, elle vous sera plus qu'utile.

Merci beaucoup à Ilae qui à écrit ce mini-tuto sur la boucle for que j'ai à peine modifié.

Eh bien voilà : la fin de ce chapitre marque aussi la fin de cette Première Partie. Vous êtes prêts pour la programmation graphique, mais faites une petite pause avant, car maintenant on enclenche la vitesse supérieure...
Chapitre précédent Sommaire Chapitre suivant
Auteur : Deltod
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 612 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.1783s (0.1659s)