Ti82
     






MISE EN PRATIQUE

Maintenant que vous connaisez les instructions essentielles, voyons comment assembler tout ça pour faire un programme fonctionnel, en voyant petit à petit les instructions. Le mieux est de creer un petit programme test que vous supprimerez plus tard mais qui permettra de faire quelques essais.



Afficher un texte (DISP):

Comme vous le savez si vous avez lu la description des commandes ou le livre, il suffit d'introduire un disp ou un output. Oui, mais il faut aussi savoir placer ces commandes et ce qu'il y a autour. Et puis mieux vaut partir du départ, c'est easier. Pour commencer il faut mettre un clrhome, qui permet d'effacer l'écran. Ensuite le disp qui affiche un texte au choix. Puis une pause (pour que le programme ne s'arrete pas directement) et encore un clrhome pour effacer le texte de programme. Le tableau en dessous permet de vérifier la syntaxe de tout ca.

:clrhome
:Disp "A graal?"
:pause:clrhome

Le résultat est un programme qui efface l'écran pour afficher le texte "A graal?" en haut de l'écran. Puis si la touche entrée est entrée est appuyé, l'écran s'efface et le programme se quitte. Vous pouvez bien sur mettre plusieurs ligne de texte, ou rajouter d'autre texte après la pause, pour afficher un texte en plusieurs fois. Les clrhome (c'est invariable pas de s...si j'vous jure des scientifiques se sont réunis pour décider ça) ne sont pas obligatoire, ca permet juste d'effacer l'écran entre deux actions; mais si vous voulez un texte qui s'affiche sur l'écran tel qu'il est, vous pouvez sauter les clrhome. Voila, le premier programme, que d'émotions. Si vous en avez l'occasion, prenez une photo, comme cet euphorique apprenti après la finalisation de son programme affichant "SALUT" en continu.




Demander un renseignement numérique à l'utilisateur (input):

Pour savoir comment réaliser cela, nous allons faire un petit programme qui demandera l'âge de l'utilisateur pour l'afficher ensuite, au cas où l'utilisateur l'aurait oublié entre temps. D'abord le matériel, il faut deux cassroles plates et une spatule en bois de préference et on peut commencer: un clrhome comme d'habitude, un input "DONNE MOI TON AGE VITE",A (on utlilise n'importe quelle lettre de l'alphabet, mais il faut s'en rappeler après), un clrhome encore, un disp"Vous avez",A (ou la lettre choisie), une pause et un clrhome:

:clrhome
:Input"TON AGE, VITE!",A
:clrhome
:disp"Alors tu as",A,"ans"
:pause:clrhome

Le programme affiche "TON AGE, VITE!" et s'arrete le temps que vous rentrez votre valeur et que vous validez en appuyant entrée. Puis il efface l'écran pour afficher "alors tu as 57,45 ans" (dans le cas ou la valeur rentrée serait 57,45) Vous remarquerez par ailleurs l'usage des virgules pour separer le texte de la valeur après le disp, c'est pratique mais le chiffre est entré sur une nouvelle ligne et aligné à droite. Mais comment faire pour qu'un petit malin ne rentre ni un chiffre trop petit, trop grand, ou à virgule? He bien, il n'y a qu'a lire le prochain chapitre.



Controler les résultats (IF et INT):

Pour faire cela, on va d'abord tronquer le chiffre pour enlever les virgules éventuels puis vérifier si la valeur rentrée est comprise est comprise entre -2 et 178 ans (il faut voir grand). On va donc réutiliser le programme d'avant en lui rajoutant des IF et un INT.

:clrhome
:Input"TON AGE, VITE!",A
:INT A sto> A
:clrhome
:IF A>178: Then
:DISP "PAS ENCORE MORT ?"
:Pause:Clrhome:Stop:End
:IF A<-2:THEN
:DISP "MENTEUR!" :Pause:Clrhome:
Stop:End
:disp"Alors tu as",A,"ans"
:pause:clrhome


Maintenant passons à l'explication: INT doit se placer avant la valeur à tronquer, et il ne faut pas oublier d'enregistrer le résultat après. Ca peut paraitre bizarre de faire un calcul avec une valeur et d'enregistrer juste après dans cette même valeur, mais ca marche, alors on ne s'en prive pas. Il faut mettre un then après le IF pour pouvoir executer plus d'une commande et surtout le END qui indique la fin du THEN. Bon, ce programme est déjà super avancé et permet de faire des tas de calculs scientifiques, mais il prend un peu trop de place. Alors voyons comment réduire tout ca dans le prochain chapitre:



Reduction du code (ELSE et AND):

Pour avoir un programme plus petit, au lieu de tester chaque partie (plus de 178 et moins de -2) séparement on va faire un seul IF, qui testera si A est inférieur à -2 ou supérieur à 178:

:Input"TON AGE, VITE!",A
:INT A sto> A
:clrhome
:IF A<178 and A>-2
:Then
:Disp"ALORS TU AS",A,"ANS"
:Pause:Clrhome
:stop:Else
:Disp"MENTEUR"
:Pause:Clrhome
:Stop:End

La plupart des commandes étaient déjà la avant, mais deux sont completement nouvelles: and et ELSE. and sert à tester plusieurs condition avec un seul IF. Si la même valeur est testée deux fois, il faut quand même la retaper, par exemple on ne peut pas écrire "IF A>7 and <8". Et au lieu de mettre un END après le Then, vous avez remarqué que j'avais placé un else. Cela permet de ne pas mettre plein de IF, ainsi on a pas eu à réecrire IF A<-2 et IF A>178. Le END de la fin est le END du ELSE, il n'est pas nécessaire car rien n'est écrit après, mais c'est juste pour la forme. Le résultat: La partie du code entre THEN et ELSE ne s'effectuera que si l'âge est compris entre -2 et 178, et la partie entre ELSE et END ne s'effectue qu'en cas contraire. Hum, ce programme est de mieux en mieux. Mais il reste un problème: si on fait une erreur de frappe (comme taper 56783 au lieu de 23 ans) on se fait traiter de menteur, ca ne va pas: l'utilisateur doit avoir plus d'une chance. C'est ce dont je vais traiter dans le prochain...chapitre.



Laisser des chances à l'utilisateur(LBL et GOTO):

Pour que l'utilisateur puisse retaper son âge après une erreur, il faut rajouter un LBL au tout début du code, un LBL 0 c'est simple a retenir. Il faut aussi mettre un GOTO 0 à la place du stop après le DISP"menteur" et eventuellement remplacer le "MENTEUR" par un "ESSAIE ENCORE". Le programme, au lieu de s'arreter après l'entrée d'un âge incorrect, recommencera depuis le depuis (à l'endroit du LBL). Je ne réécris pas tout, ça prendrai de la place pour pas grand chose. Si vous voulez que le programme n'accepte que les âges inexacts, il faut mettre le goto a la place du premier stop, et garder le deuxieme (mais ca ne sert pas à grand chose). Mais quand même, un problème persiste encore, encore et toujours, résistant à l'envahisseur. Si quelqu'un a vraiment plus de 178 ans? comment fait-il? il est obligé de rentrer un âge bidon pour que le programme s'arrète. C'est embetant, ca réduit le public possible au personne ayant moins de 179 ans. On va donc fixer un nombre d'essai (3 essais) après quoi on va accepter la différence de l'utilisateur (avoir 178 ans c'est pas blamable en soi). On reservera donc une valeur pour cela (La valeur B, tiens) que l'on mettra à 0 au début du programme, et que l'on augmentera d'un a chaque mauvais essai. Il faudra mettre un nouveau IF qui controlera si ma valeur B arrive à trois auquel cas on quitera le programme. les IF enchainés sont très importants et servent beaucoup, il faut donc bien les maitriser. Voila ce que ça donne:

:0 sto> B
:LBL0
:Input"TON AGE, VITE!",A
:INT A sto> A
:clrhome
:IF A<178 and A>-2
:Then
:Disp"ALORS TU AS",A,"ANS"
:Pause:Clrhome
:stop:Else
:1+B sto>B
:IF B=3:Then
:Disp "C'EST BON ON TE CROIS"
:Pause:Clrhome :Stop:end :Disp"ESSAIE ENCORE"
: :Pause:Clrhome
:Goto0:End

Rien de très compliqué, mais il ne faut pas faire d'erreur sur le placement des commandes d'enregistrement et d'augmentation de la valeur. Maintenant vous savez comment compter le nombre de fois que l'utilisateur passe par un endroit du code, il va falloir lui créer un interlocuteur virtuel: nous rajouterons simplement du texte ou la calculatrice donnera son âge à elle. Il y a juste des disp à rajouter, mais on va corser un petit peu : la calulatrice choisira un chiffre au hasard entre 0 et 19 (l'âge est le même pour un chien que pour une calculette), la suite à la suite.



Choix de l'âge de la calcultarice (INT, RAND)

Il suffit de rajouter un int rand 20 et de l'enregistrer dans une valeur (Au hasard...C) et dans le DISP où l'âge de l'utilisateur est affiché, de rajouter des lignes (comme "moi j'ai",C,"ans"). c'est pas très compliqué faut avouer. Il faut bien mettre le int avant le rand et le 20 directement collé après. La syntaxe complète serait INT(RAND x 20) mais c'est plus long alors on utilise plutôt int ran20. Vous remarquez que le chiffre de multiplication du rand est toujours supérieur d'une unité à la valeur maximale voulue, mais c'est normale car rand génère des chiffres entre 0 et 1 exclus, et comme int tronque et n'arondit pas, la valeur de multiplication ne sera jamais atteinte. Voila, avec le texte, les if, les goto, les rand et les input (et en se creusant la tête), vous pouvez déjà faire un super jeu ou l'on doit trouver un chiffre en donnant des approximations et la calculette répond par plus ou moins. Cet exemple n'est qu'une des possibilités que vous avez avec les instructions déjà expliqués.


Introduction d'un menu:

Notre programme de demande d'âge avance bien. Attaquons nous maintenant à un autre problème: Et si l'utilisateur, bien qu'averti et à l'oeil agile, lancait le programme sans le vouloir? il serait obligé, soit de rentrer son âge bien qu'il ne le veuille pas, soit de se convertir au bouddhisme et de suivre une cure de minceur à la roche sur mer. Il faut donc laisser à l'utilisateur le choix de quitter le programme avant que les conséquences ne deviennent irrévocables. On va donc mettre un menu au tout début qui donnera deux choix: continuer et quitter. Continuer renvera au LBL2 et quitter au 3.. Il faut un lbl pour chaque choix, on met donc le LBL2 après le menu, et avant l'enregistrement de B, le choix continuer executera donc le programme normalement.


LE FIN MOT DE L'HISTOIRE

Et puis, a quoi bon tout cela? Faire des programmes pour se distraire en cours de maths (mais attention seulement quand on a compris la lecon, car pour ceux qui ont besoin de travailler en maths, il faut suivre le cours quand même petits fripons), c'est un cercle vicieux, et fuir les problèmes ne résout rien. Offrons nous plutôt un moment de bonheur et de simplicité. Allez donc répondre a l'appel de la nature et sortez vivre la vie des animaux au plus près de ces derniers. Il suffit d'un petit coin de nature: montagne, pré, jardin, plante en pot, montagne de chose à faire (haha pas mal celle là)

Et pour oublier notre anciennce attitude matérialisme et puéril, offrons nous un beau barbecue, avec les grills george Foreman, qui, en mettant KO la graisse, permettent de se faire plaisir sans grossir!


Retour en haut

Ce site n'est en aucun cas une filière de www.tricotin.com, le portail du tricot.
Webmaster: Yann baizid
Acteur principal: Yann baizid
figurant: toto
Souffre douleur: julien lasson
Ce site est en lice pour le concours de site internet du lycée Henri Avril.