Dans cette rubrique nous allons vous montrer comment débuter à la programmation RPL en créant un programme qui résoud les équations du second degré. Ce programme ne marche qu'en mode RPN et non en algébrique et est compatible HP48/HP49.

 

Notre programme devra rapatrier les trois valeurs présentes aux trois premiers niveaux de la pile. Ces trois valeur représentent respectivement A, B et C d'une équation en Ax²+Bx+C=0

Comme tout programme en RPL, on place le délimiteurs << et >>, ensuite on récupère les valeurs de la pile avec -> et on les attribue à des variables que nous appellerons explicitement A, B et C. Afin de pouvoir utiliser le contenu de ces variables, on re-place de nouveau les délimiteurs RPL. Pensez à refermer les délimiteurs RPL, sinon vous aurez droit à de superbes erreurs !

<< -> A B C
<< notre_programme >>
>>
Listing 1

Maintenant que nous avons récupéré nos valeurs et que nous les avons attribuées à des variables, nous pouvons nous attaquer au code qui effectura le calcul de DELTA; cette partie de code est représenté notre_programme dans le listing1. Lorsque que l'on débute en RPL le mieux est d'utiliser le mode algébrique en mettant les simple quote et en les évaluant avec ->NUM.

<< -> A B C
<< 'SQ(B)-4*A*C' ->NUM -> D >>
<< notre_programme
>>
>>
Listing 2

Dans le listing 2, nous avons calculé de manière algébrique DELTA (soit B²-4xAxC, pour les nuls en maths) et nous avons placé le résultat de DELTA dans la variable D ensuite nous avons encapsulé de nouveau délimiteurs RPL afin de toujours pouvoir utiliser le contenu des variables A, B, C et maintenant D. Il est donc temps d'attaquer, notre première boucle de test afin de vérifier si DELTA est supérieur à zero avec la branche IF THEN ELSE END; cette partie sera représenté par notre_programme dans le listing 2.

<< -> A B C
<< 'SQ(B)-4*A*C' ->NUM -> D >>
<< CLLCD
B ->STR "²-4x" + A ->STR + "x" + C ->STR + "=" + D ->STR + 1 DISP
IF D 0 < THEN
D ->STR "<0 => Pas de S dans R" + 2 DISP -1 WAIT
ELSE
calcul_de_X1X2
END
>>
>>
Listing 3

Nous allons expliquer ligne par ligne :
CLLCD : on efface la pile
B ->STR : on transforme le contenu de la variable B en chaine (string) afin qu'elle puisse être fusionnée avec la chaine suivante : "²-4x". On fusionne les deux chaines en mettant un + à la fin (et oui c'est du RPN).
1 DISP : on affiche la ligne obtenue à la suite des multiples concaténations de chaine sur la première ligne de l'écran, l'écran comporte 6 lignes mais peut-être porté à 7 en utilisant un SYSEVAL qui efface le menu.
IF D 0 < THEN : on teste si la valeur encapsulée dans D est inférieur à 0. Si elle l'est on affiche la ligne D ->STR "<0 => Pas de S dans R" sur la deuxième ligne de l'écran.
-1 WAIT : on force la HP a laisser afficher sur l'écran les deux lignes jusqu'à l'appuie sur une touche.

Nous n'aborderons pas la partie calcul_de_X1X2 sachant que le principe est le même que DELTA mais voilà le résultat final du programme si on lui entre les valeurs de la première capture d'écran de HP.