You are on page 1of 39
MANUAL DE PROGRAMACION DE LA HP EN USER RPL Por: voies co" oo Ti g8B 9 BB KD Ti iPy Great cot eV ea te Piety, texhem cosine ne” eo LEH OF, CP, EP Ss | GG ED [467s > wise Gf | GiEbEEEE | CeBl&p ey a & José Alembert Iturbe Vasquez OL INTRODUCCION.____ OBJETO Y TIPOS DE OBS MANEJO DELAPILA == INTRODUCCION A EL LENGUAJE USER-RPL___— MODO DE OPERACION RPN. PROGRAMA. MODULO, VARIABLES VARIABLES GLOBALE VARIABLES LOCALE VARIABLES LOCALE: ENTRADA DE DATOS WIILE...REPEAT. . SALIDA DE DATOS. DISP ._ : >GROB PIC! PDIM RAMA PROGRAMAS DE ESEMPLO___ O22 INTRODUCCION OBJETO Y TIPOS DE OBJETOS Se llama objeto todo elemento que existe en la calculadora los cuales contienen una determinada informacién: los objetos pueden ser: numero real, numero complejo, cadenas, matriz, lista, nombre, programa, grafico, numero binario, etc. A cada objeto la HP le designa un numero Para saber el tipo de objeto, se coloca este en el nivel 1 de la pila y luego se ejecuta el comando TYPE, el resultado es un numero real el cual identifica el tipo de objeto. MANEJO DE LA PILA La pila es como un almacén de datos, a cada objeto le corresponde un nivel: Fe aye eC Re HOKE. Ejemplo: En el nivel 2 de la pila esta el objeto [9. 6.] Es muy importante comprender y saber manejar la pila para poder utilizar éptimamente la calculadora estos comandos se ven entrando a STACK (<4) (A) en la HP48 y TOOL STACK(menu) en la HP49 algunos comandos importantes para el manejo de la pila son: 03 DUP. Copia el objeto del nivel 1 de la pila SWAP. Intercambia los objetos del los niveles 1 y 2 DROP. Borra el objeto del nivel 1 OVER. Copia el objeto del nivel 2 ROT. _ Traslada el objeto del nivel 3 al nivel 1 ROLL. Traslada el objeto del nivel n+1 al nivel 1 ROLLD. Traslada el objeto del nivel 2 al nivel especificado PICK. Copia el objeto del nivel n+1 al nivel 1 DEPTH. Nos da el numero de objetos en la pila DUP2. Copia los objetos de los niveles 1 y 2 DUPN. Copia los objetos del nivel 2 hasta n+1 DROP2. Borra los objetos de los niveles 1 y 2 DROPN. Borra los n+1 objetos de la pila INTRODUCCION A EL LENGUAJE USER-RPL La programacién en USER-RPL usa lo que se denomina como notacién polaca inversa (RPN: Reverse Polish Notation) MODO DE OPERACION RPN Nosotros indicamos las operaciones del modo algebraico, por ejemplo si queremos representar la suma de 2 nimeros A y Bescribimos la operacién de la siguiente forma ‘A+B! este modo es el algebraico y es el modo al que estamos acostumbrados, El modo RPN nos da una nueva forma de indicar operaciones donde primero escribimos los argumentos (A y B) y luego indicamos el comando el ejemplo anterior en el modo RPN se escribiria AB+ o4 Donde A y B son los argumentos y + es el comando que hace que se sumen esto nos da el mismo resultado que ‘A+B! El modo RPN esta asociado al manejo de pila, revisando paso a paso “A B +” lo primero escrito es A (argumento) esto indica a la calculadora colocar A en el primer nivel de la pila: lo segundo escrito es B (argumento) esto indica a la calculadora colocar B en el primer nivel de la pila y desplazar una hacia arriba los demas elementos dela pila” lo tercero escrito es + (comando) este comando indica a la maquina que sume los niveles 1 y 2 de la pila lo que nos da la respuesta A+B o5 Ejm 2: Para escribir la ecuacion 2*(A-B) A*(4+1) Para escribir en modo de RPN se pueden idear muchas formas aqui tenemos 2 1) 2AB-* A DUP 1+*/ 2) 2AB-*AA+*/ analizaremos la primera forma “2 A B - * A DUP 1 + */” Estado inicial de la Pila:_ 2. (argumento) se coloca en el nivel uno de la pila si existen objetos cualesquiera en la pila simplemente se desplazan hacia arriba ‘ay? Wen Reo 2 nivel uno de la pila "SBSET8 ¥y SUMTER B (argumento) se coloca en el nivel uno de la pila A (argumento) se coloca en ‘yy Wei y 06 - (comando) resta el ‘Nivel 2 menos el Nivel 1 ee a : “OBJETO de la pila de la pila "SEIS |b 28) pila os * (comando) Multiplica los niveles 1 y 2 de la pila 07 /(comando) Divide el Nivel 2 entre el Nivel 1, lo que nos da el resultado But *) ong ean F Les recomiendo acostumbrarse a este modo por que es muy util sobre todo en programacion PROGRAMA Un programa es un conjunto de instrucciones que damos a la maquina para que las realice, Se puede decir que las ecuaciones anteriores son pequefios programas porque son instrucciones que damos a la maquina, Pero para ser programas las instrucciones deben estar dentro de los delimitadores « » Ejm: Un pequefio programa que halle la hipotenusa por la ecuacion de Pitagoras es «SQ SWAP SQ + \/ » SWAP (comando) intercambia los objetos de los niveles 1 y 2 (Repasar manejo de pila) SQ (comando) halla el cuadrado del nivel 1 de la pila { (comando) halla la raiz cuadrada del nivel 1 de la pila Almacenamos el programa en una variable (ver variable global) Escribimos el Programa...................« SQ SWAP SQ + 4! ».....(objeto) o8 Escribimos el nombre del Programa......"PROGI"...........0.00..000. 02. (objeto) « SQ SAP S94 F >| Escribimos STO (comando) Para ejecutar el programa entramos presionamos la tecla VAR y nos muestra un ment donde esta PROG1 Este programa toma 2 datos de la pila Para correr el programa solo tenemos que presionar la tecla de funcién correspondiente a PROGI en este ejemplo (letra A) luego nos da como resultado la hipotenusa Analizamos el programa Ejemplo: Tenemos Ja a pil : SWAP (comando) intercambia los objetos ly 2dela pila 09 J, (comando) halla la raiz cuadrada del argumento que seria la hipotenusa Ree 7] eee MODULO Un programa como dijimos anteriormente es un conjunto de instrucciones que damos a la maquina para que las realice, estas instrucciones también pueden ser otros programas (Ilamados modulos). Ejm: «3 4 PROGI 1 3. J. PROGI + » En este ejemplo PROG! es un modulo del programa” principal 10 VARIABLES Existen tres tipos de Variables: VARIABLES GLOBALES Las Variables globales son guardadas en la memoria de usuario y son independientes del programa que las llama, aparecen en el ment var. Su uso dentro de los programas representa una desventaja ya que aparte de ser mas lentas, si deseas crearlas tienes que hacer uso del comando STO y para borrarlas necesitas del comando PURGE Ejemplo: «6 'X' STO 8'Y' STO 'X*2+Y’2' EVAL » al ejecutar el programa notaremos que han aparecido dos nuevas variables ( X Y ) en el directorio actual (presionamos VAR). Si queremos que las variables no aparezcan tendriamos que hacer lo siguiente: « 6 'X' STO 8 'Y' STO 'X*2+Y’2' EVAL 'X' PURGE 'Y' PURGE » En el programa anterior usamos el comando PURGE, 2 veces si queremos optimizar el programa para ahorrar bytes usamos: « 6 'X' STO 8 'Y' STO 'X*2+Y42' EVAL { X Y } PURGE » a4 si queremos optimizar aun mas convertimos la ecuacion a modo RPN «6'X'STO 8'Y'STO X2*Y2%+ {XY} PURGE » VARIABLES LOCALES Las variables locales solo sirven dentro de programas es decir en la ejecucién de programas, para crearlas se usa el comando > estas variables se borran automaticamente terminado el programa, el esquema de una variable local es el siguiente: «(Partel) > nombrel nombre2 « (Parte2) » (Parte3) » las variables estan situadas entre > y « ,almacenan los primeros niveles de la pila con los nombres respectivos y solo sirven dentro de los delimitadores « » que se encuentran a continuacion de los nombres de las variables En el esquema de ejemplo vemos 2 variables locales (nombrel nombre2) que almacenaran los niveles 2 y 1 de la pila respectivamente. Solo pueden usarse en la Parte2 del programa que esta dentro de los delimitadores Ejemplos: « 21030010 XYZ «XY+Z/» » Las variables son X Y Z almacenan los objetos 210 300 10 respectivamente, y como se usan dentro de los delimitadores trabajan como variables, dando como resultado 12 210 300+ 10 / queesiguala51 « 21030010 XYZ «» XY+Z/» También las variables son X Y Z_ y almacenan los objetos 210 300 10 respectivamente, y como se usan fuera de los delimitadores no trabajan como variables, solamente trabajan como nombres: 'X' 'Y' + 'Z' / lo que nos da como resultado '(X+Y)/Z' « 210 300 10 X Y Z (X+YY/Z' » También las variables son X Y Z_ y almacenan los objetos 210 300 10 respectivamente, En este caso la ecuacién esta de modo algebraico, los delimitadores son '' en lugar de «». Las variables estan dentro de los delimitadores '' , trabajan como variables y da como resultado 51. Notese que en este caso no usamos el comando EVAL (evaluar) VARIABLES LOCALES COMPILADAS Las variables locales compiladas vienen a ser variables que no slo existen dentro de los delimitadores sino dentro de otro médulo que se ejecute bajo el programa principal. Para que sea variable local compilada el nombre de estas variables debe empezar con ejemplo. « > X €Y « PROG2 X * X +» >» En el ejemplo el programa toma dos valores de la pila, una en X que es una variable local y otraen ©Y_ que es una 13 variable local compilada. Dentro del .programa se llama al modulo PROG2, el programa PROG2 seria: « €Y 3% €Y /» Notese que no hay necesidad de crear la variable ©Y pues esta es visible desde el programa que lo Ilamé. El comando STO sirve tambien para guardar variables locales y locales compiladas siempre y cuando siempre y cuando ya hayan sido creadas y el comando STO debe estar dentro de los limitadores. Ejemplo « 210 300103 XYZ «XY+Z/ 'X'STO 1X + » » ENTRADA DE DATOS En los programas ejemplos anteriores los programas tomaban datos de la pila, Pero dentro de la ejecucion de un programa nos puede interesar tomar datos desde el teclado, Para ello la calculadora tiene herramientas que te piden los datos y los colocan en la pila, Las comandos mas conocidos son INPUT, CHOOSE, INFORM estos comandos se pueden encontrar entrando a PRG IN (menu) INPUT Este comando necesita 2 objetos en la pila Una cadena que contendra el mensaje ejm: “Ingrese Datos” Una lista con las indicaciones para este comando ejm: {a “Dato” 4. } 14 Este comando se entendera mejor con algunos ejemplos: Ejemplo 1: «“Ingrese Didmetro” { “:Dato:?’? } INPUT » ° «“Ingrese Diametro” “:Dato:” INPUT » Nos da como respuesta en la Pila la cadena “:Dato:150” Ejemplo 2 « “Ingrese Diametro” { “:Datol: :Dato2: :Dato3:” } INPUT » la parte resaltada es una cadena, en este programa también se puede obviar las Ilaves {} el resultado es: Ebates t. is a este programa se puede pulir: « “Ingrese Diametro” { a “:Datol: :Dato2: :Dato3:” {1 0} V} INPUT » a : activa el teclado alfabético {1 0} : nos indica donde se ubicara el cursor Vv: ' controla errores Nota si en lugar de {1 0} cambiamos de signo el primero es decir {-1 0} el cursor cambia al modo insert (sobrescribir) Al ejecutar el comando INPUT nos da como resultado una cadena caracteres, para reconocer los objetos dentro de las cadenas debemos quitar las comillas “” para ello usamos el comando OBJ ejemplo: « “Ingrese Diametro” { & “:Datol: :Dato2: :Dato3:” {1 0} V} INPUT OBJ> » INFORM El comando INFORM es otro tipo de entrada de datos y necesita de los siguientes objetos « "Titulo" { {"Nombrel:" "Comentariol" Tipos} {"Nombre2:" "Comentario2" Tipos} {"Nombre3:" "Comentario3" Tipos} 16 { #Columnas #Espacio} { 1Reset 2Reset 3Reset } { 1Predeterminado 2Predeterminado 3Predeterminado} INFORM » Contiene un titulo y 4 listas La primera lista contiene una sublista por cada dato en este caso 3, cada sublista contiene el nombre el comentario y los tipos de objeto aceptados. La segunda lista contiene el nimero de columnas y el espacio de separacién con el nombre. La tercera lista contiene valores para cada dato que apareceran en caso de que se presione RESET La cuarta lista contiene los datos predeterminados. Ejemplo1 considerando todos los indicadores: « “INTRODUZCA DATOS” { “LN” “L Nominal” 1} { “LR” “L Real” 1} {“T” “T° Calibrada” 1} {“P” ”Tencion Calibrada (Kg)” 1} { “kK” ”K de Temperatura” 1} {“w” “CTE (Kg/m)” 1} { “Mts” ”Lts T° “ 3. 4} { “Mts V” “Lts T™ 3. 4} } {2.1.} {40.39 20.10 ,000010 025°" } £30.“ 20. 5 .000012.025“"""} 17 INFORM » cS TRNDUCR Bator ee + By 5 +800012 © 2025 wert meet honinat Ejemplo2 obviando algunos indicadores «'Agenda" { {"Nombre:" "Escribe tu nombre" } {"Teléfono:" "Escribe tu # de teléfono" } {"Correo:" "Escribe tu correo electronico" } scribe ty nondre ON na ES Ejemplo3 obviando todos los indicadores «'Agenda" {"Nombre:" "Teléfono:" "Correo:"} {} {} {} INFORM » EI comando INFORM te da como respuesta: 18 Los datos en una lista y el numero | (en caso de presionar enter) El numero 0 (en caso de presionar cancel) CHOOSE El comando CHOOSE se utiliza en caso de entrada de datos limitado y se puede elegir una opcion Ejemplo «“Elige” a TITULO {{“Opcion 1” “Respuesta 1”} {“Opcion 2” “Respuesta 2”}..._ LISTA DE OPCIONES {“Opcion 3” “Respuesta 3”} } 1 .... OPCION SOMBREADA CHOOSE » El comando CHOOSE da como resultado: La respuesta y el numero | (en caso de presionar enter) EI numero 0 (en caso de presionar cancel) ESTRUCTURAS CONDICIONALES Las estructuras condicionales hacen que la calculadora tome una decisién en el transcurso de la ejecucién de un programa, Las estructuras condicionales son: {9 TF... .THEN. ..ELSE...END 1a traduccién es (Si. . .Entonces. . Caso contrario. . .Fin), la estructura es como sigue: «(secuencias del programa) IF (condicion) THEN (secuencias a ejecutar si la condicién es verdadera) ELSE (secuencias a ejecutar si la condicién es falsa) END (secuencias del programa) » Si cumple la condicién entonces la condicion es verdadera (VERDADERO = 1) Si no cumple la condicién entonces la condicion es falsa (FALSO = 0) La condicién puede estar antes o después de “IF” es decir el programa podria ser: «(secuencias del programa) (condicion) If THEN (secuencias a ejecutar si la condicién resulta verdadera) ELSE (secuencias a ejecutar si la condici6n resulta falsa) END (secuencias del programa) » Ejemplo: «l IF THEN "SECUBNCIA A" ELSE “SECUENCIA B” END » . En este ejemplo saldra “SECUENCIA A” porque 1] = VERDADERO si hubieramos puesto 0 en lugar de 1 nos daria como resultado “SECUENCIA B” 20 IF, ..THEN...END La traduccion es (Si. . Entonces. . . Fin), tiene la misma logica de la anterior solo que el programa no hace nada si la condicién resulta falsa «(secuencias del programa) (condicion) IF THEN (secuencias a ejecutar si la condicin resulta verdadera) END (secuencias del programa) » Ejemplo: «> N « 'N>0! IF THEN "POSITIVO" END » » El programa tomard un valor (variable local N), comprueba que el numero N sea mayor que 0 si es mayor que cerd nos da como respuesta 1 (verdadero) devolvera “positivo” y si N es menor que cero nos da 0 (falso) y no realizara ninguna accion. CASE. ..END Con "IF" solo se puede tomar una decisién entre dos condiciones, por lo que si se quiere tomar una decision de varias condiciones se féndria que colocar varios "IF" unos dentro de otros o de forma consecutiva, Para facilitarnos surgié la "CASE", le estructura es como sigue: « CASE (CONDICION 1) THEN (SECUENCIA 1) END (CONDICION 2) THEN (SECUENCIA 2) END (CONDICION 3) THEN (SECUENCIA 3) END (SECUENCIA POR DEFECTO) END » 21 En este caso hay tres opciones y una por defecto, CASE solo ejecuta una opcidn, esta es la secuencia correspondiente a la primera condicién verdadera. Si no encuentra ninguna ejecuta la secuencia por defecto. EJEMPLO CON "IF" «DN « IF N 0 == THEN "CERO" ELSE IF N 0> THEN "POSITIVO" ELSE "NEGATIVO" END END » » EJEMPLO CON "CASE" «>N « CASE N 0 == THEN "CERO" END N 0> THEN "POSITIVO" END "NEGATIVO" END » » CONTROL DE ERRORES IFERR...THEN...ELSE...END Esta estructura es muy similar a “IF” solo que en es te caso la condicién depende si se produce 0 no un error: IFERR (control de error) THEN (secuencias a ejecutar si se produce un error) ELSE (secuencias a ejecutar si no se produce un error) END (secuencias del programa) 22 El comando IFERR inicia la deteccién de errores si el error se produce fuera de la etapa de (control de error) este error no sera controlado y terminara el programa. También podemos obviar ELSE si es que no se quiere hacer nada en caso de que no haya error ESTRUCTURAS ITERATIVAS O BUCLES Estas estructuras sirven para hacer iteraciones (repetir una secuencia varias veces), Estas herramientas son muy utiles START ... NEXT, START ... STEP Esta estructura nos servira para realizar un numero fijo de iteraciones. « (secuencias del programa) (Inicio) (Fin) START (secuencias a repetirse) NEXT (secuencias del programa) >> La estructura requiere de un numero inicial y final para comenzar a iterar, START inicia la iteracion, NEXT realiza la comprobacién y continia 6 finaliza la iteracién, el contador para las iteraciones se incrementa en 1 Ejemplo: « D>obj « 17 START obj NEXT » » Este programa toma un objeto de la pila lo almacena en obj y lo repite 7 veces 23 La estructura START... STEP es similar, la unica diferencia es que antes de la palabra STEP debemos colocar el valor de incremento del contador, en el caso de la estructura anterior es 1, pero muchas veces queremos incrementos de 2, 3, etc, o también -1, -2, ete. «> obj « 17 START obj 2 STEP »» Este programa toma un objeto de la pila lo almacena en obj y lo repite 4 veces FOR... NEXT, FOR... STEP Estas estructuras son casi iguales a las anteriores con la unica diferencia de que estas tienen un contador (variable) al que se puede llamar durante la iteracion, « (secuencias del programa) (Inicio) (Fin) FOR (Contador) (secuencias a repetirse) NEXT (secuencias del programa) » La estructura requiere de un ndmero inicial y final, FOR inicia la iteracién, se declara una variable contador y NEXT realiza la comprobacién y continua 6 finaliza la iteracion el contador se incrementa en |, Ejemplo: « >n « i} In FOR i it NEXT »» 24 El ejemplo toma un valor n, devolvera una lista con valores desde 1 hasta n Si deseas incrementos debes de utilizar STEP, en cuyo caso ~ debemos colocar los incrementos antes de esta instruccion. Ejemplo: «>n« nl FORi i+ -1 STEP » » E! ejemplo toma un valor n, devolvera una lista con valores desde n hasta 1 DO... UNTIL... END. Es una estructura iterativa que requiere de una condicion para culminar La traduccién es (Hacer. . Hasta. . .FIN) La estructura es como sigue « (secuencias del programa) DO (secuencias a repetir) UNTIL (Condicion) END (secuencias del programa) » “UNTIL” puede estar antes de las (secuencias a repetir) es decir el programa podria ser: « (secuencias del programa) DO UNTIL (secuencias a repetir) (Condicién) END (secuencias del programa) » 25 Inicia en DO UNTIL, luego vienen las secuencias a ejecutar, END se encarga de evaluar la condicién. Las condiciones son las mismas que para las estructuras “IF” si es Verdadera (1) termina el bucle si es Falsa (0) se repite el bucle. Ejemplo: « 0 DO UNTIL DROP “Ingrese Numero positivo” “” INPUT OBJ> 0< END » WHILE...REPEAT...END La traduccion (Mientras. . Repetir. . .Fin) El WHILE tiene como caracteristica fundamental el preguntar una condicion antes de ejecutar el proceso. La estructura es como sigue: « (secuencias del programa) WHILE (Condicion) REPEAT (secuencias a repetir) END (secuencias del programa) » Inicia con WHILE, La palabra REPEAT determina si se ejecutaré el bucle, La palabra END determina el fin de las secuencias a repetirse.. Ejemplo: « WHILE “Ingrese Numero positivo” “” INPUT 26 OBJ 0< REPEAT “ERROR” MSGBOX END “CORRECTO” » SALIDA DE DATOS Generalmente los resultados de un programa se muestran al final de este (en la pila). Puede que nos interese presentar datos de salida durante la ejecucién de un programa, para ello la calculadora tiene: DISP Este comando nos permite mostrar cadenas en la pantalla de texto, Tiene la siguiente estructura: « “TEXTO” (numero de linea) DISP » Ejemplo: « “CURSO HP” 4. DISP » Este comando te muestra en la pantalla el texto en el numero de fila indicado, Pero lo hace solo hasta que termina el programa por eso a veces no lo notamos para notarlo debemos indicar a la maquina que espere esto se hace con el comando WAIT Ejemplo: « “CURSO HP” 4. DISP 5. WAIT » E! (5. WAIT) hace que Ia maquina espere 5 segundos 27 Si pondriamos (0. WAIT) esto indicaria que la maquina espere hasta que se presione una tecla, luego te da el numero de la tecla que has presionado (cada tecla tiene su numero) Para borrar la pantalla se usa el comando CLLCD (CLLCD y DISP generalmente van acompaiiados) Ejemplo: « CLLCD “CURSO HP” 4. DISP 0. WAIT » MSGBOX El comando MSGBOX muestra mensajes en una caja « "Texto" MSGBOX » EJEMPLO: «CLLCD "CURSO HP" MSGBOX » El comando CLLCD borra la pantalla. Ejemplo de DISP Y MSGBOX « “XXXXXXXXXXXXXXXXXXXXXX" {1234567} DISP “FONDO DE PANTALLA” MSGBOX » En la HP 49 existe el ocmando SCROLL que nosmuestra cualquier objeto Otra forma de salida de datos es mediante graficos 28 GRAFICOS EN LA HP La HP tiene 2 formas de salida Una es en la pantalla de textos (donde se encuentra la pila) esta pantalla es la que se uso en los ejemplos anteriores (Para verla durante la ejecucién de en un programa se usa TEXT) Otra es la pantalla de graficos se entra presionando la tecla (4) (Para verla durante la ejecucién de un programa se usa PVIEW) Grafico.- Un grafico esta representado por un conjunto de pixeles apagados y encendidos Pixel.- Un pixel es la unida minima de un grafico (apagado 4) (prendido m) que al juntarse nos da un grafico 10 pixeles 10 pixeles 29 Las dimensién del grafico es (pixeles X) por (pixeles Y), en este grafico es 10 por 10 Cada pixel tiene una determinada coordenada y se denota asi { #Xd #Yd} La pantalla de la HP tiene un tamajfio de 131 por 64 pixeles Algunos comandos itiles para trabajar con graficos son: >GROB Este comando convierte cualquier tipo de objeto a un grob (grafico) de la HP. La estructura es como sigue: « (Objeto) (# de tamafio) ®GROB » EI (# de tamafio) puede ser 1, 2 y 3 que nos indica el tamafio de letra que usara PICT Este es el nombre de la pantalla de graficos (PICTURE) se puede considerar como una variable con la que se guarda la pantalla de graficos Ejemplos: « Grob PICT STO » Almacena el Grob en la pantalla e graficos (Grob debe ser un grafico) « “INGENIERIA CIVIL” 2 >GROB_ PICT STO » Como indicamos antes para verlo entramos a la pantalla de graficos con la tecla (<4) 30 « PICT RCL ». .... Copia el contenido de la pantalla de graficos en la pila « PICT PURGE ».... Borra la pantalla de graficos PDIM Da dimensiones a PICT (pantalla de graficos) Ejemplo: « #150d #140d PDIM » Hace que PICT sea un grafico de 150 * 140 PVIEW Sirve para ver la pantalla de graficos durante la ejecucién de un programa La estructura es como sigue: « {#Xd#Yd} PVIEW » {#X #Y} son las coordenadas del pixel que aparcera en la esquina superior izquierda de la pantalla, este se usa cuando el grafico es mayor de 131 * 64, pero generalmente no son mayores y se usa {#0d #0d} Este comando muestra PICT solo hasta que termine el programa a este ultimo ejemplo se le debe afiadir WAIT para que perdure su efecto (ver DISP) Ejemplo: « “Curso de Programacion” 2 }GROB. ...... Crea un grafico PICTSTO i ttsstnee Lo almacena en PICT {#Xd #Yd} PVIEW Lo muestra 5 WAIT . Lo detiene 5 segundos » Bi LCD> Captura la pantalla de texto y la coloca en la pila >LCD Muestra un grafico en la pantalla de texto (Parecido a DISP) « Grob >LCD » —........ (Grob debe ser un grafico) a este ultimo ejemplo se le debe afiadir WAIT para que perdure su efecto (ver DISP) NEG En graficos este comando invierte los colores REPL Este comando pega un grafico sobre otro su estructura es la siguiente « Grobl {#X#Y} Grob2 REPL » Este programa pega el grafico Grob2 sobre el Grobl en las coordenadas X Y Si quisiéramos pegar sobre PICT la estructura seria « PICT {#X#Y} Grob2 REPL » GOR Este comando es similar REPL superpone un grafico sobre otro su estructura es la siguiente « Grobl {4X #Y} Grob2 GOR » Este programa superpone el grafico Grob2 sobre el Grobl en las coordenadas X Y BQ GXOR Este comando tambien es similar superpone (apagando los pixeles doblemente prendidos ) un grafico sobre otro su estructura es la siguiente « Grobl {#X#Y} Grob2 GXOR» Este programa superpone el grafico Grob2 sobre el Grobl en las coordenadas X Y DEPURACION DE UN PROGRAMA Al hacer un programa este generalmente contiene errores y mas cuando los programas son grandes y a veces es dificil encontrarlos, muchas veces es necesario analizar el programa, para ello la HP tiene una herramienta muy Importante que es el DBUG que hace que corra el programa paso por paso y asi darnos cuenta de los errores cometidos y pulir el programa. COMO UTILIZAR EL COMANDO DBUG Colocamos el Programa «SQ SWAP SQ + V. »oel nombre de este, 'PROGI' (entre sus delimitadores '') luego entramos al ment PRG luego entramos a RUN (ment de la pantalla) Presionamos DBUG, aparece en la parte superior hit 0 halt (detencién) esto nos indica que el programa esta detenido, para hacerlo correr paso a paso presionamos SST o SST}, la diferencia es que SST| también sirve para depurar subprogramas y médulos, este es una gran herramienta para encontrar errores y nos permite manejar la pila durante el programa. Si se quiere que el programa corra continuamente después de una vez encontrado el error se presiona la tecla CONT, Si se quiere terminar la depuracion se presiona KILL (menu) Analizaremos por este metodo el programa anterior Escribimos 'PROGI' (entre sus delimitadores '') y vamos al meni PRG RUN y presionamos DBUG Los datos 1 234 ya estaban en la pila , caso contrario los escribimos A continuacién veremos paso a paso como depura la maquina el programa presionando SST o SST| para cada paso 1 CERRITO Tr En cada paso de la depuracion la HP te muestra en la parte superior los objetos 0 los comandos que esta ejecutando, Mediante este comando podemos aprender mucho si depuramos programas que no comprendemos. 35 PROGRAMAS DE EJEMPLO Estos ejemplos son de programas de la HP49 los comandos estaran con negrita para poder identificarlo El lector debera comprender para que sirve cada comando usando su guia de bolsillo. Programa Ndupn (Duplica N veces) « DUP 2 SWAP START OVER SWAP NEXT » Programa Axl (Convierte listas a matrices y viceversa) «DUP TYPES # IF THEN STR WHILE DUP "[" POS DUP REPEAT "{" REPL END DROP WHILE DUP "]" POS DUP REPEAT "}" REPL END DROP OBJ> ELSE STR WHILE DUP "{" POS DUP REPEAT "[" REPL END DROP WHILE DUP "}" POS DUP REPEAT "]" REPL * END DROP OBJ> END » Programa teléfono «56 CF IFERR DO 130 START 1000 0.03 BEEP 500 0.03 BEEP NEXT. 3. WAIT UNTIL 0 END THEN END » Programa directorio (muestra los directorios de la ruta actual) « IFERR "DIRECTORIOS:" 15 TVARS 1 CHOOSE THEN 3 DROPN ELSE DROP EVAL END » Programa Codificador (Codifica una cadena) «0 cad n «cad SIZE 'n' STO"" nl START wae -1 STEP cad XOR » » 37 Programa MCD (Calcula el Maximo Comin Divisor de 'a' y 'b') «ODabc « WHILE ab MOD REPEAT ab MOD'c' STO b'a' STO c'b' STO END b » » Programa Factorial (Halla el factorial de un numero) « 1 >NAUX« 1N1-START N AUX * 'AUX' STO 'N' 1 STO- NEXT » » Programa Subir pantalla « #131d #128d PDIM PICT { #0d #0d } LCD REPL PICT { #0d #63d } LCD REPL IFERR DO 164 FORi {40} iR>B+PVIEW NEXT UNTIL 0 END THEN END » 38 Programa HP «#13ld #64d BLANK { # 30d #13d } "PROGRAMAS DEL" 2 GROB REPL { # 41d # 27d} "CURSO HP" 2 GROB REPL { # 70d # 45d } "PULSE ENTER" 1>GROB REPL {} TMENU LCD -1 WAIT » Programa voltea grafico (hp49) «DUP SIZE BR SWAP BSR DUP 8./CEIL 8. *>GYxxX «"GROB"X RDI +"" YRDI OVER+++G DH 21. 1.E99 SUB SREV "1" "X" SREPL DROP "8" "1" SREPL DROP "X" "8" SREPL DROP "2" "X" SREPL DROP "4" "2" SREPL DROP "X" "4" SREPL DROP "3" "X" SREPL DROP "C" "3" SREPL DROP "X""C" SREPL DROP "5" "X" SREPL DROP "A" "5" SREPL DROP "X" "A" SREPL DROP "7" "X" SREPL DROP "E" "7" SREPL DROP "X" "E" SREPL DROP "B" "X" SREPL DROP "D" "B" SREPL DROP "X""D" SREPL DROP + OBJ> Xx- ROB {#0h}+X1.+Y2. DLIST RB SUB » » Ww oO

You might also like