• Martes 19 de Marzo de 2024, 06:08

Autor Tema:  ejemplos de while  (Leído 17122 veces)

rogerfor

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
ejemplos de while
« en: Viernes 17 de Abril de 2009, 19:23 »
0
hola, hace tiempo pedi ayuda con el for, gracias a varios de aqui ya lo entiendo, pero ahora viene while, lo lei en los manuales que me dieron pero sigo sin entenderlo, y tengo que buscar 5 ejemplos que usean while, para ver como funcionan, y eh buscado y no he hayado nada, los que he hayado son muy complicados, y necesito algo mas sencillo, y quisiea saber si alguien sabe donde hay ejemplos sencillos de while, ya busque aqui, en la webdelprogramador, y en recursosvisualbasic, y son muy complicados, porfavor ayudenme.
gracias.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: ejemplos de while
« Respuesta #1 en: Sábado 18 de Abril de 2009, 20:04 »
0
Cita de: "rogerfor"
 ...he buscado y no he hayado nada...
Esto sólo es posible si no sabes buscar...
Cita de: "rogerfor"
...los que he hayado son muy complicados, y necesito algo mas sencillo...
Esto también es improbable...

Un bucle While es casi idéntico a un bucle for. De entrada sirven para lo mismo, repetir un determinado código una cierta cantidad de veces.
La diferencia entre el 'for' y 'while' es que la cantidad de veces que se ejecuta un bucle for es más o menos conocida, en cambio en un bucle while se usa cuando no se sabe la cantidad de iteraciones que se deben hacer. (digo que la cantidad de iteraciones de un bucle for es más o menos conocida, porque puede programarse de forma que su ciclo de salida nunca se alcance, en cuyo caso se sale con exit for... o un goto...).

No obstante mejor que explicar while es explicar Do...loop que es lo mismo.
Los siguientes son firmas del mismo tipo de bucles
 while...wend
do while .... loop
do until .... loop
do ... loop while ...
do ... loop until ...

La caracterítica de este tipo de bucle es que es condicionado (un bucle for en principio es incondicional, se ejecuta un número determinado de veces, aunque esto sólo es la definición del mismo, ya que en la práctica no es verdad.).
Que un bucle es condicionado quiere decir que se ejecuta mientras se cumpla una condición (tambén puede expresarse, mientras no se cumpla una condición). De hecho si traducices While significa precisamente: While =  'mientras' . Entonces la lógica del bucle es:

Código: Text
  1. mientras no se cumpla la condición x    ' while dia <> "Lunes"  : call PasearPerro("Calle VB Nº6.0", "Tobi")  ..... wend
  2.    ... hacer lo que haya dentro del bucle
  3. retorno de mientras
  4.  
Da igaul que te hayan pedido x ejemplos yo sólo te pondré 1.

Crea un proyecto, añade un botón y mete este código dentro del evento click del botón.
Código: Visual Basic
  1.     Inicio= timer
  2.     Me. Backcolor= vbBlack: Me.forecolor= vbWhite
  3.     command1.enabled=false
  4.     Do
  5.         doevents
  6.         Ahora= timer
  7.         Me.cls: Me.CurentX= 200: me.currenty=200
  8.         Me.Print cstr( Ahora - inicio) & " segundos..."
  9.     loop while ahora - inicio < 3600
  10.     command1.enabled= true
  11.  
  12.  
Este ejemplo, crea una pausa de 1 hora. Timer es una función que le pregunta al sistema cuanto tiempo ha transcurrido desde las 12 de la noche. (Nota: el ejemplo fallará si se ejecuta entre las 11 de la noche y las 12, ya que cuando llegue a las 12 timer retorna su valor a 0, como el propósito es meramente ilustrar el uso de los bucles condicionales, pasamos por alto esta situación).
Cuando  pulsamos el botón, lo primero que se hace es desactivar el botón (no se puede pulsar nuevamente), hasta que sale del bucle después de una hora, que como se ve le indicamos que se vuelva a activar. Para hacer el ejemplo, más ilustrativo hemos añadido unas simples líneas que van mostrando el 'paso' de la ejecución del bucle.

Para probarlo, es mejor que cambies el valor de la condición de 3600 (1 hora) a por ejemplo 30 sg, que es una espera 'asumible'.
Fíjate que podemos remplazar la firma del bucle sustituyendo :
'do' por 'while ahora - inicio < 3600'  y sustituyendo 'loop while ahora - inicio < 3600' por wend... en el caso presente, el cambio no tiene importancia, sin embargo en otros casos no es tolerable. La razón principal reside en cuando se comprueba la condición.. si la condición se pone abajo, el bucle se ejecuta siempre como mínimo 1 vez, en cambio si se ejecuta la condición arriba, puede darse el caso de no llegar a entrar en el bucle si la condición ya se satisface...´Con esto lo que te quiero indicar es que de alguna manera olvides el uso de while ...wend en favor del do ... loop que por lo indicado es más versátil.

Por último indicarte que el bucle do ... loop permite tanto el uso de 'while', como de 'until'... Decir que cualquier bucle puede ser erediseñado para usar indistintamente uno u otro, pero según el caso de que se trate es más fácil diseñar un bucle con while o con until...  (until = hasta que...)  . El uso de estas 2 posibilidades es el equivalente a decir: 'El domingo no trabajo", esta frase es más fácil que decir "No trabajaré aquel día que no sea ni lunes ni martes ni miércoles... ni sábado'...
el ejemplo anterior reconvertido a until:
 

Código: Visual Basic
  1.     Inicio= timer
  2.     Me. Backcolor= vbBlack: Me.forecolor= vbWhite
  3.     command1.enabled=false
  4.     Do
  5.         doevents
  6.         Ahora= timer
  7.         Me.cls: Me.CurentX= 200: me.currenty=200
  8.         Me.Print cstr( Ahora - inicio) & " segundos..."
  9.     loop until ahora - inicio >= 3600
  10.     command1.enabled= true
  11.  
  12.  
En este caso ha sido fácil (porque sólo usamos una condición y además es de comparación)... fíjayte que al caso es lo mismo decir :
'Hacer esto :  sumar 1 :  mientras  la suma sea menor de 100' que lo siguiente:
'Hacer esto : sumar 1 : hasta que la suma sea mayor o igual que 100'

...ya debería quedarte claro...
«Ma non troppo»
----> ModoVacaciones = False<----