
Tutorial

HP48 Gx, Introduction, Astuces et prise en main rapide
< />
< />
<>par Walter Cédric
SOMMAIRE:
Présentation du clavier:
La Pile de Calcul
La programmation en RPL (Reverse Polish Lisp)
       Ses caractéristiques:
       1. En RPL STANDARD
       2. Le RPL SYSTEME : (SYS-RPL en Anglais)
       3. Le LANGAGE MACHINE
       CONCLUSIONS générales
LA MACHINE A PLANTE, que faire ?
NOTIONS DE PROGRAMMATION :
   Prendre les données sur la pile.
   A. Avec la pile de calcul
   C.Avec les variables Locales
   D. Commande INPUT
   E. Les menus de Saisies
   Les déposer sur la pile.
LES BOUCLES DANS LES PROGRAMMES
STRUCTURE DE TEST
LES OBJETS DE LA HP48
LES LIBRAIRIES
LES ENTREES SORTIES
 Â
Â
Sur votre machine, il y a deux façon de lancer des applications :
– Pour les nuls, passer par les menus déroulants |> + touches
– Pour les utilisateurs avancés : <| + touches.
Présentation du clavier :
<-| 7Â Application SOLVE (résolution d’équations). Equations différentielles/ systèmes linéaire/ finance.
<-| 8 Application Plot (tracer) elles sont de six types : fonctions / coniques / polaires / paramétriques / vérités /différentielles.
<-| 9 Applications symboliques : Taylor / réduction / développement.
<-| time Gestion du temps, calcul sur les dates…etc
<-| stat Statistiques a 1 ou 2 variables.
|-> units Unités SI <-| Conversions entre les différentes unitées.
|-> IO Gestion des ebntrées sorties par Infrarouge (IR) ou série (WIRE).
|-> MATRIX Applications matrix-writer similaire à un tableur.
<-| EQUATION Application equation Writer : permet de rentrer des équations complexes comme sur un tableau.
Remarque : Toutes les applications inter-agissent entre elles et redéfinissent le clavier
Ca déroute, mais à l’usage vous saurez l’apprécier……
On rentre d’abord les arguments (opérandes) puis les opérateur (+-*/ etc). Ce principe est appelée NOTATION POLONAISE INVERSE
(RPN) et est non ambiguë et ne nécessite pas de parenthèses.
AVANTAGES :
– On ne travaille jamais sur plus de deux nombres a la fois.
– La pression sur une touche execute la fonction ( plus besoin de touche ==.
– On voit les résultats intermédiaires et le déroulement du calcul.
– Les résultats intermédiaires sont stockés automatiquement.
– Le calcul est effectué comme on le ferais à la main.
– Il n’est pas nécessaire de refaire un calcul en entier : correstion des erreurs aisées.
– Tout les autres types de données (matrice, nombres complexes) suivent ces rêgles.
– Les calculs dans les programmes c’est Idem.
Remarques
 Tant que vous avez de la mémoire, vous pouvez stocker des objets dans la pile.
C’est une pile (d’assietes?) mais elles se charge et se vide par le bas.
Cette notation Polonaise a été développé par le mathématicien Polonais Jean Lukasiewiez (1878-1956).
La programmation en RPL (Reverse Polish Lisp)
Ses caractéristiques :
La notation RPN reste valable,
Elle fait appel a un jeu d’instructions réduit qui peut être tapées au clavier.
La programmation est structurée, propre :
 – Pas de saut indexé dans un programme,
 – Un programme s’exécute de haut en bas,
 – On ne peut sortir inopinément d’une boucle,
 – Des fonctions, procédures appelés par leurs noms.
(Du moins en RPL standard).
Encore plus bas près du CPU :
3. Le LANGAGE MACHINE :
Son utilisation nécessite un compilateur sur HP ou PC sinon il faut rentre des chiffres binaires.
Il faut connaitre parfaitement le fonctionnement intrinséque de la machine (logiciel et électroniquement).
C’est illisible sans un source commenté.
La taille du programme est ridicule mais il faut compter des dizaines d’opérations élémentaires pour faire quelque chose.
2. Ne JAMAIS éditer un code (LM) ou du sys-rpl, cela soit le détruit soit plante la machine.
3. Dès que la machine ne reconnait pas un objet elle le remplace par le mot EXTERNAL sur la pile, un seul mot Prudence.
LA MACHINE A PLANTE, que faire ?
Essayer dans l’ordre (gravité croissante)
| ON
| ON + C relacher
|————————————- destruction des données en dessous de cette ligne.
| ON+A+F relacher                |
| Reset sous patin droit            |
|Inverser les piles 2 Secondes  |
Comment Marche La HP48 ?
En voila une bonne question, bon …Euh dans les grandes lignes (il y a des bouquins de 250 pages sur le sujet).
Disons que la hp gère des objets, que chaque objet contient en son sein le moyen de traitement adéquat (en fait son prologue).
Ceci permet d’additionner avec la touche +Â indifférement des complexes, tableaux, listes, chaines de caractères, expression algébriques ….etc
La programmation est facilité par rapport aux autres langages qui utilisent une instruction précise pour chaque type d’objet.
Elle utilise et gère la pile de données de façon dynamique.
– Un programme commence toujours par << et se termine par >> pour éviter qu’il s’éxecute automatiquement. On le stocke et on peut le ré-utiliser a l’infini.
– C’est une collection disparates d’objets.
Le but d’un programme est de prendre des données (entrées ou input) , d’effectuer un traitement et de fournir un résultat (sorties ou output).
Prenons un exemple : le carré d’un nombre et regardons les différentes façons de prendre des objets.
Selon le cas :
Les données sont sur la pile et dans le bon ordre : on utilise les variables locales ou globales ou la pile.
On crée un menu de saisie
On pose des questions a l’utilisateur commande input.
Grâce à la hp ce programme marche que delta soit négatif ou non (elle connait sqrt(-3).
mais je n’ai pas testé delat négatif.
pour le fun : en sys rpl :
<< { a {] b {} c {} } TMENU #15146h SYSEVAL HALTÂ et le reste idem
Le menu est blanc, un appuie sur la touche stocke automatiquement l’objet du nivo 1.
Différentes façons de les rendre sur la pile :
A. Taggue :
Il est parfois intéressant de tagguer les résultats au lieu de laisser des nombres sur la pile sans significations.
essayer : (prend trois nombres sur la pile)
<< -> a b c << ‘b^2-4*ä*c’ EVAL >> et
<< -> a b c << ‘b^2-4*ä*c’ EVAL “DELTA” ->TAG >>
On peut tout tagguer : listes, chaines etc on peut même spécifier l’unité ex:   << “en m/s” ->TAG >>
Â
 LES BOUCLES DANS LES PROGRAMMES :
elles sont de différents types :
1. Les boucles dont on connait les deux index et l’incrément :
index : valeur du compteur au début ou a la fin.
incrément : nbre qui sera aditionner a l’index lors de chaque scrutation.
ex : on répéte 5 fois.
<< 1 5 START prog NEXTÂ >> incrément fixe de un.
<< 1 5 START prog   n STEP >> incrément positif ou négatif de n.
NOTA : la boucle est toujours effectué au moins une fois.
2. les boucles d’interceptions d’erreurs :
Permet d’intercepter une erreur dans le corps de votre programme et de renvoyer ou d’éxecuter un autre programme…
ex : << IFERR DUP si une erreur ici THEN “manque qq chose, mec” DOERR END >>
doerr prend un chaine sur la pile et provoque l’erreur plus un bip
3. Les boucles indéfinis qui attendent qu’une condition soit vraie :
ex DO clause répétée   UNTIL  END
    WHILE   REPEAT END
ex : DO prog UNTIL KEY ENDÂ Â boucle et attend une touche.
4. On a besoin de prendre connaissance de l’index :
<<Â 1Â 5 FOR XÂ Â Â Â Â XÂ 1 DISP 0.5 WAIT NEXT (ou 1 STEP)>>
X est le nom du compteur
1 disp affiche en ligne 1 la valeur de X
Lue au moins une fois.
Â
but : orienter vers un sous-programme en fonction du résultat d’1 ou plusieurs test. Dans tous les cas de figure, soit la clause de test est vérifié (vrai=true=1) soit elle est fausse (faux=false=0).
IF clause_test THEN clause_Vraie ELSE clause_Fausse END.
ex : << IF delta 0 < THEN “delta négatif” ELSE “delta positif” END >>
Un réduction est possible mais on perd en lisibilité IFTE (IF THEN END)
ex idem :
<< delta 0 <Â Â << “delta négatif” 1 DISP >> << “delta positif” 1 DISP>> IFTE >>
Structure choix parmi : CASEÂ Â END (= case of en Pascal)
CASE
 test1 THEN prog1 END
 test2 THEN prog2 END
 test3 THEN prog3 END
END
Execute le programme correspondant à testn vrai.
Â
 LES OBJETS DE LA HP48 :
La hp48 gère des entités appelés objets, il en existe 28….
Les 18 premiers sont accessibles, les autres (avec *) ne le sont pas sans programmes de créations dédiés.
Â
0Â Â Â Réels (Real) | 10^-499 Ã 9.99.10^499 |
1Â Â Â Complexes | (1,1) |
2Â Â Â Chaines de carctères (string) | “abcdefg” |
3/4 Tableau (array) | [1 2 ] |
5Â Â Â Listes (list) | {1 2} |
6Â Â Â Nom Globaux (global name) | ‘temp’ |
7*Â Nom locaux (local name) | Â Â Â Â |
8 programme (program) | <<Â DUP >> |
9 Expressions algébrique (algebraic ex) | ‘COS(X)’ |
10 Entier binaire (binary integer) | #AFh |
11 Objet graphique (graphic) | graphic 25×25 |
12 Noms taggués | 45 : toto |
13 Unités (units) | 15_m/s |
14* Noms Xlib (Xlib Name) | XLIB 986 0 |
15 repertoire (directory) | DIRÂ END |
16* Librairie (Library) | Library 1000 : exemples |
17 Backup | Backup toto |
18 | Â Â Â Â Â Â |
19 | Â Â Â Â Â Â Â Â Â |
20* Entier système (system binary) | <15h> |
21* Réel long (Long real) | Long real |
22* Complex long (Long complex) | Â Â Â Â Â Â Â |
23* Linked array | Linked array |
24* Characters | Character |
25* Programme asm | Code |
26* Librairie Data | Library data |
27* Reservé 1 | Â Â Â |
28* Reservé 2 | Â Â Â |
29* Resevé 3 | Â Â Â Â Â |
30* Reservé 4 | Â Â Â Â |
A Savoir :
Tous les objets * ne sont pas d’une utilité folle, par exemple il n’exite qu’un seul librairie data dans la machine (pour le minehunt) mais c’est un objet libre et le programmeur peut y mettre ce dont il a envie. Les Linked array n’existent pas en ROM mais prenent tout leurs intérêt dans les tableaux de grande taille car :
– Les objets doivent être du même type, mais si il sont identiques, ils n’ont pas besoin d’être répétés.
Les plus importants :
– Le code object qui contient le programme en langage machine,
– Les entiers systèmes qui participent de façon importante dans le fonctionnement interne de la machine.
Introduction :
C’est un objet : l’instruction TYPE renvoie 16.
C’est sans aucun doute l’objet le plus complexe de la hp48.
Il n’est pas possible, Ã priori, que l’utilisateur puisse le créer.
De nombreux programmes le permettent néanmoins, citons LIB to LIB, CRLIB … ou permettent de les casser LIBEX ou LIBtoLIB.
Définition :
Une librairie est une collection d’objets hétéroclites qui n’ont plus besoin d’être modifiés.
But :
– On peut protéger ses applications de l’utilisateur lambda.
– On peut étendre le jeu d’instruction de la machine, le domaine de visibilité d’une librairie est totale (pour peu qu’elle soit attachée à HOME).
– On ne montre que les programmes principaux (protégés) et pas les sous-routines beaucoup trop dangeureuses.
– La distribution d’un soft est facilité (1 objet au lieu de 20, 30; 500 programmes dans un répertoire).
– De par sa structure interne, l’accés au programme est très rapide.
– On ne met en librairie que des programmes finalisés.
Ou les stocker ?
Dans les ports 48G : 0 sur Gx : 0, 32
Comment ?
Dès qu’une librairie est sur la pile, on voit Library 1000 : Exemple
Il suffit de faire X sto ou X est le numéro de port. et d’éteindre la machine ou de faire ON-C
La librairie contient un objet de configuration qui va s’executer et attacher la librairie ou affiicher un message, bipper …etc).
Les enlever de la mémoire ?
Se placer sous home, il faut connaitre son numéro le mettre dans la pile taggue du numéro de ports correspondant et faire successivement DETACh puis PURGE.
Problèmes types : J’installe une lib mais je ne la vois pas dans le menu librairie :
Avez vous éteint la machine?
L’objet de configuration est déficient essayer X ATTACH ou X MENU. INVALID CARD DATA !
La librarie est corrompue ou mal faite par l’auteur, pas de solution sinon de sauver tout ce que l’on aime dans la machine et de faire ON-A-F car la mémoire centrale est corrompue et le système ne vous la rendra pas !
Â
Il vous faut acquérir les fonctions de bases propres au RPL :
DUP : duplique l’objet du nivo 1.
DUP : duplique nivo 1 deux fois.
n DUPN : duplique n fois le nivo 1.
DROP : efface le nivo 1.
n DROPN : efface les n premiers nivo.
CLEAR : efface toute la pile ne jamais utiliser dans un programmes : on laisse la machine dans le même état avant l’éxecution.
SWAP : permute nivo 1 et 2.
n PICK : copie objet du nivo n.
n ROLL : Prend objet nivo n.
n ROOLD : replace l’objet nivo 1 au nivo n.
->NUM : evalue l’expression algébrique.
le reste prendre votre bouquin.
Â
Â
Â