Hola, muchas gracias por el tutorial. Tengo una duda: Quiero implementar la funcion rect(t) y que me grafique esta, entonces, yo se que: C = Centro T = Ancho a = Amplitud X1 = c-(T/2) X2 = c+(T/2) Quiero hacerlo de tal manera que la calculadora me pida los valores de c, T y a y después con una estructura de control me grafique mediante una función a trozos. Te paso los dos programas que he hecho. Con este pido los valores: « "Funcion RECT(t) C = Centro T = Ancho a = Amplitud" ":c: :T: :a:" INPUT OBJ EVAL c T a X1 « 'c-(T/2)' NUM 'X1' STO 'c+(T/2)' NUM 'X2' STO » » Y con este controlo lo que valdría la función en función de x « x « IF 'x>X1' THEN 'a' ELSE IF 'x
Hola! Gracias a ti por comentar. Lo que me preguntas es facil de conseguir, y no tienes por qué hacer varios programas. La clave está en utilizar funciones IFTE anidadas. Lo explico un poco mejor en alguno de los videos de programación del canal, pero básicamente es una versión reducida de la estructura IF-THEN-ELSE-END. Le he llamado XL al valor que tú llamas X1 y XR a tu X2, pero el resto cambia poco. El programa que hiciste para controlar el valor de la función dado x, creo que está mal hecho puesto que los límites no se corresponden con lo que supongo que quieres hacer. Según tu función un valor a la izquierda de X1 tendrá valor a en vez de 0 y tú quieres que el valor sea a entre los límites X1 y X2 y cero en el resto, ¿verdad?. Aquí tienes el programa, si tienes cualquier otra duda, sugerencia o no funciona como quieres, házmelo saber y miramos qué se puede hacer. Saludos. « "Funcion RECT(t) C = Centro T = Ancho a = Amplitud" ":c: :T: :a:" INPUT OBJ EVAL c T a « 'c-(T/2)' NUM 'XL' STO 'c+(T/2)' NUM 'XR' STO 'a' NUM 'A' STO » 'IFTE(X>XL,IFTE(X
Muchas gracias por la rápida respuesta. Al ejecutar el programa e introducir los valores me da el siguiente error: | Error: Bad Argument Type. La forma en que le introduzco los valores es :c:1 :T:1 :a:1 y ya, presiono enter. La tengo en modo RPN y los flags activos que tengo son: 27, 34, 90, 128. Number format Std. ¿Quizá tenga mal configurada la calculadora? Si te digo la verdad, empecé ayer, no la tengo ni físicamente, solo estoy con el HPUserEdit aprendiendo y cuando aprenda ya me la compraré. estoy familiarizado con ensamblador, java, c y matlab, pero esto me suena a chino jejejeje. ¿En algún tutorial comentas como configurar correctamente la calculadora? Muchas gracias por la ayuda, el código y los tutoriales. Un saludo.
En este video explico como configurar la calculadora de cero, de hecho te recomiendo que te veas el curso básico porque muchas de las cosas que necesitas para programar, se entienden más fácilmente si tienes cierta soltura con la calculadora. ua-cam.com/video/WRL9bDlvy8I/v-deo.html En cuanto al error de Bad Argument Type, pueden ser muchas cosas, a mi me funciona bien, pero mi consejo es que siempre que ejecutes un programa borres cualquier variable que tengas en la carpeta actual para que no haya problemas al llamarse igual que las de tu programa. Otra cosa que puedes comprobar, como digo en el video, es tener todas las casillas del CAS despinchadas. Es una buena regla para que no haya errores de ese tipo sin razón aparente. Saludos
Hola! En este enlace puedes encontrar varios manuales relacionados con la HP 50 g. sites.google.com/site/cesarv1821/manuales-hp En concreto el manual HP 49G Guía de Bolsillo contiene una referencia con todos los comandos que posee la calculadora, pero también tienes manuales específicos para programar. Espero que te sirva. Saludos
+Diego Toro Hola! Gracias por comentar. Es una pregunta bastante difícil de responder porque la respuesta (si es que la hay) varía bastante en función del caso que se quiera resolver. Para intentar responderte, pondré el ejemplo de un programa sencillo que calcule el área de un polígono en función de la longitud de los lados. El usuario debe escribir el número de lados del polígono como primer dato, y a partir de ahí se le pediría la longitud de cada uno de ellos y se harían las operaciones necesarias. Una forma de hacerlo es programar por separado todos los casos que haya, por ejemplo supongamos que se quiere programar de 3 hasta 10 lados. Se harían tantos programas como casos existan, y después se crearía un "programa principal" que iría llamando al subprograma correspondiente en función del número de lados que elija el usuario, mediante la estructura CASE...THEN...END aplicado al númeo de lados. La otra opción, más avanzada, sería mediante bucles que varíen de 1 hasta el número de lados. Habría un bucle antes y otro despues del comando INFORM. En cada iteración del primer bucle se crearía una cadena de texto que luego se utilizaría para crear la ventana INFORM de forma dinámica. De esta forma aparecerían tantos cuadros para rellenar como lados tenga el polígono en cuestión. La forma de gestionar lo introducido por el usuario después de la ventana INFORM sería exactamente igual, teniendo en cuenta que el número de valores que arroja esta planilla a la pila va a ser variable. Aquí la única limitación evidente es el número de cuadros que admite la planilla INFORM, así que si el número de variables es muy amplio a lo mejor sería más fácil usar el comando INPUT en vez de INFORM. Espero haber aclarado un poco las cosas. Saludos.
EXELENTE PROFE gracias por el aporte!!!
Muy bueno. Que calculadora es superior la 48g o la 50g?
Obvio la 50G
Hola, muchas gracias por el tutorial. Tengo una duda:
Quiero implementar la funcion rect(t) y que me grafique esta, entonces, yo se que:
C = Centro
T = Ancho
a = Amplitud
X1 = c-(T/2)
X2 = c+(T/2)
Quiero hacerlo de tal manera que la calculadora me pida los valores de c, T y a y después con una estructura de control me grafique mediante una función a trozos. Te paso los dos programas que he hecho.
Con este pido los valores:
«
"Funcion RECT(t)
C = Centro
T = Ancho
a = Amplitud"
":c:
:T:
:a:"
INPUT OBJ
EVAL
c T a X1
«
'c-(T/2)' NUM 'X1' STO
'c+(T/2)' NUM 'X2' STO
»
»
Y con este controlo lo que valdría la función en función de x
«
x
«
IF 'x>X1'
THEN
'a'
ELSE
IF 'x
Hola! Gracias a ti por comentar. Lo que me preguntas es facil de conseguir, y no tienes por qué hacer varios programas. La clave está en utilizar funciones IFTE anidadas.
Lo explico un poco mejor en alguno de los videos de programación del canal, pero básicamente es una versión reducida de la estructura IF-THEN-ELSE-END. Le he llamado XL al valor que tú llamas X1 y XR a tu X2, pero el resto cambia poco.
El programa que hiciste para controlar el valor de la función dado x, creo que está mal hecho puesto que los límites no se corresponden con lo que supongo que quieres hacer. Según tu función un valor a la izquierda de X1 tendrá valor a en vez de 0 y tú quieres que el valor sea a entre los límites X1 y X2 y cero en el resto, ¿verdad?.
Aquí tienes el programa, si tienes cualquier otra duda, sugerencia o no funciona como quieres, házmelo saber y miramos qué se puede hacer. Saludos.
«
"Funcion RECT(t)
C = Centro
T = Ancho
a = Amplitud"
":c:
:T:
:a:"
INPUT OBJ
EVAL
c T a
«
'c-(T/2)' NUM 'XL' STO
'c+(T/2)' NUM 'XR' STO
'a' NUM 'A' STO
»
'IFTE(X>XL,IFTE(X
Muchas gracias por la rápida respuesta.
Al ejecutar el programa e introducir los valores me da el siguiente error: | Error: Bad Argument Type.
La forma en que le introduzco los valores es
:c:1
:T:1
:a:1
y ya, presiono enter.
La tengo en modo RPN y los flags activos que tengo son: 27, 34, 90, 128. Number format Std.
¿Quizá tenga mal configurada la calculadora? Si te digo la verdad, empecé ayer, no la tengo ni físicamente, solo estoy con el HPUserEdit aprendiendo y cuando aprenda ya me la compraré. estoy familiarizado con ensamblador, java, c y matlab, pero esto me suena a chino jejejeje. ¿En algún tutorial comentas como configurar correctamente la calculadora?
Muchas gracias por la ayuda, el código y los tutoriales. Un saludo.
En este video explico como configurar la calculadora de cero, de hecho te recomiendo que te veas el curso básico porque muchas de las cosas que necesitas para programar, se entienden más fácilmente si tienes cierta soltura con la calculadora.
ua-cam.com/video/WRL9bDlvy8I/v-deo.html
En cuanto al error de Bad Argument Type, pueden ser muchas cosas, a mi me funciona bien, pero mi consejo es que siempre que ejecutes un programa borres cualquier variable que tengas en la carpeta actual para que no haya problemas al llamarse igual que las de tu programa. Otra cosa que puedes comprobar, como digo en el video, es tener todas las casillas del CAS despinchadas. Es una buena regla para que no haya errores de ese tipo sin razón aparente. Saludos
Donde puedo encontrar algún documento con toda la información de los comandos para pode programar mas fácil ?
Hola! En este enlace puedes encontrar varios manuales relacionados con la HP 50 g.
sites.google.com/site/cesarv1821/manuales-hp
En concreto el manual HP 49G Guía de Bolsillo contiene una referencia con todos los comandos que posee la calculadora, pero también tienes manuales específicos para programar. Espero que te sirva. Saludos
Buenos dias, si necesito que el numero de variables sea una cantidad que el usuario escriba, como se haria? muchas gracias
+Diego Toro Hola! Gracias por comentar. Es una pregunta bastante difícil de responder porque la respuesta (si es que la hay) varía bastante en función del caso que se quiera resolver.
Para intentar responderte, pondré el ejemplo de un programa sencillo que calcule el área de un polígono en función de la longitud de los lados. El usuario debe escribir el número de lados del polígono como primer dato, y a partir de ahí se le pediría la longitud de cada uno de ellos y se harían las operaciones necesarias.
Una forma de hacerlo es programar por separado todos los casos que haya, por ejemplo supongamos que se quiere programar de 3 hasta 10 lados. Se harían tantos programas como casos existan, y después se crearía un "programa principal" que iría llamando al subprograma correspondiente en función del número de lados que elija el usuario, mediante la estructura CASE...THEN...END aplicado al númeo de lados.
La otra opción, más avanzada, sería mediante bucles que varíen de 1 hasta el número de lados. Habría un bucle antes y otro despues del comando INFORM. En cada iteración del primer bucle se crearía una cadena de texto que luego se utilizaría para crear la ventana INFORM de forma dinámica. De esta forma aparecerían tantos cuadros para rellenar como lados tenga el polígono en cuestión. La forma de gestionar lo introducido por el usuario después de la ventana INFORM sería exactamente igual, teniendo en cuenta que el número de valores que arroja esta planilla a la pila va a ser variable. Aquí la única limitación evidente es el número de cuadros que admite la planilla INFORM, así que si el número de variables es muy amplio a lo mejor sería más fácil usar el comando INPUT en vez de INFORM.
Espero haber aclarado un poco las cosas. Saludos.
Esta bien borroso el video