Regresar | Me lo bajo |
Hay numerosas formas de solicitar al usuario los datos requeridos por un programa. La serie G tienen ventajas sobre la S ya que posee dos herramientas más. Las siguientes son las formas más usuales ya que si nos vamos al lenguaje System RPL encontraríamos otras maneras, incluso hay muchos programas que nos ofrecen herramientas para lograr este mismo fin. También se puede señalar que con un poco de imaginación podemos usar lo que sigue para dar formato a las salidas, esto es, para presentar las soluciones de nuestros programas. Pero eso sería motivo de otro artículo, vamos a comenzar por las entradas.
Ejemplo:
\<< "Dame el ancho y alto" PROMPT * "A" \->TAG \>>
Ejemplo:
\<< RCLMENU \->menu
\<< { { "ANCHO" \<< 'AN' STO \>> } { "ALTO" \<< ' AL' STO \>> } { } { "CONT" \<< CONT \>> } }
TMENU CLLCD "Pon en la pila los \10 datos y presiona la \10 tecla de menú adecuada"
3 DISP 3 FREEZE HALT AL AN * "A" \->TAG { AL AN } PURGE menu MENU
\>>
\>>
\10 simboliza el retorno de carro/nueva línea que corresponde al carácter 10. Todos los caracteres precedidos por la barra "\" son caracteres de la HP que no tienen equivalente en el PC y se traducen así. Puedes ver la tabla de equivalencias en la pág. 27-17 del manual de la HP48 G o en la 663 del de la HP48 S.Es otra versión del programa anterior, vemos que el código aumenta pero también lo hace la claridad para el usuario. Es mejor crear un menú para que éste lo tenga más fácil, eso es lo que hacemos al principio con TMENU (también podía haberse creado en el ejemplo de PROMPT), a continuación detenemos el programa presentando un mensaje. El usuario pone en la pila los datos y presiona las teclas de menú apropiadas que los guardan en las variables AL y AN, a continuación presionando la tecla de menú CONT el programa continúa calculando el área y poniendo el resultado etiquetado en la pila. Finalmente borramos las variables utilizadas y volvemos al menú inicial guardado en la variable local 'menu'. Es una norma de educación que el programa deje la calculadora tal como la encontró.
![]() | ![]() | ![]() |
Fig. 1 | Fig. 2 | Fig. 3 |
Ejemplo:
\<< "Dame los datos" { ":Largo:\10:Ancho:" { 1 0 } V } INPUT OBJ\-> * "A" \->TAG \>>
![]() |
Fig. 4 |
![]() | ![]() | ![]() | ![]() |
Fig. 5 | Fig. 6 | Fig. 7 | Fig. 8 |
![]() | ![]() | ![]() |
Fig. 9 | Fig. 10 | Fig. 11 |
Ejemplo:
El símbolo @ (arroba) inicia un comentario en el lenguaje User RPL, lo que se escribe tras él en la misma línea no se compila y no sólo eso sino que si tras guardar el programa se vuelve a editar, los comentarios han desaparecido. La calculadora compila el programa al guardarlo en una variable, en ese momento deshecha todo lo que haya en una línea tras las arrobas.
\<< WHILE @ Iniciamos una cláusula WHILE REPEAT "AREA DE UN RECTANGULO" @ Título de la caja {{"NOMBRE" "" 2}{ }{"LARGO" "LADO INFERIOR" 0}{"ALTO" "" 0}} @ Definición de los campos { 2 0 } @ Formato de los campos {"Rectángulo" NOVAL NOVAL} @ Valores de RESET { NOVAL 4 2 } @ Valores iniciales INFORM @ Muestra la caja de diálogo y el menú (con NEXT obtenemos el siguiente) REPEAT @ Vemos si se ha dado OK (hay un 1 en el nivel 1) o CANCEL (hay un 0) IFERR @ En caso de que haya sido OK, iniciamos la cláusula de captura de errores LIST\-> DROP * "área" @ Deshacemos la lista que INFORM ha devuelto y hacemos L * H IF 3 PICK NOVAL \=/ @ Si el campo NOMBRE (que estará en el nivel 3 de la pila) no está vacío THEN " de " + ROT + @ formamos la cadena "Area de NOMBRE" para el mensaje solución. ELSE ROT DROP @ Si NOMBRE=NOVAL, borramos el nivel 3. La cadena será sólo "área" END "\10" + SWAP + MSGBOX @ Añadimos un retorno de carro y la solución a la cadena y la mostramos THEN @ Si al hacer L * H, son L=NOVAL o H=NOVAL, se produce un error "Tienes que darme el largo y el alto" MSGBOX 3 DROPN @ Mostramos un mensaje y borramos la pila END @ Finaliza la captura de errores END @ Finaliza la cláusula WHILE REPEAT \>>La pantalla del programa tras introducir el nombre "CAJA" corresponde a la Fig. 12, la solución va en la Fig. 13. Si hacemos "Reset all", tendremos la Fig. 14. Si tras ejecutar RESET damos OK obtendremos la Fig. 15 ya que se producirá un error al multiplicar el ancho (NOVAL) por el alto (también NOVAL). Si intentamos introducir en un campo un dato que no sea del tipo expresado en la definición de campos (ejemplo: un real (TYPE= 0) en el campo NOMBRE que sólo admite cadenas (TYPE= 2)), obtendremos la Fig. 16.
![]() | ![]() | ![]() |
Fig. 12 | Fig. 13 | Fig. 14 |
![]() | ![]() |
Fig. 15 | Fig. 16 |
Ejemplo:
\<< WHILE @ Iniciamos una cláusula WHILE REPEAT
"CALCULO DE AREAS" @ Título de la caja de selección
{ Círculo { "Triángulo" 2 } { "Rectángulo" 3 } @ Lista con las posibilidades de selección
{ "Pentágono regular" 4 } { "Hexágono regular" 5 } }
1 @ Posición preseleccionada
CHOOSE @ Se muestra la caja de selección y el menú (OK o el CANCL, OK)
REPEAT @ Vemos si se ha dado OK (hay un 1 en el nivel 1) o CANCEL (hay un 0)
\-> n @ Guardamos en la variable local 'n' lo que CHOOSE deja en la pila
\<< CASE n 2 == @ Si 'n' es un 2
THEN TRIAN @ Ejecutamos el programa TRIAN que nos pide datos y hace el cálculo
END n 3 == @ del área del triángulo.
THEN RECTAN @ Si hemos seleccionado la tercera opción, se ejecuta RECTAN
END n 4 ==
THEN PENTA @ La cuarta corresponde al programa PENTA
END n 5 ==
THEN HEXA @ La quinta al HEXA
END n EVAL @ Si no era ninguna de las anteriores, en 'n' estará almacenado 'Círculo',
END @ que es a la vez el nombre del programa y de una selección
\>> @ Para ejecutarlo, hemos de ponerlo en la pila y ejecutar EVAL.
END @ Termina la cláusula WHILE REPEAT
\>>
La pantalla generada por este programa corresponde a la Fig. 17
![]() | ![]() | ![]() | ![]() |
Fig. 17 | Fig. 18 | Fig. 19 | Fig. 20 |
![]() | ![]() |
Fig. 21 | Fig. 22 |
Regresar | Me lo bajo |