Leçon n°1:Qu'est-ce que le RPL ?
1.Notion de pile opérationnelle:.
La HP est une machine radicalement différente des autres machines
à calculer, comme les TI ou les CASIO. Comme vous avez déjà
pu le remarquer on ne note pas les opérations dans la HP comme on
le ferait à la main ou avec une autre machine. La HP utilise une
pile opérationnelle. Le principe de la pile est très simple
: on y empile les éléments que l’on saisit suivant la logique
« le dernier entré est le premier sorti ». Les objets
sont donc mémorisés dans des niveaux, où le dernier
objet saisie se trouve être au niveau 1. Si il y avait déjà
quelque chose dans la pile, par exemple un nombre, celui-ci se trouve repoussé
au niveau 2. Du fait de la pile, la HP utilise la notation polonaise inversée
pour les calculs. Elle consiste à effectuer les opérations
après avoir entrer les arguments de cette opération. En plus
clair : pour effectuer 10+5, il faut entrer d'abord 10 (qui va se retrouver
au niveau 1) puis 5 (qui en se mettant au niveau 1 va repousser 5 au niveau
2), et enfin on exécute l’opération +. On a en fait additionner
le niveau 2 au niveau 1. Les opérations s’effectuent donc toujours
après la saisie de leurs arguments. Pourquoi avoir adopter un système
apparemment complexe ? En fait ce langage se trouve être de loin
le meilleur pour l’exécution d’opérations mathématiques,
de plus le compilateur d’interprétation ne nécessite pas
beaucoup de place mémoire et génère des programmes
rapides. La HP utilise cette notation pour les fonctions mathématiques,
mais aussi pour toutes ces fonctions y comprises celles de programmation.
Cela permet d’avoir des programmes extrêmement souples et ne nécessitant
pas toujours des stockages dans des variables.
2.Notion d’objets:
Un objet désigne tout ce que la HP accepte, c’est
à dire des nombres, des listes, des chaînes de caractères,....,
et aussi des programmes. Voici un tableau récapitulatif des objets
les plus couramment utilisés en programmation :
OBJET |
NOTATION |
EXEMPLE |
REMARQUE |
Nombre réel | Aucune | 1;50;1E20;-526 | Tout nombre |
Texte |
"..." | "HP48" | Peut tout contenir |
Liste |
{...} | {1 2 A Y + } | Peut tout contenir |
Variable |
'...' | 'HP' | Ne peut contenir ni espace ni signe opératoire |
Matrice |
[[...]] | [[1 2 3] [4 5 6]] | Tableau de nombres et seuls les nombres sont autorisés |
Programme |
<<...>> | << A B + >> | C'est aussi un objet |
Binaire |
#a | #156d;#54h;#101b | Nombre en différentes bases |
Répertoire |
DIR...END | DIR ABC END | Egalement un objet |
Ces différents types d’objets ont chacun un rôle qui leur est propre. La plupart des fonctions de la HP s’appliquent a un ou plusieurs types d’objets bien définis. Le message d’erreur « Bad argument Type » vient du fait que l’on a voulu faire exécuter une fonction sur un type d’objet non approprié.
3.Qu’est ce qu’un programme ?
Un programme est un objet comme les autres aux yeux de la HP. Une différence existe, car un programme est une suite d’instructions qui vont s’effectuer suivant un ordre pré établi à l’avance. Un programme n’est pas seulement une suite d’instruction, il peut comparer, créé des variables non programmées, répéter des opérations n fois... Le programme se présente sous forme << >>. A l’intérieur de ces délimiteurs se trouve la séquence à exécuter. Le programme utilise lui aussi la pile opérationnelle, il doit donc être rédigé en notation polonaise inversée. Le programme stocke donc lui aussi tout dans la pile, donc si on veut que notre programme fasse 10+5 il faut écrire : << 10 5 + >>.
4.Différence entre les programmes et le fonctionnement de la HP par l’utilisateur:
L’utilisateur peut se servir des fonctions comme des commandes. Une fonction est une instruction pouvant être programmée (comme + par exemple), alors qu'une commande ne peut qu’être utilisée à partir des menus, mais ne peut en aucun cas être programmée. Par exemple le menu stack accessible grâce à la flèche schifté droite (la bleue), donne accès à un menu comprenant la commande echo. Celle-ci n’est pas programmable, si vous la taper dans la ligne de commande elle sera compris comme le nom d’une variable. Pour avoir accès au menu programmable de la pile opérationnelle, il faut aller dans le menu stack avec la flèche schifté gauche. Il est d’ailleurs important de remarquer que la majorité des commandes sont accessibles grâce au schift droite, alors que les fonctions sont elles accessibles grâce au schift gauche. On ne peut donc mettre dans les programmes uniquement des fonctions.
5.Création d’un programme:
Pour écrire un programme il ne faut pas aller dans un menu spécial comme pour les TI ou les CASIO, il suffit d’ouvrir un objet programme en ouvrant un << grâce à la touche schift gauche [-]. On écrit ensuite entre les 2 délimiteurs la séquence à exécuter. Pour valider notre programme il suffit de presser la touche [ENTER], la machine compile le programme, et si aucune erreur de compilation n’est apparue, le met dans le niveau 1 de la pile ou il suffira de le stocker dans une variable pour le mémoriser. Par exemple pour lui faire exécuter 10-6, puis dupliquer le résultat (pour avoir 4 au niveau 1 et 2 de la pile, il suffit d’écrire : << 10 6 - DUP >> [ENTER]. (note : la fonction DUP peur être obtenue en pressant schift gauche puis [ENTER].). Dans notre exemple il ne peut pas y avoir d’erreurs de compilations car on n’a pas mis d’instruction comme IF, FOR.... (en effet celle-ci nécessite une séquence particulière comme IF...THEN...END, et si on oublie END on obtient alors une erreur de compilation).
6.En Résumé:
Un programme est un objet. Il se saisie donc dans la ligne de commande comme tout autre objet. Un programme fait en RPL manipule uniquement des objets, les mêmes que ceux qui sont disponibles par l’utilisateur. Il peut en plus faire des tests de comparaison, ce qui lui donne une capacité d’autodécision ( si a<b alors faire opération x sinon faire opération y).
Le mois prochain, on va attaquer les entrées / sortie dans un programme, ou comment faire pour entrer des nombres et lui faire afficher quelquechose