Retour sommaire
fx602p2.jpg (22942 octets)

Programmation de la Casio FX602-P

 

Le manuel de la 602P est accessible en ligne sur le site de Silrun System. Je ne reviendrai donc pas ici sur les fonctionnalités de base de la calculatrice, ni sur la façon de saisir, de modifier et d'utiliser des programmes. Tout cela est fort bien décrit dans le manuel.Cependant, ce manuel me semble incomplet pour toute la partie programmation de la machine.

Dans ce qui suit, je suppose que vous avez une connaissance minimale de la programmation basique de n'importe quoi ;-)  Avec de nombreux exemples, j'explique les principes fondamentaux de programmation d'une 602P. Tous ceux qui ont connu les l'époque héroïque des TI57, 58 ou 59 ne devraient pas être trop dépaysés hormis les fonctionalités alpha-numériques supplémentaires de la 602P.

Sommaire :

  1. RAPPEL DES CARACTERISTIQUES DE LA CASIO FX-602P
  2. HELLO WORLD
  3. PAIRS ET IMPAIRS. TESTS ET GOTO
  4. DES BOUCLES, DES CHIFFRES ET DES LETTRES
  5. LANCONS DES DES

 

 


1. RAPPEL DES CARACTERISTIQUES DE LA CASIO FX-602P

En quelques phrases la Casio FX602-P, c'est

  • 10 zones de programmes possibles (de P0 à P9). Chaque zone peut contenir un programme ou un sous-programme. La 602P ne fait d'ailleurs pas de différence entre un programme et un sous-programme. Pour lancer un programme, il suffit de taper sur la touche correspondante. L'exécution d'un sous-programme se fait par l'instruction GSBPx (GSBP0 par exemple correspond à Gosub P0). Il n'y a pas d'instruction de type RETURN. Le retour du sous-programme vers le programme appelant se fait naturellement à la fin (dernière ligne) de l'éxecution du sous-programme.

  • 512 pas de programmes. Je vous parle d'un temps où la mémoire des calculatrices ne sont comptait pas en octet (encore mois Méga-octets !) mais en pas de programme. Un pas de programme correspond en général à une instruction ( GOTO5 / MR19 ) ou à un caractére alphanumérique ou numérique. Le décompte des pas sur la 602P fait qu'elle beaucoup plus économe qu'une TI58/59 (environ 40% de moins).

  • 22 Mémoires numériques (de MR00 à MR19 et les mémoires spéciales MRF et MR1F). A noter qu'il est possible d'augmenter le nombre de mémoire en acceptant de diminuer le nombre de pas de programme disponible. 1 mémoire en plus = 8 pas de programme en moins. On peut aller jusque 88 mémoire mais il ne reste plus que 32 pas de mémoire.A noter que les mémoires ne peuvent contenir que des nombres réels. Pour ceux qui ont connu les TI de la grande époque ou les HP (jusque la 49G+ !), MR (Memory) correspond à RCL, Min (Memory In) correspnd à STO (Store) etc...

  • Un registre Alphanumérique.. Et oui, UN seul. Faut se débrouiller avec ça ! Mais les TI de l'époque aurait bien voulu l'avoir ce registre alpha ;-))

  • 10 étiquettes (labels) par zone de mémoire (LBL0 à LBL9). Les labels vont de pair avec les GOTO (GOTO0 à GOTO9). 10 label par zone ça peut paraitre peu, c'est parfois peu, mais on s'en sort fort bien.

  • 4 tests : x>=0 x=0 x>=F x=F . A noter que les test n'ont pas d'inverses. x<=0 n'existe pas par exemple. Mais on s'en sort toujours.

  • Possibilité d'adressage indirect sur toutes les mémoires, les label et les sous-programmes

Retour au sommaire


2. "HELLO WORLD"

Comme le veut la tradition, le premier programme que nous allons écrire va nous permettre d'afficher le message 'Hello World' sur l'écran de la calculatrice. Pour cela, il suffit de rentrer le programme suivant dans par exemple la zone de programme P0 :

[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 ?

Retour au sommaire


3. PAIRS ET IMPAIRS. TESTS ET GOTO

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.

Retour au sommaire


4. DES BOUCLES, DES CHIFFRES ET DES LETTRES

 

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

Retour au sommaire


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 ....)


Retour sommaire