martes, 5 de junio de 2012

Los Bucles

Utilizamos los bucles para repetir un grupo de instrucciones.
Tenemos diferentes bucles.

  • Bucle For - Next
  • Bucle Do While - Loop . Existe una variación. While - Wend
  • Bucle Repeat - Until

Existe un cuarto tipo de bucle, que usamos con listas de valores de variables o
con objetos.

       Bucle For Each - Next

Cada bucle contiene una variable que le indica cuando debe acabar 
el bucle o se ejecute este, mientras se cumpla una condición.

Con el bucle For – Next conocemos las veces que se va ejecutar.

Ejemplo:

Vamos a realizar una serie de tablas de multiplicar con diferentes bucles.

---código----
Public Sub Form_Open()
Dim seleccion As String
Repeat
   Print "Selecciona el tipo de bucle:"
   Print "1 - Bucle Do..While"
   Print "2 - Bucle For"
   Input seleccion
   Select Case seleccion
       Case "1"
            Bucle_DoWhile
       Case "2"
            Bucle_For
        Case Else
            Print "No existe esa opción"
    End Select
Until (seleccion = "1") Or (seleccion = "2") 

'Comprobamos la condición al final
'Utilice variable de cadena en vez de número para que no hubiera 
'error con el tipo introducido por teclado. En caso de número o cadena.
'Una cadena puede parecer un número. "1"

End

Public Sub Bucle_For()

Dim x As Integer
Dim tabladel As Integer

tabladel = 2
For x = 1 To 10
      Print x & " * " & tabladel & " = " & (x * tabladel)
Next

End

Public Sub Bucle_DoWhile()

Dim x As Integer
Dim tabladel As Integer

x = 1
tabladel = 3

Do While x <= 10 ' Comprobamos la condición al principio.
       Print x & " * " & tabladel & " = " & (x * tabladel)
       x = x + 1
       'Incrementamos el contador de bucle en 1.
       'Si no fuese así, entraríamos en bucle infinito y colgaríamos el programa
       'ya que siempre se cumpliría la condición del principio.
       'X sería menor de 10 siempre.
Loop

End
---código---

Bien. El programa presenta un menú en la parte de consola. 
Y te da a escoger que bucle quieres ejecutar.

El primer bucle que nos encontramos es “Repeat”.”Repetir”
Con este bucle sabemos que se va ejecutar al menos “una vez” ya que la condición del bucle esta al final.

El uso de Repeat en este lugar esta hecho con la idea de que si se elige una opción  diferente a 1,2 .Se volverá a presentar la opción de que podamos ejecutar la opción 1 y 2, mostrando una vez mas el menú

Until le dice hasta..hasta que la selección sea 1 o 2. Hemos vuelto a usar
un operador lógico. El operador “OR”.El cual le dice, que una de las dos opciones es valida.

En este bucle repeat no hay un número de veces especificadas para que se ejecute. Solo le dice hasta que se cumpla algo.

Vamos con el siguiente:

Bucle Do While - Loop

La primera opción es Do While. “Hacer mientras” se cumpla una condición.

A la variable tabladel le hemos “asignado” un número para que nos diga
la tabla de multiplicar de ese número.


“Hacer mientras que x sea menor o igual a 10.”
Do While x<=10

x nos vale para incrementarla y una vez llega 10 nuestro bucle termina.

He usado x=x+1

Podía haber usado la instrucción INC x .La cual “nos incrementa” x en uno
Siempre incrementara el valor que tenga x en uno hasta cumplir la condición
del bucle.

Como veis, la condición de esta bucle esta al principio. Así que puede ejecutarse o no, depende de su condición.

Se podría decir que recuerda a una “instrucción condicional“ con el añadido de
la repetición.

La variable x actúa como variable de control del bucle. Sin ella nuestro bucle
se ejecutaría hasta el infinito y podríamos perder el control de nuestro programa.

Loop marca el final del bucle.


Bucle For – Next.

En este bucle sabemos de principio a fin que se va ejecutar un numero determinado de veces.

Desde 1 hasta 10.

For x=1 TO 10

x ira almacenando los valores de 1 hasta 10.Cuando llega a 11 sale del bucle.
Si, la x en vez de valer 10 y salir, la variable continua teniendo un valor después
de la ejecución del bucle y su valor es x+1

Hacer la prueba. Después del NEXT
añadir:

PRINT x

El bucle FOR tiene dos características interesantes:

Imagina que queremos que el bucle se ejecute de dos en dos, de tres en tres, etc.
Para eso usamos la instrucción STEP

---código---
DIM x As Integer

FOR x=1 TO 10 STEP 2
PRINT x
NEXT

---código---
Mostrara 1,3,5...9

Podemos hacerlo al revés,que nos cuente de mayor a menor.

---código----
DIM x As Integer

FOR x=10 To 1 STEP -2
PRINT x
NEXT
---código---

Hemos hecho que vaya de 10 a 0 y hemos añadido en STEP el valor -2.
Para que los incrementos sean negativos.

Pregunta.¿ Que bucle debemos usar en nuestro programa ?.
Dependerá de la condición que quieras que haga tu programa.


Para mas información sobre bucles:

No hay comentarios:

Publicar un comentario