![]() ![]() ![]() ![]() |
Notions de programmation RPN |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
La genèseLes ancêtresSéries Classic
- Woodstock
|
Pour profiter de cette page, vous aurez intérêt à installer ces deux
polices (Libres, bien sûr...) : Quelques principes généraux simples permettent de programmer pratiquement toutes les machines HP. Nous détaillons ici divers points de programmation évoqués au fil des pages de présentation des machines. Faites le test ! Si vous êtes (fort) dépourvu(e) de calculateur RPN HP, les simulateurs proposés sur la page de liens vous permettent effectivement d'écrire vos propres programmes RPN... Codage des instructionsLe codage des instructions est apparu avec le 1er calculateur programmable HP, le HP-65 de 1974. Il était nécessairement numérique, les écrans de LEDs à 7 segments ne pouvant pas afficher de lettres.Une touche est donc alors repérée par un nombre à deux chiffres [1], le 1er étant son numéro de ligne et le second celui de sa colonne. P. ex. la touche RTN (ReTurN, fin du (sous-)programme) se situe sur la 2ème ligne, 4ème colonne. Lorsque le calculateur est en mode programme, cette instruction apparaît donc :
... et c'est tout ! Le HP-65 ne numérote pas ses lignes de programme. C'est une caractéristique qui n'apparaîtra qu'avec le HP-25 (série Woodstock). Dans le cas du HP-65, cette lacune reste peu gênante, car il utilise l'adressage symbolique [2]. Mais certaines instructions se composent de plusieurs touches. P. ex la touche LN est (toujours sur le HP-65) la fonction secondaire de la touche 7 (ligne 5, colonne 2). Elle s'obtient avec la touche préfixe f (ligne 3, colonne 1). Programmer la fonction LN exige donc deux instructions : f LN soit :
Instructions fusionnéesMais il y a des exceptions. Certaines [3] instructions "doubles" sont fusionnées. Elles n'utilisent donc qu'une seule ligne de programme. L'instruction LASTx p. ex., est la fonction tertiaire (!) -- touche préfixe g [4], ligne 3, col. 5 -- de la touche 0 (ligne 8, colonne 2). Elle se code donc g LASTx et apparaît :
C'est encore la série Woodstock (HP-25) qui aura le privilège de généraliser le fusionnement des instructions composées. Sur une telle machine (et toutes celles qui suivront), les instructions de programme sont en outre numérotées. L'instruction précédente LASTx apparaît donc ainsi sur un HP-25 (en supposant qu'elle figure à la ligne 10) :
en effet, sur le HP-25 :
Y'a pas photo... Édition des programmesIl faut premièrement pouvoir s'y déplacer...ParcoursL'instruction SST (Single STep) permet de réviser un programme :
Ajout et suppression d'instructionsAjouter ou supprimer des lignes de programmes n'a pas toujours été facile... Le problème est que la touche d'effacement CLx est programmable. Donc, taper CLx en mode programme écrit une instruction CLx dans le programme. Il faut distinguer deux types de comportement :Modèles sans insertionSur ces modèles, si l'on tape une instruction supplémentaire à partir de la ligne courante, cette instruction est écrasée. Pratique pour corriger une ligne erronée, ou à la rigueur pour supprimer une instruction : on remplace celle-ci par l'instruction "vide" NOP (No OPeration).Mais pour insérer des instructions supplémentaires, on a le choix entre deux éventualités peu réjouissantes : retaper tout le programme à partir de l'insertion, ou jongler avec des branchements pour reporter les instructions supplémentaires à la fin de la mémoire. C'est fastidieux, mais néanmoins cohérent avec l'adressage numérique utilisé sur ces modèles. Le HP-55 et les séries Woodstock (sauf le HP-29C [9]) et Spice fonctionnent ainsi, de même que les modèles Voyager HP-10C et HP-12C. Modèles avec insertionSur ces modèles, une instruction introduite à l'emplacement actuel du programme décale les instructions suivantes d'une ligne. L'insertion d'instructions est ainsi rendue intuitive.Pour effacer des instructions, une touche dédiée (pas CLx, donc) est prévue ; elle s'appelle DEL ou ← ou BSP selon le modèle. Ce fonctionnement plus rationnel est longtemps resté l'apanage du HP-65, puis des HP-67 et HP-29C. Il s'est généralisé avec le HP-41C et la série Voyager, hormis les HP-10C et HP-12C qui sont dépourvus de la fameuse touche. Tous les modèles ultérieurs en disposent. BranchementsLes manuels HP présentaient à l'origine la programmation comme une mémorisation séquentielle d'instructions. La possibilité de transférer "ailleurs" l'exécution (branchement) était abordée dans un deuxième temps.Modes d'adressagenumérique (ou absolu)
Il s'agit de la méthode la plus intuitive pour les novices.
L'exécution
est transférée à une ligne de programme repérée par son numéro : |
01 |
ENTER↑ | copie n
dans Y |
02 |
ENTER↑ | ... et dans Z |
03 |
1 |
|
04 |
− |
soustrait 1 |
05 |
x=0? |
0 atteint ? |
06 |
GTO 10 |
aller en 10 |
07 |
× |
multiplier par X |
08 |
LASTx |
rappel du X précédent |
09 |
GTO 03 |
aller en 3 |
10 |
R↓ |
terminé (n!
est dans Y) |
ENTER↑ |
ENTER↑ |
LBL 01 |
1 |
− |
x=0? |
GTO 02 |
× |
LASTx |
GTO 01 |
LBL 02 |
R↓ |
machine |
version |
temps
(s) |
HP-65 |
2[a] | 19"06 |
HP-67 |
2 |
33"4 |
HP-25 |
1 |
23"3 |
HP-29C |
2 [b] | 26"1 |
HP-33C |
1 |
28"2 |
HP-34C |
2 |
42"3 |
HP-41C |
2 |
14"2 |
HP-41CV |
2 |
14"2 |
HP-41CX |
2 |
16"9 |
HP-71B |
[c] | 4"34 |
HP-10C | 1 |
26"3 |
HP-11C |
2 |
31"9 |
HP-12C |
1 |
27"5 |
HP-15C |
2 |
38"2 |
HP-16C |
2 |
39"9 |
HP-17BII |
2[d] | |
HP-20S |
[e] | 3"25 |
HP-32SII | 2 |
2"84 |
HP-42S |
2 |
4"34 |
HP-28C |
[f] | 3"06 |
HP-12C
pt. |
1 |
5"28 |
HP-12C
pt. II |
1 |
12"31 |
HP-35S |
2 |
5"44 |
HP-12C 30
yrs. |
1 |
0"47 |
HP-15C LE |
2 |
0"47 |
DM-15cc |
2 |
2"03 |
DM-15L | 2 | 1"94 |
[1] Sauf les touches numériques, qui apparaissent telles quelles
[2]
Elle l'est en revanche beaucoup plus sur le HP-55 qui fait appel à
l'adressage numérique.
[3]
Seulement une dizaine.
[4] Les
touches-préfixes du HP-65
n'étaient pas nommées f,
g et h
(comme sur les HP-67 et
HP-34C), mais f,
f-1
et g. f-1
LN donnait ainsi la fonction exponentielle.
[5] C'était le cas, cependant, pour les principales -- à commencer par la touche ENTER↑.
[6] ...
et qui disparaît -- temporairement -- avec la série Voyager
[7] Le HP-65
ne bénéficiait pas de cette caractéristique, qui est apparue sur
le HP-55, deuxième calculateur programmable HP.
[8] À charge pour lui de la restaurer dans son état antérieur, afin que le programme puisse se poursuivre dans les mêmes conditions.
[9] Cette précision nous a été apportée par un collectionneur de calculateurs HP, que nous remercions.[10] Les HP-41C constituent une exception. Ils compilent leurs programmes dans le sens où ils mémorisent les adresses des branchements. De cette manière, la recherche n'est effectuée qu'une fois.
[11] ainsi, bien sûr, que le HP-19C, son alter ego avec imprimante
[12]
Sur les séries HP-41C, Pioneer et suivantes,
la dénomination GSB fait
place à XEQ (Execute).
[13]
Il s'agit obligatoirement d'un
branchement sur le HP-55, qui combine en fait le test et
l'instruction de branchement.
[14] Sur le HP-65 (dont les instructions sont généralement non fusionnées), ce sont les deux lignes suivantes qui sont sautées.
01 |
ENTER↑ |
02 |
ENTER↑ |
03 |
1 |
04 |
− |
05 |
x=0? |
06 |
GTO 01 |
07 |
× |
08 |
LASTx |
09 |
GTO i |
10 |
LBL
01 |
11 |
R↓ |