Retour
sommaire
|
[P0] "Hello World" |
On exécute le programme en tapant sur la touche P0, et, oh miracle,
on lit [ Hello World ] sur l'écran de la bête. Nous voyons donc qu'il n'y pas
besoin d'une instruction PRINT ou équivalente. Dans un programme 602P, saisir un texte
entre guillemet suffit pour l'afficher à l'écran.
Françisons notre programme :
[P0] "Bonjour le Monde" |
Après un appui sur P0, le comportement de la machine est un peu
différent. Comme le message est plus grand que la taille de l'écran, la calcu affiche [Bonjour
le M] et après une seconde de pause le message défile lettre par lettre
laissant à la fin sur l'écran [our le Monde]
Nous aurions aussi pu écrire :
[P0] "Bonjour..." HLT "...le Monde" |
Dans ce cas, la calcu affiche [Bonjour...] et s'arréte avec l'indicateur HLT. Un pression sur la touche EXE et [...le Monde] s'affiche.
Une autre variante sur le même thème :
[P0] "Bonjour..." PAUSE "...le Monde" |
Dans ce cas, la calcu affiche [Bonjour...], fait une pause d'une seconde et [...le monde] s'affiche automatiquement
Revenons à l'anglais pour notre avant-dernière variante :
[P0] "Hello" "; World" |
Le ; au début de "; World" est
une des rares possibilités de traitement alphanumérique sur la 602P. Cette instruction
permet de concaténer (assembler) le texte "Hello" avec le texte "
World".
L'affichage final est [Hello World]. Il est aussi intéressant de noter que la calcu
affiche briévement "Hello" puis "Hello World" avec un joli scrolling
horizontal.Cela nous permettra de faire quelques animations sur le petit afficheur.
Je vous laisse tester ce que donne :
[P0] "H" ";e" ";l" ";l" ";o" "; W" ";o" ";r" ";l" ";d" |
Pas mal, non ?
Pour nous familiariser avec les LaBeLs, les GOTOs et les tests, nous allons écrire un
programme qui affiche la parité d'un nombre.
Première variante :
[P0] / 2 = FRAC x=0 GOTO1 "IMPAIR" GOTO9 LBL1 "PAIR" LBL9 |
Ce programme donne les résultats suivant :
555 P0 : [ IMPAIR]
998 P0 : [ PAIR]
On retiendra :
- Un nombre qui apparait sur l'écran est pris comme paramêtre quand un appui sur une
touche Px
- FRAC retourne la partie fractionnaire d'un nombre
- Les tests fonctionnent comme suit : si le test est vrai le pas de programme suivant est
exécuté, sinon il est sauté
- Pour les LBL et les GOTO, la Casio va où on lui dit d'aller !
A noter qu'on peut bien simplifier ce programme :
[P0] / 2 = FRAC "IMPAIR" x=0 "PAIR" |
L'idée de cette variante est que dans la Casio 602P, une chaîne de caractère est
considérée lors des tests comme un pas de programme unique. Donc on affiche
IMPAIR par défaut et si le nombre est pair, on affiche PAIR.
Le seul petit inconvénient de cette méthode est que, si le nombre est pair, IMPAIR
apparait fugitivement à l'écran avant d'être remplacé par PAIR. En effet, dans la 602P
toute chaine entre guillemet apparait immédiatement sur l'écran même pendant
l'éxécution d'un programme.
Sur la 602P, une boucle FOR I=1 to 1000 : NEXT I s'écrit comme cela :
[P0] 1000 Min00 LBL0 DSZ GOTO0 |
Une telle boucle s'exécute en 24 secondes sur la calcu. Voici les vitesses de ses
concurentes à la même époque :
HP41C : 1 minute 42 secondes
TI 59 : 3 minutes 17 secondes
La 602P est donc une machine rapide (tout est relatif !)
5. LANCONS DES DES
Rien de plus simple que simuler un lancement d'un dé :
[P9] RAN# x 6 + 1 = INT |
RAN# retourne un nombre aléatoire entre 0 et 0,999 avec 3 chiffres après
la virgule.
P9 -> 4 (ou 2 ou ...)
Un dé, c'est bien, deux dés c'est mieux. Si on souhaite afficher le résultat sous la
forme (4-5), on peut faire :
[P0] GSBP9 "(#-" GSBP9 ";#) |
P0 -> (3-4)
Imaginons maintenant que nous voulions programmer un 421. Il faut 3 dés. Il faut aussi
mémoriser la valeurs des dés :
[P0] GSBP9 Min01 GSPP9 Min02 GSBP9 Min03 "( AR01 - AR02 - AR03 )" |
Si on souhaite après l'affichage du premier tirage pouvoir rejouer un dé (le 1, le 2 ou
le 3). Le programme devient (les lignes à ajouter sont en rouge):
[P0] GSBP9 Min01 GSPP9 Min02 GSBP9 Min03 LBL0 "( AR01 - AR02 - AR03 )" HLT x=0 GOTO9 Min00 GSBP9 IND Min00 GOTO0 LBL9 |
Exemple d'exécution
P0 -> [ (1-5-3) ]
2 EXE -> [ (1-4-3) ]
A noter que le programme ne vérifie pas que l'utilisateur entre bien un nombre entre 1 et
3. 0 permet de sortir du programme.
Important aussi l'instruction IND qui correspond à l'adresse INDirect d'une mémoire de
la Casio. Explication :
13 Min00 : met le nombre 13 dans la MR00
13 IND Min00 : met le nombre 13 dans la mémoire définie dans la MR00.
Ex , la séquence :
5 Min00 13 IND Min00 : met le nombre 13 dans la MR05
Faisons évoluer notre programme : l'idéal serait de pouvoir relancer pas seulement
1dé, mais ceux de son choix ( le 1 et le 3 par exemple). Le plus simple serait de faire
comme ça :
- Si on veut lancer le 1 et le 2, on tape 12,
- Si on veut lancer le 1, le 2 et le 3, on tape 123
- Etc.
Le programme devient (les lignes à ajouter sont en rouge):
[P0] GSBP9 Min01 GSPP9 Min02 GSBP9 Min03 LBL0 "( AR01 - AR02 - AR03 )" HLT x=0 GOTO9 / 1000 = Min1F 3 Min00 LBL1 MR1F x 10 - FRAC Min1F = Min19 x=0 GOTO2 GSBP9 IND Min19 LBL2 DSZ GOTO1 GOTO0 LBL9 |
Ce programme fonctionne correctement. Mais l'affichage est un peu tristounet. Nous allons le modifier pour afficher une petite animation sur les dés qui sont relancés et uniquement ceux-ci. Pour cela, nous allons ajouter le sous-programme P8 et modifier le P0 comme suit :
[P8] Min04 IND GOTO4 LBL1 "($-AR02-AR03)" GOTO9 LBL2 "(AR01-$-AR03)" GOTO9 LBL3 "(AR01-AR02-$)" LBL9 |
[P0] GSBP9 Min01 GSPP9 Min02 GSBP9 Min03 LBL0 "( AR01 - AR02 - AR03 )" HLT ";" x=0 GOTO9 / 1000 = Min1F 3 Min00 LBL1 MR1F x 10 - FRAC Min1F = Min19 x=0 GOTO2 GSBP8 GSBP9 IND Min19 LBL2 DSZ GOTO1 GOTO0 LBL9 |
( A SUIVRE ....)