|
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!
|
|