Programación en User Rpl Por Uber Gutierrez Rocha

35
Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL 1 UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERÍA CARRERA DE INGENIERIA CIVIL CENTRO DE ESTUDIANTES DE INGENIERIA CIVIL CURSO PROGRAMANDO EN USER-RPL EXPOSITOR: UBER PABLO GUTIERREZ ROCHA ABRIL 2010

description

Manual de programacion de la hp50g

Transcript of Programación en User Rpl Por Uber Gutierrez Rocha

Page 1: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

1

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERÍA

CARRERA DE INGENIERIA CIVIL

CENTRO DE ESTUDIANTES DE INGENIERIA CIVIL

CURSO PROGRAMANDO EN USER-RPL

EXPOSITOR:

UBER PABLO GUTIERREZ ROCHA

ABRIL 2010

Page 2: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

2

1. ANTES DE PROGRAMAR 1.1 Modo RPN y modo Algebraico La calculadora posee dos modos de funcionamiento: o Algebraico o RPN (Reverse Notation Polish) En el modo algebraico las expresiones se escriben de la forma habitual y, después, se evalúan. Para calcular

3 2

5 1

Tendríamos que escribir ‟(3+2)/(5+1)‟ y pulsar [ENTER]. En modo RPN: o se cargan los números en la pila o se pulsa la tecla de operación El resultado queda cargado en la posición más baja de la pila. La secuencia sería 3 [ENTER] 2 [ENTER] [+] → deja 5 en la pila 5 [ENTER] 1 [ENTER] [+] → introduce 6 en la pila Pulsamos [÷] → coloca 5/6 en la pila (o 0.83333 si la calculadora está en modo aproximado) A primera vista parecería complicado e impractico pero cuando uno se acostumbra, se vuelve más práctico y menos engorroso pues nos ahorramos la cantidad de veces que tenemos que presionar la tecla [LS] [ - ] para paréntesis y [ENTER]

1.2 La pila (STACK) Cuando trabajamos en modo RPN, la pila (stack) es el lugar de donde se toman los datos y a donde se devuelven los resultados. La pantalla muestra los niveles inferiores de la pila.

1.3 Banderas Las banderas (Flags) son las encargadas de controlar el sistema, estás se pueden activar o desactivar manualmente, apretando la tecla [MODE] [F1], o también mediante un programa, se verá esto más adelante con mayor detalle, a continuación se detalla las más importantes: -33 Activado: Transferencia de archivos via IR (infrarojo) Desactivado: Transferencia de archivos via cable -35 Activado: Transferencia modo binario Desactivado: Transferencia modo ASCII -40 Activado: Visualizar el reloj Desactivado: No visualizar el reloj

Page 3: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

3

-51 Activado: Marca de fracción: , (coma) Desactivado: Marca de fracción: . (punto) -55 Activado: No guarda los últimos argumentos Desactivado: Guarda los últimos argumentos -60 Activado: Activa alpha presionando [α] Desactivado: Activa alpha presionando [α] [α] -62 Activado: Activa teclados del ususario Desactivado: Desactiva teclados del usuario -72 Activado: Visualiza la pila en mini fuentes (letras pequeñas) Desactivado: Visualiza la pila en fuentes por defecto (letras normales) -91 Activado: MTRW (MaTRix Writer): en modo lista de listas Desactivado: MTRW (MaTRix Writer): en modo matriz -105 Activado: Muestra resultados en modo aproximado Desactivado: Muestra resultados en modo exacto -117 Activado: Muestra los menús en modo activable por las teclas [F1] al [F6] Desactivado: Muestra los menús mediante mensajes o cajas de texto

1.4 Funciones esenciales que se deben conocer

1.4.1 Objetos La calculadora permite manejar objetos de tipos muy diversos. Algunos de los tipos de objetos son números enteros, reales, complejos, caracteres, cadenas, etc. Se detallará más adelante todos los tipos de objetos existentes.

1.4.2 Guardar objetos en variables Un objeto se puede cargar directamente en la pila, o bien, se puede almacenar en variable. Para guardar un objeto en una variable usamos la tecla [STO]. Con mayor detalle, el procedimiento para guardar un objeto en una variable en modo RPN es como sigue: 1. Cargamos el objeto en la pila 2. Cargamos el nombre8 de la variable en la pila 3. pulsamos [STO] Para guardar el valor 125 en la variable X, la pila presentaría el siguiente aspecto:

Page 4: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

4

Una vez pulsado [STO], el valor y la variable se descargan de la pila. Si ahora escribimos X y pulsamos [ENTER], se obtiene el valor 125. Si vamos al editor de ecuaciones y escribimos SIN(X)+COS(X), lo seleccionamos y pulsamos [EVAL], se obtiene SIN(125)+COS(125) (en modo exacto).

1.4.3 Área de variables Las variables se almacenan en el Área de variables. La tecla [VAR] nos da acceso al área de variables. En modo RPN, si el nombre de una variable aparece en la línea de menú programable, podemos cargar su valor usando la tecla de función correspondiente. Así, si observamos la siguiente línea de menú:

Podemos cargar el valor de S con [F1], el valor de T con [F2], etc. 1.4.4 Borrado de varias variables El comando PURGE puede actuar sobre listas de variables. Para borrar varias variables: 1. Pulsa la tecla [LS] [+] para obtener un par de llaves { } y construir una lista con los nombres de variables a borrar. 2. Accede al área de variables y usa las teclas de función para construir la lista de nombres de variables9. Cuando la lista esté completa; pulsa [ENTER]. 3. Accede a [TOOL] y ejecuta [PURGE]. Accede nuevamente al área de variables pulsando [VAR] y observa que las variables de la lista han sido borradas.

1.4.5 Directorios Las variables pueden organizarse en directorios. Los directorios pueden entenderse como carpetas que contienen las variables. Cuando accedemos al área de variables, las etiquetas correspondientes a directorios tienen una pequeña pestaña, como si fueran una carpeta de archivador:

Page 5: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

5

Pulsando la tecla de función correspondiente, accedemos al directorio. En la imagen superior, observamos que hay dos directorios10, PROB y CASDIR, podríamos entrar en ellos pulsando, respectivamente, [F1] y [F6]. El directorio principal se llama HOME. En la parte superior de la pantalla, se indica el nombre del directorio actual. En el gráfico siguiente, vemos que estamos en el subdirectorio PROB; el directorio contiene las variables X e Y y un subdirectorio llamado EJEM. Si pulsamos [F2] y [F3] obtenemos el valor de las variables. Si pulsamos [F1], entramos en el subdirectorio EJEM, la ruta completa de éste directorio sería {HOME PROB EJEM}

1.4.6 Cambio de directorio Para entrar en un subdirectorio del directorio actual podemos — Escribir el nombre del subdirectorio y pulsar ENTER. — Entrar en el área de variables y pulsar la tecla de función asociada. Para ascender al directorio superior, pulsamos la tecla [LS] [VAR] (UPDIR). 1.4.7 Crear directorios Para crear un directorio: 1. Sitúate en directorio superior. 2. Escribe el nombre del directorio, pulsa [ENTER]. 3. Escribe CRDIR (create directory) y pulsa [ENTER]. En vez de escribir CRDIR, puedes acceder al menú PRG y seleccionar MEM DIR; entonces dispondrás del comando CRDIR en el modo soft-menu (soft menu = bandera -117 activado, desde ahora en adelante se supondrá que está bandera está activada).

1.4.8 Eliminar directorios Comando PURGE: El comando PURGE permite borrar un directorio. Para usar PURGE, es necesario que el directorio esté vacío, el método es bueno si no hay subdirectorios. La secuencia para borrar un directorio con PURGE es como sigue: 1. Accede al área de variables y entra en el directorio. 2. Borra todas las variables del directorio. 3. Asciende al directorio superior usando [LS] [VAR] (UPDIR). 4. Escribe comillas simples [ „ ] y pulsar la tecla de función correspondiente al subdirectorio a borrar, el nombre se escribirá entre las comillas. Carga el nombre en la pila con [ENTER]. 5. Accede a [TOOL] y pulsa PURGE.

Page 6: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

6

Comando PGDIR: El comando PGDIR (PurGe DIRectory) permite borrar un directorio no vacío. Es una forma rápida de eliminar un directorio, pero hay que proceder con cuidado porque no solicita confirmación. El procedimiento es muy simple: 1. Accede al área de variables y sitúate en el nivel superior al directorio 2. Escribe comillas simples y pulsa la tecla de función correspondiente al subdirectorio a borrar, el nombre se escribirá entre las comillas. Carga el nombre en la pila con [ENTER] 3. Escribe PGDIR y pulsa [ENTER]. También podemos acceder al comando PGDIR a través del menú de programación PRG, selecionando MEM DIR PGDIR.

1.4.9 Manejo de variables Evaluación de variables La evaluación de un nombre de variable, funciona como sigue: 1. Si existe una variable con ese nombre en el directorio actual, se toma su valor 2. Si no existe una variable con ese nombre en le directorio se busca una variable con ese nombre ascendiendo por la ruta de directorios, si aparece una variable con ese nombre, se toma su valor; si no, se carga en la pila el nombre. Ejemplo: Evaluación de nombres de variables. Supongamos HOME tiene el siguiente contenido x = 25 y = 42 HOME PRUEBA (directorio) CASDIR (directorio)

A su vez, el subdirectorio PRUEBA, tiene el siguiente contenido x = 25 y = 42 {HOME PRUEBA} PRUEBA (directorio) CASDIR (directorio)

Finalmente, el directorio

{HOME PRUEBA XYZ} contiene x = 7 y el directorio

{HOME PRUEBA DR4} contiene y = -2

Escribimos x+y +z en el editor de ecuaciones y lo copiamos. Si evaluamos la expresión en los distintos subdirectorios, tendremos: 1. En HOME, x = 25, y = 42, z =sin valor; resultado 67 + z

2. En {HOME PRUEBA}, x = 10, z = −3. La variable y toma su valor de HOME, y = 42. Al evaluar x + y + z, se

obtiene 49. 3. {HOME PRUEBA XYZ}, es x = 7, para tomar los valores de z e y, vamos a los directorios superiores, se

obtiene z = −3 en PRUEBA, y = 42 en HOME. El resultado de evaluar x + y + z es 46.

1.4.10 Manejo rápido de variables Cuando accedemos al área de variables, cada variable tiene asignada una de las teclas de función [F1], [F2], . . . ,[F6]. Supongamos que HOME contiene las variables Z y X como muestra el gráfico siguiente, y que estamos en modo RPN

Page 7: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

7

Z está asociada a [F1] y X está asociada a [F2].

1. Pulsando [F1], recuperamos el valor de Z. 2. Si escribimos las comillas simples (tecla (4,3)), se activa el modo algebraico, y al pulsar [F1], se escribe el nombre de la variable. 3. Para guardar un valor en Z, digamos 45, basta con cargar el valor en la pila y pulsar [LS] [F1]. 4. La secuencia [RS] [F1] recupera el valor sin evaluarlo. Esto es importante cuando la variable contiene un programa y deseamos recuperarlo sin que se ejecute. Cuando el contenido es un número, pulsar [F1] o [RS][F1] produce el mismo resultado.

1.4.11 Un ejemplo final Vamos a organizar un directorio que nos permita calcular el área de un trapecio con comodidad.

Sabemos que el área está dada por

2

a bs h

Tomamos los valores iniciales a = 3, b = 4, h = 6. El área correspondiente es 21. 1. En HOME creamos un subdirectorio TRAP 2. Creamos las variables A, B, H con los valores indicados. 3. Escribimos los delimitadores de programas << >> ([RS][+]) 4. Escribimos el programa <<‟(A+B)/2*H‟ EVAL>> 5. Guardamos el programa con el nombre S. La pantalla debe presentar el siguiente aspecto:

Page 8: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

8

La tecla [F1] está asociada a una variable que contiene un programa, cuando la pulsamos, ejecuta el programa. 1.4.12 Utilizando NUM.SLV (NUMeric SoLVer) El mismo ejemplo se puede hacer utilizando este entorno: 1. En el mismo subdirectorio TRAP 2. Vamos al Editor de Ecuaciones apretando [RS] [ „ ] 3. Escribimos la ecuación

4. La guardamos en la variable „EQ‟

5. Borramos el programa con el nombre S.

6. Por últimos entramos al entorno de Soluciones Numéricas, [RS][ 7 ] y OK

Page 9: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

9

7. Nos situamos en la variable S presionamos SOLVE

8. Apretamos [ENTER]

Esta forma de resolución me parece más práctica que la primera.

Page 10: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

10

2. Introducción 2.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 esencial entender que, al ejecutar el programa, la calculadora realizará diferentes acciones dependiendo del tipo de objeto.

• Comandos. Los comandos son ejecutados.

• Otros tipos de objetos son cargados en la pila, en concreto se cargan en la pila:

— Expresiones algebraicas: ‟cos(x)+sin(x)‟. — Números: 2, 2.34, (1,2.34). — Strings: ‟‟Entra un número‟‟, ‟‟Volumen‟‟. — Listas: {1,2,‟a‟,‟b‟}. Consideremos como ejemplo el siguiente programa.

Al ejecutar el programa, la calculadora realiza las siguientes acciones:

Objeto Tipo Acción

<< delimitador de programa

1 número carga en la pila

2 número carga en la pila

+ comando ejecución

6 número carga en la pila

/ comando ejecución

>> delimitador de programa

Si pulsamos [EVAL], obtenemos:

2.2 Almacenado y ejecución de programas

Page 11: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

11

El concepto de programa está vinculado a la idea de ejecución repetida: el interés de un programa radica en que, una vez escrito, podemos ejecutarlo tantas veces como deseemos. Podemos almacenar un programa en una variable usando el comando [STO], de la misma forma que cualquier otro objeto de la calculadora. Veamos como ejemplo el programa que toma dos números de la pila y calcula la media aritmética.

Vamos a guardarlo con el nombre MED, para ello cargamos el nombre en la pila

y pulsamos la tecla [STO]. Si ahora pulsamos la tecla [VAR] para acceder al área de variables

observamos que el nombre MED aparece asociado a la tecla [F1]. Para ejecutar el programa, simplemente tenemos que cargar dos números en la pila, por ejemplo 4 y 8

y pulsar [F1], obtendremos

Page 12: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

12

Si ahora pulsamos nuevamente la tecla [F1], obtenemos un error.

El error se produce porque el programa necesita dos valores en la pila para funcionar correctamente.

Resumiendo, supongamos que hemos guardado un programa con el nombre NOMPRG, entonces el nombre NOMPRG pasa a comportarse como cualquier otro comando del sistema. Podemos ejecutarlo directamente usando la tecla de función correspondiente en el área de variables, o bien usar su nombre.

2.3 Variables globales Los programas pueden manejar variables. Las variables globales

• Son variables ordinarias.

• Su nombre aparece en el directorio de trabajo.

• Persisten una vez ejecutado el programa, salvo que el programa las borre explícitamente.

En contrapartida, veremos en la sección siguiente que existen otro tipo de variables: las variables locales. Las variables locales sólo se pueden usar dentro del programa que las crea, no aparecen en el directorio de trabajo y no interfieren con otras variables previamente existentes.

2.3.1 Uso de variables globales Para asignar valores a una variable se usa el comando [STO], dado que una variable global puede existir previamente a la ejecución del programa, debes usar su nombre entre apóstrofes.

2.4 Variables locales Las variable locales son un tipo de variable especialmente diseñado para su uso en programación. 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 acceso es inferior al tiempo de acceso de las variables globales.

• Las variables locales son borradas automáticamente al finalizar o interrumpirse el programa que las crea.

2.4.1 Uso de variables locales

Page 13: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

13

Estructura de variable local Disponemos de dos estructuras para crear variables locales:

<< → v1 v2 v3 << programa que usa v1 v2 v3>> >>

y

<< → v1 v2 v3 ‟expresión algebraica que contiene v1 v2 v3‟ >>

En la sintaxis hemos usado, por simplicidad, sólo 3 variables locales: v1,v2 y v3, pero puede usarse cualquier número de variables locales; también puede usarse cualquier nombre válido como nombre de variable local. Al ejecutarse una estructura de variable local como las descritas arriba, se producen las siguientes acciones:

• Se descargan 3 valores de la pila y se guardan ordenadamente en las variables v1, v2, v3, empezando de

derecha a izquierda.

• Se ejecuta el programa o se evalúa la expresión algebraica que acompaña la definición de las variables.

Veamos con mayor detalle como se produce la asignación de variables.

• En primer lugar se descarga el valor del nivel 1 de la pila, y se guarda en la variable en v3.

• El valor del nivel 2 de la pila se guarda en v2.

• El valor del nivel 3 de la pila se guarda en v1.

Este funcionamiento puede parecer algo extraño, pero si escribimos 3 valores en la línea de edición separados por espacios

y pulsamos [ENTER], obtenemos:

y ejecutamos el programa, entonces: — El valor 3 se guardaría en v3. — El valor 2 se guardaría en v2. — El valor 1 se guardaría en v1. 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.

3. Comandos de programación

Page 14: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

14

Introducción Antes de programar es necesario conocer todas las herramientas con las que contamos, por ejemplo si vamos a cavar una zanja con nuestras propias manos debemos conocer que es una pala o que es una picota y cual es la mejor manera de emplearlos, así también debemos conocer todas las bondades que nos ofrece la hp que en su 99 % es totalmente programable. Comandos del menú PRG 3.1 Comandos de la sección STACK El manipuleo de los elementos de la pila como hemos visto hasta ahora es fundamental en la programación por eso y en orden vamos a ver los distintos comandos que componen está sección DUP: Duplica el objeto del nivel 1.

SWAP: Intercambia los objetos que se encuentran en los niveles 1 y 2.

DROP: Elimina el objeto que se encuentra en el nivel 1

OVER: Copia al nivel 1el objeto que se encuentra en el nivel 2.

ROT: Cambia la posición de los objetos que encuentran en los tres primeros niveles de abajo hacia arriba.

UNROT: Cambia la posición de los objetos que encuentran en los tres primeros niveles de arriba hacia abajo

Page 15: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

15

ROLL: Cambia la posición de los objetos que encuentran en n niveles de abajo hacia arriba, requiere el número de niveles

ROLLD: Cambia la posición de los objetos que encuentran en n niveles de arriba hacia abajo, requiere el número de niveles

PICK: Copia al nivel 1el objeto de cualquier nivel, requiere el número de nivel.

UNPICK: Elimina el objeto que se encuentra en el n nivel, requiere el número de nivel.

PICK3: Copia al nivel 1el objeto del nivel 3.

DEPTH: Devuelve el número de niveles en uso.

Page 16: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

16

DUP2: Copia los dos primeros niveles.

DUPN: Copia el nivel especificado

DROP2: Borra los dos primeros niveles

DROPN: Borra los n niveles, requiere el número de niveles

DUPDUP: Triplica el objeto que se encuentra en el nivel 1

NIP: Borrar el objeto del nivel 2

Page 17: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

17

NDUPN: Copia n veces el objeto que encuentra en el nivel 1 y devuelve el número de elementos copiados, requiere el número de copias a hacer

3.2 Comandos de la sección MEM MEM: Devuelve la cantidad de espacio libre que existe en el puerto 0 BYTES: Determina el valor y Checksun de cualquier objeto. NEWOBJ: Crea un nuevo objeto. ARCHIVE: Crea un backup de todo lo que se encuentra en home. RESTORE: Restaura la copia backup en home 3.2.1 Sección DIR PURGE: Borra una variable o un directorio RCL: Recupera el objeto de una variable STO: Guarda una variable o directorio CRDIR: Crea un nuevo directorio PGDIR: Borra un directorio PATH: Devuelve en una lista la ubicación actual VARS: Devuelve en una lista las variables del menú actual TVARS: Devuelve en una lista las variables de un tipo requerido ORDER: Ordena las variables según el orden en que se encuentran en una lista 3.2.2 Sección ARITH STO+: Restaura sumando un valor al valor anterior STO-: Restaura restando un valor al valor anterior STO*: Restaura multiplicando un valor al valor anterior STO/: Restaura dividiendo un valor al valor anterior SINV: Restaura el inverso del valor anterior SNEG: Restaura el valor anterior cambiado de signo SCONJ: Reúne un objeto a otra variable (Conjuga) INCR: Restaura el valor anterior incrementado 1 y devuelve el valor actual DECR: Restaura el valor anterior decrementado 1 y devuelve el valor actual

3.3 Comandos de la sección TEST Comparaciones numéricas En cualquiera de estás operaciones al efectuar la comparación si fuera verdad el sistema devuelve 1 pero si fuere falsa devuelve 0. Estos operadores matemáticos son: ==, ≠, <, >, ≤ y ≥ Pruebas lógicas AND: Este comando equivale al símbolo lógico conocido (^) OR: Este comando equivale al símbolo lógico conocido (v) XOR: Comando lógico

PRUEBA AND OR XOR

1 1 1 1 0

0 0 0 0 0

1 0 0 1 1

Page 18: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

18

NOT: Este devuelve el inverso si es verdad o falso SAME: Comando que compara dos objetos si son iguales LININ: Verifica si una ecuación es lineal, requiere de la ecuación y de su variable Banderas del sistema (indicadores) Como antes e menciono, son las que controlan el sistema, y para ser manipulados mediante programas es necesario conocer cada uno de estos indicadores. SF: Activa el indicador seleccionado del sistema CF: Desactiva el indicador seleccionado del sistema FS?: Verifica si un indicador está activado FC?: Verifica si un indicador está desactivado FS?C: Verifica si un indicador está activado luego lo desactiva FC?C: Verifica si un indicador está desactivado y luego lo desactiva 3.4 Comandos de la sección TYPE La tecla [F1] está asociada a una variable que contiene un programa, cuando la pulsamos, ejecuta el programa El manipuleo de distintos tipos de objetos existentes, es muy útil para la programación, sobre todo para programas ambiciosos, en la calculadora existen 30 tipos de objetos, los cuales se encuentran descritos en la siguiente tabla:

TYPE: Devuelve el número del tipo de objeto

Page 19: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

19

VTYPE: Devuelve el número del tipo de objeto que se encuentra en una variable

En la variable DATOS está almacenada una lista

->ARRY: Construye un vector o matriz, para Vector requiere sus elementos y dimensión, para Matriz sus elementos ordenados en una lista {#fila #columna}

->LIST: Construye una lista, puede contener cualquier objeto, requiere número de elementos a contener

->STR: Convierte a cadena (unión caracteres) cualquier objeto.

->TAG: Etiqueta valores, requiere el valor seguido del nombre.

->UNIT: Coloca a un número la unidad deseada.

OBJ->: Es el inverso a los cinco últimos comandos vistos.

Page 20: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

20

C->R: Descompone un número imaginario, en su parte imaginaria y real R->C: Crea un complejo tendiendo el valor real y el imaginario

NUM: Devuelve el número del código de un carácter. CHR: Retorna el carácter o símbolo de un número

DTAG: Devuelve el valor de un objeto etiquetado

EQ->: Descompone una ecuación a partir del signo de igualdad

3.5 Comandos de la sección LIST Las listas son elementos muy importantes en la programación de la hp, por no decir que son el corazón de la misma (según mi opinión), por tanto el dominar solamente está parte de la programación te da un gran nivel en manejo de la hp. A continuación se detalla cada comando:

SUB: Requiere los valores inicial y final que se desea obtener de una lista.

REPL: Requiere la posición inicial donde se quiere reemplazar una lista en otra

Page 21: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

21

3.5.1 Sección ELEM GET: Obtiene un elemento de una lista, requiere su posición

GETI: Igual al anterior pero te devuelve además la lista original y la posición sgte.

PUT: Reemplaza un elemento de una lista por otro, requiere la posición y el valor

PUTI: Igual al anterior pero además devuelve la posición del elemento siguiente.

SIZE: Indica la cantidad de elementos que contiene una lista.

POS: Indica la posición de un elemento, requiere el nombre del elemento.

HEAD: Devuelve el primer elemento de una lista

Page 22: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

22

TAIL: Devuelve una lista sin el primer elemento

3.5.2 Sección PROC REVLIST: Invierte el orden de una lista

SORT: Ordena los elementos de una lista de menor a mayor

DOLIST: Ejecuta un programa a partir de listas, requiere lista o listas, número de listas a utilizar seguido del programa a aplicar.

DOSUBS: Aplica un procedimiento secuencial con los elementos de una lista, requiere una lista, número de elementos con los que se va proceder y programa.

NSUB: Devuelve la posición en que se está efectuando el proceso dentro de DOSUBS ENDSUB: Devuelve la cantidad de veces que efectuará el programa para cada valor STREAM: Realiza un procedimiento para cada elemento con el resultado del anterior procedimiento de los elementos de una lista, requiere una lista y programa.

SEQ: Reemplaza en una variable de una función u objeto valores dados uno inicial y otro final, variando en un incremento. Requiere función, variable, valor inicial, valor final, incremento.

DOLIS

DOSUBS

STREAM

Page 23: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

23

MAP: Aplica un programa específico a una lista de objetos o valores, requiere una lista y una función o programa del tipo << -> a „función‟ >>.

3.6 Comandos de la sección GROB Estos comandos sirven para sobreponer, crear, capturar y animar imágenes. ->GROB: Convierte un objeto o texto a gráfico, requiere el objeto seguido del tamaño que puede ser 1 o 2. BLANK: Crea un grob en blanco, requiere sus dimensiones ancho y alto en números enteros binarios GOR: Sobrepone un grob sobre otro, requiere la ubicación GXOR: Igual al anterior pero este convierte primero a grob antes de sobreponerlo SUB: Extrae una porción de grob, requiere el grob, posición inicial y final REPL: Reemplaza o sobrepone un grob sobre otro grob o pict, requiere grob a reemplazar, posición y grob a reemplazar ->LCD: Muestra el grob dado en el nivel 1 en modo texto. LCD->: Convierte la pantalla de modo texto a grob SIZE: Devuelve el tamaño del grob en números binarios ANIMATE: Comando de animación requiere varios grob, para su visualización secuencial. 3.7 Comandos de la sección PICT Comandos que sirven para hacer trazados en la calculadora. PICT: Parecido a una variable donde se guarda todo lo que se ve en modo grafico PDIM: Crea un PICT en blanco con dimensiones personalizadas y lo restaura, requiere longitud y ancho en binarios LINE: Dibuja una línea recta, requiere dos puntos TLINE: Igual al anterior, requiere dos puntos. BOX: Dibuja un rectángulo, requiere dos puntos ARC: Dibuja un arco, requiere centro, radio y ángulo en modo DEG PIXON: Activa un determinado pixel de la pantalla, requiere un punto. PIXOF: Desactiva un determinado pixel de la pantalla, requiere un punto. PIX?: Comprueba si un PICT está activado PX->C: Convierte las coordenadas pixel (binario) a coordenadas de usuario C->PX: Convierte las coordenadas usuario a pixel (binario)

SEQ

MAP

Page 24: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

24

3.8 Comandos de la sección CHARS SUB: Devuelve una parte de la cadena, requiere un valor inicial y final.

REPL: Reemplaza una cadena en parte de otra, requiere posición inicial y la cadena

POS: Devuelve la posición del carácter requerido.

SIZE: Devuelve el número de caracteres en una cadena.

HEAD: Devuelve el primer carácter de una cadena.

TAIL: Devuelve la cadena menos el primer carácter.

3.9 Comandos de la sección MODES Estos sirven para hacer cambios en le sistema desde un programa. 3.9.1 Sección FMT STD: Cambia a formato Standart FIX: Cambia a formato Fix, requiere un número antes. SCI: Cambia a formato Científico, requiere un número antes. ENG: Cambia a formato Ingeniería, requiere un número antes. 3.9.2 Sección ANGLE

Page 25: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

25

DEG: Cambia a formato Deg RAD: Cambia a formato Rad GRAD: Cambia a formato Gra RECT: Cambia a formato Rctangular CILIN: Cambia a formato Cilindrico SPHERE: Cambia a formato Esférico 3.9.3 Sección FLAGS STOF: Restaura la configuaración de los indicadores del sistema RCLF: Devuelve la configuración de los indicadores del sistema 3.9.4 Sección KEYS ASN: Restaura una tecla del usuario STOKEYS: Restaura la configuración del as teclas del usuario RCLKEYS: Devuelve la configuración de las teclas del usuario DELKEYS: Borra una tecla del usuario 3.9.5 Sección MENU MENÚ: Devuelve el menú llamado CST: Menú personalizado de acceso directo, se guarda en una lista con nombre „CST‟ TMENU: Menú temporal { { “Nombre o gráfico de 21x8” objeto} {... }…n } RCLMENU: Devuelve el número del menú

Formato de key: 4 2 . 1 # Fila # Columna Modo Modos

Nº Tecla Nº Tecla

1 Ninguno 4 Alpha [α]

2 Cambio Izquierda [LS]

5 Alpha + Cambio Izquierda

3 Cambio Derecha [RS]

6 Alpha + Cambio Derecha

Page 26: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

26

3.10 Comandos de la Sección IN En está parte de verá todos los comandos de introducción de datos para los programas. INPUT: Este comando es utilizado para introducir datos. Requiere Mensaje o cadena y el Formato siguiente { { “Valor inicial” { #Fila #Columna } MODOs } o “Valor inicial” V: Verifica si existe algún error en el sistema MODOs ALG: Este activa el modo algebraico para introducir ecuaciones α : Activa alpha << “Ingrese valores de a y b” { { “<┘:a: <┘:b:” {2 0} V } INPUT >>

NOVAL: Este es un espacio vacío, puede se puesto en cualquier lugar INFORM: Permite diseñar formularios para la introducción de datos. En el nivel 2 devuelve los valores almacenados en una lista y en el nivel 1 devuelve 1 o 0 dependiendo si el formulario fue correctamente llenado. Requiere Nombre del formulario que debe estar en una cadena, label o campos de llenado como sigue a continuación: { { “Nombre” “Ayuda” Tipo de Objeto } {… } … n } Valores Reset que se restauran cuando se presiona reset, debe ir en una lista {} Valores Iniciales que se restauran desde que se entra al formulario, tambien en lista { }.

Page 27: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

27

<< "PERDIDA DE CARGA" { { "f:" "FACTOR DE FRICCIÓN" 0 } { "L:" "LONGITUD TUBERÍA" 0 } { "D: " "DIAMETRO TUBERÍA" 0 } { "V:" "VELOCIDAD" 0 } { "g:" "GRAVEDAD" 0 } } { 2 0 } { } { } INFORM >>

CHOOSE: Crea un recuadro de selección de datos en la parte central de la pantalla, si de este es seleccionado alguna opción devuelve el objeto contenido en este y 1, de otra forma sino se selecciono ninguno devuelve 0. << "ELIJA TIPO DE CURVA" { { "HORIZONTAL" "HORIZONTAL" } { "VERTICAL" "VERTICAL" } } 1 CHOOSE >>

WAIT: Interrumpe un determinado tiempo o hasta que se presione alguna tecla. Requiere el número de tiempo de espera, sino hay ninguno hasta que se presione alguna tecla PROMPT: Comando que interrumpe la ejecución del programa y muestra un mensaje en la parte superior, requiere Mensaje en cadena y PROMPT seguido de CONT para la continuación del programa << { {"DARCY" « "DARCY" » } {"HAZEN" « "HAZEN" » } {} {} {} {"CANCL" « 0 MENU CONT »} } TMENU "ELIJA ECUACIÓN" PROMPT >>

KEY: Comando que devuelve 1 y el número de tecla que se presiono o si no se presiono ninguno devuelve 0

3.11 Comandos de la Sección OUT MSGBOX: Muestra un mensaje en recuadro en la parte central de la pantalla, requiere mensaje que debe estar en cadena. << ->STR "El resultado es: " SWAP + MSGBOX >>

Page 28: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

28

CLLCD: Limpia la pantalla modo texto DISP: Muestra un objeto en una línea a de pantalla, requiere el objeto a mostrar y un número del 1 al 7(línea en que se va a mostrar) << "EL RESULTADO ES: " SWAP ->STR CLLCD 3 DISP 1 DISP 0 WAIT >>

BEEP: Emite un sonido mediante frecuencia y un determinado tiempo. Requiere frecuencia dada en Hz y tiempo de duración dada en segundos.

<< "SONIDO DE ERROR" MSGBOX 1392 0.075 BEEP >> Para que se pueda escuchar el tono el flag -57 no debe estar activado FREEZE: Congela una parte específica de la pantalla, requiere Parte de la pantalla: 1 = área de estado, 2 = pila o línea de comandos, 4 = área de menú PVIEW: cambia a la pantalla modo gráfico, {} = cambio permanente y {#0 #0} = visualiza por un momento TEXT: Cambia la pantalla a modo texto

3.12 Comandos de la sección TIME DATE: Devuelve la fecha actual MM.DDAA ->DATE: Restaura una nueva fecha TIME: Devuelve la hora actual formato HH.MMSS ->TIME: Restaura una nueva hora TICKS: Devuelve la hora del sistema en ticks DATE+: Calcula la fecha a x días de la fecha actual DDAYS: Calcula en número de días entre dos fechas ->HMS: Convierte una hora en decimales a formato HMS HMS->: Convierte un hora en formato HMS a decimales HMS+: Suma dos horas en formato HMS HMS-: Resta dos horas en formato HMS TSTR: Crea una cadena con la fecha y hora CLKADJ: Ajusta el reloj al sistema x/8192 seg. 3.13 Comandos de la Sección BRCH Son los más importantes y se explicarán en detalle. IF: Es un comando de decisión, comprueba dos valores, y si la comparación es verdadera ejecuta una serie de instrucciones, de otra forma si es falsa ejecuta otra serie de instrucciones.

PROG

PROG

Page 29: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

29

IF: Comparación (comando que compara) THEN: Entonces (verdadero -> 1) ELSE: De otra manera (falso -> 0) END: Termina (Finaliza el comando IF) Sigue así: SI IF Comparación o número (1 o 0) THEN NO Proceso 1 ELSE Proceso 2 END O también: SI IF Comparación o número (1 o 0) THEN Proceso 1 END

CASE: Igual al anterior pero este se utiliza cuando se tienen más de dos alternativas. CASE: Condición (Inicializa el comando CASE) THEN: Entonces (Si es verdad se ejecuta la instrucción) END: Termina (Finaliza la instrucción) END: Termina (Finaliza el comando CASE) CASE Comparación o número 1 o 0 THEN Proceso 1a END Proceso 2a Comparación o número 1 o 0 THEN Proceso 1b END Proceso 2b . . END

Page 30: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

30

FOR: Utilizado para elaborar procesos iterativos dentro de un programa, comenzando de un valor inicial hasta llegar a un valor final según el incremento. FOR: Para (requiere dos valores uno inicial y final) N: Variable del contador (minúsculas preferentemente) NEXT: Siguiente (empieza el contador de uno en uno) STEP: Paso (requiere el valor de incremento para el contador)

m = valor inicial

N = valor final

S = incremento del contador

i : variable del contador

#Valor inicial #Valor final FOR i Proceso NEXT

#Valor inicial #Valor final FOR i Proceso #Incremento STEP

START: Similar AL anterior comando FOR excepto que este no tiene um contador

START: Para (requiere dos valores uno inicial y final) NEXT: Siguiente (empieza el contador de uno en uno) STEP: Paso (requiere el valor de incremento para el contador)

#Valor inicial #Valor final START Proceso NEXT

#Valor inicial #Valor final START Proceso #Incremento STEP

DO: Este comando repite un proceso hasta que La comparación efectuada o valor sea verdad para finalizar el

proceso iterativo

DO: Hacer (empieza a realizar el proceso que contiene)

UNTIL: Hasta que (espera un valor verdadero para finalizar)

END: Termina (finaliza el comando DO)

DO Proceso UNTIL comparación o

número 1 o 0 END

Page 31: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

31

DO (caso especial): Este caso es cuando se tiene dos procesos a realizar, esto no se podría codificar

normalmente, la única manera es introduciendo el comando IF dentro del comando y realizar una comparación

inversa

DO Proceso 1 UNTIL comparación o

número 1 o 0

IF comparación o número 1 o 0

NOT THEN Proceso 2 END

END

WHILE: Similar al comando DO excepto que este primero comprueba, luego hasta que sea verdadero sigue

realizando la iteración.

WHILE: Mientras (espera un valor verdadero para continuar)

REPEAT: Repetir (vuelve a realizar el procedimiento)

END: Fin (finaliza el comando WHILE)

WHILE comparación o número 1 o 0

REPEAT Proceso END

IFT: Este comando es igual al comando IF con la unica diferencia que solo acepta una acción en cada parte. IF A THEN B END -> A B IFT

IFTE: Similar al comando IFT pero además realiza el proceso ELSE y solo acepta una acción en cada parte.

IF A THEN B ELSE C END -> A B C IFTE

A: Comparación

B: Proceso si es verdad

C: Proceso si es falso

Page 32: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

32

3.14 Comandos de la sección ERROR

DOERR: Permite crear un mensaje de error en un recuadro en la parte central de la pantalla. También este

comando llama a un error específico mediante su número hexadecimal

ERRN: Devuelve el número del último error ocasionado en modo hexadecimal.

ERRM: Devuelve el mensaje del último error ocasionado en string.

ERRO: Elimina del la memoria temporal el último error ocasionado.

LASTARG: Devuelve en el nivel 1 el último comando

IFERR: Este comando verifica si existe algún error en el momento de ejecución de una determinada sección

de programa:

IFERR: Cerifica si existe algún error (inicio del comando)

THEN: Entonces (si existiera algún error efectúa una instrucción determinada)

ELSE: De otra manera (si no, efectúa otra instrucción determinada)

END: Fin (finaliza el comando IFERR)

3.15 Comandos de la sección RUN

Sirve para verificar si existe algún error en la ejecución de algún programa y nos permite ver su procedimiento

paso a paso.

DBUG: Este activa un programa al modo RUN para ser ejecutado paso a paso.

SST: Empieza a correr el programa paso a paso, en la parte superior de la pantalla se puede visualizar el

comando que se está llevando a cabo.

SST->: Similar a SST pero esté entra en detalle en cada procedimiento

NEXT: Este muestra los dos siguientes comandos a ejecutarse.

HALT: Interrumpe la ejecución de un programa, similar a PROMPT

KILL: Este comando interrumpe el modo RUN del programa.

OFF: Puede ser utilizado para apagar la calculadora dentro de un programa.

Page 33: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

33

ANEXOS

Page 34: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

34

Page 35: Programación en User Rpl Por Uber Gutierrez Rocha

Expositor: Uber Pablo Gutierrez Rocha Curso Programando en User-RPL

35

BIBLIOGRAFÍA

hp 49g+_user's guide_Spanish (Guía del usuario en Español de la hp 49g+)

Cálculo científico y técnico con HP49g/49g+/48gII Francisco Palacios

Programación en User-RPL Jorge Ayala Niño de Guzmán

www.adictoshp.org

www.hpcalc.org