Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PREFACIO
La calculadora Hp48 es la preferida de muchos estudiantes, tcnicos y
profesionales alrededor del mundo. Puede ser programada en varios lenguajes y en
el presente documento se da a conocer el mas amigable de todos ellos: El Lenguaje
User Rpl!
Fundamentos de User Rpl gua al lector desde sus primeros pasos en el mundo del
User Rpl, conducindolo por los aspectos bsicos e indicndole el camino a seguir
para lograr un buen dominio de este divertido lenguaje.
El Autor
CONTENIDO
CAPITULO I.
Comencemos Ya!
CAPITULO II.
Variables y Subrutinas.
CAPITULO III.
Cadenas y Listas.
CAPITULO IV.
Estructuras Condicionales.
CAPITULO V.
CAPITULO VI.
Bucles.
CAPITULO VII.
Vectores y Matrices.
CAPITULO VIII.
Cero y Uno.
CAPITULO IX.
CAPITULO X.
CAPITULO XI.
CAPITULO XII
Asuntos Diversos.
figura 1.1
figura 1.5
Es importante aclarar que no todos
los comandos requieren argumentos en
la pila. El comando RAD, por ejemplo,
no requiere nada en la pila y lo que
hace es activar el modo de ngulos en
radianes.
figura 1.2
El comando MSGBOX creara un
recuadro de mensaje con el texto
previamente suministrado.
figura 1.3
Otro comandos que podemos citar es
el comando BEEP, el cual produce un
pitido, dada la frecuencia (en hertz), en
el nivel 2: ; y el tiempo de duracin (en
segundos), en el nivel 1:
0
1
2
3
4
OFF
MEM
DUP
SWAP
DROP
5
6
7
8
9
SQ
FP
+
ABS
DEG
10
11
12
13
14
SIN
STO
VARS
PGDIR
TRN
nuestros
primeros
1500
1 BEEP >>
figura 1.6
Ahora, dentro de los delimitadores,
escriba un texto cualquiera (entre
comillas dobles) seguido por el
comando MSGBOX.
figura 1.7
Obsrvese que debe haber un
espacio entre el texto y el comando.
programas
como
y si tenemos:
Nivel 3: 1
Nivel 2: 7
Nivel 1: 5
La Hp 48 se utiliza mediante la
introduccin de objetos en la pila. y la
ejecucin de los comandos que operan
sobre los datos.
2:
1:
<< 3 + 2 / >>
Gurdelo en una variable y prubelo.
Veamos en detalle como opera este
pequeo
programa.
Para
esto
llamaremos numero dado al numero
que se pone en la pila antes de ejecutar
el programa.
numero dado
3
luego, el comando
numero dado:
<<
^:
2 ^ >>
suma el 3 con el
2:
1: (numero dado + 3)
6
Curiosidades
Existe un comando que resulta
particularmente curioso. Este es el
comando RULES, el cual no aparece
en el apndice G y lo que hace es
mostrar un crucigrama de varios
nombres. Inmediatamente surge una
pregunta: de quienes son esos
nombres?
Inf. extrada de
GD9/Postings/Team48g.doc
3: z
2: y
1: x
1)
2)
3)
4)
(x+y) / z
y/x
y+z
(x-z) *y
(x^y)^z
[(x^2)-(Y^2)]/z
(x*y)+(x*z)
(2*x+3*y)/z
x^z
(x^2)-2xy+(y^2)
1)
2)
3)
sin(x)+cos(y)
2)
[sin(x)]^2 + [cos(x)]^2
3)
1+[tan(x)]^2
1)
2)
3)
4)
5)
2* ln(x)
para programas
(x+y)
1/ x
[(x^2)+(y^2)]
1)
un cilindro.
una esfera.
un cono.
una pirmide.
ln(x+y)
BYTES
CLEAR
RCL
DROP2
DUP2
2: Objeto a Almacenar
1: Nombre
Hagamos un programa que tome dos
nmeros de la pila y nos devuelva su
suma, resta, producto y cociente. Para
esto guardaremos el numero del nivel
2: con el nombre N2 y al del nivel 1:
con el nombre N1.
<<
N1 STO N2 STO
N2 N1 +
N2 N1 N2 N1 *
N2 N1 /
{ N1 N2} PURGE >>
Ah esta nuestro programa!
Cada variable va siendo llamada a
medida que se necesita.
9
N2 N1
<< N2 N1 + N2 N1
N2 N1 * N2 N1 / >>
>>
El cdigo seria:
<< R *R^2 NUM >>
Escribamos
un
programa
que
produzca una meloda. Para esto,
Hagamos primero un programa que
genere un pitido de 1000 hz. durante
0.5 segundos:
<< 1000 .5 BEEP >>
<< S1 S2 S1 S1 S2>>
Ejemplo:
Una subrutina puede ser sencilla o
puede seguir dividindose en otras mas
pequeas.
Esto
permite
tener
subrutinas relativamente
sencillas,
incluso si el programa principal es de
gran tamao
Programa Principal:
<<
>>
11
Y + >>
<< 2 1 + 5 * 7 / >>
La
opcin
SST
sirve
para
introducirse en el cdigo de una
subrutina. Y la opcin KILL cancela el
proceso de depuracin.
<< HOME
EVAL>>
#15777h
SYSEVAL
El Directorio Oculto!
13
1) HOLA
2) 1 2 3
3) Esto es una Cadena
3: HOY
2: ES
1: SABADO
>>
1: VersionHP48R
Ntese que el comando + no agrega
espacio entre las dos cadenas, para
esto podramos sustituir Versin
por Versin .
14
Investigue
los
caracteres
correspondientes a los siguientes
nmeros:
(a)
Si tenemos:
48____
49____
57____
2: REPUBLICA DOMINICANA
1: A
88____
89____
90____
120____
121____
135____
1: 9
NUM y CHR
A cada caracter de la HP 48 le
corresponde un numero nico. El
numero del carcter A, por ejemplo
es el 65, el de B es 66 y el numero de
7 es 55.
15
{ 1 2 -7 9 }
3:
2:
1:
La lista
posicin inicial
posicin final
{ {1 2 3} texto }
{ { a b c d } { { X1 Y1} { X2 Y2 } } }
Ej:
2: { a b }
1: { 1 7 9 }
Ej2:
1: { 5 T }
POS: Devuelve la posicin en que
aparece por primera vez un objeto.
Ej:
los
Ej1:
1: { 2 3 5 }
2: { 1 3 5 3 7 }
1:
3
Ej2:
1: { 5 T }
Ej:
Ej:
2: { 5 8 0 }
1: { 1 3 27 }
1: { 1 3 2 7 5}
REVLIST:
una lista
Ej:
{ a
1: { a b c d e }
17
c d }
Investigue
comandos:
Ej2:
1)
2)
3)
4)
5)
6)
1:{ 2 5 12 17 }
LIST: Sirve para descomponer una
lista en sus elementos. Adems nos dice
el numero de la lista (nivel 1:)
Ej:
siguientes
GETI
PUT
PUTI
DOLIST
DOSUB
STREAM
Curiosidades
4:
3:
2:
1: { a b c }
Emu48
Existe un programa gratuito para la
emulacin de la Hp 48 y otros modelos de
calculadoras HP en Sistemas Operativos
Windows. Este programa se llama Emu48
y es obra de los seores Sebastin Carlier
y Christoph GieBelink
Ej:
4:
3:
2:
1:
los
a
b
c
3
4:
3:
2:
1: { a b c }
Menor que
Menor o igual que
Mayor o igual que
ANALICEMOS:
Lo primero que hace el programa es
enviar un 18 a la pila. Entonces se tiene:
1: Numero dado
2:
18
Luego usa > para verificar si el
numero dado es mayor que el 18. En
caso afirmativo, se ejecutan las
instrucciones que estn entre THEN y
END.
19
Cuando
escribamos
nuestros
programas debemos tratar de que este
en su condicin optima; debemos
revisarlos para ver si podemos reducir
su tamao o hacer que funcione mas
rpido.
<<
18 IF > THEN 1000 .5 BEEP
ELSE 900 .5 BEEP
END
>>
END
>>
El ejemplo anterior
mejorado si se escribe:
puede
podramos
rescribirlo
de
abreviada utilizando IFTE:
ser
<<
<<
forma
>>
900
END .5 BEEP
>>
Lo que acabamos de hacer se llama
optimizar el cdigo.
20
Si tenemos el programa:
<<
ELSE 2 / +
END
>>
<<
DUP2 >
IFTE
>>
Existe
tambin
una
forma
compacta para IF...THEN...END.
Dicha forma compacta es IFT
ANLISIS.
Lo primero que hace es guardar el
numero dado como variable local de
nombre N. Luego se prueba si N es
igual a cero y en caso afirmativo se
enva el texto CERO a la pila y se
salta al MSGBOX.
de
deteccin de
CASE...END
La estructura CASE es una de las mas potentes
del lenguaje User Rpl. El programador puede
crear cualquier cantidad de opciones, estando
nicamente limitado por la cantidad de
memoria disponible.
22
Curiosidades
El Saturno
3.4 Comandos
errores.
relacionados
con
23
El
OBJ
separa
los
datos
introducidos para que pueda entrar en
accin el *
<<
INTRODUZCA DATOS
(A+B)/(A-C)
{:LARGO:
:ANCHO:
8}
INPUT OBJ-> *
>>
24
{{ A << A STO>> }
{ B << B STO >> }
4.2.1 ...DISP...FREEZE
Este mtodo es muy usado Ya que
ocupa poca memoria y permite mostrar
datos en lugares distintos de la
pantalla.
<<
CREADO POR MARK
2 DISP
>>
El numero 2 antes del DISP
representa la posicin. Este numero
puede variar del 1 al 7 donde el 1 es la
parte superior de la pantalla; y el 7, la
parte inferior.
2: Y 1: X
PROMPT
2 * + SWAP / >>
25
Caracteres de Fondo.
2 DISP 3 FREEZE
>>
1 FREEZE: Congela el rea de
estado.
2 FREEZE: Congela la pila y la
lnea de comando.
3 FREEZE: Congela la pantalla
completa.
<<
Si queremos eliminar el
utilizamos el comando CLLCD
fondo,
{ 1 2 3 4 5 6 7 } DISP
Fundamentos de User Rpl.
<<
MSGBOX >>
CLLCD
CREADO POR MARK
2 DISP 3 FREEZE
>>
<<
CLLCD
{ X = 5 Y = 7 Z = 12}
{1 2 3} DISP
3 FREEZE
>>
26
CAPITULO VI.
Bucles
6.1 La Recursividad.
ANLISIS
6.2.1
Estructura START...NEXT
<< * * * >>
y efectivamente obtendramos el
resultado esperado. Pero, que pasara
si necesitramos un programa que
multiplique 50 numero?
27
6.2.2
Estructura FOR...NEXT
<<
1 100 FOR C
C 3 DISP NEXT
>>
La C a la derecha de FOR es el nombre
que yo he dado al contador.
<<
0
1 9 START
DUP 100 + 0.5 BEEP
<<
NEXT DROP
>>
10
FOR FREC
>>
28
<<
inicio fin START...incremento STEP
>>
1, 2, 3,...,10
La multiplicacin por 100 podra
evitarse si el incremento fuera de cien
en cien:
100, 200, 300,..., 1000
Para esto solo hay que sustituir
NEXT por STEP y colocar el incremento
que queramos para el contador justo
antes del STEP. Esto es:
<<
Decrementos
Como seria el programa anterior si
quisiramos que la frecuencia se fuera
reduciendo desde 1000 hasta 100?
>>
<<
100
1100
100
1000
FREC
FOR FREC
- .5
BEEP
STEP
>>
Pero el comando STEP acepta
incrementos negativo por lo que es mas
fcil escribir:
<<
1000
FREC
-100
>>
29
Ejercicios
(a) Escriba un programa que calcule:
1)
2)
3)
30
2:
1:
[1 2 3]
[4 5 7]
[0 1 5]
3
2:
1:
[[3 1]
[0 4]]
[2 5]
[[2 5]
[3 1]
[0 4]]
1
1: [[1 2 3]
[4 5 7]
[0 1 5]]
3: [ [1 2]
[3 4] ]
2: [0 7]
1:
2
31
1: [ [1 2]
[0 7]
[3 4] ]
2:
1:
2:
1: [[1 6 0][7 3 9]]
un
polinomio
[1 4 7 9]
32
cuando x = -7
Para esto, colocamos el vector de
coeficientes en 2: y el 7 en 1:. Luego
ejecutamos el comando PEVAL.
2: [1 3 2]
1:
7
2:
1:
72
33
Pero si evaluamos:
<
>
Igual que
Diferente de
Menor que
Mayor que
Menor o igual que
Mayor o igual que
A NOT
A B AND
34
A B OR
A B XOR
B
35
OBJETO
Numero Real
Numero complejo
Cadena
Matriz Real
Matriz compleja
Lista
Nombre Global
Nombre local
Programa
Algebraico
Entero Binario
Grafico
Objeto Etiquetado
Objeto Unidad
Nombre XLIB
Directorio
Librera
Backup
Funcin Incorporada
Comando Incorporado
Binario (Sistem Rpl)
Real Extendido
Complejo Extendido
Caracter
Code
Librera Data
Objeto External 1
Objeto External 2
Objeto External 3
Objeto External 4
TIPO
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
24
25
26
27
28
29
30
37
<<
DO instrucciones UNTIL prueba END
>>
<<
DO 1 + DUP 3 DISP UNTIL 0 END
>>.
38
<<
WHILE
END
prueba
REPEAT
instruc
>>
<<
END
>>
39
<< TITULO
{ { opcion 1 << programa 1 >> }
<< TITULO
} 1 CHOOSE
>>
se
muestra
40
<< AGENDA
{ DIREC}
por esta otra:
{ DIREC
Vemos que el campo TELEF contiene
una opcin por defecto (555.5555). En el
cdigo del formulario, la lista anterior al
comando
INFORM
contiene
las
opciones por defecto. Se pone NOVAL
donde no se quiere opcin por defecto.
Esta lista puede ser sustituida por una
lista vaca.
{ DIREC 2 }
41
Como
desventajas,
podemos
mencionar las limitaciones de espacio
en la pantalla y la poca velocidad.
<<
3 WAIT
>>
EJ.:
Z
0
1
2
3
4
5
6
Ej.:
<< 54.1 IF == THEN KILL END >>
42
<<
CLLCD
DO 1 + DUP 3 DISP
UNTIL KEY DUP
<< SWAP 54
NOT IFT >> IFT
END
>>
43
44
10.2 Coordenadas.
{#X#Y}
45
3:
2:
1:
Grafico
{ # X1 # Y1 }
{ # X2 # Y2 }
<<
{ # 10d # 5d} {# 70d # 20d} SUB
PICT STO PICTURE
>>
Ej.:
<< # 9d # 6d BLANK >>
10.4 El comando REPL.
.Investiga que hacen los siguientes
comandos:
1) ERASE
2) PXC
3) TLINE
4) PDIM
<<
LCD
{ # 30 # 16 }
TRABAJANDO CON GROBS
1 GROB
REPL
LCD 3 FREEZE
>>
=
=
=
=
caracteres
caracteres
caracteres
grfico de
Ejercicios:
(a) Investigue sobre los siguientes
comandos:
1) GOR
2) GXOR
3) BLANK
4) PVIEW
pequeos
medianos
grandes
ecuaciones
1)
2)
3)
4)
47
10.7 Controlando
animaciones.
parmetros
de
{ n { # X # Y } t
p }
<<
G1 G2 G3
3 ANIMATE
>>
Ejercicio: Utiliza el mtodo anterior
para crear una animacin.
48
13.1 Funciones.
Lo primero es seleccionar el tipo de
representacin grafica con el comando
FUNTION El comando DRAW sirve
para crear representaciones graficas.
Este comando requiere la variable EQ
que contendr la funcin a ser
graficada.
<<
Ej.:
Escribamos
un
programa
que
construya el grafico de la funcin y =
sin (x). El cdigo ser:
SIN(X) STEQ
RAD DRAX DRAW
<<
PICTURE
>>
Y=SIN(X) STEQ
RAD DRAX DRAW
o como:
PICTURE
<<
>>
49
POLAR
<<
RAD
INDEP
2*COS(4* ) STEQ
>>
<<
{ PICT PPAR } PURGE
o como:
RAD
POLAR
<<
R DEPND
INDEP
RAD
R=2*COS(4* ) STEQ
POLAR
R DEPND
INDEP
>>
<<
50
<<
STEQ
PICTURE
>>
>>
<<
{ h-etiqueta v-etiqueta}
13.4 Otros comandos tiles.
AXES
LABEL ...
>>
51
Las ecuacin
formato:
en
F(t) = 2t
introducida
F(t) + G(t)*i
Y = G(t)
Escribamos
un
programa
construya el grafico en que:
fue
Ej.:
que
{ F1(t) + G1(t)*i
F2(t) + G2(t)*i
G(t) = 3t^2
F3(t) + G3(t)*i }
<<
{ PICT
PPAR } PURGE
RAD
PARAMETRIC
{ t
6 }
2*t + i*3*t^2
DRAX
DRAW
INDEP
STEQ
PICTURE
>>
13.6 Cnicas.
Para este tipo de representaciones
graficas usamos el comando CONIC. El
programa siguiente construye una
Elipse.
Anlisis:
La
variable
independiente
se
introduce como una lista que contiene
los siguientes tres datos:
<<
>>
52
de
<< RAD
{ PICT PPAR} PURGE
TRUTH
X+Y 1 AND 4X X+7 AND Y X-3
STEQ
(5,1) CENTR DRAX DROW PICTURE
>>
53
En captulos anteriores
comandos siguientes:
RAD:
Fija el modo angular en
Radianes
vimos
los
a
b
c
3
4:
3:
2:
1:
a
b
c
a
de
Ej.:
6:
5:
4:
3:
2:
1:
a
b
c
3
6:
5:
4:
3:
2:
1:
5:
4:
3:
2:
1:
a
b
c
a
b
c
a
b
c
d
4
5:
4:
3:
2:
1:
d
a
b
c
a
b
c
d
3
5:
4:
3:
2:
1:
Ej.:
5:
4:
3:
2:
1:
a
b
c
d
4
5:
4:
3:
2:
1:
b
c
d
a
UPDIR:
Convierte
el
directorio
superior en directorio actual.
MERGE1: Fusiona una tarjeta RAM con
la memoria de usuario. La tarjeta debe
estar instalada en la ranura 1.
56
TEMA
Columnas y Vigas
Electricidad
Fluidos
Fuerzas y Energa
Gases
Transmisin de Calor
Magnetismo
Movimiento
ptica
Oscilaciones
Geometra Plana
Geometra Slida
Elementos de Estado Slido
Anlisis de Esfuerzos
Ondas
Subtemas
Cono
Cilindro
Paraleleppedo
Esfera
57
8 2
0 SOLVEQN >>
Ej.:
<<
{ DARCY
{ PRES << 3 1 0 SOLVEQN >> }
Ej.:
1 MENU >>
58
1.5
HMS : convierte de decimal a HMS.
12.9 Alarma.
Retos:
(a)
Escribe un programa que
muestre la hora como un reloj
anlogo:
Formato:
60
X*Y: Devuelve
la suma de los
productos de los datos que se
encuentran
en
las
columnas
independientes y dependientes de
DAT.
DAT.
61
12.10.4 Probabilidad.
12.10.3 Pronsticos.
PREDX: Devuelve el valor pronosticado
para una variable independiente dado
el valor de la variable dependiente en 1:.
62
12.11 Libreras
Al escribir un programa largo es
mucho mas cmodo dividirlo en
pequeas subrutinas. No hay que ser un
experto para saber esto. Pero, esto
puede traer confusin al usuario, ya que
el men aparece repleto de variables.
Podra ocurrir, por ejemplo, que el
usuario
ejecute
una
variable
equivocada. Tambin puede ocurrir que
el usuario borre o altere alguna de las
subrutinas, corrompiendo con esto el
programa.
Las libreras son un medio para
proteger nuestros programas de todos
los problemas anteriores ya que en estas
podemos tener cualquier cantidad de
subrutinas y solo mostrar al usuario los
comandos necesarios.
Otra ventaja de las libreras es que
sus programas pueden ser invocados
desde cualquier directorio ya que
operan de manera muy similar a los
propios comandos de la calculadora.
63
En el User Rpl,
los comandos
revisan la pila antes de ejecutarse y si
no encuentran los datos que necesitan
producen un mensaje de error y detiene
su ejecucin. Esto evita que se
produzcan
errores
internos
que
pudieran ocasionar situaciones no
deseadas.
se
Funcin LIBEVAL
La ventana de CMD
Entrada a Chars
Men de MODOS
Men de los Indicadores.
Entrada directa a MEMORY
Entrada directa a SOLVE
Men de Solve Equation
Men de Solve difeq Equation
Men de Solve polynomial
Men de sistema de ecuaciones
Men de TVM
Men de PLOT
Men de SYMBOLIC
Men de Integrales
Men de diferenciales
Men de TAYLOR
Men de ISOLATE VAR
Men de ecuacin Cuadratica
Men de manip. de expresiones
Men de la Aplicacin TIME
Entrada de las alarmas
Set time and Date
Catalogo de alarmas
Men de STAT
Men de Estad. De una variable
Men de Frecuencias
Men de ajustes de datos
Men de SUMARY STADISTICS
Men de I/O
Men de Send to HP-48
Men de Impresin
Men de transferencia
Men de recepcin de HP-HP
65
# B2000h
# B2001h
# B41C1h
# B41CFh
# B41D7h
# B4000h
# B4001h
# B4017h
# B402Ch
# B4033h
# B4038h
# B4045h
# B4113h
# B4114h
# B4122h
# B412Bh
# B412Dh
# B4130h
# B4131h
# B4137h
# B4138h
# B415Bh
# B416Eh
# B4175h
# B4176h
# B417Dh
# B417Fh
# B418Fh
# B4192h
# B4193h
# B4197h
# B41A8h
# B50FFh