Autor Tema: Sentencia WHILE  (Leído 2160 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
Sentencia WHILE
« en: 28 de Abril de 2004, 07:19:00 »
Hola a todos...
Estoy usando la sentencia While, para crear un bucle por doble comparación...
Y para mi desgracia, no se porque no funciona..

cont = 0
gosub leedato
While ((var1 <> 34) or (cont1<10))
gosub leedato
cont = cont + 1
wend

Pretendo ir leyendo los datos de un array hasta encontrar el caracter 34, y salir del buble en caso de encontrarlo, o de haber leido 10 caracteres....
Pero tal y como lo planteo en el ejemplo... No funciona!!!
No se si es problema mio, o de que el PBP, no acepta la doble comparación en la sentencia WHILE!

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Sentencia WHILE
« Respuesta #1 en: 28 de Abril de 2004, 08:04:00 »

----------------------------  prueba así --------------------
cont = 0
gosub leedato
While ((var1 <> 34) and (cont1<10))
gosub leedato
cont = cont + 1
wend

--------------------------  tambien ----------------------
for cont=0 to 9
gosub leedato
if var1=34 then goto sal
next cont


Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Sentencia WHILE
« Respuesta #2 en: 28 de Abril de 2004, 08:37:00 »
Gracias sispic...
Con tu primera aportación, puedo decir, que al poner AND...
Solo se cumplirá en el momento en el que el caracter leido sea distinto a 34, y el contador se encuentre a memos de 10 no???
Pero siempre que se cumplan las dos opciones a la vez!!!
La idea, es que por cualquiera de ellas, se salga del bucle.

Sobre la segunda idea, aunque menos refinada, creo que puede ser válida...
Pero me queda la intriga de porque no funciona el OR

TNKS

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Sentencia WHILE
« Respuesta #3 en: 28 de Abril de 2004, 09:34:00 »
Traducido es así

While ((var1 <> 34) and (cont1<10))

Estate en el bucle mientras se cumpla que (var1 <> 34) y (cont1 < 10)

si var1 llega a ser 34  saldra
y si cont1 > 9 tambien sale
Asegurate que antes de entrar var1 sea <> a 34 , con cont1 ya lo haces

--------------------------------------------------------------------------------
Tu lo ponias así:

While ((var1 <> 34) or (cont1<10))

Estate en el bucle mientras se cumpla que (var1 <> 34) ó (cont1 < 10)


solo saldra si var1=34 y cont1 > 9

Solo tienes que pensar en binario y no te preocupes por lo refinado mientras funcione .
Otra cosa es que consuma menos recursos ó no , cosa que con basic es dificil de saber .


Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Sentencia WHILE
« Respuesta #4 en: 28 de Abril de 2004, 10:29:00 »
Gracias SisPic...
Voy a ver... si lo hago funcionar a lo largo de la tarde....

Por cierto... Te mande un privado, con la configuración del polivalente para el winpic8000...