[Duda] estructura While-Wend, no entiendo

Iniciado por Dreamaker, 2 Abril 2010, 19:28 PM

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

Dreamaker

Hola amigos, bueno abro este thread porque estoy leyendo sobre la estructura While-Wend que nunca la entendí (siempre pensé que era lo mismo que el For-Next) y vi un codigo de ejemplo que les muestro a continuación:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim contador  As Integer 'Declaramos la variable

While contador <> Text1

'Mostramos en el formulario el valor de la variable contador
Me.Caption = contador

'Incrementamos la variable en 1
contador = contador + 1

Wend

MsgBox "Termino el bucle"

End Sub


Lo que dice la explicación que estoy leyendo a modo de ejemplo y no entendí es lo siguiente:

CitarUn ejemplo, agrega un Command1 al formulario y un control Text1. Cuando ejecutemos el ejemplo, se deberá escribir un número dentro del control textBox. Entonces se creará un bucle While, que mostrará en el Caption del formulario, es decir en la barra de título, el intervalo desde 0 hasta el número que hayamos ingresado en el Text1. Es decir si ingresamos el número 9000, en el caption del formulario se imprimirán los número desde 0 hasta 9000.

Para hacer esto, dentro del bucle While pondremos una variable llamada Contador, que en cada pasada se incrementará en 1, pero cuando la variable Contador sea igual al número que haya en el Text1, se finalizará el bucle y se mostrará un mensaje que finalizó el mismo

Mi duda es: ¿No hay que asignarle ya el valor de 1 a la variable contador para que empiece desde allí? O basta con ingresar Contador = Contador + 1 que le ingresa el valor de 1 y después sigue? (Entonces supongo que si le suma 1, es porque antes tenía el valor de 0)

Muchas gracias! Y haber quien me puede dar una mano con el concepto para ayudarme a entenderlo..

Shell Root

Cita de: Dreamaker en  2 Abril 2010, 19:28 PM...No hay que asignarle ya el valor de 1 a la variable contador para que empiece desde allí? O basta con ingresar Contador = Contador + 1 que le ingresa el valor de 1 y después sigue? (Entonces supongo que si le suma 1, es porque antes tenía el valor de 0
Tù lo haz dicho!

While, es como una Condicion-Bucle, donde si cumple la condicion, se ejecuta el bucle.
Contador, es una variable entera, asì que se inicializa en 0. Despues si cumple la condicion, entra al ciclo, dentro del ciclo, se le aumenta un item a la variable Contador y asi sucesivamente hasta que el valor de Contador sea diferente al valor del Text.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

BlackZeroX

#2
 * Traduciendo de Ingles a Español seria:

While [condicion]       es Decir      Mientras Que [condicion]
wend

otro

wend
While [condicion]

otros: Do-Loop ("Es lo mismo trabaja igual"... Bueno casi),

Until se usa para cambiar el valor pero en Do-Loop.
Do-Loop trabaja casi igual que While-Wend solo que Do-Loop puede usar Until en su Do o en su loop.

Do while [condicion]
Loop


ó

Do
Loop [condicion]


y la condicion puede ir tanto en Do como en loop de igual forma el Until pero Until es solo usado CUANDO no se usa el While OJO!¡.

Do Until [condicion
Loop

ó

Do
Loop Until [condicion]



Ejemplo con While-Wend

Pega esto en un Form
Código (vb) [Seleccionar]


Private a As Boolean
Private Sub Form_Click()
   a = Not a   '   //  volteamos el valor con Not
   Call bucle
End Sub
Private Sub Form_Load()
   Show
   a = True
   Call bucle
End Sub
Private Sub bucle()
   'While a = True  '   //  no es nesesario poner a = true
   While a
       DoEvents    '   //  para que no se trabe el programa xP
       Caption = Val(Caption) + 1
   Wend
End Sub



Sin wend

Código (vb) [Seleccionar]


Private Sub bucle()
   Do While a
       DoEvents    '   //  para que no se trabe el programa xP
       Caption = Val(Caption) + 1
   Loop
End Sub



Do until

Código (vb) [Seleccionar]


Private Sub bucle()
   Do Until a
       DoEvents    '   //  para que no se trabe el programa xP
       Caption = Val(Caption) + 1
   Loop
End Sub



Loop until

Código (vb) [Seleccionar]


Private Sub bucle()
   Do
       DoEvents    '   //  para que no se trabe el programa xP
       Caption = Val(Caption) + 1
   Loop Until a
End Sub



OJO la variable a es de tipo booleano por lo tanto no lo iguale a true o a false ya que no me hacia falta, es decir:  5+5=10  esto devuelve true o false seguns ea y seria un tipo booleano

Sangriento Infierno Lunar!¡.
The Dark Shadow is my passion.

Dreamaker

#3
Gracias Alex@shellroot y BlackZeroX▓▓▒▒░░, aunque lo que has dicho BlackZeroX▓▓▒▒░░ es bastante avanzado para lo que entiendo hasta ahora, es un lío!!

:o :o

cassiani

no es difícil, solo sigue los flujos de los datos, aprende a identificar que bloque es el mas adecuado a la operación que debes realizar, si hay palabras reservadas que no entiendes, busca su funcionamiento y vuelve a echarle un ojo al code, lee un tuto básico, ya veras que en poco tiempo no pensaras lo mismo sobre los bucles.

http://www.elguille.info/vb/cursos_vb/basico/indice.htm

saludos!!

Dreamaker

#5
Gracias! A ver si lo termino de entender, con FOR hago un ciclo repetitivo durante la cantidad de veces que yo quiera, en cambio con WHILE ésto pasa MIENTRAS la condición se cumpla y HASTA que se deje de cumplir, una vez que se deja de cumplir deja de ejecutarse el bucle sin haber tenido fijada una cantidad de ciclos, osea que es condicional. Estoy en lo correcto con lo que dije?

Por cierto aparte de la pregunta anterior, alguien tiene idea de que diferencia hay aparte con el DO y el LOOP que también sirven para lo mismo creo? (Con algún ejemplo básico en lo posible)

Necesitaba saberlo para el colegio ya que la próxima semana me toman evaluación :-\

Shell Root

#6
Cita de: Dreamaker en  3 Abril 2010, 04:07 AMEstoy en lo correcto con lo que dije?
Simon, estás en lo cierto!

Do While: Se utiliza generalmente cuando no sabemos cuantas veces se habrá de ejecutar el bucle, igual que el bucle WHILE, con la diferencia de que sabemos seguro que el bucle por lo menos se ejecutará una vez.

Loop, es la terminacion del Do, es decir:
Código (vb) [Seleccionar]
Do
{Acciones}
Loop While
      {Acciones}
     Wend
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.