Glosario

Abreviatura para la Notación Polaca Inversa o Reverse Polish Notation.
Esta notación de sufijo es la sintaxis de entrada que casi todas las calculadoras HP usan. Básicamente hay dos tipos de RPN. Una usada en calculadoras más viejas, hace que el ENTER duplique el nivel uno del stack en la línea de edición, y otro, usado en las 28/38G/48/49/50, que hace que el ENTER duplique el nivel uno si la línea de edición no está siendo usada, y que pone el contenido de la línea de edición en el nivel uno si la línea de edición está siendo usada. RPN usa notación de sufijo, así que 1+1 es introducido 1 ENTER 1 + en vez de 1 + 1 =.
Esto puede parecer más confuso al principio, pero es mucho más sencillo con expresiones más complejas. La Notación Polaca Inversa se basa en los trabajos de el polaco Jan Lukasiewicz, quien creó la notación de prefijo ( + 1 1 ) llamada Notación Polaca.

que falla? MSGBOX Bad Argument

7 respuestas [Último envío]
Integró: 13/04/2010
Envíos: 6
MonedasHP: 8
Imagen de patazo87
Calc: HP50 | ROM:2.08
que falla? MSGBOX Bad Argument
 
Dom, 13/06/2010 - 07:13

Hola a todos he hecho un programa para que me simplifique facilmente unas operaciones basicas y meda error de MSGBOX Bad Argument y no se en que me falla.

El programa es asi
<< HEAD(INFORM(
"TRANSICION AL PERALTE",{{"AL:","INCREMENTO DE L",0.,9.},{"PKP:","PK DEL PUNTO",0.,9.},{"PKTE:","PK DE LA TE",0.,9.}},{3.,0.},{},{})) ->L
<< L(1.)->a
<< L(2.)->B
<< L(3.)->C
<< C-B ->Z
<< Z*2 ->Y
<< Y/A ->P1
<< MSGBOX({"P1: ",+P1})
>>
>>
>>
>>
>>
>>
>>
>>

Si alguien pudiera decirme que es lo que hago mal o en que estoy fallando se lo agradeceria.

Top
Integró: 09/03/2010
Envíos: 467
MonedasHP: 926
Imagen de zuaritx
Calc: HP48G/GX | ROM:.
 
#1
Lun, 14/06/2010 - 11:15

No tengo por costumbre programar en algebraico, te falta el comando ->TAG
MSGBOX("SOLUCION"), sólo acepta un elemento, no dos como tú has puesto (revisaré a ver si me sale en algebraico, me falta sacar como se realiza la sentencia INFORM en algebraico).

« IFTE(
   INFORM(
    "TRANSICION AL PERALTE",
    {{"AL  " "INCREMENTO DE L" 0. 6. 9.}
    {"PKP " "PK DEL PUNTO" 0. 6. 9.}
    {"PKTE" "PK DE LA TE" 0. 6. 9.}},
    {1.},
    {},
    {}),
EVAL(«  L
    « L(1.)  A
     « L(2.)  B
      « L(3.)  C
       « C-B  Z
        « Z*2  Y
         « Y/A  P1
          « STR(TAG(P1,"P1:"))  SOL
           « MSGBOX(SOL) »
          »
         »
        »
       »
      »
     »
    »
   » »),
   KILL)
»

En RPN se haría así (Actualizado y comprobado):
« 
"TRANSICION AL PERALTE"
 {{"AL  " "INCREMENTO DE L" 0 6 9 }
  {"PKP " "PK DEL PUNTO" 0 6 9 }
  {"PKTE" "PK DE LA TE" 0 6 9 }
 } {1.} {} {} INFORM -105 SF
IF
THEN EVAL  A B C
 « C B -  Z
  « Z 2 *  Y
   « Y A /  P1
    « CLLCD "TRANSICION AL PERALTE"
    1 DISP P1 "P1" TAG DUP STR MSGBOX »
   »
  »
 »
END
»

 = -> = [Cambio derecho]+[0-cero]
NOTA: En RPN hecho en HPUserEdit
Un enlace para profundizar en USER

Top
Integró: 13/04/2010
Envíos: 6
MonedasHP: 8
Imagen de patazo87
Calc: HP50 | ROM:2.08
 
#2
Dom, 13/06/2010 - 14:55

gracias por contestar, has probado lo que me has puesto? porque a mi tanto en rpn como en algebraico me da error STR invalid sintax.
que puede haber fallado?
gracias

Top
Integró: 23/03/2009
Envíos: 146
MonedasHP: 296
Imagen de yder
AdictoHP+
Calc: HP50
 
#3
Dom, 13/06/2010 - 15:38

hola.

« 
"TRANSICION AL PERALTE"
 {{"AL:","INCREMENTO DE L",0.,9.}
  {"PKP:","PK DEL PUNTO",0.,9.}
  {"PKTE:","PK DE LA TE",0.,9.}
 } {3.} {} {} INFORM -105 SF
IF
THEN EVAL   A B C
 « C B -  Z
  « Z 2 *  Y
   « Y A /  P1
    « P1 "P1" TAG DUP STR MSGBOX »
   »
  »
 » END
»


copia y pegalo en HPUserEdit.
le faltaba conpletar la condicional IF.... THEN.... END
con END.

Top
Integró: 09/03/2010
Envíos: 467
MonedasHP: 926
Imagen de zuaritx
Calc: HP48G/GX | ROM:.
 
#4
Mar, 14/12/2010 - 20:49

<

Top
Integró: 25/05/2004
Envíos: 203
MonedasHP: 88
Imagen de HpCarnace
Calc: HP50 | ROM:2.15
 
#5
Dom, 13/06/2010 - 22:13

Hola Patazo87:

Tres cosas:

1. Si te dice que MSGBOX Bad Argument, es porque tienes mal eso: el argumento de la función MSGBOX, colocas una lista y se acepta una cadena (string) , lo que debes colocar es simplemente MSGBOX("P1: "+P1)

2. No ignores el resultado del INFORM. Es buena práctica de programación manejar los posibles casos. ¿Qué sucedería si el usuario presiona CANCEL?

3. Es mejor ir pensando en programar también en modo RPN (aunque al principio HPBasic es más fácil). Mira que en HPBasic, por algo encuentras menos manuales en la red. Además que el salto a SystemRPL es menos traumático si programas bien en UserRPL, sobre todo si comprendes mejor el uso de los comandos de pila y listas, ya que de esta manera de programar los programas son más eficientes.

Salu2.

...

Top
Integró: 08/07/2004
Envíos: 690
MonedasHP: 441
Imagen de alexis
AdictoHP+
Calc: HP50 | ROM:2.10-7, HP49G+ | ROM:2.15, Hp 35s | 2007, Hp 20b | 2008, Casio Fx-6300g | 1984
 
#6
Mar, 15/06/2010 - 12:55

Tal vez, ya leiste el manual de programación en algebraico, por si no lo leista:
http://www.hpcalc.org/details.php?id=6204
Lo único que no funciona en modo algebraico es:
InputLine (System RPL)
SOLVER y MSOLVER
CASE THEN END

Top
Integró: 23/07/2009
Envíos: 91
MonedasHP: 124
Imagen de agnus_7asch
Calc: HP50
 
#7
Sáb, 19/06/2010 - 11:58

zuaritx cita:
No tengo por costumbre programar en algebraico, te falta el comando ->TAG
MSGBOX("SOLUCION"), sólo acepta un elemento, no dos como tú has puesto (revisaré a ver si me sale en algebraico, me falta sacar como se realiza la sentencia INFORM en algebraico).
« IFTE(
   INFORM(
    "TRANSICION AL PERALTE",
    {{"AL  " "INCREMENTO DE L" 0. 6. 9.}
    {"PKP " "PK DEL PUNTO" 0. 6. 9.}
    {"PKTE" "PK DE LA TE" 0. 6. 9.}},
    {1.},
    {},
    {}),
EVAL(«  L
    « L(1.)  A
     « L(2.)  B
      « L(3.)  C
       « C-B  Z
        « Z*2  Y
         « Y/A  P1
          « STR(TAG(P1,"P1:"))  SOL
           « MSGBOX(SOL) »
          »
         »
        »
       »
      »
     »
    »
   » »),
   KILL)
»

En RPN se haría así (Actualizado y comprobado):
« 
"TRANSICION AL PERALTE"
 {{"AL  " "INCREMENTO DE L" 0 6 9 }
  {"PKP " "PK DEL PUNTO" 0 6 9 }
  {"PKTE" "PK DE LA TE" 0 6 9 }
 } {1.} {} {} INFORM -105 SF
IF
THEN EVAL  A B C
 « C B -  Z
  « Z 2 *  Y
   « Y A /  P1
    « CLLCD "TRANSICION AL PERALTE"
    1 DISP P1 "P1" TAG DUP STR MSGBOX »
   »
  »
 »
END
»

 = -> = [Cambio derecho]+[0-cero]
NOTA: En RPN hecho en HPUserEdit
Un enlace para profundizar en USER

hey Zuaritx!:

siempre ofreciendo una posible solución con un nuevo programa!

participe en la última competencia que Erick Rechlin lanzó recientemente encomp.sys.hp48; y gane el honor de un reconocido programador creativo forista del momento! Star Star Beer Beer Cash

ó, participe generando retos para el resto de los programadores que estarán en esta interesante competencia que posiblemente será un espectáculo de talento de programación rpl/ml, y que sin duda toda la comunidad forista de estas maravillosas calculadoras hp estará observando!

+detalles [July programming challenge]: http://groups.google.com/group/comp.sys.hp48/browse_thread/thread/c8473b...

!

Top

Twitter

Cargando...

CAPTCHA
Esta pregunta es para probar si usted es un visitante humano y así evitar el spam automatizado.
6 + 6 =
Solucione este simple problema matemático e ingrese el resultado. Por ejemplo: para 1+3, ingrese 4.