ProgramarHP

39
Mayo 2006 (revisado en julio de 2007). macdenaif 1 En lenguaje User-RPL y en modo RPN

Transcript of ProgramarHP

Page 1: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 1/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  1

En lenguaje User-RPL y en modo RPN

Page 2: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 2/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  2

ÍNDICE pag.

Definiciones 5

Instrucción o comando. 5Programa. 5

 Variable. 5Bucle. 5Instrucciones de prueba. 5Operadores lógicos. 5Delimitadores. 5RPN. 6Lisp. 7RPL. 7

User RPL. 7System RPL. 7

Tres instrucciones básicas 9

STO 9EVAL 9PURGE 9

 Algunas teclas 10

MODE 10 VAR 10TOOL 10NEXT 10

Introducción a la programación 11

Trabajando con un dato de la pila. 11Manipulando datos en la pila. Comandos del menú STACK. 11

SWAP, DUP, DROP, ROLL, ROLLD. Variables locales. 13

 Variables globales. 15STO, STO+, STO.

Pidiendo datos. 15INPUT, OBJ

Presentación de resultados. 18TAG, MSGBOX.

Bucles. 19FOR-NEXT-STEP, WHILE-REPEAT-END, DO-UNTIL-END.

Instrucciones de prueba o condición. Submenú TEST. 22IF-THEN-ELSE-END.

Page 3: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 3/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  3

Operadores lógicos. 24 AND, OR, NOT.

 Ventana de selección 26

CHOOSE.Listas. 27LIST, OBJ, DEPTH.

Flags. 29SF, CF.

Ejemplos 31

Fórmula de Friis. 31Orientación de antenas parabólicas. 34

Conversión de decimal a sexagesimal. 36Método de Ruffini. 36

HP-12-C (1981)

Page 4: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 4/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  4

ÍNDICE DE COMANDOS pag.

1.  LIST 27, 332.  ADD 283.  AND 5, 244.  CF 295.  CLEAR 336.  CHOOSE 267.  DEPTH 27, 338.  DO 229.  DROP 12, 2610. DUP 12, 21

11. ELSE 2212. END 21, 22, 2313. EVAL 9, 18, 1914. FOR 19, 20, 3315. GET 3316. HEAD 33

17. IF 2218. INPUT 15, 16...19. MSGBOX 1920. NEXT 19, 20, 33

21. NOT 522. OBJ 15, 2723. OR 5, 2424. PURGE 9, 1825. REPEAT 2126. RND 1727. ROLL 1228. ROLLD 1229. SF 2930. SIZE 33

31. STEP 2132. STO 9, 1133. STO 14, 2034. STO+ 1435. SQ 12, 13, 2136. SWAP 11, 1237. TAG 1838. TAIL 33

39. THEN 22, 3540. UNTIL 2241. WHILE 21

Page 5: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 5/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  5

DEFINICIONES.

Instrucción o comando.Expresión formada por números y/o letras que indica a una computadora laoperación que debe realizar.

Programa

Conjunto de instrucciones que permiten a la computadora realizar una tarea más omenos compleja.

 Variable

En matemáticas, se llama variable a una magnitud que puede tener un valor

cualquiera. En informática, el concepto es básicamente el mismo, es una memoriaen la que podemos guardar un valor numérico, pero también una cadena decaracteres, una función, un programa, etc. En ese caso se habla de “objetos” másque de variables. A su vez, una variable es también un tipo de objeto.

Bucle

Repetición, cierto número de veces, de una parte del programa.

Instrucciones de prueba o condición.

Instrucciones que permiten comprobar si una determinada condición se cumple ono, ejecutando un conjunto de instrucciones en el caso de que se cumpla y

saltándolas, o ejecutando otras, en el caso contrario.

Operadores lógicos

Los operadores lógicos  NOT,  AND, OR  y  XOR  se utilizan normalmente encombinación con las instrucciones de prueba para determinar, por ejemplo, si secumplen dos condiciones a la vez (AND) o si se cumple tal condición y no (ANDNOT) tal otra.

Delimitadores

Son caracteres que permiten a la computadora identificar un tipo de objeto.

Ejemplos de delimitadores en las calculadoras hp:

Delimitador Tipo de objeto

 “ ” Cadena de caracteres

 ‘ ’ Variable o expresión algebraica

( ) Número complejo

{ } Lista

« » Programa

[ ] Vector

Page 6: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 6/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  6

RPN.

Del inglés Reverse Polish Notation .

En 1920, el matemático polaco Jan Lukasiewicz ideó unmétodo para escribir expresiones matemáticas sin usarparéntesis, conocido como notación polaca. Basándose eneste método,  Hewlett-Packard incorporó en 1972 lanotación polaca inversa  en su primera calculadoracientífica de bolsillo (o de mano), la HP35.La RPN se basa en el concepto de  pila de dato s . Primerose introducen los datos y luego se indica la operación arealizar entre los niveles 2 y 1 de la  pila, quedando elresultado en el nivel 1. Veamos algunos ejemplos.

a)  36/9 = 4

En realidad el segundo [ENTER ] no es necesario, la secuencia podría ser esta:36 [ENTER ] 9 [ / ]

b)  (8+2)/(5-3) = 5

36 9

8 2

5 3

Jan Lukasiewicz

Page 7: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 7/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  7

Esta última operación se ha realizado con tan solo nueve pulsaciones. Con lanotación algebraica harían falta doce.

 Además, con la RPN vemos todos los resultados parciales.

c)  1/(1/4+1/7+1/9)

Esta operación requiere hasta dieciséis pulsaciones, contando el “=”, en algunascalculadoras algebraicas. En RPN sólo nueve.

De nuevo hay pulsaciones de más, que se hanpuesto para facilitar la comprensión. En estecaso la secuencia más corta sería la siguiente:8 [ENTER] 2 [ + ] 5 [ENTER] 3 [ - ] [ / ]

4 7 9

Page 8: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 8/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  8

LISP

  Acrónimo de LISt Processing. Lenguaje de programación basado en listas. Fuecreado por John McCarthy y sus colaboradores en el MIT (Instituto Tecnológico de

Massachusetts) a finales de los cincuenta.RPL

Siglas de Reverse Polish LISP . Lenguaje de programación de las calculadoras hp.

User RPL

Es la forma más fácil de programar la calculadora y el único lenguaje al que hacereferencia la guía de usuario. Las calculadoras hp (49-50) disponen de una ampliacolección de comandos para poderlas programar. Algunos de esos comandosllevan asociados nombres. Es decir, la calculadora dispone de un repertorio decomandos que su microprocesador reconoce y de una lista (menor) de nombresasociados a algunos de esos comandos. Esos comandos con nombre son los quepodemos usar para programar directamente la calculadora. Son los que conformanel lenguaje User RPL.

System RPL

¿Qué ocurre con el resto de comandos? ¿Cómo podemos usarlos si no tienennombre? Pues bien, esos otros comandos sí tienen nombre, pero no estádisponible en la calculadora. Para poderlos usar debemos recurrir a un softwareexterno. Podríamos decir que User RPL es un subconjunto de un lenguaje con unvocabulario más amplio, llamado System RPL.

Hp35 (1972)

Bill Hewlett y Dave Packard

Hp 9100 (1968)

Page 9: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 9/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  9

Tres instrucciones básicas.

STO

Del inglés store: almacenar, guardar, archivar.Como cabe esperar, se utiliza para guardar variables, programas y objetos engeneral. Por ejemplo, para guardar el valor 33 en la variable H:

33 ‘H’  STO

 Aunque es más rápido hacerlo así:

33

 ‘H’ O incluso, si la variable H no ha sido declarada con anterioridad, podemos teclear:

33H

  Esto es lo que se llama una variable global. Más adelante se hablará de suspropiedades.

  Los delimitadores ‘ ’ están en la tecla de la letra O.

EVAL

Evaluate: evaluar.Devuelve el valor de una función. Por ejemplo, si guardamos la función 3*H en lavariable F,

 ‘3*H’  ‘F’ 

al llamar a F, lo que obtenemos en la pantalla es 3*H. Para conseguir el valor de3*H, es decir 99, debemos pulsar .

PURGE

En inglés: purgar, limpiar. Permite borrar variables, programas, etc. Por ejemplo:

 ‘F’ PURGE

Otra forma de hacerlo sería usando la tecla F5 desde el menú de herramientas.

 ‘F’ 

También se puede borrar un grupo de variables de la siguiente manera:

{a b c} PURGE

Page 10: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 10/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  10

 Algunas teclas.

MODECon ella se accede al menú MODE, donde podemos configurar los modos defuncionamiento de la calculadora. La herramienta CHOOSE despliega una ventanade opciones.

En el directorio CAS (Computer Algebra System) podemos, por ejemplo, cambiarel nombre de la variable independiente o la forma de presentación de resultados yconstantes. Para más detalles véase el apéndice C del manual de instrucciones.

 VAR 

Da acceso al menú de variables, donde encontraremos los programas y variablesque hayamos creado. Estos aparecerán sobre las teclas F1 a F6.

TOOL

Muestra el menú de herramientas.

NEXT

Permite rotar los elementos presentados sobre las teclas F1 a F6 cuando éstos sonmás de seis.

Page 11: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 11/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  11

INTRODUCCIÓN A LA PROGRAMACIÓN

Trabajando con un dato de la pila.

Supongamos que queremos calcular la longitud de una circunferencia.L = 2 π R .

  Vamos a hacer un pequeño programa que tome de la pila el valor de R y nosdevuelva el valor de L. Para ello escribiremos, dentro de los delimitadores deprograma « » la misma secuencia de operaciones que usaríamos si ya tuviéramosel valor de R en la pila.

« 2 * π * »

Después pulsamos para salir del modo de edición. Para guardar el programa

le daremos un nombre que nos permita identificarlo cuando lo queramos usar, porejemplo Lcir.

 ‘Lcir’ 

Una vez guardado, podemos ejecutarlo llamándolo por su nombre, es decirescribiendo Lcir y pulsando , o de manera mucho más práctica desde el menúde variables . Primero escribimos el valor de R y luego pulsamos la tecla defunción que se encuentra debajo de Lcir (F1) e inmediatamente se nos muestra elresultado, como ocurriría si usáramos una tecla de función cualquiera, por ejemploLOG para calcular un logaritmo.

Para recuperar el menú de herramientas pulsaremos .

Manipulando datos en la pila. Comandos del menú STACK.En el menú STACK  (pila en inglés) encontramos un grupo de comandos quepermiten manipular los datos de la pila. A continuación veremos un ejemplo de suuso. Supongamos ahora que queremos calcular la hipotenusa de un triángulorectángulo.

H = √(A2 + B2)

Siguiendo en la línea del programa anterior, si tuviéramos en la pila los valores de A y B, para calcular el cuadrado de B solo tendríamos que pulsar [x2] pero paracalcular el cuadrado de A deberíamos intercambiar la posición de los datos en la

pila (instrucción SWAP), pasando B2 arriba y A abajo, para después volver a pulsar[x2] calculando así A2.

Las variables y programas queaparecen en estas imágenesno tienen porqué coincidircon las que puedan haber entu calculadora.

« » 2 * π *

Page 12: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 12/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  12

Luego, sumaríamos ambos valores pulsando [+] y finalmente calcularíamos la raízcuadrada [√x]. El programa quedaría así:

« SQ SWAP SQ + √ »

  El comando SWAP (trocar, permutar) se encuentra en el menú deprogramación (teclas [] ) dentro del submenú STACK , o también en elcatálogo de comandos (excepto hp49g) pulsando [] . El catálogo tieneopción de búsqueda por inicial, pulsando y la letra correspondiente.

Para guardar el programa haremos lo mismo que antes:

 ‘HIP’ 

  Y para usarlo pondremos los valores de A y B en la pila y desde la barra devariables ejecutaremos HIP. En el ejemplo: 3 4 HIP.

  El submenú STACK se encuentra también en el menú de herramientas TOOL.  El comando SWAP se puede usar manualmente mediante la tecla .

Otros comandos del menú STACK :

DUP duplica el contenido del primer nivel de la pila.

DROP borra el contenido del primer nivel de la pila.

ROLL hace rodar los n primeros niveles de la pila, previa introducción delargumento n, pasando el contenido del nivel n al nivel 1.

ROLLD hace rodar los n primeros niveles de la pila, previa introducción del

argumento n, pasando el contenido del nivel 1 al nivel n.

El siguiente programa convierte grados, minutos y segundos a su equivalente engrados. De sexagesimal a decimal.

« 3600 /3 ROLLD60 /+ + »

3 4 (SWAP)

Page 13: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 13/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  13

También podría usarse el comando SWAP, que intercambia los niveles 1 y 2.

« 3600 / SWAP 60 / + + »

 Variables locales.Conforme va aumentando el número de datos de entrada y la complejidad de lasoperaciones, se hace más engorroso el uso de los comandos de la pila. Paraahorrar trabajo y facilitar la comprensión del programa podemos emplear variableslocales. Estas solo existen durante la ejecución del programa y no aparecen en elmenú de variables.

  A continuación haremos un programa para calcular una de las raíces de unaecuación de segundo grado, usando variables locales.

ax2 + bx + c = 0

X1 = (-b + √(b

2

 – 4·a·c)) / (2·a) X 2 = (-b - √(b

2

 – 4·a·c)) / (2·a)El programa para calcular X1 podría ser este:

« → a b c ‘(-b + √(b^2  – 4*a*c))/2/a’ »

a, b y c deben ir separadas por un espacio. Obsérvese que entre los apóstrofes lanotación es algebraica.

Partes del programa:

« ............ comienzo de programa.→ a b c ............ guarda los datos de la pila en las variables a, b y c.

 ‘(-b + √(b^2  – 4*a*c))/2/a’ ............ función a calcular con dichas variables.» ............ fin de programa

También podríamos hacerlo de la siguiente forma, usando un subprograma ynotación RPN:

« → a b c « b NEG b SQ 4 a c * * - √ + 2 a * / » »

Partes del programa:

« ............ comienzo de programa.→ a b c ............ guarda los datos de la pila en las variables a, b y c.« ............ comienzo del subprograma.b NEG ............ b [+/-] presenta el valor de b y le cambia el signo.b SQ ............ b [x2] presenta el valor de b y lo eleva al cuadrado.4 a c * * ............ presenta los valores 4, a y c y los multiplica.- ............ resta el último valor calculado (4*a*c) al anterior (b^2).√ ............ halla la raíz cuadrada.+ ............ suma este último resultado al primero (-b).2 a * ............ presenta los valores 2 y a, y los multiplica.

 / ............ divide el valor de (-b + √(b^2  – 4*a*c)) entre 2*a» ............ fin del subprograma.» ............ fin del programa.

Lo podemos guardar como X1.

 ‘X1’ 

Page 14: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 14/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  14

Este programa, en cualquiera de las dos versiones, se usa igual que los anteriores,poniendo primero los valores de a, b y c (por ese orden) en la pila, y ejecutandodespués el programa.

Por ejemplo, para la ecuación: 3x2 + 6x - 5 = 0

3 6 -5 X1

COMANDOS

STO+ almacena un valor en una variable, sumándolo al que ésta ya contenía.STO* multiplica por un valor dado el contenido de una variable.

Como ejemplo de STO+ haremos un programa que calcule el siguiente sumatorio:

Σ [Ci · (Ai – Bi)2]

C1 * (A1 – B1)2 + C2 * (A2 – B2)

2 + C3 * (A3 – B3)2 + ...

 Ai, Bi y Ci se introducirán en la pila por ese orden.

«  A B C ‘(A-B)^2*C ’ EVAL ‘SUMA’ STO+ »

 ‘INDAT’ 

Podríamos crear un subdirectorio con el nombre que queramos darle al programa,guardar allí el programa anterior como INDAT (entrada de datos) y el siguientecomo BORRA para poner a cero la variable SUMA.

« 0 ‘SUMA’ STO »

 ‘BORRA’ Para que STO+ funcione, la variable SUMA debe ser declarada previamente, porlo que antes de usar INDAT por primera vez tendremos que usar BORRA. Cómocrear subdirectorios se explica en el capítulo 2 de la guía de usuario.

Para hacer los cálculos introducimos un grupo de tres datos en la pila

 A1B1C1

y pulsamos INDAT.

Page 15: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 15/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  15

Después,

 A2B2

C2

INDAT

y así las veces que queramos. Cuando se quiera saber el valor del sumatorio,pulsar SUMA.

 Variables globales.En el ejemplo anterior, la variable SUMA es una variable global. Así como las

variables locales (A, B y C) solo existen durante la ejecución del programa, lasvariables globales permanecen, pueden verse en el menú de variables y serllamadas, cambiadas o purgadas desde otros programas.

Pidiendo datosHasta ahora hemos trabajado con datos que previamente se habían puesto en lapila. Para evitar tener que recordar el orden en que deben introducirse los datos oel tipo de dato requerido, lo mejor es que el propio programa los pida, losalmacene en variables locales o globales, realice los cálculos y nos devuelva los

resultados.COMANDOS

INPUT suspende la ejecución de un programa a la espera de un dato de entrada.

OBJ descompone un objeto en sus partes.

Para apreciar la función que realizan ambos comandos, haremos un programa quenos pida dos números.

«"INTRODUZCA NUMERO A"

""INPUT"INTRODUZCA NUMERO B"""INPUT»

Page 16: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 16/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  16

 Al introducir los dos números, vemos que aparecen entre delimitadores “ ”, o seaque la calculadora los toma como cadenas de caracteres. Si ahora sumamosambos “numeros” el resultado es la suma de las cadenas.

 Veamos qué ocurre al añadir el comando OBJ

«"INTRODUZCA NUMERO A"""INPUT OBJ"INTRODUZCA NUMERO B"""INPUT OBJ

»

En este caso la suma será 951. Para que el programa nos dé directamente el valorde la suma basta con añadirle el signo +.

«"INTRODUZCA NUMERO A"" " INPUT OBJ"INTRODUZCA NUMERO B"" " INPUT OBJ+

»

El siguiente programa calcula la tensión en cada elemento de un circuito decorriente alterna RLC serie, la intensidad de corriente I, las tres componentes depotencia (P, Q y S), el factor de potencia o cosϕ, el senϕ, la impedancia Z, lareactancia inductiva XL, la reactancia capacitiva XC y la pulsación ω. Los datos deentrada son la tensión V, la frecuencia f, R, L y C. Los cálculos a realizar son lossiguientes:

ω = 2*π*f XL = ω*L XC = 1/(ω*C)

Z = √R 2 + (XL-XC)2

cosϕ = R/Z senϕ = (XL-XC)/Z I = V/Z

S = V*I P = S* cosϕ Q = S* senϕ

 VR = I*R VL = I*XL  VC = I*XC

Page 17: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 17/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  17

COMANDOS

RND redondea un número a la cantidad de decimales indicada. 2 RND redondea alas centésimas, 3 RND redondea a las milésimas, etc.

Programa.«

 “V = ?” “ ” INPUT OBJ→ ‘V’ STO “f = ?” “ ” INPUT OBJ→ ‘f’ STO “R = ?” “ ” INPUT OBJ→ ‘R’ STO “L = ?” “ ” INPUT OBJ→ ‘L’ STO “C = ?” “ ” INPUT OBJ→ ‘C’ STO« f 2. * π * 3. RND » ‘ω’ STO« ω L * 3. RND » ‘XL’ STO« ω C * INV 3. RND » ‘XC’ STO« XL XC – SQ R SQ + √ 3. RND » ‘Z’ STO« R Z / 3. RND » ‘coθ’ STO« XL XC – Z / 3. RND » ‘seθ’ STO« V Z / 3. RND » ‘I’ STO« V I * 3. RND » ‘S’ STO« S coθ * 3. RND » ‘P’ STO« S seθ * 3. RND » ‘Q’ STO« I R * 3. RND » ‘VR’ STO« I XL * 3. RND » ‘VL’ STO« I XC * 3. RND » ‘VC’ STO»

Obsérvese que las variables ω, XL, XC, y siguientes no contienen solo el valorcalculado sino pequeños programas que realizan ese cálculo. Eso significa quecada vez que la variable ω es requerida, se ejecuta el programa « f 2. * π * 3.RND », lo cual nos permite cambiar cualquier valor de entrada sin tener quereiniciar el programa. Si, por ejemplo, queremos cambiar el valor de C, solotenemos que escribir el nuevo valor y pulsar ‘C’ STO (o también [] C ) y todoslos cálculos en los que intervenga la variable C se verán modificados.

Una vez guardado el programa (yo le he dado el nombreRLC) pulsamos RLC y se nos piden los datos de tensión V,frecuencia f, resistencia R, autoinducción L y capacidad C.Después de introducir los datos no aparece ningún resultadoen la pantalla, pero los tenemos todos en el menú devariables. Solo hay que usar las teclas F1 a F6 y la tecla[NXT].

Ejemplo de circuito.

Page 18: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 18/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  18

Se completa con este otro, que yo he llamado LIMPIA, y que borra todas lasvariables creadas por el programa RLC.

«

{ VC VL VR V Q P S I seθ coθ Z XL XC ω R L C f } PURGE»

  Si queremos calcular un circuito LC haremos R = 0  Si queremos calcular un circuito RC haremos L = 0  Y si queremos calcular un circuito RL haremos C = ∞

Presentación de resultados.Para ver las formas en que se pueden presentar los resultados, haremos unsencillo programa que calcule el volumen y la superficie de una esfera, conocido el

radio.

¿Cuál es el volumen y cuál la superficie? En la cuarta línea del programa vemosque primero se presenta '4/3*π*R^3' y después '4*π*R^2', por eso sabemos queel volumen es el resultado que aparece en el segundo nivel de la pila (268,08) y lasuperficie el resultado que aparece en el primer nivel de la pila. Si invirtiésemosesas líneas de programa los resultados aparecerían al revés.

 A continuación añadiremos una etiqueta a cada resultado para saber cuál es cual.

COMANDOS

TAG pone una etiqueta frente a un resultado presentado en la pila.

«"radio="" " INPUT OBJ'R' STO'4/3*π*R^3' EVAL 2 RND"Volumen" TAG

«"radio="" " INPUT OBJ'R' STO'4/3*π*R^3' EVAL'4*π*R^2' EVALR’ PURGE»

 V = 4/3*π*R 3

S = 4*π*R 2

Page 19: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 19/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  19

'4*π*R^2' EVAL 2 RND"Superficie" TAG

 ‘R’ PURGE»

COMANDOS

MSGBOX (message box) abre un cuadro de texto.

«"radio="" " INPUT OBJ'R' STO'4/3*π*R^3' EVAL 2 RND

'V' STO'4*π*R^2' EVAL 2 RND

'S' STO"Vol.=" V + MSGBOX"Sup.=" S + MSGBOX{ R S V } PURGE»

Bucles

COMANDOS

FOR - NEXT

Se utilizan para crear un bucle de repetición en un programa.

Estos comandos permiten asignar a una variable (X) diferentes valorescomprendidos entre dos números o dos variables (m y n). Inicialmente, X = m. Encada ciclo se incrementa el valor de X y se repiten las instrucciones que estánentre FOR y NEXT hasta que X = n.El siguiente programa pide un número N y presenta el cuadrado de todos los

enteros consecutivos comprendidos entre 1 y N.

«"N=" .......... Pide un valor de N." " INPUT OBJ 'N' STO .......... Lo guarda en la variable N.1 N FOR A .......... Para valores de A entre 1 y N.'A^2' EVAL .......... Calcula A2.NEXT .......... Retorna al comando FOR, incrementando A» hasta que A = N.

Page 20: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 20/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  20

También puede escribirse así:

«"N="

" " INPUT OBJ 'N' STO1 N FOR A

 A SQNEXT»

Este otro programa calcula el factorial de un número N.

«1 'FA' STO"N="" " INPUT OBJ 'N' STO1 N FOR A

 A 'FA' STO*NEXTFA{ N FA } PURGE»

Secuencia de ejecución del programa anterior para N=3.

PASOS VARIABLES PILA

N A FA

1 1

'FA' STO 1

"N=" 1 N=

" " INPUT 1 3 ENTER

OBJ 'N' STO 3 1

1 N FOR A 3 1 1

A 3 1 1 1'FA' STO* 3 1 1

NEXT 3 1 1

1 N FOR A 3 2 1

A 3 2 1 2

'FA' STO* 3 2 2

NEXT 3 2 2

1 N FOR A 3 3 2

A 3 3 2 3

'FA' STO* 3 3 6

FA 3 6 6

{ N FA } PURGE 6

1

2

3

Page 21: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 21/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  21

COMANDOS

STEP permite establecer el “paso”  del incremento en un bucle FOR-NEXT.

El siguiente programa calcula el cuadrado de A desde 1 hasta N, aumentando elvalor de A con incrementos de 0,5. Para N = 3, nos dará 12, 1.52, 22, 2.52, 32.

«"N="" " INPUT OBJ 'N' STO1 N FOR A

 A SQ.5 STEP»

COMANDOS

WHILE – REPEAT – END

La estructura es esta:

Mientras (WHILE) se cumple una o varias condicionesRepite (REPEAT) una o varias instruccionesFin (END)

Se repite un conjunto de instrucciones mientras se cumpla un conjunto decondiciones. El comando END determina dónde acaban las instrucciones a repetir.Para ver cómo funcionan, haremos un programa que partiendo de un valor dado,calcula la potencia de 2 igual o inmediatamente superior a dicho valor. Porejemplo, la potencia de 2 inmediatamente superior a 1000 es 210 = 1024.

« “N =” .............. Pide un valor para N “ ” INPUT OBJ ‘N’ STO .............. Lo guarda en la variable N

2 .............. Pone 2 en la pilaWHILE .............. Mientras...DUP N < .............. ... el valor de la pila sea menor que N... ()REPEAT .............. ... repite...2 * .............. ... multiplicar por 2END .............. Fin del bucle.

 ‘N’ PURGE»

  El uso del comando DUP se debe a que el valor del nivel 1 de la pila

desaparece tras compararlo con N, por lo que es necesario duplicarlo antes derealizar la comparación.

Page 22: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 22/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  22

COMANDOS

DO – UNTIL – END

Estructura similar a la anterior:

Hacer (DO) instruccionesHasta (UNTIL) condicionesFin (END)

Se repite un conjunto de instrucciones hasta que se cumpla un conjunto decondiciones.

« “N =” .............. Pide un valor para N

 “ ” INPUT OBJ ‘N’ STO .............. Lo guarda en la variable N2 .............. Pone 2 en la pilaDO .............. Hacer...2 * .............. ... multiplicación por 2...UNTIL .............. ... hasta...DUP N ≥ .............. ... que el valor de la pila sea ≥ NEND .............. Fin del bucle.

 ‘N’ PURGE»

Instrucciones de prueba o condición. Submenú TEST.

COMANDOS

IF – THEN – END

IF – THEN – ELSE – END

IF comprueba si una determinada condición se cumple, ejecutando entonces(THEN) un conjunto de instrucciones. Si la condición no se cumple, lasinstrucciones comprendidas entre THEN y END no se ejecutan.Para ver un ejemplo de su uso haremos un programa que nos dirá si un númerodepositado en el nivel 1 de la pila es par.

Page 23: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 23/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  23

«2 / ......... Divide entre 2 el dato del nivel 1 de la pilaFP ......... extrae la parte fraccional del resultado

0 == IF ......... si ésta es igual a ceroTHEN ......... entonces..."PAR" MSGBOX ......... muestra el mensaje PAR END ......... fin»

ELSE permite ejecutar instrucciones alternativas en caso de no cumplirse lacondición evaluada por el comando IF.

 Ahora el programa nos dirá si un número es par o impar.

«

2 / ......... Divide entre 2 el dato del nivel 1 de la pilaFP ......... extrae la parte fraccional del resultado0 == IF ......... si ésta es igual a ceroTHEN ......... entonces..."PAR" MSGBOX ......... muestra el mensaje PAR ELSE ......... en otro caso..."IMPAR" MSGBOX ......... muestra el mensaje IMPAR END ......... fin»

Esta sería otra forma de hacerlo:

«2 /FP'A' STOIF 'A≠0' THEN"IMPAR" MSGBOXELSE"PAR" MSGBOXEND

'A' PURGE»

Page 24: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 24/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  24

Operadores lógicos.

Los operadores lógicos son muy utilizados en programación y en la electrónicadigital. Comprueban el estado de unas variables de entrada (A y B en las tablas

inferiores) y en función de éstas producen una respuesta o función de salida (F).Tanto las entradas como la salida son binarias (o booleanas), es decir que sólotienen dos estados posibles, verdadero (1) o falso (0). Para ver la respuesta de unoperador lógico (o de una combinación de ellos) se emplea lo que se conoce como

  “tablas de verdad”, en las que se muestran todos los estados posibles de lasentradas y el estado de la salida en cada caso.

 ANDEl operador AND produce un 1 en la salida cuando todas las entradas son 1.

Entradas SalidaA B F

0 0 0

0 1 0

1 0 0

1 1 1

OR Produce un 1 en la salida cuando al menos una entrada es 1.

Entradas Salida

A B F0 0 0

0 1 1

1 0 1

1 1 1

 XOR (OR exclusiva)Produce un resultado verdadero cuando una y sólo una de las entradas es 1.

Entradas Salida

A B F

0 0 0

0 1 1

1 0 1

1 1 0

NOTEl operador NOT niega el estado de una variable binaria.

A F (NOT A)

0 1

1 0

A

BF&

A

BF=1

A

BF=1

A F1

Page 25: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 25/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  25

Dicho de otro modo, y trasladándolo a la programación, un operador AND(combinado con los comandos IF – THEN) producirá una respuesta positiva si secumplen todas las condiciones exigidas, un operador OR producirá una respuestapositiva cuando se cumpla al menos una de las condiciones y un operador XOR 

dará una respuesta positiva cuando únicamente se cumpla una de las condiciones.Por ejemplo, vamos a hacer un programa que tome tres números de la pila (A, B yC) y muestre el mensaje “OK” cuando A>B y B<C.

« A B C « IF ‘A>B’ ‘B<C’ AND THEN “OK” MSGBOX END » »

HP-41-C (1979)

Page 26: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 26/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  26

Supongamos que hemos linealizado una función (respuesta de un sistema) en dostramos rectos, tal como se muestra en la figura.

Sabemos que en el intervalo [–50, 0] la ecuación de la recta es

(a)  y = 0.2125 x + 25

en el intervalo [0, 32] es

(b)  y = 0.7812 x + 25

 Y fuera de esos intervalos no tiene sentido calcular la función por este método. A continuación haremos un programa que nos pedirá un valor de x. Si –50 ≤ x < 0

aplicará la fórmula (a), si 0 ≤ x ≤ 32 aplicará la fórmula (b) y si x < -50 ó x > 32mostrará el mensaje “entrada no válida”.

«"x=" " " INPUT OBJ'A' STOIF 'A ≥ -50' 'A < 0' AND ............. Si A ≥ -50 y A<0THEN.2125 A * 25 +END

IF 'A ≥ 0' 'A ≤ 32' AND ............. Si A ≥ 0 y A ≤ 32THEN.7812 A * 25 +ENDIF 'A < -50' 'A > 32' OR ............. Si A<-50 ó A>32THEN"ENTRADA NO VALIDA"MSGBOXEND»

Page 27: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 27/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  27

 Ventana de selección.

COMANDOS

CHOOSE abre una ventana de selección con opciones para elegir.

 A cada opción se le asigna un número que será depositado en la pila.

«"SELECCIONE OPCION"{{"NORTE"1} {"SUR"2}}1CHOOSE»

En este ejemplo, la opción NORTE deja en la pila el valor 1 y la opción SUR el

valor 2. El número que está fuera de las llaves (1 en el ejemplo) determina cuál delas opciones vendrá seleccionada por defecto. El propio comando depositatambién una “huella” (puede verse como 1. en la imagen superior derecha) que, sino se va a usar, conviene eliminar con el comando DROP.

«"SELECCIONE OPCION"{{"NORTE"1} {"SUR"2}}1CHOOSE DROP»

 A continuación haremos un programa para convertir litros a galones (Reino Unido)o a galones (EE.UU).

«"De litros a..."{ { "Galones(RU)" .21996 }{ "Galones(EEUU)" .26417 }} 1CHOOSE DROP*»

Introducimos un valor en litros, por ejemplo 5, llamamos al programa, elegimosuna opción y pulsamos OK.

Page 28: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 28/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  28

Listas.Una lista es un conjunto de objetos (números, letras, cadenas, variables,programas, otras listas, etc.) entre delimitadores { } y separados por espacios.

Ejemplos:

{1 2 3 4 5}{A B C}{“uno” “dos” “tres”}

Cómo crear una lista.

Existen diferentes formas de crear una lista. La más inmediata es escribirladirectamente tal como se ha visto en los ejemplos anteriores. Se puede guardarcomo cualquier otro objeto, dándole un nombre y pulsando .

También se puede crear una lista a partir de un grupo de datos de la pila, paraello debemos indicar el número de elementos que la componen y después usar elcomando LIST. La operación inversa la realiza el comando OBJ.

Si queremos hacer una lista con todos los elementos que hay en la pila pero nosabemos cuántos son, podemos usar el comando DEPTH, que los contará yvolcará en la pila dicha cantidad.

Page 29: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 29/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  29

Operaciones con listas.

Producto de una lista por una constante.

{ 1 2 3 } * 2 = { 2 4 6 }

Producto de una lista por una variable.

{ 1 2 3 } * A = { A 2·A 3·A }

Producto de una lista por una lista.

{ 1 2 3 } * { 2 3 4 } = { 2 6 12 }

 Adición de una constante a una lista. Comando ADD.

{ 1 2 3 }2

 ADD

 Adición de dos listas. Comando ADD.

{ 3 4 5 }{ 4 2 3 }

 ADD

Suma de una lista y una constante o una variable.

{ 1 2 3 } + 4 = { 1 2 3 4 }{ 1 2 3 } + P = { 1 2 3 P }

Suma de dos listas.

{1 2 3 } + { 4 5 6 } = { 1 2 3 4 5 6 }

 Aplicación de funciones a una lista.

√ { 4 9 16 } = { 2 3 4 }

COS { 0 60 90 } = { 1 ½ 0 }

Page 30: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 30/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  30

Flags.Los flags (banderas o señales) son indicadores de estado de las variables delsistema. La bandera es un valor booleano, sólo admite dos estados: activada o

desactivada. Las banderas proporcionan cierto control sobre cómo funciona lacalculadora y cómo muestra la información. Por ejemplo, si la señal –117 estádesactivada, los menús se muestran en una ventana de selección, pero si estáactivada las opciones aparecen sobre las teclas F1 a F6.

Existen 256 banderas, numeradas desde –128 hasta 128. Las negativas sonbanderas del sistema, las positivas están disponibles para el usuario y se usan enla programación para ayudar a controlar el flujo de programa.

Cómo ver el estado de las banderas del sistema. Menú System Flags.

1.  Pulsar la tecla

2.  Pulsar F1 .

El menú System Flags sólo muestra las banderas del sistema y sólo muestra elvalor absoluto de éstas.

Cómo activar y desactivar banderas.Método 1. Desde el menú System Flags, seleccionar la bandera deseada, pulsarCHK y después OK o .

Método 2. Desde la pila o desde un programa. Escribir el número de la bandera ypulsar . Escribir el comando SF (Set Flag) para activar o el comando CF (ClearFlag) para desactivar y pulsar de nuevo. También puede escribirse el númerode la bandera seguido de un espacio y el comando, y después pulsar .

Menú System Flags Bandera –40.Muestra el reloj.

Activación del reloj desdemenú Display Modes

Page 31: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 31/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  31

Método 3. Algunas banderas pueden ser cambiadas desde ciertos menús, porejemplo la señal –40 que muestra el reloj en la pantalla, puede cambiarse tambiéndesde el menú Display Modes DISP.

Para más información consultar la guía de usuario, capítulos 1, 2, 24 y apéndices.

HP-65 (1974)

Page 32: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 32/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  32

EJEMPLOS

Programa ejemplo de manejo de listas y bucle FOR-NEXT.

Fórmula de Friis.

Este programa calcula el factor y la figura de ruido total de un sistema derecepción de TV mediante la fórmula de Friis, tomando como datos de entrada lafigura de ruido F y la ganancia G de cada tramo, expresadas en decibelios.

Supongamos que queremos calcular la figura de ruido F (F = 10*log f ) delsistema que se muestra a continuación.

En el caso del amplificador (elemento activo) F y G vienen indicados por elfabricante.Para los elementos pasivos, se considera que la figura de ruido F es igual a laatenuación. Además, ganancia y atenuación son conceptos inversos, por lo tanto:

F = At At = -G

La siguiente tabla muestra los valores de F (figura de ruido) y G (ganancia) endecibelios para cada tramo de la instalación.

Tramo Tipo de elemento Elemento Fn Gn

1 pasivo Cable de bajada 2 -2

2 activo Amplificador 5 38

3 pasivo Distribución 22 -22

La fórmula de Friis es la que se ve enel cuadro de la izquierda, donde:

f = factor de ruido.g = ganancia.

⇒  G = -F

f f1f2 1−( )

g1+

f3 1−( )

g1 g2⋅+

f4 1−( )

g1 g2⋅ g3⋅+ ....+:= ....

Page 33: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 33/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  33

Pero la fórmula de Friis no trabaja con F y G en decibelios (escala logarítmica),sino con valores lineales de f y g. Así pues, antes de aplicar la fórmula debemoshacer la siguiente conversión:

Fn f n Gn gn

2 1,58489319 -2 0,63095734

5 3,16227766 38 6309,57344

22 158,489319 -22 0,00630957

 Aplicando la fórmula, tendremos:

f = 1,58 + (3,16 – 1)/0,63 + (158,49 – 1)/(0,63 * 6309,57) = 5,05

F = 10 * log f = 7,03 dB

Pues bien, lo que pretendemos al hacer un programa es ahorrarnos todo estetrabajo, dar a la calculadora los valores de Fn y de Gn y que ella haga todos loscálculos.

  Obsérvese que los datos de entrada se escriben separados por espacios. Elcomando OBJ los apilará.

F = 10*log f ⇒ f = 10^(F/10)

G = 10*log g ⇒ g = 10^(G/10)

Alexander Graham Bell

Page 34: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 34/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  34

Listado del programa. Comentarios

«CLEAR ................ Limpia la pantalla

1.'g' STO ................ Valor inicial de g = 1"Entra   F1 F2 F3... F(n)" ................ Pide los valores de Fn.

"" INPUT OBJ ................ Los toma del nivel 1 de la pila y los pone encolumna (los apila).

DEPTH LIST ................ Los cuenta y crea una lista.10/ ALOG ................ Convierte lista de Fn en lista de f n.

'EFES' STO ................ Guarda la lista como EFES.EFES HEAD 'f' STO ................ Toma el 1º de la lista y lo guarda en la variable f.EFES TAIL 'EFES' STO ................ Elimina ese 1er elemento de la lista.EFES SIZE 'N' STO ................ Cuenta los elementos de la lista y guarda el valor

en N."Entra   G1 G2... G(n-1)" ................ Pide los valores de Gn.

"" INPUT OBJ ................ Los toma del nivel 1 de la pila y los pone encolumna.

DEPTH LIST ................ Los cuenta y crea una lista.10/ ALOG ................ Convierte lista de Gn en lista de gn.

'GES' STO ................ Guarda la lista como GES.1 N FOR M ................ Para valores de M desde 1 hasta NEFES M GET 'F' STO ................ Toma el elemento M-ésimo de la lista

EFES y lo guarda en F.GES M GET 'g' STO* ................ Multiplica g por el elemento M-ésimo de la

lista GES.'(F-1)/g' EVAL 'f' STO+ ................ Calcula ‘(F-1)/g’ y lo acumula en f.

NEXT ................ Vuelve al comando FOR hasta que M = Nf 2.RND ................ Presenta f y lo redondea a dos decimales."f" TAG ................ Le pone la etiqueta “f :”  

f LOG 10* 2 RND ................ Calcula F en decibelios con dos decimales."F(dB)" TAG ................ Le pone la etiqueta “F(dB) :”  { N F f g EFES GES } PURGE ................ Borra los objetos creados por el programa.»

COMANDOS

HEAD extrae el primer elemento de una lista.TAIL elimina el primer elemento de una lista.SIZE proporciona el número de elementos que contiene la lista.GET extrae el elemento n-ésimo de una lista, previa introducción de n.

Page 35: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 35/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  35

Programa ejemplo de ventanas de selección e instrucciones IF-THEN.

Orientación de antenas parabólicas

Este programa calcula la orientación (respecto al norte magnético), la elevación yel desplazamiento de la polarización de antenas parabólicas en el hemisferio norte.

Definiciones:

•   Acimut:  ángulo que hay que girar la antena con respecto a la dirección delnorte (o sur) geográfico.

•  Elevación: ángulo que hay que elevar la antena con respecto al plano

horizontal.

•  Desplazamiento de la polarización: ángulo que hay que girar el dipolo conrespecto al eje vertical para recibir correctamente la señal del satélite.

•  Declinación magnética: diferencia entre la dirección del norte geográfico yla del norte magnético. Cambia según la zona y varía con el tiempo. EnInternet se pueden encontrar calculadoras de la declinación magnética.

•  Orientación: ángulo que hay que girar la antena con respecto al norte (o sur)indicado por la brújula.

•  Distancia al satélite: los satélites de comunicaciones se hallan en una órbitasituada en el plano del ecuador, con un radio de aproximadamente 42000 Km,36000 sobre la superficie de la tierra, llamada órbita geoestacionaria o cinturónde Clarke. La distancia entre el satélite y la antena varía según la ubicación deambos.

Acimut Elevación Polarización

Arthur C. Clarke

Page 36: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 36/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  36

Listado Pantallas

«

CLEAR DEG

"Latitud N" " " INPUT OBJ 'LA' STO

"Longitud" " " INPUT OBJ 'LO' STO

LO 0 ≠ IF THEN

"OPCION"{{"ESTE"1} {"OESTE"-1}}1

CHOOSE DROP 'LO' STO*

END

"Posición sat." " " INPUT OBJ 'LS' STO

LS 0 ≠ IF THEN

"OPCION"{{"ESTE"1} {"OESTE"-1}}1

CHOOSE DROP 'LS' STO*

END

"Declinación mag." " " INPUT OBJ 'DM' STO

DM 0 ≠ IF THEN

"OPCION"{{"ESTE"-1} {"OESTE"1}}1

CHOOSE DROP 'DM' STO*

END

"Angulo offset" " " INPUT OBJ 'AO' STO

« LO LS - » 'FI' STO

« FI TAN LA SIN / ATAN 180 DM + + » 'ORI' STO

« LA COS FI COS * ACOS » 'b' STO

« b COS .151269 - b SIN / ATAN AO - » 'EL' STO

« FI NEG SIN LA AO + TAN / ATAN » 'PO' STO« 1. b COS - .42 * 1 + √ 35786 * » 'DIS' STO

ORI 1. RND 1_º * "Orient" TAG

EL 1. RND 1_º * "Elev" TAG

PO 1. RND 1_º * "Pol" TAG

DIS 3. RND 1_km * "Dist" TAG

{LO LA PO EL ORI FI AO DM LS b DIS} PURGE

»

Page 37: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 37/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  37

Conversión de grados a gg-mm-ss

«

DUP IP 1_º * 'G' STO

FP 60 *

DUP IP 1_arcmin * 'M' STO

FP 60 * 2 RND 1_arcs * 'S' STO

G M S { G M S } PURGE

»

Ruffini

Este programa calcula la división de un polinomio por el método de Ruffini.

(x4 – 4x3 – x2 + 16x – 12) / (x-1)

1 -4 -1 16 -12

1 1 -3 -4 12

1 -3 -4 12 0

Si el último término del cociente es cero, significa que la raíz es válida. Si no lo es,el programa lo indica antes de dar el cociente.

«CLEAR "COEFICIENTES"" " INPUT OBJDEPTH 'N' STON LIST'COE' STO"RAIZ"

" " INPUT OBJ'A' STOCOE HEAD DUP

1. Introduce coeficientes. 2. Introduce posible raíz. 3. Muestra el cociente.

1 2

Page 38: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 38/39

Mayo 2006 (revisado en julio de 2007).

macdenaif  38

2 N FOR M A *COE M GET+ DUPNEXT0 ≠ IF

THEN N LIST"NO RAIZ" MSGBOXELSEN LISTEND{ A COE N } PURGE»

3 4

Paolo Ruffini

Page 39: ProgramarHP

8/7/2019 ProgramarHP

http://slidepdf.com/reader/full/programarhp 39/39

Mayo 2006 (revisado en julio de 2007).

Cualquier duda que pueda surgir sobre el manejo de la calculadora, relacionadacon este texto o no, puedes exponerla en el foro Dudas sobre calculadoras hp  en

miarroba.com.

Enlaces:

http://www.sinewton.org/elrincon/

http://www.hpmuseum.org/

http://www.educalc.net/149032.page

http://www.managementsoftware.hp.com/

http://hpuser.8m.com/download.htm

http://directorio.adfound.com/Hardware/Calculadoras/Hewlett-Packard/

Reglas de cálculo 1

Reglas de cálculo 2.

Museo de la calculadora.