User RPL
User RPL
User RPL
HP49g/49g+/48gII/50g
Módulo 2: Recursos avanzados
Tema 2.5 Programación User-RPL I
Francisco Palacios
Escuela Politécnica Superior de Ingeniería de Manresa
Universidad Politécnica de Catalunya
Dep. Matemática Aplicada III
Contenido
1. Introducción
2. Variables globales
3. Variables locales
4. Presentación de resultados
5. Ejecución condicionada
7. Gestión de la memoria
Índice General
1 Introducción 1
1.1 Programas en User-RPL . . . . . . . . . . . . . . . . . . . . . 1
1.2 Almacenado y ejecución de programas . . . . . . . . . . . . . 4
2 Variables globales 7
2.1 Uso de variables globales . . . . . . . . . . . . . . . . . . . . . 7
2.2 Reordenación de variables . . . . . . . . . . . . . . . . . . . . 18
2.3 Soluciones a las actividades . . . . . . . . . . . . . . . . . . . 23
3 Variables locales 24
3.1 Uso de variables locales . . . . . . . . . . . . . . . . . . . . . 24
3.1.1 Estructura de variable local . . . . . . . . . . . . . . . 24
3.1.2 Etiquetado de resultados . . . . . . . . . . . . . . . . . 30
3.2 Programa con resultados múltiples . . . . . . . . . . . . . . . 32
3.3 Uso de variables auxiliares . . . . . . . . . . . . . . . . . . . . 36
5 Ejecución condicionada 45
5.1 Estructura IF-THEN-ELSE . . . . . . . . . . . . . . . . . . . 45
5.2 Estructura CASE . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3 Soluciones de las actividades . . . . . . . . . . . . . . . . . . 53
7 Gestión de la memoria 84
7.1 Organización de la Memoria de la calculadora . . . . . . . . . 84
7.2 Acceso a los objetos de los puertos . . . . . . . . . . . . . . . 90
7.3 Copias de seguridad del sistema . . . . . . . . . . . . . . . . . 92
Francisco Palacios Programación en User-RPL. 1
1 Introducción
1.1 Programas en User-RPL
En una primera aproximación, podemos decir que un programa en User-
RPL es una secuencia de objetos escritos entre los delimitadores << >>. Si
cargamos un programa en la pila y pulsamos [EVAL], la calculadora procesa
automáticamente la secuencia de objetos que contiene el programa. Es esen-
cial entender que, al ejecutar el programa, la calculadora realizará diferentes
acciones dependiendo del tipo de objeto.
Actividad 1.1 El menú [PRG] contiene todos los comandos útiles para pro-
gramación agrupados por categorías.
Francisco Palacios Programación en User-RPL. 3
Actividad 1.7 Escribe un programa que tome el valor de los dos catetos
cargados en la pila y calcule la hipotenusa.
√
Sol. << SQ SWAP SQ + >> . El comando SQ calcula el cuadrado.
2 Variables globales
Los programas pueden manejar variables. Las variables globales
• Volumen: V = πR2 H.
6. Ahora vamos a escribir el programa, pulsa Â[+] para escribir los deli-
mitadores del programa.
y pulsa [STO].
1
Los saltos de línea desaparecen al cargar el programa en la pila.
2
Observa que los nombres de las variables Abas y Alat deben estar entre apóstrofes
(quoted names) en caso contrario, se produciría un error en ejecuciones del programa
posteriores a la primera.
Francisco Palacios Programación en User-RPL. 15
Para acabar el programa, escribe los nombre Alat y Abas sin apóstro-
fos,
3
Tecla Â(4,5).
Francisco Palacios Programación en User-RPL. 17
eso hace que se carguen sus valores en la pila, pulsa [+] para entrar el
comando +
19. Ahora tendrás el valor Alat + Abas en la pila, entra el nombre Atot
entre apóstrofos4 y escribe STO.
4
Observa que en este caso quieres usar el nombre, no el valor, por eso debes escribirlo
entre apóstrofos.
Francisco Palacios Programación en User-RPL. 18
1. Pulsa [FILES]
y pulsa [ENTER].
R H Vol Area
3.5 12.1 179. 59 153. 99
R
Francisco Palacios Programación en User-RPL. 23
Actividad 2.4
Programa Acción
<< Abre programa.
’1/3*π*R^2*H’ EVAL Calcula el valor del volumen.
’Vol’ STO Guarda el valor con el nombre Vol.
’4*π*R^2’ EVAL Calcula el valor del área de la
la superfice esférica.
’Area’ STO Guarda el valor con el nombre Area.
>> Cierra programa.
Actividad 2.6
Francisco Palacios Programación en User-RPL. 24
Programa Acción
<< Abre programa.
’1/3*π*R^2*H’ EVAL Calcula el valor del volumen.
’Vol’ STO Guarda el valor con el nombre Vol.
’π*R^2’ EVAL Calcula el valor del área de la base.
’Abas’ STO Guarda el valor con el nombre Abas.
√
’π*R* (R^2+H^2)’ EVAL Calcula el valor del área lateral.
’Alat’ STO Guarda el valor con el nombre Alat.
’Abas + Alat’ EVAL Calcula el valor del área total.
’Atot’ STO Guarda el valor con el nombre Atot.
>> cCierra programa.
3 Variables locales
Las variable locales son un tipo de variable especialmente diseñado para su
uso en programación. El comportamiento de las variables locales en User-
RPL es similar al comportamiento que tienen las variables locales en otros
lenguajes de programación: Pascal, C, Fortran, etc. La idea fundamental es
que una variable local solo existe dentro del procedimiento o programa que
la crea, no interacciona con variables globales del mismo nombre que puedan
existir previamente y desaparecen automáticamente5 cuando la ejecución del
programa finaliza.
En el caso del lenguaje de programación User-RPL, las variables locales
tienen las siguientes características:
• No aparecen en el área de variables del directorio actual.
• Sólo son accesibles dentro del programa que las crea.
• No interaccionan con variables globales.
• El tiempo de acceso6 es inferior al tiempo de acceso de las variables
globales.
• La variables locales son borradas automáticamente al finalizar o inte-
rrumpirse el programa que las crea.
Es decir, si escribimos
Francisco Palacios Programación en User-RPL. 26
Es importante destacar que las variables sólo son accesibles por el programa
o expresión algebraica que sigue a la declaración de variables locales → v1
v2 v3.
Como primer ejemplo, vamos a escribir un programa que realiza las siguien-
tes acciones:
• Calcula el valor del volumen del cilindro usando las variables locales
R y H y devuelve el resultado a la pila.
y pulsa [ENTER].
2. Entra en CIL3.
4. En este caso, no nos bastará con una sólo expresión algebraica, debe-
mos por lo tanto usar un programa, pulsa Â[+] para escribir otro par
de delimitadores de programa.
Programa Med
Datos ⇒ Resultado
Nivel 1 Lista X Nivel 1 Valor medio de los
elementos de la lista X
X Med
{1, 2, 3, 4, 5, 6} 3.5
Francisco Palacios Programación en User-RPL. 37
Entra el nombre
R AREA
23.41 1721. 68
2. Entra en DRP5
Francisco Palacios Programación en User-RPL. 41
que calcula el área a partir del radio. Guarda el programa con el nom-
bre AR1
guarda la nueva versión del programa con Á[F1], carga el valor de prue-
ba en la pila
5 Ejecución condicionada
A menudo, la ejecución de una parte de un programa depende del cumpli-
miento de una condición. Un ejemplo es el cálculo de la siguiente función:
½
sin x si x ≤ 0,
f (x) =
x2 si x > 0.
En esta sección veremos las estructuras IF-THEN-ELSE y CASE, que per-
miten gestionar la ejecución de partes del programa usando condiciones.
Actividad 5.1 Crea un directorio con el nombre DRP6, fija el modo an-
gular en radianes y entra en DRP6.
10
BRanCH = ramificar.
Francisco Palacios Programación en User-RPL. 47
obtendrás:
Francisco Palacios Programación en User-RPL. 49
Actividad 5.3 Modifica la función anterior para que fije el modo angular
en radianes antes de realizar la evaluación.
Actividad 5.4 Realiza los siguientes pasos. Fija el modo angular en radia-
nes y entra en el directorio DRP6.
Actividad 5.3
Simplemente debes escribir RAD delante de →NUM.
Actividad 5.5
Francisco Palacios Programación en User-RPL. 54
Programa Acción
<< Abre programa.
→X Define X como variable local.
<< Inicia programa asociado a variable local.
CASE Inicia estructura condicional CASE
’X≤ −1’ THEN ’-2’ END Primer caso.
’X≤0’ THEN ’X-1’ END Segundo caso.
’X≤2’ THEN ’X^2-1’ END Tercer caso.
1 Acción por omisión.
END Final estructura condcional CASE.
→NUM Evalúa la expresión cargada por CASE.
>> Cierra estructura de variable local.
>> Cierra programa.
Actividad 5.6
La representación gráfica en el intervalo x ∈ [−3, 3] tiene el siguiente aspec-
to:
Título
Campo de datos
Etiqueta de campo
Un formulario contiene:
• Nivel 2: Una lista de los valores entrados en los distintos campos del
formulario.
Observa que las etiquetas son strings y que, por lo tanto, deben
ir entre comillas dobles.
3. Entra tres listas vacías, correspondientes a las especificaciones de
formato, valores de reset y valores por defecto.
Actividad 6.3 Vamos a entrar valores por omisión al formulario del pro-
grama P1. Realiza los siguientes pasos:
Esto indica que los tres campos deben tomar, inicialmente, el valor 0.
3. Pulsa [ENTER] para salir del editor y cargar el programa en la pila y
Á[P1] para guardar en P1 la nueva versión. A continuación, ejecuta
P1, obtendrás
X
X +Y
H A= H
2
Y
Recuerda que para que aparezcan las comas dentro del paréntesis debes
entrar un espacio13 .
14
Recuerda que puedes obtener →TAG en [PRG][TYPE].
Francisco Palacios Programación en User-RPL. 63
Pulsa Á[A] para guardar la nueva versión del programa con el nombre
A.
6. Vamos a verificar el funcionamiento de A con los siguientes valores
de prueba
X Y H A
12.1 4.7 5.8 48.72
Recuerda que para una estructura de variable local como la empleada
el diagrama de pila es
Función A
Datos ⇒ Resultado
Nivel 3 X
Nivel 2 Y
Nivel 1 H Nivel 1 A
Carga los valores de prueba en la pila
9. Ahora nos queda por realizar la parte nueva, que consiste en tomar los
valores que nos devuelve INFORM, cargarlos en la pila y ejecutar A
para calcular el área. Pulsa Â[ATRAP] para cargar el programa en la
pila y [H] para activar el editor
13. Pulsa [ENTER] para salir del editor y cargar el programa en la pila,
16
Tecla Â(4,5).
Francisco Palacios Programación en User-RPL. 68
Observa que después del END debes tener dos delimitadores de pro-
grama, el primero corresponde al subprograma con variable local F y
el segundo cierra el programa principal.
contiene los valores de reset, entra tres ceros también en esa lista.
Pulsa [NEXT], para volver a la primer página del menú del formula-
rio
— NUM_COL = 1 (1 columna).
— TAB = 3 (tres espacios reservados para las etiquetas).
por {2}.
Observa que aparece una sola columna de campos. Por otra parte, la
etiqueta del campo 3 es de longitud 6, eso provoca una mala alineación
de los campos. Si estableces el valor de tabulación en 6, los campos
estarán bien alineados.
3. Recupera el programa y modifica la lista de especificaciones de formato
como sigue
Francisco Palacios Programación en User-RPL. 78
En esta sección nos ocupamos del objeto del Nivel 4, esto es, de la lista de
especificaciones de campo.
• “etiqueta”.
• { }.
Observa que las especificaciones de los campos es una lista que contiene
dos listas de la forma {“etiqueta” “texto de ayuda”}.
3. Completa la entrada de INFORM con una lista vacía para las especi-
ficaciones de formato del formulario (número de columnas y longitud
de tabulación) y dos listas que asignan valores nulos como valores ini-
ciales y valores de reset.
Pulsa Á[F1] para guardar la nueva versión del formulario. Ejecuta el pro-
grama y obtendrás:
Francisco Palacios Programación en User-RPL. 82
7 Gestión de la memoria
7.1 Organización de la Memoria de la calculadora
La memoria de la calculadora está organizada en varias áreas. Si entras en
la aplicación [FILES]
Debes tener en cuenta que los Puertos 0 y 1 son de acceso rápido, pero
su contenido puede perderse si falla la alimentación; por el contrario, el
contenido del Puerto 2 se mantiene aunque retires las baterías.
En este caso, dispongo de 239Kb libres para guardar objetos en el área HO-
ME/Puerto 0.
y pulsa [ENTER] para salir del editor. Pulsa nuevamente [ENTER] para
salir del File Manager. Si recuperas el contenido de A,
donde encontrarás la variable A que acabas de copiar. Pulsa [F1] para eje-
cutar la opción [VIEW] e inspeccionar el contenido de la variable.
Pulsa [F6] para ejecutar [OK] y volver a la vista del contenido del Puer-
to 1. Si pulsas la tecla [NEXT] para ver las diferentes páginas de menú,
obtendrás
que te avisa de que los cambios que realices no se guardarán. Pulsa [OK] y
cambia valor del elemento a11 de 20 a 50.
Tal como sucede con las variables, los programas guardados en los
puertos no se evalúan automáticamente, pulsa [EVAL] para evaluar el
programa, obtendrás:
Este es un buen momento para hacer limpieza, pero quizás sería recomenda-
ble guardar los programas realizados en lugar de borrarlos. Los comandos
ARCHIVE y RESTORE permiten realizar una copia de seguridad del con-
tenido del área HOME de la calculadora. Puedes encontrar los comandos
ARCHIVE y RESTORE en la segunda página del menú [PRG][MEM]
o en el catálogo de comandos.
Pulsa [NEXT] para acceder a la segunda página del menú del File
Manager
4. Pulsa [CANCEL] para salir del File Manager y pulsa [VAR], obten-
drás: