Mensajes sobre el tema: hp41c

Blog en español


Publicado el por

El sistema RPN - una primera introducción

 

Las calculadoras HP41 utilizan el sistema de entrada de datos RPN (Reverse Polish Notation, o notación polaca inversa, en honor al matemático polaco Jan Lukascievic)

Este sistema difiere del algebraico normal en el orden en que se introducen los números con los que se quiere operar y el operador. Así, en una calculadora algebraica típica, para hacer una suma, el operario introduciría primero un número, después el símbolo “+”, después el otro número, y por último el signo igual, que finaliza la introduccion de datos y “obliga” a la calculadora a realizar la operación:

5 + 4 =

Y la calculadora muestra el resultado 9 en pantalla.

El sistema RPN funciona de forma diferente: primero se introduce un número, se pulsa ENTER para separarlo del segundo, se introduce el segundo y finalmente se pulsa el operador “+”:

5 ENTER 4 +

Y el resultado (no sorprendentemente) es el mismo 9.

RPN funciona con una “pila” de cuatro “cajones” o registros para los datos, llamados X, Y, Z y T. Conviene representar estos registros como una pila, estando el X abajo y el T encima. Lo que se ve en la pantalla es el registro X. Cuando el usuario pulsa la tecla ENTER, el contenido del registro X se copia en el siguiente registro (llamado “Y”). Al escribir el segundo número, éste se sobrescribe en el registro X sobre lo que había antes. Entonces tenemos:

Y - 5

X - 4

Si nos fijamos, parece como cuando hacíamos sumas y restas en la escuela: ponemos uno encima del otro. Ahora basta con pulsar la operación que se desea, y ya está.

En esta operación sencilla, el número de pulsaciones es el mismo: 4 en cada caso. No hemos ahorrado nada. Pero veamos este caso un poco mas complicado:

( 5 + 4 ) x ( 7 + 6 )

Dependiendo de si la calculadora algebraica tiene paréntesis o es una calculadora de las de andar por casa, el usuario tendrá que anotar los resultados intermedios en un papel (en el segundo caso) o escribir lo siguiente:

( 5 + 4 ) x ( 7 + 6 ) =

Total: 12 pulsaciones. Algunos sistemas de predicción de tecleo serían capaces de cerrar automáticamente el segundo paréntesis, aunque nunca el primero.

Veamos RPN. Primero contamos, y después lo repetimos a cámara lenta:

5 ENTER 4 + 6 ENTER 7 + x

Total 9 pulsaciones: un 25% menos que en el caso algebraico.

Veamos ahora cómo funciona la pila:

 

LAST X 0,000 0,000 0,000 4,000 4,000 4,000 4,000 7,000 13,000
REGISTROS                
T 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000
Z 0,000 0,000 0,000 0,000 0,000 9,000 9,000 0,000 0,000
Y 0,000 5,000 5,000 0,000 9,000 6,000 6,000 9,000 0,000
X 5,000 5,000 4,000 9,000 6,000 6,000 7,000 13,000 117,000
                   
TECLEO 5 ENTER 4 + 6 ENTER 7 + X

En general, los mejores resultados con RPN se obtienen trabajando desde los paréntesis más interiores a los exteriores; pero para ello hay que entender la fórmula. Para aquel que sólo quiere teclear lo que pone el libro, es más conveniente el sistema algebraico.

En RPN, el signo “-” es el operador matemático de resta. No funciona cuando lo que se quiere hacer es cambiar de signo a un número. Para ello hay que utilizar la tecla “CHS” (Change sign)

Cuando se hace alguna operación, los registros “caen” tantos pasos como se hayan utilizado. Cuando “cae” el registro T al registro Z, el contenido de T se mantiene. Es como si se fuera copiando el contenido de T indefinidamente. Esto no es un error, sino una característica deseada, que se puede utilizar con varios propósitos; por ejemplo, para utilizar una constante. Supongamos que queremos ver cómo aumenta un capital con un interés del 5% (aunque ya no existan esos intereses en depósitos…): introduciríamos 1’05 (la unidad + 5%, que es el factor de actualización); pulsaríamos ENTER tres veces, hasta que llegue al registro T; y entonces solo tenemos que introducir en X el valor del capital inicial, y pulsar indefinidamente el símbolo de multiplicación “x”.

Por último, existe otro registro llamado “Last X”. Contiene lo que había en el registro X antes de la última operación. Sirve también para varios cometidos:

  • también para utilizarlo como constante, aunque en lugar de únicamente multiplicar, hay que escribir “f lastX X".
  • Principalmente para deshacer errores: si se ha mutiplicado algo por un número incorrecto, se divide por lo que haya en lastX y el problema queda resuelto.

Hay veces que el resultado que uno desea no está en el lugar de la pila que uno necesita. La HP 41cl tiene varias teclas que permiten el movimiento entre niveles de la pila:

X<>y cambia los contenidos de x por y. Vale para restas y divisiones, cuando el orden de los factores no es el que queremos.

R¥ (R con la flecha hacia abajo) significa “roll down”: todos los registros rotan hacia abajo (el registro X, el de más abajo, pasa al T)

Con esta explicación inicial, el usuario puede empezar a practicar, y continuar leyendo el fantástico manual de HP, lleno de ejemplos que le ayudarán a entender esta fabulosa calculadora.

Leer mensaje completo
Publicado el por

Pi por teorema de Pitágoras: una posible solución para HP41c

i41CX_PrintoutLa semana pasada os propusimos un problema: cómo calcular Pi con vuestra calculadora, utilizando el teorema de Pitágoras. La propuesta inicial era preparar un programa para la HP Prime (que sigue en pie). Dimos como alternativa la posibilidad de crearlo para cualquier otra calculadora HP. ¿Cuál mejor que la HP41c? Como hace tiempo que no utilizo funciones de módulos, decidí usar sólo funciones standard, no las contenidas en módulos como el SOLVE del Advantage pack.

Como dijimos, hemos utilizado el polígono circunscrito en la circunferencia, doblando el número de lados del polígono en cada iteración. Este método se tiende a pi "por debajo". Una solución alternativa, que utilizaremos otro día se basa en el polígono cuyos lados son tangentes al círculo, y tiende a Pi "por encima".

El programa encuentra promero el lado del cuadrado inscrito en la circunferencia mediante el teorema de Pitágoras: dado r = ½ del diámetro (d), entonces el lado es l12 = r2+r2 = 2r2 => l1 = r*sqrt(2),

Desde aquí, viendo el dibujo, el siguiente polígono se puede calcular como la hipotenusa de un triángulo cuyo lado es la mitad del lado del cuadrado, y el otro lado, la diferencia entre el radio y el lado de otro triángulo, éste último con un lado que es el medio lado del polígono anterior, y como hipotenusa, el radio del círculo. Viéndolo escrito en notación matemática, es más fácil que escribiéndolo:

l(i+1) =sqrt((li/2)^2+(r-sqrt(r2-(li/2)2))^2)

Fijémonos que (li/2)^2 aparece dos veces: la única "astucia" que se me ocurre es intentar calcularlo una sóla vez cada iteración, utilizando el stack para guardar una copia para después. La belleza del RPN. Bueno, y ahorrar una tecla debido a que el cuadrado de (li/2)^2-r2 (que se puede calcular sin cambiar x por y) es igual a lo que buscamos, el cuadrado de r2-(li/2)2.

El programa para el HP41c está aquí al lado. Atención a la bella impresión, cortesía del programa i41cx+ de mi iPad. He puesto un stop (R/S) al principio del bucle, para  poder ver el estado de cada iteración:

¿Alguien se atreve con el polígono exterior?

IMG_1430

Leer mensaje completo
Publicado el por

La HP41c

IMG_0127Durante la época de estudiante, como dije, utilicé una casio programable en Basic, que era buena y barata, pero siempre quise una HP41.

Esta calculadora se estuvo fabricando ininterrumpidamente durante más de 10 años. No llega a la longevidad de la hp12c (que sigue fabricándose desde 1981, y que cumplió en 2011 su 30 aniversario), pero durante toda esa época (los años 80) fue la referencia indiscutida.

¿Qué la hacía ser la referencia?

  • Era una de las primeras calculadoras alfanuméricas. Su display era de gran claridad, y era de segmentos, comparados con los de pídeles, que permiten una mayor variación en las letras, pero que en aquella época carecían de suficiente contraste (baste ver algunas calculadora de la gama Pioneer, como la HP17bII o la HP42s)
  • Tenía una gran capacidad de memoria para aquella época, y se podía gestionar de una forma mucho más avanzada que cualquier otra de la competencia.
  • Era ampliable mediante 4 puertos de expansión en su parte trasera, tanto en sus capacidades lógicas mediante módulos ROM que almacenaban programas y funciones de áreas específicas, como en sus posibilidades de hardware, con impresoras, dispositivos de cinta, interfaces infrarrojos, y, mediante la interfaz HP-IL, toda una gama de dispositivos portátiles y de laboratorio de HP: multímetros, plotters, etc.
  • Casi todas las teclas de la calculadora podían ser reasignadas a nuevas funciones o programas (user keyboard), y la calculadora venía con carátulas en que se podía escribir la nueva función que cada tecla tenía. Esas carátulas se mantenían mediante orificios en la parte inferior del teclado, y un pasador con muelle en la parte superior que las mantenía fijas.

El poseedor de una HP41c era consciente de que tenía un ordenador portátil en la mano, y que con él podía hacer casi cualquier cosa. Hay libros que indican cómo se podían controlar las luces de la casa mediante la HP41c.

El primer modelo fue la HP41c propiamente dicha, con 63 registros de memoria, que podían convertirse en pasos de programa, a razón de 7 bytes por registro, según la configuración necesaria por el usuario. En los puertos de expansión se podían añadir hasta 4 módulos de memoria de 64 registros cada uno, llegando en total hasta los 319 registros.

El segundo modelo fue la HP41cv. Incluía de serie los 319 registros en la placa base, con lo cual los cuatro puertos de expansión quedaban libres para módulos ROM (para ampliar la funcionalidad de la calculadora) o módulos de interface. (Para valorar la cantidad de memoria que tenía, baste pensar que tenía 2,23 kbytes de memoria. El iPhone más pequeño tiene 8 Gb, es decir, casi 4 millones de veces más.)

El tercer modelo fue la HP41CX. Además de lo anterior, tenía memoria extendida (memoria que no se puede acceder directamente pero de la que se puede copiar y trasladar a la memoria principal, de forma similar al límite de 640 kb de MSDOS), algunas funciones adicionales, y un módulo de reloj, con el cual llegaron las alarmas, funciones de calendario y un cronómetro. Aparentemente, el módulo de reloj se creó a petición expresa de la NASA, que había elegido la HP41c como calculadora de vuelo y quería incluir programas que actuaran en función de la posición orbital de las lanzaderas, para el caso de que el ordenador principal fallara.

(Otro artículo interesante será sobre la utilización de las HP en la carrera espacial)

Se han hecho más de 250 módulos ROM de programas y funciones adicionales a través de los años. Hay ROMs para los más variados campos de la ciencia las matemáticas y las finanzas; pero sólo se podían utilizar cuatro simultáneamente.

En los últimos años, y aprovechando los avances en miniaturización, un entusiasta ha desarrollado una placa de procesador que sustituye a la placa original, y gracias a la memoria adicional de que se dispone ahora, permite almacenar TODOS los módulos ROM existentes sin necesidad de utilizar los puertos de expansión, además de funcionar hasta 50 veces más rápido. La nueva calculadora (que necesita una calculadora “donante” original) se llama HP41CL y es una auténtica maravilla. Si tuviste (o tienes) una HP41c, deberías probar la HP41cl. Capacidad infinita de programas a todos los efectos prácticos, rapidísima, y con toda la funcionalidad desarrollada a lo largo de todos estos años, incluida de serie en el sistema.

Continuará…

Leer mensaje completo
Más sobre: hp41c