HP Prime - Consideraciones del Lenguaje PPL - 4° Parte

Consideraciones importantes para programadores en PPL, se presenta un resumen de puntos relevantes al lenguaje, cuarta parte sobre Aplicaciones respecto a su desarrollo, conceptos, ventajas y el uso de archivos.



Consideraciones del Lenguaje PPL - IV
APLICACIONES


Antes de querer desarrollar grandiosas aplicaciones es realmente importante entender ciertos conceptos de funcionamiento, conceptos respecto al diseño de la calculadora que aclararán la idea de cómo debe ser el desarrollo de una App y cómo es que el usuario espera que funcione.

En resumen, una aplicación brinda al usuario beneficios de manejabilidad hacia su calculadora, y para lograrlo podemos dar simples cambios a una App como modificar su iniciación y vistas predeterminadas, hasta incorporar interfaces gráficas propias o programar con archivos.


Una App en HP Prime

Comprender el significado de una App se relaciona fuertemente con el funcionamiento de la calculadora, debido a que la calculadora siempre tiene una App abierta; al encontrarnos en todo momento sobre una aplicación podemos navegar con facilidad gracias a las teclas dedicadas a ese fin que implementó HP calculator group. De acuerdo a lo descrito, notamos que la calculadora esta orientada a usar Aplicaciones, las cuales de alguna manera siempre estan en segundo plano, podiéndose acceder a cualquiera de sus vistas en cualquier instante.


"La mayoría de las aplicaciones tienen tres vistas principales: la simbólica, de gráfico y la numérica. Estas vistas se basan en las representaciones simbólica, gráfica y numérica de los objetos matemáticos. Se accede a ellas mediante las teclas Symb, Plot y Num. Por lo general, estas vistas le permiten definir un objeto matemático (como una expresión o una sentencia abierta), trazarlo y ver los valores que genera." - Ayuda de la calculadora

"Cada una de estas vistas va acompañada de una vista de configuración que permite configurar la apariencia de los datos en la vista principal correspondiente. Estas vistas se denominan Config. simbólica, Config. de gráfico y Configuración numérica. Puede acceder a ellas pulsando Shift Symb, Shift Plot y Shift Num respectivamente." - Ayuda de la calculadora

El diseño original de las aplicaciones permite retornar a cualquiera de sus vistas; por lo que es importante implementar esta funcionalidad, brindar una adecuada experiencia al usuario, evitando Apps confusas que no siguen los mismos conceptos básicos nombrados hasta ahora.



Conocimientos requeridos

La creación de Apps en la calculadora es el paso casi inmediato tras entender conceptos básicos para el desarrollo de programas, puesto que son exactamente lo mismo con la diferencia que se adiciona características de manipulación que mejoran enormemente la experiencia del usuario. Se necesita comprender lo siguiente para seguir adecuadamente el hilo de este artículo.

  • Anidación de funciones
  • Ámbito de variables
  • Estructura principal de un programa
  • Pautas para crear una Interfaz gráfica (opcional)


Creando una App

Una aplicación puede ser desarrollada solo agregando algunas funciones a una App integrada, o reemplazando su contenido con interfaces integradas/propias, cual sea la forma el punto es el mismo, crear tu propia App. Modificar una App equivale a modificar el programa de aplicación que se encarga de redefinir teclas específicas y también el comportamiento al entrar por primera vez a la App, este código se almacena automáticamente en un archivo con extensión .hpappprgm.

Una App adiciona el uso de variables de aplicación y la gestión de archivos, ambos casos se explicarán más adelante.

Comandos dedicados

STARTVIEW(n): Inicia una vista integrada de la App al finalizar la ejecución de un programa o una vista glogal como la Pantalla de Inicio, útil para controlar el cambio de vistas.
STARTAPP("nombre"): Inicia una aplicación al terminar la ejecución de un programa, su uso no es frecuente en el desarrollo de aplicaciones.

Empezamos creando la nueva App

Crear una nueva aplicaciones es sinónimo de duplicar una App integrada o modificada , ya sea desde la Biblioteca de aplicaciones o desde el Kit de conectividad; el sistema nos pedirá un nuevo nombre y la App base con el cual fabricará los nuevos archivos vinculados/asociados que conformarán el cuerpo de la App. Esta nueva App puede ser arrastrada desde el Kit de conectividad, lista para ser transferida a otras calculadoras.







Al tratarse de una copia surge el término "App base", para referirnos a la App de partida y de la cual profundizaremos más adelante. Debido a que siempre debemos usar una aplicación base, trae consigo variables y funciones heredadas, vista simbólica, gráfica y numérica, variables de control de tales vistas como Xmin, Ymin e incluso la configuración modificada si es que la App base ya contaba con modificaciones. Si se elige la App base vacía (Ninguno), esta solo heredará la Vista Configuración Simbólica por defecto y las variables de manipulación de una App (AAngle, AFormat, ADigits, AFiles, etc).

Redefinición de teclas principales

Consiste en definir funciones que reemplazarán el comportamiento de las teclas, es decir, se ejecutarán estas funciones reemplazando el funcionamiento común de la App base. La codificación se realiza sobre el programa de aplicación.


En resumen la creación de las funciones Symb, Plot, Num, SymbSetup, PlotSetup y NumSetup dentro del programa de aplicación, reemplaza la ejecucción común de las teclas por la ejecucción de las funciones definidas en el programa de aplicación.

Redefinición de tecla View: menu Vista

Complementando lo indicado en el manual, se puede crear un nuevo menú Vista si adicionamos la palabra clave VIEW en la definición de una función, es decir asociamos la ejecución de una función existente al menú Vista.


Redifinición de la información de la App

Definiendo una función llamada Info se logra el mismo efecto mostrado, por ejemplo mostrando una caja de texto con MSGBOX con el nombre, versión y fecha de nuestra App.


En la versión FW 11226 y posiblemente en otras versiones, esta redefinición no surge efecto.

Arranque de la nueva App

El toque final para redefinir el flujo de nuestra App es definir la función START quien se ejecutará cada vez que se ingrese a la App mediante la Biblioteca de aplicaciones o el comando STARTAPP.

El principal objetivo de crear la función START es decidir qué nueva vista se ejecutará de entre todas nuestras funciones creadas (definir la pantalla inicial de la App). Si elegimos a la vista simbólica modificada como la primera en mostrarse al iniciar nuestra App deberemos anidar la función Symb con la función START como es usual.


Otro cometido de esta función es ocultar la vista nativa a la que nos dirije la App base, para ello usaremos el comando STARTVIEW para iniciar una vista seleccionada al final de la ejecución del primer ingreso.

Funciones exportadas

La creación de este tipo de funciones esta orientado a usarlas en conjunto con la aplicación, es decir serán características especiales que liberaremos para el uso de nuestra nueva aplicación. Se definen como es usual, anteponiendo la instrucción EXPORT a las funciones deseadas; para exportar las funciones seleccionadas para el menu Vista, se coloca el EXPORT antes de la instrucción VIEW.



Las funciones exportadas se pueden encontrar desde el cuadro de herramientas/Aplicaciones/Nueva App; pueden usarse de la misma forma que las funciones exportadas comunes, a diferencia que se ejecutan directamente al tener esta App abierta, para lograr usar la función al abrir otra App debermos usar un prefijo de acceso: NuevaApp.Función01.




La App base y la App vacía

App base

Al duplicarse una App, solo se copia una especie de identificador, los datos de configuración y los datos que contenga, es recomendable restaurar una App antes de copiarla como base para evitar datos inútiles. No se esta duplicando toda la App como su codificación, eso es algo que se encuentra integrado en el firmware, se podría decir que solo se logra copiar una cáscara que reutiliza el código interno de la App integrada. De acuerdo a lo descrito, el nuevo ícono no se esta duplicando, solo esta usando el mismo ícono de la App base, los únicos íconos duplicados son los íconos nuevos (icon.png).

Las vistas siguen existiendo y no pueden ser completamente bloqueadas, es cierto que se modifica la acción de las teclas Symb, Plot y Num pero si se usa el comando STARTVIEW se ingresará a las vistas originales.

Los comandos y variables de la aplicación también se duplican y no se pueden ocultar o eliminar, así que son puntos a considerar al momento de elegir nuestra App base.

App vacía

Si se elige a la App vacía (Ninguno) como App base, el programador obtendrá una App limpia para trabajarla desde 0, se asegura de poseer la App base más ligera respecto al resto, y obviamente no arrastrará variables/funciones residuales que sí poseen sus compañeras y que posiblemente no nos sean útiles. La App vacía fue implementada a partir del firmware 2018 01 24 (13333).

Los elementos que conserva este tipo de App para asegurar su correcto funcionamiento son la vista de Configuración simbólica que toda App requiere poseer para que el usuario realice sus configuraciones personales, y las variables de aplicación que permiten al programador manipular la aplicación como AAngle, AFormat, ADigits, AComplex, AFiles, AFilesB, DelAFiles, ANote, AProgram, AVars y DelAVars.

La elección

Duplicar una App involucra a datos integrados (configuración), datos introducidos (como una función), nuevas variables de usuario (AVars) y los archivos vinculados (AFiles, como el ícono propio), de acuerdo a la necesidad y planificación es que se elige cualquiera de las Apps existentes, sin medir a una sobre otra, simplemente una puede ajustarse mejor a tu proyecto actual.


Pautas para creación de una App

Desarrollo

Si la App que desarrollas es de un ámbito simple y sencillo, por lo menos aloja tu única función principal en todas las vistas o solo en la tecla Num (enfocada al ingreso de datos), para permitir el acceso en cualquier instante como es lo esperado; sin mencionar sobre definir adecuadamente la función START.



Otro acabado es anular las vistas que no necesitarás de la App base (a menos que uses la App vacía), ya sea definiendo las funciones vacías respectivamente o iniciando una vista nativa no implementada que lanzará un mensaje de advertencia bien intuitivo.



Por último no olvidarnos del menú Vista, redefinirlo por lo menos una vez porque usualmente la App base trae consigo su propio menú Vista que puede acceder a las vistas nativas, opción que no sería adecuada. Esto no será necesario si se eligió una App base adecuada (que originalmente no tiene esta opción).



Depuración

Como una aplicación no se ejecuta igual que los programas, no tenemos forma de identificar el tipo de error por compilación o ejecución de forma simple, para ello es recomendable usar funciones externas (un programa aparte), de esa manera se trabaja tranquilamente sobre el programa externo que al finalizar puede ser fusionado con la App (permitiendo usar PrimeMom).





Codificar la App no directamente sobre las funciones de las vistas nos facilita crear el enlace que debe existir entre las vistas, ya que no termineramos la ejecucción del anidado de funciones pero sí se eliminará toda variable local que ya no utilizaremos (problema de funciones recursivas), permitiéndonos ejecutar nuevamente las funciones de forma limpia.




Ícono

Esta funcionalidad resulta ser la más atractiva para los usuarios y programadores principiantes, de todas formas no debemos subestimar la creación de esta característica, puesto que muchas veces se requiere de conocimientos muy cercanos al diseño gráfico para obtener un resultado deseado.

  • Es un simple archivo vinculado a la aplicación con el nombre "icon.png".
  • La dimensión recomendable es 38x38 píxeles.
  • Admite solo transparencias completas (mayores a 128).

El ícono puede crearse con el Kit de conectividad: "Añadir ícono de la aplicación" o "Añadir archivo" (envío directo de "icon.png"), también es posible usar AFiles en la misma calculadora.



Por ser un archivo de tipo imagen enviado a la calculadora, se recomienda con insistencia aplicar las consideraciones de compresión de imágenes y tener en cuenta los limites de la calculadora.

Es recomendable no usar bordes con degradado transparente, puesto que la calculadora solo reconoce opaco o transparente; las dimensiones pueden ser diferentes a 38x38, sin embargo este será escalado y ajustado a la dimensión 38x38, ocasionando una pérdida de calidad puesto que el redimensionado de imágenes es básico en la calculadora.


Las Apps respecto a los Programas

Ventajas para el usuario

  • Mejora el acceso
  • Agregar un ícono representativo (su diseño es un trabajo adicional)
  • Tiene un flujo continuo de ejecución (como en las Apps integradas)

Ventajas para el programador

  • La App le da un lineamiento de funcionamiento fijo y conocido por el usuario.
  • La conservación de datos es más consistente.

Desventajas para el programador

  • Una app no retorna valor a través de sus vistas o al iniciarse, las funciones principales usualmente son locales, por lo que no se puede acceder a ellas sino es con las teclas Symb, Plot y Num; por eso se aconseja programar la App primero desde un programa externo para poder detectar los errores de ejecución, al final se podrá acoplar el código dentro de la App.

Observación
Los beneficios de una App sobre un programa convencional es notorio, sin embargo crear todo programa como una App es contradictorio a nivel de optimización; es de acuerdo a la estimación del nivel de importancia y frecuencia de uso de un programa, que decidimos si es realmente necesario amontonarlo o sobrecargar la Biblioteca de aplicaciones; debemos evitar la idea de abandonar o dejar de lado el uso del catálogo de programas.


Gráficos en coordenadas cartesianas

La mayoría de aplicaciones tienen habilitada la Vista de gráfico, esta tiene variables como Xmin, Xmax, Ymin, Ymax que controlan el campo de dibujo en las aplicaciones (inserción de gráficos a través de los comandos de dibujo). Las Apps por lo tanto facilitan el escalado y ajuste para la inserción de gráficos si se decide trabajar en un sistema cartesiano.


El punto fijo entre gráficos es la esquina superior izquierda definido por Xmin y Ymax, todas las variables gráficas se dibujaran en base a estas dimensiones; dibujar en un sistema cartesiano equivale a convertir internamente los datos, ajustándolos y ubicándolos para obtener finalmente su coordenada de píxel, que de acuerdo al artículo anterior, siempre son redondeados al número menor. Entender que variar la escala de las coordenadas luego de haber realizado un dibujo no significa que el dibujo también se redimensionará, los gráficos son estáticos, siguen siendo píxeles los datos que son almacenados.


Entonces los comandos de dibujo que no poseen el sufijo adicional son quienes actúan graficando en base a la configuración de la Vista de gráfico de la App actual en un sistema de coordenadas cartesianas (aunque preferiría que los de píxel sean quiene no tengan el sufijo).

Las variables como Xmin pueden ser manipulados desde un programa, por lo que es posible usar coordenadas cartesianas en programas si se realiza un adecuado respaldo y restaurado de sus valores. La desventaja de intentar usar el sistema cartesiano desde un programa recae sobre la inexistencia de estas variables en muchas Apps, el efecto es el error al intentar compilar el programa. No es recomendable intentar usar el sistema cartesiano incorporado al desarrollar programas, la alternativa es tratar los datos dando la escala y posicionamiento deseado.



En las aplicaciones donde no existen estas variables, sí es posible usar coordenadas cartesianas pero no manipularlas, la relación es 1 unidad = 10 píxeles, la intersección de los ejes se aproxima al centroide de la pantalla obviando la zona de menú.

Aclarando otro punto respecto a gráficos, es que las vistas redefinidas no traen consigo la asignación de títulos (barra superior con hora y batería) como Vista simbólica NuevaApp o cualquier variación diferente a lo ya conocido sobre interfaces integradas y el concepto de la variable de gráfico G0 como gráfico estático.


Variables de aplicación: AVars

Las variables que asociamos a una aplicación son similares a las variables de usuario, a diferencia que pueden ser usadas solo al posicionarnos en la App asociada, no tienen restricciones adicionales. Se almacenan en un archivo con extensión .hpappvar.

Para crearlos usamos AVars("NuevaVariable"); debido a que tienen un ámbito externo deben crearse antes de usarse en nuestro programa de aplicación. Es adecuado crearlo ubicándonos en nuestra App y crear la nueva variable desde Inicio con AVars("NuevaVariable"):=Dato.



Aunque es posible usar estas variables sin problemas dentro de nuestro programa de aplicación, este ocasionará problemas de compilación si la App es enviada por primera vez a una nueva calculadora (se soluciona recompilando pero no es adecuado), más aún siendo esta característica orientado a su uso poco frecuente, un dato tipo resultado o de almacenamiento de valores. El uso correcto de las variables de aplicación es con AVars("NuevaVariable") o EXPR("NuevaVariable"), como la referencia es una cadena no genera inconvenientes con la compilación.



Las variables de aplicación son públicas, las podemos encontrar desde el cuadro de herramientas/Aplicaciones/NuevaApp. Se eliminan con DelAVars.




Archivos en HP Prime: AFiles, AFilesB

La gestión de archivos fue implementado a partir del firmware 2015 04 27 (7820) mediante la adición de las variables de aplicación AFiles, AFilesB y DelAFiles que como se puede revisar en la ayuda de la calculadora, pueden crear archivos si no existen, modificarlos, consultar sus bytes y eliminar el archivo especificado.

Gracias a esa implementación se permite crear con facilidad archivos, los cuales se llenan con datos que provienen de cualquier variable que escojamos, luego estos archivos pueden ser reutilizados en cualquier momento. Debemos entender como principio de programación que los programas siempre se ejecutan con los datos alojados en la memoria RAM (32MB), y los archivos se encuentra en la unidad de almacenamiento (memoria flash 256MB), por esa razón debemos cargar su contenido a variables y usar esos datos con normalidad.



Los archivos asociados en la aplicación se ubican directamente sobre la carpeta de la aplicación, no es posible crear carpetas internas para organizar los archivos creados o importados. Cualquier archivo puede ser enviado a la calculadora, pero no podrán ser leídos sin un intenso esfuerzo, tener en cuenta siempre las limitaciones de la calculadora.



El proceso de transferencia de datos de la memoria flash (almacenamiento) a la memoria RAM tiene una velocidad menor respecto a una consulta equivalente de una variable; por esta razón no es recomendable usar los archivos insistentemente como si fueran variables locales de un programa, debemos usarlo para almacenar datos que requieran ser consultados en otra ejecucción del programa o en otra calculadora.

Con estas asignaciones hacia nombres de archivos mediante AFiles se logra enviar la estructura del dato usado por HP Prime, exactamente como la usa la memoria RAM. La reutilización de estos archivos en HP Prime es fácil gracias a que cada dato incluye su tipo internamente, por lo que no requerimos de aspectos detallados como declaración de punteros según el tipo de dato.

La variable AFilesB permite manipular los bytes del archivo, si solo usamos el nombre del archivo retornará la cantidad de bytes que contiene el archivo (Tamaño de archivo en bytes). Usando la variable AFilesB podemos inspeccionar los Tipos de datos: Bytes de estrutura que nos ayudaría a exportar nuestros archivos a otros sistemas.



La posibilidad de trabajar con archivos, llega a ser confuso si no se comprende el flujo de uso, volver a recordar que un archivo pertenece a la unidad de almacenamiento (flash memory) y la ejecución de programas se realiza siempre desde la memoria RAM.


Imágenes PNG y JPG

Desde la liberación de las variables de aplicación AFiles, AFilesB y DelAFiles, se integró conjuntamente un interpretador para archivos PNG. Posteriormente a partir del peligroso firmware 2016 04 14 (10077), la calculadora agrega el soporte para imágenes JPG. Los formatos mencionados estan soportados nativamente por la calculadora y por esa razón su manipulación posee una velocidad muy adecuada.

Lectura: Envío a variable gráfica

Entendiendo que los archivos se leen asignándolos en variables (encontrar un medio que lo almacene en memoria) tenemos el siguiente esquema general, G1:=("imagen.png/jpg") para cargar la imagen en G1. Se puede cargar una imagen directamente sobre G0.



Cargar una imagen en una variable gráfica significa colocar exactamente el contenido del archivo (datos comprimidos) y tomar la misma dimensión, si el gráfico se edita se convierte a datos por píxel para el manejo común de gráficos que puede incrementar su peso considerablemente (datos sin compresión, 2bytes por píxel), recordando que el contenido de las variables gráficas se conservan, por lo que es aconsejable eliminar los datos que ya no usaremos al finalizar la ejecución y al mismo tiempo aplicar los criterios de optimización en HP Prime para el envío de imágenes. No confundir el archivo con los datos cargados, ambos datos no poseen el mismo tamaño de bytes ya que los archivos se enfocan más al tratado de datos.

Un pequeño resumen sobre los formatos de imágenes, el cual es un tema extenso y adicional, se afirma que ambos formatos aplican compresión de datos ya sea con o sin pérdida de calidad. El formato PNG tiene la capacidad de conservar la calidad de una imagen y permitir transparencias, posee tipos, filtros y métodos de compresión que pueden destacar enormemente la diferencia de tamaño con otros formatos de la misma imagen (en ocasiones), fue creado como sucesor del formato GIF, puedes ver más en optimización de imágenes PNG. El formato JPG puede aplicar niveles de compresión usualmente con pérdida, es muy útil para fotos, no es recomendable por ejemplo para capturar la pantalla de la calculadora que posee el mismo color sobre áreas grandes de píxeles.

Escritura: Creación de archivos

Podemos enviar las variables gráficas hacia archivos de imagen; el envío se realiza respecto al gráfico completo, para crear el archivo de la imagen parcial se puede usar SUBGROB para ; para crear un archivo PNG usamos AFiles("archivo[.png]"):=G1, colocar la extensión es opcional puesto que el dato almacenado sigue siendo en formato PNG.



Para una archivo JPG usamos AFiles("archivo.jpg",[1,100]):=G1 donde opcionalmente podemos elegir el porcentaje de compresión (1%-15% compresión fuerte, 98%-100% compresión baja), sino se especifica el porcentaje (calidad) se asume 60. Se recomienda aplicar un porcentaje de compresión adecuado puesto que la creación de imágenes desde la calculadora, como capturar la pantalla, puede crear un archivo notablemente más pesado que si realiza en formato PNG.



Beneficio adicional

El beneficio es notorio, podemos leer nativamente imágenes en la calculadora; pero también se puede sacar provecho a esto con fines de compresión de imágenes, puesto que la calculadora posee un lector y generador de archivos para estos formatos, es decir, posee algoritmos propios de compresión en base a la profundidad de color de la calculadora. Logramos la compresión cargando y generando un nuevo archivo.



En este ejemplo se uso el logo de Facebook, que tenía transparencias y había sido previamente comprimiendo en Photoshop, el tamaño se reduce considerablemente, cuya causa puede ser la reducción de colores y bytes por canal. El logo aún puede ser comprimido a un punto cómodamente visible con programas externos como Riot.


Conservando datos tras la ejecucción

Conservar datos resulta una tarea fácil para una App (en programas se intenta), todo dato de configuración o almacenado por el usuario debe respaldarse en una variable de aplicación (no recomendado por ser editables) o mejor aún con un archivo asociado. La carga de estos datos hacia las variables de ejecución no es una tarea complicada al llegar hasta este punto.

Las aplicaciones deben prestar un flujo contínuo y confiable, por esa razón debemos realizar los preparativos para no tener pérdida de datos tras la recompilación del código de la aplicación; el código es recompilado al enviar la App a una calculadora nueva, al dar guardar desde el Kit de conectividad si tenemos abierta la App, por último cuando se visualiza el código desde el catálogo de programas.

Para más pautas y conceptos puedes revisar cómo conseguir el almacenamiento persistente de datos.


Resumen de archivos de una App

Una aplicación llamada "NuevaApp" es equivalente en Windows a una carpeta denominada NuevaApp.hpappdir, que puede contener la mayoría de estos archivos:

  • NuevaApp.hpapp → Identificador de app base, datos* de aplicación y configuración
  • NuevaApp.hpappprgm → Programa de aplicación (Symb, Plot, Num, View, etc)
  • NuevaApp.hpappvars → Definición y datos de variables de aplicación
  • NuevaApp.hpappnote → Contenido de la vista de información
  • Otros archivos → Archivos asociados a la aplicación (ícono, imágenes, textos, etc)

*Los datos de aplicación son todo dato modificable que posee una app integrada como: la expresión F1 de App Función, definición de un círculo de App Geometría, las celdas existentes de App Hoja de cálculo, Result de App Inferencia, las listas C1 y C2 de App Var 2 estadística, incluso los datos que aparentan estar vacíos poseen un valor que los identifica en esa condición. En cuanto a datos de configuración de vistas tenemos el formato de número, sistema angular, mostrar ejes, rango de ejes o el nombre del archivo que será usado como fondo en la Vista de gráfico, etc.


Preguntas frecuentes


Tras finalizar el inicio de mi aplicación me muestra una de las vistas integradas. ¿He redefinido mal mis nuevas vistas?
Probablemente no, el inicio de una App trae consigo la redirección a una vista integrada, como cuando entramos a la App Hoja de cálculo y nos redirige a la Vista numérica. La solución es usar en alguna parte del código que haya involucrado la función START el comando STARTVIEW, por ejemplo STARTVIEW(-1) que nos redirija a la Pantalla de inicio al finalizar el programa modificado.


Mi aplicación no es tan compleja pero tiene un gran tamaño debido a los archivos de imagen. ¿Existe algo para solucionar esto?
Para imágenes es recomendable usar programas de compresión y ajustar su tamaño a las dimensiones que realmente se usarán en la calculadora, para más detalles de optimización de imágenes puedes revisar el artículo dedicado que existe en este blog.


Al enviar mi App a otra calculadora aparece el ícono, pero sigue mostrando las vistas de la App base. ¿Qué esta pasando?
Sin importar que la App tenga errores en su programa de aplicación, el ícono se mostrará por el simple hecho de la existencia del archivo icon.png, esto no es ninguna clase de pista útil.
Es un problema de compilación, el programa de aplicación esta encontrando errores de sintaxis; las causas más comunes son que has usado en tu código nombres de variables de usuario que creaste en tu propia calculadora, algún nuevo dato que hayas creado de forma externa a la App o incluso si usaste directamente los identificadores (nombres) de las variables de aplicación, intenta usar el comando EXPR para evitarlo.


Si las Apps pueden usar archivos. ¿Por qué no se han publicado Apps que permitan leer archivos Word, PDF, Winrar, Excel, etc?
Es debido a que son cosas distintas los archivos y los programas que leen (interpretan) estos archivos; estos programas de lectura de archivos deben reconocer adecuadamente los registros que contiene cada archivo, es decir que tienen conocimiento de cómo reconocer cada dato, estos datos se leen en bytes y tienen una estructura distinta a los bytes que definen los datos en la calculadora (se requiere una interpretación de bytes).
Por otro lado sería peligroso que esto se pueda hacer, ya que este tipo de archivos suelen contener mucha información y ser de gran tamaño, siendo posible sobrepasar las capacidades de la calculadora.


Las Apps parecen superiores a los programas. ¿Los programas pierden importancia?
Claro que no, tanto Apps como programas son formas de manipular la calculadora y beneficiar al usuario, todo tema que sea sencillo es recomendable dejarlo como programa, y los de necesidad más concurrente como aplicaciones. Evitar crear Apps por cualquier motivo ayuda a no sobrecargar la calculadora.


¿Cómo adiciono animaciones a la App Geometría, por ejemplo poner un relleno tipo trama o imagen a un círculo?
Una interfaz integrada no puede ser modificada, eso incluye a la vista de gráfico de la App Geometría, pueden ser manipuladas mediante las opciones liberadas como variables y funciones.


¿Puedo insertar un gráfico de barras o circular en mi aplicación nueva basada en la App Hoja de cálculo?
Similar al caso anterior, las vistas integradas no pueden ser modificadas, sin embargo puedes optar por crear la opción "Ver gráfico" en el menú Vista y que éste te muestre un gráfico en base a las celdas deseadas.



Retorna a Consideraciones para Gráficos

Comentarios

  1. ..AYUDA COMO AGO PARA UTILIZAR DRAG O MOVER LA PANTALLA TACTILMENTE

    ResponderBorrar
    Respuestas
    1. La pregunta se ajusta un poco más al artículo anterior respecto a gráficos, pronto será publicado un artículo sobre creación de interfaces gráficas.
      Dando respuesta, esto puede resultar complejo, me limitaré a darte la respuesta de acuerdo al nivel de la pregunta:
      El efecto de desplazamiento es sencillo, lo único que debes hacer es vincular la variación del gesto en pantalla tipo desplazamiento con las coordenadas de inserción de la variable gráfica que deseas mostrar.

      Borrar
  2. Hola Carlos, enhorabuena por tu blog.
    Me gustaría plantearte una cuestión de vital importancia para mi. He realizado una serie de programas que solo quiero que puedan usar mis alumnos. Para ello me gustaría protegerlos. Existe alguna forma de encriptar el código o por lo menos que un alumno pueda instalar el programa pero no pueda editar el código? En la HP50G se podía encriptar el código, pero me conformaría con restringir su edición.

    ResponderBorrar
    Respuestas
    1. Eso es practicamente imposible en HP Prime, por el hecho de solo poderse crear programas de código abierto (open source), eso es una filosofía de creación de programas donde lo primordial es que el código siempre será visible y editable (por ello la calculadora nos da todas los medios de edición), tiene muchos beneficios y en consecuencia no se lleva para nada bien con encriptar o proteger un programa para su edición.

      La respuesta a esta situación es aceptar que la calculadora es del tipo educativa (promueve compartir toda clase de información), aprovechar ese beneficio en lo posible, si se necesita una característica diferente será posible usando otra calculadora.

      Borrar
    2. Otra alternativa es usar el Modo Examen, que es la característica orientada al aula (específicamente para que el docente controle al alumno temporalmente). Ese modo se puede configurar desde el Kit de conectividad, puede crear uno con la siguiente configuración:
      - Tiempo de duración del examen: 2h por ejemplo
      - Conservar y restaurar: la calculadora borrará todo cambio hecho durante el examen, incluso si usted le pasó un programa durante el modo examen, este se borrará al retirar el modo.
      - Parpadeo de LED activado: constatar que una calculadora esta en modo examen.
      - Lista de características reducidas: una lista simple marcable de lo que usted prohibirá durante el modo examen, por ejemplo si desea que un alumno no use los programas que él creó puede marcar estas prohibiciones
      √ Aplicaciones de usuario
      √ Notas y programas

      Con esto es posible enviar una aplicación y que al salir la calculadora regrese a como antes del examen, borrando las nuevas Apps o programas que les pasó justo después de poner en modo examen la calculadora y entregárselo al alumno. La desventaja de esto es que su programa deberá ser entendible para que pueda usarlo sin ninguna práctica previa, puede dar unos minutos previos de práctica sobre el uso del programa antes de empezar el examen

      El modo examen se crea en el panel contenido, ahí puede alojar los programas que desea traspasar a las calculadoras que se conecten luego.

      El proceso es:
      1. Tener el Kit de conectividad y dentro abierto el modo examen que va a aplicar
      2. Conectar todas las calculadoras posibles, e Iniciar el modo examen
      3. Enviar los programas o apps que se alojarán temporalmente durante el modo examen
      4. Desconectar las calculadoras y repetir desde el paso 2 hasta activar el modo examen a todas las calculadoras
      5. Opcional: Terminar el modo examen conectando las calculadoras al Kit de conectividad, y dando a "Final" desde el mismo examen que inició, o puede esperar que termine el tiempo establecido

      Borrar
  3. Buenas noches, muy útil la información suministrada, mi duda va por el sentido de cómo, luego de crear una aplicación, la configuro para que sea compatible sólo con una calculadora y luego como poder configurar esa misma restricción, según un compañero me explicó, eso se logra con el número de serie, muchas gracias por la respuesta.

    ResponderBorrar
    Respuestas
    1. Suena interesante así como suena, pero no es más que poner en el código una condicional que verifique un serial fijo que debes pedir al destinatario, el serial de la calculadora se obtiene con SERIAL o VERSION(4).

      Este tema se aplica tanto a programas y apps, y siempre estará en un código visible y editable (requisitos de un lenguaje libre como lo es hp prime), así que nunca se podrá crear una restricción definitiva de este tipo. No recomiendo hacer esas cosas, por lo tanto no recomiendo intentar vender programas o crearlos para venderlos, es como querer entrar a la venta de programas donde la plataforma tiene el objetivo de ser siempre gratuito (como pasa en muchos sitios web donde se comparte programas opensource)

      Borrar
  4. HOLA CREE TENGO UNA APP (VACIA) y quiero agregarle la vista de HOJA DE CALCULO es posible ?

    ResponderBorrar
    Respuestas
    1. No, las vistas son propias de una App, sería mejor tener como base una hoja de cálculo que una vacía para tu caso

      Borrar
  5. Hola. tengo un programa del cual obtengo resultados tipo listas que deseo mantener guardados para modificarlos o verlos simplemente cada vez que ejecute mi programa y llame esa variable. por lo que lei AVars me ayudaria en ese sentido. pero es recomendable crear una fachada de app para mi programa por la simple ventaja de usar AVars? o existe otra manera?

    ResponderBorrar
    Respuestas
    1. Hola, lo que buscas es un tema conocido como Persistencia de datos. Va así:
      - Programas:
      1. Usar variables globales (esos que se definen fuera de las funciones dentro de un programa) que conservan los cambios de la última ejecución pero se pierden al compilar nuevamente el programa.
      2. Crear una variable externa y usarla desde el programa. Desventaja: debes crear la variable en cada calculadora sino el programa no correrá.
      3. Crear una variable CAS, igual que punto 2 pero con más riesgos de ser borrado por la existencia del comando "restart"
      4. Usar un algoritmo de creación automática de variable de Inicio o CAS, ayudándote de IFFER para ejecutar un EXPR("VariableExterna_01"), si falla sabes que no existe y lo creas con HVars o CAS("VariableExterna_01:=valor"), y si ya existe pues lo cargas a tu programa.
      - Apps:
      1. Usar AVars, variables netamente ligadas a la aplicación
      2. Crear un archivo con el dato, ejemplo AFiles("archivo01"):=valor (esto crea el archivo por primera y única vez, no debe estar en el código), en el programa de la aplicación podrás llamar y modificar el valor del archivo cuando lo desees.

      Recomendaciones:
      Programas → Usar un generador automático de variable externa, puedes enviar el programa sin problema a otras calculadoras, siempre parte de un valor inicial, existe un riesgo moderado de modificación del dato externo y por tanto un error de ejecución en el programa.
      Apps → Usar un archivo, es la mejor opción de persistencia de datos, y es la actualmente usada en la programación, todo programa de PC o similar guarda sus datos en archivos (almacenamiento=datos no volátiles)

      Final:
      No se recomienda buscar el almacenamiento persistente de datos en programas, pero se puede hacer, también puede no valer la pena usar una App si la funcionalidad es muy simple; evalúa si es realmente necesario que no se pierda el dato a toda costa, yo uso la primera opción de usar variables globales dentro del mismo programa porque no se necesita más que eso con un buen tutorial.

      Iba a publicar un artículo de este tema, pero acabo de notar que lo dejé en borrador aquí en el blog, tal vez algún día lo arregle y publique.

      Borrar
  6. Buen dia he visto programas dncriptados los codigos como lo puedo hacer el encriptado a mis codigos

    ResponderBorrar
  7. Buenos dias, algunos o la mayoria de aplicaciones al momento de ejecutar en el emulador y calculadora fisica ejecutan la vista simbolica y no corre el programa el emulador como la calculadora fisica tienen el mismo firmware, la verdad no se si sea configuracion pero me indicaron que el programa se realizo en otra version

    ResponderBorrar

Publicar un comentario

Lo más visto

Matriz (Tipo) - HP Prime