Вы находитесь на странице: 1из 32

MANUAL DE PROGRAMACION HP-PRIME

Se realizan programas para


calculadora hp
SERIES: 49/49G+/50g

LENGUAJE DE PROGRAMACIÓN HP-PPL


TIPO DE PROGRAMACION PROGRAMACION MODULAR

LOS PROGRAMAS TIENEN LAS


CARACTERISTICAS:
 LOS PROGRAMAS SERAN RELIZADOS DE
MANERA QUE PUEDAN MODIFICARSE LOS
DATOS DE INGRESO
 LOS RESULTADOS TENDRAN UNA
PRESENTACION PASO A PASO

TAMBIEN SE DICTAN CLASES


GRUPALES EN PROGRAMACION

CONDIC P1
ION

P2

U
S
E FACEBOOK: leo suca yunga
R
-
R #CELULAR: 939404138
P
L
MANUAL DE PROGRAMACION HP-PRIME

FUNDAMENTOS
DE PROGRAMACIÓN

INTRODUCCION

Este capítulo le introduce a la metodología a seguir para la resolución de problemas con


la calculadora HP-PRIME y con un lenguaje de programación como HP Prime
Programming Language (HPPP).
La resolución de un problema con una calculadora HP-PRIME se hace escribiendo un
programa, que exige al menos los siguientes pasos:

1.-Definición o análisis del problema.


2.- Diseño del algoritmo.
3.-Transformación del algoritmo en un programa.
4.- Ejecución y validación del programa.

Uno de los objetivos fundamentales de este libro es el aprendizaje y diseño de los


algoritmos. Este capítulo introduce al lector en el concepto de algoritmo y de programa,
así como las herramientas que permiten «dialogar» al usuario con la máquina: los
lenguajes de programación.

1.1 Fases de creación de un programa


El proceso de resolución de problemas en LA CALCULADORA HP-PRIME conduce a la escritura
de un programa y su ejecución. Las fases en el desarrollo de un programa pueden resumirse de la
siguiente forma:
1. Analizar el problema consiste en conocer perfectamente en qué consiste y qué resultados se
desean obtener.
2. Planificación de la resolución del problema, dividiéndolo, si es complicado, en una secuencia de
etapas más simples. Esta fase se lleva a cabo EN UN PAPEL, estableciendo lo más claramente posible
la finalidad de cada etapa, los datos que se necesitan de entrada, los datos que producirán en salida,
los algoritmos (ver la Sección 5.2) que se utilizaran. etc.
3. Edición del código fuente, es decir, escritura del mismo utilizando un editor de textos simple (sin
formato) y un lenguaje de programación.
4. Compilación y ejecución del programa al lenguaje máquina.
5. Corrección de errores del programa. Los errores se corregirán en el código fuente, repitiendo los
pasos 3 y 4 tantas veces como sea necesario. Si se producen errores en la lógica del programa, es decir,
si el programa “funciona” pero produce resultados incorrectos, hay que modificar el algoritmo
volviendo al paso 2. Estos errores son los más difíciles de detectar.
6. Documentación. Una vez que el programa funcione correctamente, es conveniente revisar el código
fuente para ordenarlos, eliminar cálculos innecesarios e incluir las líneas de comentario
necesarias, que normalmente deben incluir unas breves explicaciones al principio del código
sobre la finalidad del programa y sus argumentos de entrada y de salida.

1.2Algoritmos
Un ordenador es capaz de realizar “solo” determinadas acciones sencillas, tales como sumar, com-
parar o transferir datos, pero los problemas que normalmente interesa resolver son más
complejos. Para resolver un problema real es necesario, en primer lugar, encontrar un método
MANUAL DE PROGRAMACION HP-PRIME
de resolución y, posteriormente, determinar la sucesión de acciones sencillas (susceptibles de
ser ejecutadas por un ordenador) en que se descompone dicho método.
No todos los métodos de solución de un problema pueden ser puestos es practica en un ordenador.
Para que un procedimiento pueda ser implantado en un ordenador debe ser:

Preciso: estar compuesto de pasos bien definidos (no ambiguos) y ordenados.


Definido: si se sigue dos veces, se obtiene el mismo resultado cada vez.
Finito: tener un número finito de pasos.
Un procedimiento o método para resolver un problema que cumpla los requisitos anteriores se dice
que es un algoritmo. Se puede dar por tanto la siguiente definición:

Un algoritmo es un método para resolver un problema mediante una secuencia de pasos bien
definidos, ordenados y finitos.
Para que se pueda ejecutar el algoritmo es preciso, además, que se disponga de las “herramien-
tas” adecuadas para llevar a cabo cada uno de los pasos. Si no es así, estos deberán, a su
vez, ser descompuestos en una secuencia (algoritmo) de pasos más simples que si se puedan llevar
a cabo.

Un programa es una sucesión de ´ordenes que describen un algoritmo, escritas de forma que
puedan ser entendidas por la calculadora.
En un algoritmo (y por tanto en un programa) se distinguen las siguientes acciones:

Entrada: es la información de partida que necesita el algoritmo para arrancar.


Proceso: es el conjunto de todas las operaciones a realizar.
Salida: son los resultados obtenidos.
Un ejemplo elemental es el Algoritmo 5.1.

Algoritmo 1.1 Preparar una taza de té.

Entrada: tetera, taza, bolsa de té


Salida: taza de té
Inicio
Tomar la tetera
Llenarla de agua
Encender el fuego
Poner la tetera en el fuego
Esperar a que hierva el agua
Tomar la bolsa de té
Introducirla en la tetera
Esperar 1 minuto
Echar el té en la taza
Fin

1.3 Representación de algoritmos


Las dos herramientas más utilizadas comúnmente para describir algoritmos son:

Diagramas de flujo: son representaciones graficas de secuencias de pasos a realizar. Cada operación
se representa mediante un símbolo de normalización, el Instituto Norteamericano de normalización
(ANSI - American National Standars Institute). Las líneas de flujo indican el orden de ejecución.
Algunos de los símbolos principales se muestran en la Figura 5.1, como son: Inicio/Fin del
algoritmo, Lectura/Escritura de datos que el programa necesita o genera (por ejemplo, lectura de datos
que se teclean o escritura de datos en un fichero); Proceso conjunto de instrucciones secuenciales;
MANUAL DE PROGRAMACION HP-PRIME
Decisión es una bifurcación en el flujo del algoritmo en base a que se verifique o no cierta condición
(ver la sección 1.5).
Los diagramas de flujo suelen ser usados solo para representar algoritmos pequeños , ya que
abarcan mucho espacio.

Proceso
Decisión
No

Figura 1.1: símbolos en diagramas de flujo.


Seudocódigos: describen un algoritmo de forma similar a un lenguaje de programación pero sin su
rigidez, de forma más parecida al lenguaje natural. Presentan la ventaja de ser más compactos que los
diagramas de flujo, más fáciles de escribir para las instrucciones complejas y más fáciles de transferir
a un lenguaje de programación. El seudocódigo no está regido por ningún estándar.
En estos apuntes usaremos las palabras LEER/IMPRIMIR para representar las acciones de lectura de
datos (el programa recibe datos desde algún sitio) y salida de datos (el programa escribe
información en algún medio)

El Algoritmo 1.2 y la Figura 1.2 muestran respectivamente el seudocódigo y el diagrama de


flujo del algoritmo para calcular la altura de una persona en pulgadas y pies a partir de la altura en
centímetros introducida por el teclado.

Algoritmo 1.2 Calcular una altura en pulgadas (1 pulgada=2.54 cm) y pies (1 pie=12
pulgadas), a partir de la altura en centímetros, que se introduce por el teclado.
Inicio
1- IMPRIMIR ’Introduce la altura en
centímetros: ’
2- LEER: altura
3- CALCULAR pulgadas=altura/2.54
4- CALCULAR pies=pulgadas/12
5- IMPRIMIR ’La altura en pulgadas es: ’,
pulgadas
6- IMPRIMIR ’La altura en pies es: ’, pies
Fin

Figura 1.2: Diagrama de flujo para determinar la altura de una persona en pulgadas y pies a partir de
la altura en centímetros introducida por el teclado.
MANUAL DE PROGRAMACION HP-PRIME
MANUAL DE PROGRAMACION HP-PRIME

Para editar los programas se hará uso del editor PrimeComm, link de descarga

https://www.hpcalc.org/details/7470

Como usar: https://www.youtube.com/watch?v=tDrK_fZmjs4

EXPORT (Exportar). Exporta la función FunctionName para que esté disponible


globalmente y aparezca en el menú de usuario

Ejemplo: Mostar un mensaje en pantalla “hola amigo”

EXPORT P1()
BEGIN
MSGBOX ("hola amigo");
END;

BLOQUE.- Los comandos de bloque determinan el comienzo y el final de una subrutina o


función. También hay un comando RETURN para llamar a los resultados de las subrutinas
o funciones. BEGIN END

Sintaxis:

BEGIN
stmt1;
stm2;
… Bloque
StmtN;

END;

PROGRAMAS MULTIFUNCIÓN.-Si un programa contiene más de una función


EXPORT, al tocar se mostrará una lista para que elija qué función desea ejecutar. Para ver
esta función, cree un programa con el texto:

EJEMPLO.-el siguiente programa muestra un programa que contienen más de una función EXPORT

EXPORT PROGRAMA1 ()
BEGIN //inicio de programa 1
MANUAL DE PROGRAMACION HP-PRIME
LOCAL A:=10, B:=20; //declaración de variables
MSGBOX(A+B); //mostrar la suma de A+B
C:=A+B; //c es igual a la suma de A+B
END; //fin de programa 1

EXPORT PROGRAMA2 ()
BEGIN //inicio de programa 2
LOCAL C:=300; //declaración de variables
MSGBOX(C+100); //mostrar la suma de C+100
END; //fin de programa 2

SUBPROGRAMAS.-cuando requiere el uso de un programa dentro de otro


programa

PROGRAMA2 ( ); declarar el subprograma antes del programa principal

EXPORT PROGRAMA1 ( )
BEGIN
LOCAL A: =10, B: =20;
MSGBOX (A+B);
Programa principal
C: =A+B;
PROGRAMA2 ( );
END;

PROGRAMA2 ( )
BEGIN
LOCAL C: =300; Subprograma
MSGBOX(C+100);
END;
MANUAL DE PROGRAMACION HP-PRIME

ESTRUCTURAS DE SELECCIÓN

En programación de calculadoras, una estructura de selección se produce cuando el código de tu


programa ejecuta uno de varios resultados posibles, basado en el valor de una variable.

IF THEN.- Evalúa prueba. Si prueba es verdadero (no 0), ejecuta comandos. De lo contrario, no se
produce ninguna acción.

Sintaxis: IF prueba THEN comandos END;

EJMPLO: el siguiente programa pide un dato de ingreso, si el numero ingresado es mayor o igual a cero, mostrará un
mensaje en pantalla (SI).

EXPORT CONDICION ()
BEGIN
NO
LOCAL N; C
INPUT (N);
IF N≥0
THEN MSGBOX ("SI") SI
END;
P1
END;

IF THEN ELSE. - Evalúa prueba. Si prueba es verdadero (no 0), ejecuta comandos1; de lo contrario,
ejecuta comandos2

Sintaxis: IF prueba THEN comandos1 ELSE comandos2 END;

EJMPLO: el siguiente programa pide un dato de ingreso, si el numero ingresado es mayor o igual a cero, mostrará un
mensaje en pantalla (SI), caso contrario mostrara en mensaje (NO) en pantalla.

EXPORT CONDICION2 ()
BEGIN

LOCAL N;
INPUT (N);
IF N≥0 NO
C P1
THEN MSGBOX ("SI")
ELSE MSGBOX ("NO")
END;
SI
END;
P2

REPEAT.-Repite la secuencia de comandos hasta que el valor de prueba es verdadero (no 0).
MANUAL DE PROGRAMACION HP-PRIME
Sintaxis: REPEAT comandos UNTIL prueba;

EJMPLO: el siguiente programa muestra tres opciones, y termina el programa cuando se presiona la tecla ESC

EXPORT RECTANGULO ( )
BEGIN
RECT ( );
RECT (RGB (225, 225, 0));

RECT_P (G0, 30, 35, 50, 50, #E10000h, #E1h);


P1
TEXTOUT_P("OPCION 1 CHEK",G0,60,35,0,RGB(0,0,225),200,RGB(0,225,225));

RECT_P (G0, 30, 65, 50, 80, #E10000h, #E1h);


TEXTOUT_P("OPCION 2 CHEK",G0,60,65,0,RGB(0,0,225),200,RGB(0,225,225));
C
RECT_P (G0, 30, 95, 50, 111, #E10000h, #E1h);
TEXTOUT_P("OPCION 3 CHEK",G0,60,95,0,RGB(0,0,225),200,RGB(0,225,225)); NO
FREEZE;
SI
REPEAT

UNTIL
ISKEYDOWN (4)
END;

END;

La instrucción CASE:
La instrucción CASE (traducción: caso) puede ser utilizado para cifrar varias trayectorias posibles del flujo
de programa, como en el caso de los IF anidados, presentado anteriormente. El formato general de esta
instrucción es como sigue:

CASE
Expresión lógica 1 THEN expresiones del programa1 END
Expresión lógica 2 THEN expresiones del programa2 END
.
.
.
Expresión lógica THEN expresiones del programa END
Default expresiones del programa (opcional)

END

Al evaluar esta instrucción, el programa prueba cada una de las expresiones lógicas hasta que encuentra
una que sea verdad. El programa ejecuta las expresiones del programa correspondientes, y pasa el flujo
de programa al paso que sigue la instrucción END.

«
CASE SI
C1 P1a
Condicion 1 (C1) THEN proceso 1a (P1a)
END proceso 1b (P1b) NO
Condicion 2 (C2) THEN proceso 2a (P2a)
END proceso 2b (P2b) P1b
.
.
. SI
C2 P2a

NO

P2b
MANUAL DE PROGRAMACION HP-PRIME
Condicion n (Cn) THEN proceso na (Pna)
END proceso nb (Pnb)

END

ESTRUCTURAS DE REPETICION

FOR .- Define la variable var para inicio y, siempre que el valor de esta variable sea inferior o igual
a fin, ejecuta la secuencia de comandos y, a continuación, añade 1 (incremento) a var.

Sintaxis: FOR var FROM inicio TO fin DO comandos END;


Sintaxis: FOR var FROM inicio TO fin STEP incr DO comandos END;
Sintaxis: FOR var FROM fin DOWNTO inicio STEP incr DO comandos END;

EJMPLO: el siguiente programa muestra el texto MANUAL HP-PRIME desplazándose horizontal y verticalmente

EXPORT programName()
BEGIN
LOCAL j;
DIMGROB_P (G1, 320, 240, RGB (255,255,255)); i=m
N
FOR j FROM 1 TO 20 DO
+1 o S
TEXTOUT_P ("MANUAL HP-PRIME",G1,100+j,100+j);
END;
TEXTOUT_P ("MANUAL HP-PRIME",G1,100+20,100+20,3,RGB(0,255,0));
BLIT_P (G0,G1);
FREEZE; P
END;

EXPORT programName()
BEGIN
LOCAL j;
MANUAL DE PROGRAMACION HP-PRIME
DIMGROB_P (G1, 320, 240, RGB (255,255,255));
FOR j FROM 1 TO 20 STEP 1 DO
TEXTOUT_P ("MANUAL HP-PRIME",G1,100+j,100+j);
END;
TEXTOUT_P ("MANUAL HP-PRIME",G1,100+20,100+20,3,RGB(0,255,0));
BLIT_P (G0,G1);
FREEZE;
END;

EXPORT programName()
BEGIN
LOCAL j;
DIMGROB_P (G1, 320, 240, RGB (255,255,255));
FOR j FROM 20 DOWNTO 1 STEP 1 DO
TEXTOUT_P ("MANUAL HP-PRIME",G1,100+j,100+j);
END;
TEXTOUT_P ("MANUAL HP-PRIME",G1,100+20,100+20,3,RGB(0,255,0));
BLIT_P (G0,G1);
FREEZE;
END;

REPEAT.-
La estructura general de este comando es:

Sintaxis: REPEAT expresiones del programa UNTIL expresión lógica;

La instrucción REPEAT comienza un lazo indefinido ejecutando las expresiones del programa
hasta que la expresión lógica produce un falso (FALSE (0)). La expresión lógica debe contener
el valor de un índice cuyo valor se cambia en las expresiones del programa.
EXPORT MENU ()
BEGIN
LOCAL j ; P
DIMGROB_P (G1,320,240 ) ;
RECT_P (G1,RGB(0,225,0));
REPEAT NO
FOR j FROM 1 TO 120 DO C
TEXTOUT_P("METODO-RIGIDEZ-ARMADURAS",G1,j+5,3,2,RGB(0,0,0),320,RGB(0,225,0));
BLIT_P (G0,G1);
WAIT (0.01); SI
END;
FOR j FROM 1 TO 120 DO
TEXTOUT_P("METODO-RIGIDEZ-ARMADURAS",G1,125-j,3,2,RGB(0,0,0),320,RGB(0,225,0));
BLIT_P (G0,G1);
WAIT (0.01);
END;
UNTIL ISKEYDOWN (4) ;
END;
MANUAL DE PROGRAMACION HP-PRIME

WHILE.-

La estructura general de este comando es:

Sintaxis: WHILE expresión lógica DO expresiones del programa END;

La instrucción WHILE repetirá las expresiones del programa mientras expresión lógica es
verdadero (no cero). Si no, el control de programa se pasa a la instrucción que sigue a la
declaración END. Las expresiones del programa deben incluir un índice de lazo que se modifica
antes de que se verifique la expresión lógica al principio de la repetición siguiente.
EXPORT SELECCION ( )
BEGIN

LOCAL A:=2;
WHILE
A == 1 OR A == 2 OR A == 3 OR A == 4 OR A==5 OR A==6
DO
CHOOSE(A,"RIGIDEZ-ARMADURAS","._DATOS GENERALES-ARMADURA","._A E L 0","._GL.INICIAL-
GL.FINAL","._CARGA EXTERNA","._EJECUCION","._RESULTADOS","._SALIR");

CASE
IF A == 1 THEN MSGBOX ("OPCION" +1);
END; NO
IF A == 2 THEN MSGBOX ("OPCION" +2); C
END;
IF A == 3 THEN MSGBOX ("OPCION" +3);
END; SI
IF A == 4 THEN MSGBOX ("OPCION" +4);
END;
P1
IF A == 5 THEN MSGBOX ("OPCION" +5);
END;
IF A == 6 THEN MSGBOX ("OPCION" +6);
END;
IF A == 7 THEN MSGBOX ("SALIENDO" +7);
END;
END;
END;
END;

EJMPLO: el siguiente programa repite el ingreso de datos, y se detiene hasta que se presione la tecla cancel, del
ingreso de datos INPUT;

EXPORT REPETIR ( )
BEGIN
LOCAL X;
LOCAL Y;
LOCAL Z:=0;
MANUAL DE PROGRAMACION HP-PRIME
REPEAT
Z+1 ▶ Z;
UNTIL INPUT ({X, Y},"COORDENADAS # " +STRING (Z), {"X:","Y:"},{"ABSCISA X","ORDENADA Y"}) == 0;

END;

EJEMPLO: tomando como referencia el programa anterior, ahora podemos guardar todas las coordenadas en la
variable loca D.

EXPORT REPETIR ( )
BEGIN

LOCAL X;
LOCAL Y;
LOCAL Z:=0;
LOCAL D:={};
REPEAT
Z+1 ▶ Z;
IF Z≠1
THEN
{X, Y} ▶ D (Z-1);
END;
MSGBOX (D);
UNTIL INPUT ({X, Y},"COORDENADAS # " +STRING (Z), {"X:","Y:"},{"ABSISA X","ORDENADA Y"}) == 0 ;

END;

EJEMPLO: mostrar una secuencia de número de manera que se detenga cuando presiones la tecla ESC

EXPORT CONTEO ( )
BEGIN
LOCAL A: =0;

RECT ( );
TEXTOUT_P ("NUMERO: " 25, 25);

REPEAT

A+1 ▶ A;

TEXTOUT_P(" " +STRING(A),90,28,2,RGB(225,225,0),100,RGB(0,0,225));

UNTIL ISKEYDOWN (4) ;


END;

Una función en un conjunto de líneas de código que realizan una tarea específica y puede retornar un
valor.

Variables globales
Las variables globales son variables que se declaran fuera de la función y por defecto (omisión) son
visibles a cualquier función.

EJEMPLO: el siguiente programa muestra cómo crear una variable global, para ser usada en las diferentes funciones

EXPORT DIAMETRO;

EXPORT GLOBAL ( )
BEGIN
INPUT (DIAMETRO,"DIAMETRO","D:","DIAMETRO DEL CIRCULO EN (M)",1);
MANUAL DE PROGRAMACION HP-PRIME
PRINT ( );
PRINT ("D:" +STRING (DIAMETRO+200));
END;

Pero también se pueden crear variable global que son solo visibles para la función principal, veamos
en ejemplo siguiente.

EJEMPLO: el siguiente programa muestra cómo crear una variable global, para la función o funciones internas del
programa

LOCAL DIAMETRO; //VARIABLE GLOBAL

EXPORT GLOBAL ( ) //FUNCION PRINCIPAL


BEGIN
INPUT (DIAMETRO,"DIAMETRO","D:","DIAMETRO DEL CIRCULO EN (M)",1);
PRINT ( );
PRINT ("D:" +STRING (DIAMETRO+200));
END;

Variables locales
Además de tener un ámbito restringido, las variables locales son especiales por otra razón: existen en
memoria sólo cuando la función está activa (es decir, mientras se ejecutan las sentencias de la
función).

Cuando la función no se está ejecutando, sus variables locales no ocupan espacio en memoria, ya
que no existen. Algunas reglas que siguen las variables locales son:
a.-Los nombres de las variables locales no son únicos. Dos o más funciones pueden definir la misma
variable test. Cada variable es distinta y pertenece a su función específica.
b.- Las variables locales de las funciones no existen en memoria hasta que se ejecute la función. Por
esta razón, múltiples funciones pueden compartir la misma memoria para sus variables locales (pero no
al mismo tiempo).

EXPORT GLOBAL ( ) //función principal


BEGIN

LOCAL DIAMETRO; //variable local de la función

INPUT (DIAMETRO,"DIAMETRO","D:","DIAMETRO DEL CIRCULO EN (M)",1);


PRINT ( );
PRINT ("D:" +STRING (DIAMETRO+200));
END;

FREEZE.-Pausa la ejecución del programa hasta que se pulsa una tecla. Evita que la pantalla vuelva a
dibujarse después de que se termine la ejecución del programa, manteniendo la visualización modificada
en la pantalla para que el usuario la vea.

Sintaxis: FREEZE
MANUAL DE PROGRAMACION HP-PRIME
EJEMPLO: el ejemplo muestra el uso del comando

RECT.-Dibuja un rectángulo en G entre los puntos x1, y1 y x2, y2 utilizando el color del borde para el
perímetro y el color de relleno para el interior.

RECT_P ([G, x1, y1, x2, y2, color borde, color relleno])

(50,50) (270,50)

(270,190)
(50,190)

MOUSE.- Devuelve dos listas que describen la ubicación actual de cada puntero potencial
(o listas vacías si no se utilizan punteros). La salida es {Xmovil, Ymóvil, Xstático, Yestatico, tipo}
donde tipo es 0 (para nuevo), 1 (para completado), 2(para arrastrar), 3 (para alargar), 4 (para
girar) y 5 (para un clic largo).
El índice de parámetros opcional es el elemento n-ésimo que se devolvería (Xmovil, Ymóvil,
Xstático, etc.) si se hubiera omitido el parámetro (o –1 si no se registra actividad del puntero).

Sintaxis: MOUSE [(índice)]

EXPORT RATON1 ( )
BEGIN
LOCAL RATON;

REPEAT
RATON:=MOUSE;
CASE
IF
SIZE (RATON(1))
THEN
TEXTOUT_P(B→R(RATON),G0,200,150,2,RGB(0,225,0),100,RGB(225,225,225));
END;
END;
UNTIL ISKEYDOWN (4);
END;

FILLPOLY.-Rellena el polígono especificado por las coordenadas del pixel proporcionado


utilizando los colores suministrados .Si se proporciona Alfa (0 a 255), el polígono es dibujado
con transparencia.

Sintaxis: FILLPOLY_P ([G], {coordenadas...} o [coordenadas], Color, [Alpha])

EJEMPLO: el siguiente programa muestra el doblez de una página por la esquina

EXPORT dobles ( )
BEGIN

DIMGROB_P (G1, 320,240);


DIMGROB_P (G2, 320,240);
BLIT_P (G1, G0);
WHILE 1 DO
MANUAL DE PROGRAMACION HP-PRIME
FOR Z FROM 0 TO 170 STEP 1 DO
BLIT_P (G2, G1);
FILLPOLY_P (G2, {{0, 0}, {320, 0}, {320,240}, {0,240}}, #000000, Z);
FILLPOLY_P (G2, {{150,240}, {320, 70}, {320-Z, 240-Z}}, #000000, 225);
BLIT_P (G0, G2);
WAIT (0.005);
END;
END;
END;

FOR.- Define la variable var para inicio y, siempre que el valor de esta variable sea inferior o
igual a fin, ejecuta la secuencia de comandos y, a continuación, añade 1 (incremento) a var.

Sintaxis: FOR var FROM inicio TO fin DO comandos END;

i=j
N
+1 o S

TEXTOUT_P.-Dibuja texto de color c1 en la posición x,y de la gráfica G con la fuente


especificada. No dibuje texto con un ancho en píxeles mayor que el especificado y borre el
fondo antes de dibujar el texto utilizando el color c2. G puede ser cualquiera de las variables
gráficas y es opcional. El valor predeterminado es G0.
La fuente puede ser:
0: fuente actual seleccionada en la pantalla de modo, 1: fuente pequeña 2: fuente grande. La
fuente es opcional y, si no se especifica, es la fuente actual seleccionada en la pantalla Configuración de
Inicio. c1 puede ser cualquier color especificado cómo #RRGGBB. El valor predeterminado es negro
(#000000). Ancho es opcional y, si no se especifica, no se realiza ningún recorte.

Sintaxis: TEXTOUT (texto, G, x, y, fuente, c1, ancho, c2)


TEXTOUT_P (texto, G, x, y, fuente, c1, ancho, c2)

EJEMPLO: el siguiente programa muestra muestra un texto en la gráfica G5

EXPORT TITULO ( )
BEGIN

DIMGROB_P (G5, 320,240);


TEXTOUT_P("MANUAL DE PROGRAMACION HP-PRIME",G5,30,25,2,RGB(225,225,0),220,RGB(0,0,0));
BLIT_P (G0, G5);
FREEZE;

END;
MANUAL DE PROGRAMACION HP-PRIME

Peo en el ejemplo podemos poner el fondo de color negro para ello haremos uso del comando RECT_P
( ).

EXPORT TITULO ( )
BEGIN

DIMGROB_P (G5, 320,240);


RECT_P (G5, RGB (0, 0, 0));
TEXTOUT_P("MANUAL DE PROGRAMACION HP-PRIME",G5,30,25,2,RGB(225,225,0),220,RGB(0,0,0));
BLIT_P (G0, G5);
FREEZE;

END;

INPUT.-Abre un cuadro de diálogo con el texto del título, título, con un campo denominado
etiqueta, que muestra ayuda en la parte inferior y que utiliza el valor predeterminado.
Actualiza la variable var si el usuario toca y devuelve 1. Si el usuario toca, no actualiza la
variable y devuelve 0.

Sintaxis: INPUT (var, ["título", "etiqueta", "ayuda", predeterminado]);


INPUT (Var, [“titulo”], [“etiqueta”], [“ayuda”], [restablecer valor], [valor inicial]);

INPUT ({Var}, [“titulo”], [{“etiqueta”}], [{“ayuda”}], [{restablecer valores}], [{valor iniciales}]);

Var:{nombre var, real, [{pos}]}


Var:{nombre var, [tipos permitidos de matriz], [{pos}]}

La fórmula más simple de este comando abre un cuadro de dialogo con el título dado y un campo llamado
etiqueta, además de que muestra la ayuda en la parte inferior. El cuadro de dialogo incluye las teclas de
menú cancelar u ok.el usuario puede introducir un valor en el campo etiquetado. Si el usuario presiona la
tecla de menú ok, la variable var se actualiza con el valor introducido y se devuelve 1.si el usuario presiona
la tecla de menú cancelar, no actualiza var y se devuelve 0.

En la forma más compleja del comando, las listas se utilizan para crear un cuadro, de dialogo pluridisciplinar.
Sí var es una lista, cada elemento puede ser un nombre de variable, o una lista utilizando el siguiente
formato:
{Nombre var, real, [{pos}]} para crear un control con casillas de verificación .si real es >1, esta casilla de
verificación se agrupa con la siguiente casilla de verificación n-1 en un grupo de radio (por ejemplo solo
una casilla de verificación n puede ser marcada en cualquier momento).

{Nombre var, [tipos permitidos de matriz], [{pos}]} para crear un campo de edición, tipos permitidos de
matriz enumera todos los tipos permitidos ([-1] representa todos los tipos permitidos).si el único tipo
permitido es una cadena, entonces la edición ocultara las comillas dobles.

{Nombre var, {elegir elementos}, [{pos}]} para crear un campo de selección.

Si se especifica pos, esta es una lista del formulario {inicio del campo en el porcentaje de pantalla, línea
(empieza cero)} esto permite que controle con precisión la posición y el tamaño de los campos .tome en
cuenta que tiene que especificar pos para ninguno o todos los campos en el cuadro de dialogo.

Hay un máximo de 7 líneas de controles por pagina .los controles con más de 7 líneas se colocaran en la
siguientes páginas .si se crea más de una pagina, los títulos pueden ser una lista de títulos.
MANUAL DE PROGRAMACION HP-PRIME
EJEMPLO: en los siguientes programas se mostrara el uso de comando INPUT, en sus diferentes variaciones.

a.-formulario de entrada para 2 variables

EXPORT FORMA1 ( )
BEGIN
LOCAL Vv, Vs;
INPUT ({Vv, Vs})
END;

b.-formulario de entrada para 2 variables y un título.

EXPORT FORMA2 ( )
BEGIN
LOCAL Vv , Vs;
INPUT ({Vv, Vs},"RELACION DE VACIOS");
END;

c.-formulario de entrada para 2 variables y un título, con 2 etiquetas.

EXPORT FORMA3 ( )
BEGIN
LOCAL Vv, Vs;
INPUT ({Vv, Vs},"RELACION DE VACIOS", {"Vv:","Vs:"});
END;

d.-formulario de entrada para 2 variables y un título, con 2 etiquetas, ayudas de campo

EXPORT FORMA4 ( )
BEGIN
LOCAL Vv, Vs;
INPUT ({Vv, Vs},"RELACION DE VACIOS", {"Vv:","Vs:"},{"VOLUMEN DE VACIOS","VOLUMEN DE
SOLIDOS"});
END;

También podemos colocar la ubicación de la celda y el tipo de objeto para el campo. Formato para la
ubicación, tipo de objeto y orden de las variables.

Common Types:
-1: todo
0: real
1: entero
2: cadena
3: complejo
4: matrices
6: lista
8: funciones
9: unidad
14?: Objeto CAS la parte fraccionaria es de tipo cas
MANUAL DE PROGRAMACION HP-PRIME
EXPORT FORMA5 ( )
BEGIN
LOCAL Vv, Vs;
INPUT({{Vv,[0],{30,40,1}},{Vs,[0],{30,40,2}}},"RELACION DE VACIOS",{"Vv:","Vs:"},{"VOLUMEN DE
VACIOS","VOLUMEN DE SOLIDOS"});
END;

También podemos colocar opciones CHECK, para las diferentes opciones

EXPORT FORMA6 ()

BEGIN

LOCAL Vv, Vs;

INPUT ({{Vv, 1}, {Vs, 0}},"RELACION DE VACIOS", {"Vv:","Vs:"},{"VOLUMEN DE VACIOS","VOLUMEN


DE SOLIDOS"});

END;

También podemos colocar opciones CHOOSE, para las diferentes opciones

EXPORT FORMA7 ( )

BEGIN

LOCAL Vv, Vs;

INPUT ({{Vv, {"100","200"}}, {Vs, {"1","2"}}},"RELACION DE VACIOS", {"Vv:","Vs:"},{"VOLUMEN DE


VACIOS","VOLUMEN DE SOLIDOS"});

END;
MANUAL DE PROGRAMACION HP-PRIME
Pero como ver los valore
de restauración

PRIMERO PASOS DE PROGRAMACION EN HP-PRIME

Cuando se inicia el editor, lo que se ve es lo siguiente

EXPORT programName ( )

BEGIN

END;

Donde se distinguen las siguientes partes

EXPORT.- Exporta la variable para que esté disponible de forma global.

BLOQUE.-Los comandos de bloque determinan el comienzo y el final de una subrutina o función.


Define un comando o conjunto de comandos para su ejecución en bloque.

Sintaxis:
BEGIN
stmt1;
stm2;…
stmtN;
END;

programName ( ).-nombre del programa

( ).-para el ingreso de datos

Estructura de comandos
Los comandos se separan con punto y coma (;). Los comandos que aceptan varios
argumentos incluyen a estos últimos entre paréntesis, separados por comas ( , ).

EXPORT programName ( )

BEGIN
stmt1;
MANUAL DE PROGRAMACION HP-PRIME
stm2;… Estructura de comandos
stmtN;
END;

EJEMPLO.-realizar un programa que muestre las operaciones suma, resta, multiplicación y división, con
los números 10 y 20.

EXPORT programName( ) Pero aquí solo se muestra


BEGIN la última operación
10+20;
10-20;
10*20;
10/20;
END;

RETURN.- Devuelve el valor actual de expresión.

Sintaxis: RETURN expresión;

EXPORT programName( )
BEGIN ¿Pero si quiero todos los
10+20; resultados?
RETURN 10-20;
10*20;
10/20;

END;

PRINT Imprime el resultado de la expresión o cadena en el terminal. El terminal es un


mecanismo de visualización de la salida de texto de un programa que se muestra solo cuando
se ejecutan los comandos PRINT.

Sintaxis: PRINT (expresión o cadena);

EXPORT programName( )
BEGIN
¿Pero no se sabe quién es
quién?
PRINT (10+20);
PRINT (10-20);
PRINT (10*20);
PRINT (10/20);

END;

EXPORT programName()
BEGIN ¿Cómo mostrar los
resultados en una sola
PRINT("suma:"+(10+20));
línea?
MANUAL DE PROGRAMACION HP-PRIME
PRINT("resta:"+(10-20));
PRINT("multiplicacion:"+(10*20));
PRINT("division:"+(10/20));

END;

EXPORT programName( )
BEGIN

PRINT ("suma:"+(10+20)+" resta:"+(10-20)+" multiplicación:"+(10*20)+" división:"+(10/20));

END;

Pero cada vez que se ejecuta el


programa muestra el resultado
anterior

EXPORT programName( )
BEGIN
PRINT;
PRINT ("suma:"+(10+20)+" resta:"+(10-20)+" multiplicación:"+(10*20)+" división:"+(10/20));

END;

INPUT.- Abre un cuadro de diálogo con el texto del título, título, con un campo denominado
etiqueta, que muestra ayuda en la parte inferior y que utiliza el valor predeterminado. Actualiza
la variable var si el usuario toca y devuelve 1. Si el usuario toca , no actualiza la variable y
devuelve 0.

Sintaxis: INPUT ({vars} [{"título"}],[{ "etiqueta"}],[ {"ayuda”}], [{predeterminado}]);

Ejemplo.-determinar la relación de vacíos


Vv
e=
Vs

Ejemplo: determinar la relación de vacíos, donde Vv 𝑦 Vs son desconocidos

EXPORT programName()
BEGIN
LOCAL Vv,Vs;

IF

INPUT({{Vv,[0],{10,30,1}},{Vs,[0],{50,30,1}}},"RELACION DE VACIOS","Vv:",{"VOLUMEN DE
VACIOS","VOLUMEN SE SOLIDOS"},{10,20},{100,200})

THEN MSGBOX ("OK");


ELSE
MSGBOX ("CANC");
END;
MANUAL DE PROGRAMACION HP-PRIME

END;

Como crear un menú, en informática, un menú es una serie de opciones que el usuario puede elegir para
realizar determinadas tareas.

ISKEYDOWN Devuelve verdadero (no cero) si está pulsada actualmente la tecla cuyo id_tecla
se proporciona y falso (0) si no lo está.

Sintaxis: ISKEYDOWN (id_tecla);


EJEMPLO.-en este ejemplo

GETKEY
Devuelve el ID de la primera tecla del búfer de teclado o -1 si no se ha pulsado ninguna tecla
desde la última llamada a GETKEY. Los ID de tecla son enteros de 0 a 50, numerados desde
la esquina superior izquierda (tecla 0) a la esquina inferior derecha (tecla 50) como se muestra
en la figura 27-1.

Sintaxis: GETKEY
MANUAL DE PROGRAMACION HP-PRIME
EJEMPLO.-en este ejemplo se puede ver que cuando no está condicionada el comando
GETKEY solo muestra -1, dado que no se ha presionado tecla alguna

EXPORT programName ( )
BEGIN
LOCAL TECLA;
REPEAT
TECLA:= GETKEY;
PRINT (TECLA);
UNTIL TECLA = 4

END;

EJEMPLO.-en este ejemplo se muestra la manera de condicionar el comando GETKEY

EXPORT programName ( )
BEGIN
LOCAL TECLA;
PRINT ("PRESIONA UNA TECLA");
REPEAT
TECLA:=GETKEY;
CASE
IF TECLA ≥ 0 THEN PRINT (TECLA); END;
END;

UNTIL TECLA = 4;
END;

Ejemplo.-crear un menú de 3 opciones:


Se creara 3 casillas rectangulares en la variable grafica con las siguientes características

(10,20)

(100,40)
(10,45)

(100,65)
(10,70)
(100,90)

EXPORT programName ( )
BEGIN
MANUAL DE PROGRAMACION HP-PRIME
DIMGROB_P(G1,320,240,RGB(0,0,225));
RECT_P(G1,20,20,100,40,RGB(225,0,0),RGB(0,0,0));
RECT_P(G1,20,45,100,65,RGB(225,0,0),RGB(0,225,0));
RECT_P(G1,20,70,100,90,RGB(225,0,0),RGB(0,225,0));

BLIT_P(G0,G1);
FREEZE;
END;

P1 (110,70) P3
P4

DECLARACION DE VARIABLES LOCALES

Las variables locales son aquellas variables temporales dentro de los programas, es decir solo están
presentes en la ejecución de los programas. Es muy recomendable el uso de estas variables ya que
utiliza menos memoria y son más rápidos al ejecutarse.

Sintaxis: LOCAL var1, var2,…var_n;


Convierte las variables var1, var2, etc. en locales del programa en que se encuentran.

EXPORT P1 ()
BEGIN
LOCAL A, B;

END;

3.1.5. Comentarios
Un comentario es cualquier información que se añade a su archivo fuente para proporcionar
documentación de cualquier tipo. El compilador ignora los comentarios, no realiza ninguna tarea
concreta. El uso de comentarios es totalmente opcional, aunque dicho uso es muy recomendable.
Generalmente, se considera buena práctica de programación comentar su archivo fuente tanto como
sea posible, al objeto de que usted mismo y otros programadores puedan leer fácilmente el programa
con el paso de tiempo. Es buena práctica de programación comentar su programa en la parte superior
de cada archivo fuente. La información que se suele incluir es el nombre del archivo, el nombre del
programador, una breve descripción, la fecha en que se creó la versión y la información de la revisión.
Los comentarios en C estándar comienzan con la secuencia / * y terminan con la secuencia * /.
Todo el texto situado entre las dos secuencias es un comentario ignorado por el compilador
MANUAL DE PROGRAMACION HP-PRIME

Como desplazar una ventana de la pantalla.


MANUAL DE PROGRAMACION HP-PRIME

Determinar los elementos comunes de dos listas:

member.-Prueba si un elemento está en una lista o un conjunto. Si el elemento


está en la lista o el conjunto, devuelve 1+ el índice de la primera incidencia del
elemento. Si elemento no está en la lista o el conjunto, devuelve 0.

Sintaxis: member (Elem(e),(Lst(l) o Set(l)))

Ejemplo: determinar la posición del número 20 en la lista {10, 20,30}.


EXPORT programName ( )
BEGIN
LOCAL L1 :={ 10, 20, 30}; //declaración de variable local definido
MSGBOX (member (20, L1)); //muestra el numero 2 (posición que ocupa el número 20 en la lista (L1))
END;

Ejemplo: determinar todas las posiciones del número 20 en la lista {10, 20, 30, 20, 50, 20,20}.

EXPORT programName ( )
BEGIN
LOCAL i,k=1,L1 :={ 10, 20, 30, 20,50,20,20}; //declaración de variables locales
FOR // define la variable i para en inicio
i //variable de control
FROM // de
1 //1
TO // a
SIZE (L1) //tamaño de la lista (L1)
DO // hacer
IF // si
L1 (i) = 20 // el elemento i de la lista L1 es igual a 20
THEN //entonces
"20" ▶ L1 (i); // el texto (“20”) se guarda en la posición i de la lista L1
i ▶ L2 (k); //la posición i se guarda en la lista L2 en la posición k
k:=k+1; //el valor de k se incrementa en una unidad para ser guardada en la variable k

END; //fin de la instruction IF THEN END;


MANUAL DE PROGRAMACION HP-PRIME
END; //fin de la instruction FOR FROM TO DO;
MSGBOX (L2); //muestra la lista de todos las posiciones del 20 en pantalla
END;
//
Determinar las cifras acumuladas del texto "0.125"

EXPORT programName ( )
BEGIN
LOCAL NUMER:="0.125",j,NUMERO:={};
FOR
j
FROM
1
TO
DIM (NUMER)
DO
MID (NUMER, 1, j) ▶ NUMERO (j); // {"0","0.","0.1","0.12","0.125"}
END;
END;

Determinar las cifras individuales del texto "0.125"

EXPORT programName ( )
BEGIN
LOCAL NUMER:="0.125", j,CIFRAS:={};
FOR
j
FROM
1
TO
DIM (NUMER)
DO
MID (NUMER, j, 1) ▶CIFRAS (j); // {"0",".","1","2","5"}
END;

END;

Devuelve las soluciones a una ecuación polinómica o un conjunto de ecuaciones


polinómicas.

EXPORT ECUACION ( )
BEGIN
solve ('X^2+2*X-3', X);
END;
MANUAL DE PROGRAMACION HP-PRIME

CHOOSE.-muestra un cuadro de selección con el “titulo” dado y elementos con las cadenas
Si el usuario selecciona un objeto, var se actualizara para contener el número del objeto seleccionado (un
entero 1, 2, 3,4,…); de lo contrario, almacena cero en var si el usuario sale sin realizar una selección.
Devuelve verdadero (no cero) si el usuario selecciona un objeto de lo contario devuelve falso (0)

Sintaxis: CHOOSE (var, “titulo”, “item1”, “titulo2”…“titulo14”);

Sintaxis: CHOOSE (var, “titulo”, {“item1”, “titulo2”…});

Ejemplos: haciendo uso del comando CHOOSE crear una caja de selección.

EXPORT programName ()
BEGIN
LOCAL t: =2; //var indica el número de celda seleccionada
CHOOSE (t,"SELECCIONAR", {"OPCION","OPCION","OPCION","OPCION"});
END;

¿Pero caga vez que se


escoge una opción se sale
de la caja de selección?

Ejemplos: haciendo uso del comando CHOOSE crear una caja de selección de manera que no se salga
de la caja de selección cada vez que se escoja una opción.

EXPORT programName ()
BEGIN
LOCAL t:=2;

REPEAT
CHOOSE (t,"SELECCIONAR", {"OPCION","OPCION","OPCION","OPCION","SALIR"});
CASE
IF t= 1 THEN MSGBOX(t); END;
IF t= 2 THEN MSGBOX(t); END;
IF t= 3 THEN MSGBOX(t); END;
IF t= 4 THEN MSGBOX(t); END;
IF t= 5 THEN MSGBOX("SALIR"); END;
END;
UNTIL t=5;

END;

¿Pero si quiero otra caja de


selección dentro de una de
las opciones?
MANUAL DE PROGRAMACION HP-PRIME

Ejemplos: haciendo uso del comando CHOOSE crear una caja de selección dentro de otra caja de
selección.

LOCAL CAJA_INTERIOR ();

EXPORT programName ()
BEGIN
LOCAL t: =2;

REPEAT
CHOOSE (t,"SELECCIONAR", {"OPCION","OPCION","OPCION","OPCION","SALIR"});
CASE
IF t= 1 THEN MSGBOX(t); CAJA_INTERIOR (); END;
IF t= 2 THEN MSGBOX(t); END;
IF t= 3 THEN MSGBOX(t); END;
IF t= 4 THEN MSGBOX(t); END;
IF t= 5 THEN MSGBOX ("SALIR"); END;
END;
UNTIL t=5;

END;

CAJA_INTERIOR ()

BEGIN
LOCAL r: =2;

REPEAT
CHOOSE (r, "SELECCIONAR1", {"OPCION1","OPCION1","OPCION1","OPCION1","SALIR1"});
CASE
IF r= 1 THEN MSGBOX(r); END;
IF r= 2 THEN MSGBOX(r); END;
IF r= 3 THEN MSGBOX(r); END;
IF r= 4 THEN MSGBOX(r); END;
IF r= 5 THEN MSGBOX ("SALIR"); END;
END;
UNTIL r=5;

END;
MANUAL DE PROGRAMACION HP-PRIME

Ejemplo.-calcular el acero necesario para que la viga de b=30cm, y d=50cm, resista Mu=20ton.m, sabiendo
que fy=4200kg/cm2 y f’c=250kg/cm2.

𝑀𝑢
𝐴𝑠 =
∅. 𝑓𝑦 . (𝑑 − 𝑎/2)

𝐴𝑠 . 𝑓𝑦
𝑎=
0.85. 𝑓𝑐 . 𝑏

El valor de a (asumido) debe ser igual al valor de a (calculado)


a(asumido) As(a=aasumido) a(calculado)

LOCAL RESULTADOS ();


LOCAL CALCULOS ();
LOCAL Mu:=2000000,ф:=0.90,fy:=4200,fc:=210,b:=30,d:=55;
LOCAL a_asu_lista:={ },As_lista:={ },a_calcu_lista:={ };
LOCAL CONTAR:=1;
EXPORT programName ()
BEGIN
LOCAL SIP;

SIP:=INPUT({Mu,ф,fy,fc,b,d},"calculo de As",{"Mu:","ф:","fy:","fc:","b:","d:"},
{"momento ultimo -(kg.cm)","factor de reduccion","fluencia del acero-(kg/cm2)","resistencia del concreto-
(kg/cm2)","ancho de la viga-(cm)","peralte efectivo-(cm)"},{0,0,0,0,0,0},{Mu,ф,fy,fc,b,d});
IF SIP=1
THEN CALCULOS ();
ELSE MSGBOX ("SALIR");
END;
END;

CALCULOS ()
BEGIN
LOCAL As,a,a_calculado,a_asumido;
a_asumido:=d/5;
a:=a_asumido;
a:=ROUND(a,3);
a ▶ a_asu_lista(CONTAR);
As: =Mu/(ф*fy*(d-a/2));
As: =ROUND (As, 3);
As ▶ As_lista(CONTAR);
a_calculado:=As*fy/(0.850*fc*b);
a_calculado:=ROUND (a_calculado,3);

a_calculado ▶ a_calcu_lista(CONTAR);
MANUAL DE PROGRAMACION HP-PRIME
REPEAT
CONTAR:=CONTAR+1;
a_asumido:=a_calculado;
a:=a_asumido;
a:=ROUND(a,3);
a ▶ a_asu_lista(CONTAR);
As:=Mu/(ф*fy*(d-a/2));
As: =ROUND (As, 3);
As ▶ As_lista(CONTAR);
a_calculado:=As*fy/(0.850*fc*b);
a_calculado:=ROUND (a_calculado, 3);
a_calculado ▶ a_calcu_lista(CONTAR);

UNTIL ROUND (a_asumido, 3)=ROUND ( a_calculado, 3);


RESULTADOS ();
CONTAR:=1;

END;

RESULTADOS ()
BEGIN
LOCAL RESULT;
LOCAL j;
RESULT: =MAKEMAT (0, CONTAR, 3);
FOR j FROM 1 TO CONTAR DO
a_asu_lista (j) ▶ RESULT (j, 1);
As_lista (j) ▶ RESULT (j, 2);
a_calcu_lista (j) ▶ RESULT (j, 3);
END;
EDITMAT (RESULT, {"RESULTADOS", { }, {"a_asumido","As","a_calculado"}});
END;

Ejemplo.-crear un menú táctil