viernes, 27 de mayo de 2016

Programando la HP Prime II

En esta entrada quiero mostraros algunos ejemplos de como se programa en la HP PRIME con argumentos.
  • Primer programa:
Este programa es una versión del típico programa que hace todo el mundo cuando empieza a programar, estoy hablando del famoso "Hello World!". 


En la linea 1 se puede ver que ahora tras el EXPORT viene el nombre del programa, en este caso es Nombre (sí, lo sé... muy original).Pero la gran diferencia con los otros programas es que ahora tenemos algo entre los paréntesis. Eso se conoce como argumento de una función. Si usamos argumentos en el programa, lo vamos a poder ejecutar directamente sin tener que ir al menú de programas.

El comando MSGBOX va a mostrar en un mensaje lo que haya entre sus paréntesis. Lo que vamos a hacer es concatenar (unir) los strings . Para que los interprete como strings hay que ponerlos entre comillas (" ... ") como por ejemplo "Hola " o "!". Para concatenar hay que usar +.

Todos los programas por defecto al ejecutarse correctamente devuelven el valor 1. Si usamos el comando RETURN vamos a obligar al programa que nos devuelva su argumento. Esta es otra forma que el programa nos muestre algún dato o algo que queramos que se lo de a otro programa.

Si ejecutamos el programa:


Una cosa importante es que una vez que escribamos nuestro nombre como argumento del programa hay que ponerlo entre comillas para que lo interprete como un string.
  • Segundo programa:
El siguiente programa tiene mucha más utilidad que el anterior. Lo que vamos a hacer es calcular el paralelo de dos resistencias que se dan en forma de argumentos. Así nos ahorramos tener que entrar en el menú de los programas, pudiendo ejecutarlo directamente.

El código es:


  • Tercer programa:
Hablando con un amigo sobre el anterior programa me dijo que por que no hacía otra variante más de éste. Una en la que se calcule el paralelo de varias resistencias. Sólo hay que introducir los valores de las resistencias entre { ... } separadas por comas.

Lo bueno de este programa es que podemos poner tantas resistencias como queramos.

El código es:


Este código es un poquito más complejo pero tampoco mucho... jeje

En la linea 14 hay un IF que lo que nos advierte si hay un error, cuando sólo introducimos el valor de una única resistencia. En la linea 19 tenemos el bucle FOR que calcula el valor de las resistencias en paralelo. En las siguientes lineas de código lo que vamos a hacer es calcular el valor de las resistencias con la variable R, su módulo con Mod y la fase de ésta con Fase. Esto se debe a que también podemos usar números complejos y por lo tanto cualquier tipo de impedancias. Vamos a usar el comando truncate para que nos trunque el resultado con un número de decimales que seleccionamos nosotros con la variable decimales.

Las ejecuciones de los dos programas son:
Segundo programa
Tercer programa


5 comentarios:

  1. Buenas! Muy útil este programa.
    ¿Podrías publicar los códigos para copiarlos? Es que como los has puesto en imagen, no se pueden seleccionar...

    Un saludo y gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Aquí tienes:

      EXPORT Paralelo(Lista)
      BEGIN

      // Programa que calcula el paralelo de una lista de resistencias
      // no es necesario saber el número de resistencias.
      // JORGE LÓPEZ, 27/03/2016

      // Declaramos las variables:
      LOCAL aux, i, decimales; // Variables auxiliares
      LOCAL R, Mod, Fase; // Variables resultado

      // Aviso de error tiene que haber por lo menos 2 resistencias
      // en la variable Lista:
      IF size(Lista) = 1 THEN
      RETURN("Error, introduce por lo menos 2 resistencias");
      END;

      // Cálculo de las reisistencias:
      FOR i FROM 1 TO SIZE(Lista) DO
      IF i = 1 THEN
      aux := Lista(1) * Lista(2) / (Lista(1) + Lista(2));
      ELSE
      IF i >= 3 THEN
      aux := aux * Lista(i) / (aux + Lista(i));
      END;
      END;
      END;

      // Truncamos los resultados y seleccionamos la aproximación:
      decimales := 4; // Variable que decide con cuantos decimales truncamos
      R := truncate(aux, decimales);
      Mod := truncate(abs(aux), decimales);
      Fase := truncate(180/pi*angle(R), decimales);
      // fase := truncate(angle(R), decimales); // Si queremos la fase en radianes

      // Se devuelve el resultado:
      RETURN("R = "+R+ " || R = " +Mod+ "∠" +Fase+"º");
      // RETURN("R = "+R+ " || R = " +Mod+ "∠" +Fase+" rad"); // Fase en radianes

      END;



      EXPORT RP(A,B)
      BEGIN

      // Progrmaque calcula el paralelo de dos resistencias
      // JORGE LÓPEZ,25/05/2016

      // Declaramos las variables
      LOCAL R;

      // Cálculo de las resistencias:
      R := A*B/(A+B);

      RETURN("Paralelo= "+R);

      END;

      Eliminar