Uploaded by José Pinto

Tutorial de programación HP Prime

advertisement
Tutorial de programación HP Prime #1: LOCAL,
RETORNO
Durante el próximo mes, tal vez mes y medio, planeo publicar tutoriales de programación para
HP (Hewlett Packard) Prime.
Si ha programado con HP 38G, 39g o 39gii, este lenguaje será similar a esos. El lenguaje de
programación para Prime se llama HP Prime Programming Language (HPPP).
A lo largo de este tutorial, voy a utilizar la última versión del software.
Cómo empezar a escribir un programa:
1. Presione Mayús + 1 (Programa). 2. Pulse Nuevo. Es la segunda tecla táctil. 3. Introduzca el
nombre del programa. Presionando el botón ALPHA la tecla dos veces se activará
UPPERCASE ΑLPHA-LOCK. Al presionar ALPHA, Mayús, ALPHA se activará el bloqueo alfa
en minúsculas. Para salir de cualquier bloqueo, presione la tecla ALPHA una vez más. Cuando
esté satisfecho con el nombre, presione Entrar.
Reglas para nombres de programas:
1. Solo letras, números y el carácter de subrayado (_).
2. El nombre del programa debe comenzar con una letra.
Estructura de un programa HP Prime
Un programa HPPP está encapsulado en una estructura EXPORT - BEGIN - END. El diseño es
generalmente así:
EXPORT program_name(arguments)
BEGIN
comandos y comentarios van aquí
END;
Cada línea que contiene un comando generalmente debe terminar con un punto y coma (;). Un
punto y coma puede escribir presionando ALPHA y luego la tecla Más ( + ).
Los comentarios se pueden escribir. Se designan mediante dos barras diagonales. Las barras
diagonales se escriben pulsando la tecla Dividir ( ÷ ). Cualquier cosa en la línea que sigue a las
dos barras diagonales se ignora al ejecutar el programa.
SQIN
Nuestro primer programa es SQIN, porque los programas "Hello World" son tan 2000s. SQIN
toma un número, lo eleva al cuadrado y luego calcula el recíproco. En resumen, estamos
definiendo una función personalizada
:SQIN(x) = 1/x^2
Comandos:
RETURN: devuelve un resultado a la pila (página de inicio). Puede devolver números, listas,
vectores, matrices, cadenas o una combinación de estos tiempos.
Acceso: Tmplt, 1. Bloquear, 2. DEVOLVER
Todo el código del programa en esta serie de tutoriales se mostrará en fuente Courier.
EXPORT SQIN(X)BEGINRETURN 1/X^2; FIN;
Consejo: Puede verificar la sintaxis del programa simplemente presionando la tecla
programable Check en el editor del programa. HP Prime le informará si hay un error de sintaxis
e intentará señalarle el error. Si no hay errores de sintaxis, el Prime indica "No hay errores en el
programa". Utilizo el comando Check todo el tiempo.
Cómo ejecutar los programas:Modo de inicio Entrada de libro de texto,Modo de inicio - Entrada algebraica,Modo CAS: Escriba
el nombre del programa. Siga el nombre entre paréntesis y incluya los argumentos necesarios.
O use la Caja de herramientas (fila superior de teclas blancas, 2ª tecla desde la izquierda,
parece una caja de herramientas), seleccione la tecla táctil Usuario, seleccione el programa e
ingrese los argumentos requeridos.
Modo de inicio - Entrada RPN:
Ingrese cada argumento, separe cada entrada presionando la tecla Enter. Escriba el nombre y,
entre paréntesis, indique el número de argumentos.
Por ejemplo, si el programa TEST tiene cuatro argumentos, la pila RPN desea esto:4:
argument_13: argument_22: argument_31: argument_4TEST(4) para ejecutar el programa.
Ejemplos para probar con
SQIN:SQIN(5) devuelve .04SQIN(36) devuelve .000771604938
El siguiente programa demostrará el concepto de variables locales.
MOPMT
LOCAL: Declara que cualquier variable es local para el programa. En otras palabras, las
variables se crean, se utilizan, posiblemente se muestran durante la ejecución del programa y
se eliminan al finalizar el programa. Acceso: Tmplt, 4. Variable, 1. LOCAL
Consejo: Puede declarar variables locales y asignar un valor inicial al mismo tiempo. Por
ejemplo: LOCAL K:=1; almacena 1 en K y convierte a K en una variable local.
MOPMT calcula el pago mensual de un préstamo. Los argumentos son: el monto del préstamo
(L), la tasa de interés (R) y el número de meses (M).
EXPORT MOPMT(L,R,M)BEGINLOCAL K:=R/1200; K:=L*K/(1-(1+K)^-M); RETURN
"Pago ="+K; FIN;
Consejo: Utilice RETURN, TEXTOUT_P e PRINT para devolver cadenas personalizadas, que
combinan resultados, mensajes y cálculos. Las piezas están conectadas con un signo más.
Ejemplos:MOPMT(4000, 9.5, 30) devuelve 150.317437565MOPMT(370000, 3.5, 360) devuelve
1661.46534383
Prueba esto y la próxima vez en la serie destacaré otras cosas que podemos hacer con HPPP.
¡Gracias!
Eddie
Este blog es propiedad de Edward Shore. 2013
Tutorial de programación HP Prime #2: MSGBOX, IFTHEN-ELSE, PRINT, FOR
Bienvenido a otro tutorial de programación para HP Prime. En esta sesión, cubriremos
MSGBOX, IF-THEN-ELSE, PRINT y el bucle FOR.
MSGBOX
MSGBOX: MSGOX toma una cadena y crea un cuadro de mensaje emergente. La ejecución
del programa se detiene hasta que presione una tecla para confirmar el mensaje. Acceso:
Cmds, 6. E/S, 8. MSGBOX
El programa COMLOCK: Imagina que estás a cargo de configurar las combinaciones para los
buenos bloqueos de combinación de la vieja escuela. Este programa proporciona
combinaciones de tres dígitos mediante el uso de MSGBOX.
EXPORT COMLOCK()BEGINLOCAL L0; L0:=RANDINT(3,0,39);**MSGBOX("SECRET:
"+L0(1)+","+L0(2)+","+L0(3)); FIN;
** Gracias a Thomas Lake por señalar mi error tipográfico. Disculpas por cualquier
inconveniente - Eddie (3/21/2014)
Otros comandos que se destacan:
RANDINT(n, a, b) genera una lista de n enteros entre a y b. Puede omitir n si desea un solo
entero aleatorio. Las selecciones pueden repetirse.
Las variables de lista predeterminadas de HP Prime se designan de L0 a L9.
Aquí hay una salida de ejemplo para COMLOCK:
IF-THEN-ELSE IF-THEN-ELSE: Estructura del programa:
IF condition
THEN
do si la condición es verdadera; ELSE
hacer si la condición es falsa; FIN;
Acceso: Tmplt, 2. Rama, 2. SI ENTONCES MÁS
Consejo: Puede omitir la parte ELSE si solo desea probar para ver si una condición es
verdadera. Acceda a la estructura simple IF-THEN presionando Tmplt, 2. Sucursal, 1. SI
ENTONCES.
Acceda a <, ≤, ==, etc. presionando Mayús, 6. Tenga en cuenta que el doble es igual es
necesario para comprobar la igualdad.
IMPRIMIR IMPRIMIR
: El comando IMPRIMIR imprime una picadura, un resultado o una combinación de ambos en
la pantalla Terminal de Prime. Si se utiliza PRINT, el programa finalizará en la pantalla del
terminal (salida de texto). Pulse un botón para salir.
Puede acceder a la pantalla del terminal en cualquier momento pulsando el botón ON,
manteniéndolo pulsado y, a continuación, pulsando el botón Dividir ( ÷ ).
Acceso: Cmds, 6. E/S, 9. IMPRIMIR
Consejo: Para borrar la pantalla del terminal, escriba PRINT(). Esta es una buena manera de
borrar la pantalla del terminal y normalmente uso esto al principio de cualquier programa si
PRINT se va a usar más adelante.
El programa QROOTS (un solucionador cuadrático más, perdón por no ser chicos y chicas
originales), demuestra el uso de IF-THEN-ELSE e PRINT.
Aquí establecí la variable de configuración HComplex en 1, lo que permite resultados de
números complejos.
EXPORT QROOTS(A,B,C)BEGINLOCAL D;PRINT(); HComplex:=1;D:=B^2-4*A*C;IF
D≥0 THENPRINT("Las raíces son reales."); ELSEPRINT("Las raíces son
complejas."); FIN; IMPRIMIR((-B+√D)/(2*A)); IMPRIMIR((-B-√D)/(2*A));
FIN;
Ejemplos:QROOTS(1,5,8) returns:Las raíces son complejas. -2.5+1.32287565553*i-2.51.32287565553*i
QROOTS(2,-4,-8) returns:
Las raíces son reales. 3.2360679775-1.2360679775
FOR Esta sección explorará los comandos básicos FOR
structure:FOR
variable FROM start TO end DO
; FIN;
Todos los comandos del bucle se ejecutarán un número determinado de veces. Cada vez que
termina un bucle, la variable aumenta en uno. El bucle termina cuando variable=end.
Acceso: Tmplt, 3. LOOP, 1. FOR
El programa SUMDIV toma cualquier entero y suma la suma de sus divisores. Por ejemplo, los
divisores de 12 son 1, 12, 2, 3, 4 y 6. La suma es 28.
Comandos destacados en SUMDIV
:idivis: idivis(integer) devuelve una secuencia de todos los divisores if integer. Acceso: Caja
de herramientas, CAS, 5. Entero, 1. Divisores
Cualquier comando CAS utilizado en la programación estará precedido por "CAS". No todos los
comandos CAS se pueden utilizar en la programación de HP Prime en este momento.
DIM: devuelve las dimensiones de una secuencia, cadena o matriz. Se debe usar DIM en lugar
de SIZE para evitar un error de argumento incorrecto.
Para secuencias o vectores, DIM devuelve la longitud de una lista {length}. Para las cadenas,
DIM devuelve la longitud como un número. Para las matrices, DIM devuelve la lista {número de
filas, número de columnas}.
Acceso: cmds, 1. cadenas, 9. DIM
El programa:
EXPORT SUMDIV(N)BEGINLOCAL
S:=0,K,mdiv,ldiv;mdiv:=CAS.idivis(N);ldiv:=DIM(mdiv); PARA K DE 1 A
LDIV(1) DOS:=S+mdiv(K); FIN; RETORNO S; FIN;
** Gracias a Thomas Lake por señalar que la variable "mat", que tenía en este programa era
innecesaria. - Eddie 21/03/2013
Ejemplos:SUMDIV(12) devuelve 28. SUMDIV(24) devuelve 60. SUMDIV(85) devuelve 108.
Esto concluye esta parte del tutorial de programación de HP Prime.
Tutorial de programación HP Prime #3: WHILE, INPUT,
KILL, REPEAT, GETKEY
Este tutorial cubrirá mucho, cada uno con algunos nuevos comandos de programación en esta
serie. Espero que estés listo para la intensidad. :)
MIENTRAS, ENTRADA, MATA HP
Prime Program: TARGET. TARGET es un juego en el que proporcionas una suposición para
obtener un número deseado. Si falla, la calculadora le dirá si el número es mayor y menor. Al
final del juego, la calculadora te da cómo puedes elegir lo que necesitabas para obtener el
número objetivo.
WHILE: Repita una serie de comandos mientras se prueba una condición específica.
WHILE condition es true DOcommandsEND;
Acceso: Tmplt, 3. Bucle, 5. WHILE
Precaución: ¡Vigile sus ENDs! Asegúrese de que haya un FIN con cada bucle y el programa en
sí. Pulse la tecla programable Check para comprobar su trabajo.
INPUT: Crea una pantalla de entrada para variables. En HP Prime, la entrada puede solicitar
más de una entrada. TARGET muestra INPUT con un mensaje.
Una variable:INPUT(variable, "title", "label", "help text")
Multi-Variable
:INPUT(
lista de variables, "title", lista de "etiquetas", lista de "texto de
ayuda")
Nota: Al pulsar Cancelar se almacenará un 0 en variable. Puede incluir código de qué hacer si
el usuario presiona Cancelar, pero no es obligatorio.
Acceso: Cmds, 6. E/S, 5.
INPUT KILL: Finaliza la ejecución del programa. Nada muere, lo prometo.
Acceso: Tmplt. 1. Bloque, 3. MATAR
Programa:
EXPORT TARGET()BEGINLOCAL C:=0, N:=RANDINT(1,20), G:=-1; WHILE G≠N
DOC:=C+1;INPUT(G,"¿Adivina?","GUESS:","1 - 20");
SI G==0 ENTONCESMATAR; FIN;
IF G < N THENMSGBOX("Superior");
FIN;
IF G > N THENMSGBOX("Inferior"); FIN;
FIN;
MSGBOX("¡Correcto! Puntuación: "+C);
FIN;
Pruébalo y, por supuesto, puedes ajustar el límite más alto. Aquí hay algo para que pruebes
con TARGET:
1. Agregue una cantidad limitada de conjeturas. 2. ¿Puedes mostrar la lista de conjeturas?
REPEAT
ULAM Algoritmo: tome un entero n. Si n es par, divídalo por 2. Si n es impar, multiplícalo por 3
y suma 1. ULAM cuenta cuántos pasos se necesitan para llegar de n a 1.
REPEAT:Acceso: Tmplt, 3. Bucle, 6. REPETIR
Featured:
CONCAT(list1, list2)
: Combina list1 y list2 en uno.
Acceso: Caja de herramientas, Matemáticas, 6. Lista, 4. Concatenar
EXPORT ULAM(N)BEGINLOCAL C:=1, L0:={N};
REPETIR
SI FP(N/2)==0 THENN:=N/2; ELSEN:=3*N+1; FIN;
C:=C+1; L0:=CONCAT(L0,{N}); HASTA N==1;
MSGBOX("NO. DE PASOS="+C); RETORNO L0; FIN;
Ejemplos:ULAM(5) devuelve: Cuadro de mensaje: "NO. DE PASOS=6"Lista: {5, 16, 8, 4, 2, 1}
ULAM(22) devuelve:Cuadro de mensaje: "
NO. DE PASOS=16"Lista: {22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1}
GETKEY
La siguiente sección presentará un comando súper importante, GETKEY. Trabajaremos con
GETKEY durante toda la serie.
El programa KEYNO: La persona presiona las pulsaciones de teclas. Que cada tecla pulsa, el
código vuelve a la pantalla del terminal. El programa finaliza cuando se presiona la tecla Intro.
GETKEY: Devuelve el código de tecla de la última tecla presionada. El mapa clave de Prime
está abajo. (La imagen es de la Guía del usuario de HP Prime)
Acceso: Cmds, 6. E/S, 4. GETKEY
EXPORT KEYNO()BEGINLOCAL K; IMPRIMIR(); PRINT("Presione cualquier
tecla para obtener su código."); PRINT("Pulse Intro para salir.");
REPEATK:=GETKEY;IF K ≥ 0 THENPRINT(K); FIN; HASTA K==30;
FIN;
Códigos clave de ejemplo:33: 8 tecla2: arriba
7: izquierda8: derecha12: abajo50: más45: menos
Con esto concluye la Parte 3. Una vez más, no se puede decir lo suficiente, gracias por todos
los comentarios y cumplidos. Y hasta la próxima,
Tutorial de programación HP Prime #4: CHOOSE y
CASE, Consejo sobre INPUT
Bienvenido a la Parte 4 de nuestra serie de programación para Prime. La sesión de hoy cubrirá
CHOOSE y CASE.
Primero un consejo de Han del Foro MoHPC, que se encuentra en
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi#255084. Gracias Han por
permitirme compartir esto.
Utilice la estructura IF THEN ELSE con INPUT para ejecutar un conjunto de instrucciones
predeterminadas si el usuario presiona cancelar. INPUT devuelve un valor de 0 si se presiona
ESC o cancelar, y 1 si se introduce un valor.
SI ENTRADA(...) THEN si se
introducen valoresELSE si se presiona
CancelarEND;
Los valores predeterminados se pueden asignar a los valores como un quinto argumento
opcional para INPUT.
INPUT(var, "Título", "Aviso", "Ayuda", valor predeterminado)
El tipo de variable puede establecerse en números distintos de los reales. Solo recuerde
almacenar dicho tipo antes del comando INPUT. Por ejemplo, si desea que var sea una
cadena, almacene una cadena vacía
:var:=" ";
Una vez más, muchas gracias a Han.
ELEGIR Y ELEGIR MAYÚSCULAS Y MINÚSCULAS
: Crea un cuadro de elección emergente, similar al que se ve cuando se hace clic en un menú
suave. Hay dos sintaxis para CHOOSE:
Simple Syntax (hasta 14 opciones):CHOOSE(var, "title string", "item 1", "item 2", ... , "item n");
Sintaxis de lista (cantidad infinita de elementos):CHOOSE(var, "title string", {"item 1", "item 2"});
Al elegir el elemento 1 se asigna el valor de 1 a var, al elegir el elemento 2 se asigna el valor de
2 a var.
Acceso: cmds, 6. E/S, 1. ELEGIR
CASE: Permite diferentes casos de prueba para una variable. También incluye un escenario
predeterminado (opcional).
CASEIF prueba 1 ENTONCES hacer si verdadero FIN;SI prueba 2 ENTONCES
hacer si verdadero FIN;... DEFAULT comandos END;
Acceso: Cmds, 2. Rama, 3. CASO
Veamos dos programas para demostrar tanto CHOOSE como CASE.
TERMVEL - Velocidad terminal de un objeto
EXPORT TERMVEL()BEGIN
LOCAL
L0:={9.80665,32.174},L1:={1.225,.0765},L2:={.47,1.05,1.15,.04},C,K,M,A
,T;
CHOOSE(C
,"Units","SI","English");CHOOSE(K,"Tipo de
objeto","Esfera","Cubo","Cilindro","En forma de lágrima");
INPUT({M,A},"Objeto",{"M=","A="},{"Masa","Área de superficie"});
T:=√((2*M*L0(C))/(L1(C)*A*L2(K)));
MSGBOX("Velocidad terminal="+T); RETORNO T; FIN;
Ejemplos: esfera, unidades SI, M = .05 kg, A = .0028 m ^ 2Velocidad terminal: T =
24.6640475387 m / s
Cubo, US Units, M = 1.2 lb, A = .3403 ft ^ 2Velocidad terminal: T = 53.149821209 ft / s
AREAC - Área de círculos, anillos y sectores
ÁREA DE EXPORTACIÓNC()BEGINLOCAL C,R,S,θ,A; CHOOSE(C,"Áreas","1.
Círculo","2. Anillo","3. Sector");
INPUT(R, "Radio de entrada", "R =");
CASEIF C==1 THEN A:=π*R^2; FIN;
IF C==2 THEN INPUT(S,"Small Radius","r="); A:=π*(R^2-S^2); FIN;IF C==
3INPUT(θ, "Angle", "θ=");\\ Suponga que está en el modo de ángulo
correctoIF HAngle==1 THEN\\ Test Angle Modeθ:=θ*π/180; FIN;
A:=θ*R^2/2; FIN;
FIN;
MSGBOX("El área es "+A); RETORNO A; FIN;
Ejemplos
R = 2.5, r = 1.5, θ = π/4 radianes o 45°
Círculo: 19.6349540849Anillo: 12.5663706144Sector: 2.45436926062
Así es como, en general, funcionan CHOOSE y CASE. Les doy las gracias como siempre. Es
tan bueno finalmente deshacerse de un resfriado y disparar en todos los cilindros nuevamente.
Download