Sunteți pe pagina 1din 3

Bucles (For Next Step – While Wend – Do Loop)

Los bucles son procedimientos repetitivos, son estructuras de programación que permiten
realizar varias veces un mismo bloque de instrucciones, hasta que se cumpla una condición que termina
este bucle.

For – Next - Step

Supongamos que debemos imprimir los números impares del 1 al 100. en este caso
tenemos un valor inicial (1), un valor final (100) y un intervalo (2) que me indicara cuantos pasos debo
hacer antes de ejecutar la instrucción. Esto quedaría así

For A = 1 To 100 Step 2


Print A
Next

La instrucción NEXT hace que el control del programa vuelva al FOR más inmediato. En si la
instrucción le asigna valores a la variable A, empezando por el 1, luego el 3 (dio 2 pasos), luego el 5 y
asi hasta llegar al 100. ¿Cuál es el último numero impreso? _______________

Pero hay otras maneras, para ello existe una serie de instrucciones que funcionan de manera
similar, veamos otros ejemplos con más instrucciones para hacer bucles.

While - Wend

La instrucción WHILE - WEND ya casi no se usa, porque han creado sustitutos más versátiles,
pero igualmente lo explicamos, su uso sería:

A = 1
While A <= 100
Print A
A = A + 2
Wend

El procedimiento se lee de la siguiente forma.


• Almacenar el numero 1 en la variable A
• Mientras A sea Menor o igual a 10 hacer lo siguiente
• Imprimir en pantalla la variable A
• Sumarle a la variable A un entero (contador)
• Volver hasta que Mientras sea falso.

WHILE <expresión>
<Instrucciones si se cumple>
WEND

Es decir, MIENTRAS la expresión sea cierta, repite todo lo que haya hasta el WEND.

Hay que tener cuidado con esto de que la expresiones evalúan el cero como FALSO y cualquier
otro valor como VERDADERO, por ejemplo:

Do- Loop

La instrucción DO LOOP es la nueva versión, mas versátil, que la instrucción antes vista

Do
Print "Hola Mundo"
Loop

Pero la "gracia" de este tipo de bucle es que podemos usar dos nuevas cláusulas para evaluar
cuanto durará el bucle. La primera es WHILE y funciona igual que en WHILE/WEND
A = 1
Do While A <= 100
Print A
A = A + 2
Loop

La ventaja es que WHILE se puede poner tanto después de DO como a continuación de LOOP.
Si lo usamos como DO WHILE <expresión>... la forma de actuar es igual que WHILE/WEND, es decir,
se evalúa la expresión y sólo en caso de que sea cierta, se ejecuta lo que está dentro del bucle, es decir
entre DO y LOOP.
Pero si evaluamos la expresión en LOOP, se ejecutará todo lo que hay tras el DO, como mínimo
una vez y se seguirá repitiendo si se cumple la condición. De esta forma, como he dicho, se ejecutará el
contenido del bucle, como mínimo una vez.
Veamos un ejemplo:

A = 1
Do
Print A
A = A + 2
Loop While A <= 100

El problema es que si A, en lugar de valer 1, tiene un valor superior a 100, también se ejecutará,
al menos, una vez.
Pero con DO/LOOP también puede usarse UNTIL, en este caso, el bucle se repetirá HASTA
que se cumpla la expresión

A = 1
Do Until A > 100
Print A
A = A + 2
Loop

Fíjate que la expresión ha cambiado de <= (menor o igual) a > (mayor), ya que ahora se evalúa
de esta forma:
Hasta que A sea mayor que diez, REPITE todo hasta LOOP.
Por supuesto también podemos usarlo después del LOOP:

A = 1
Do
Print A
A = A + 2
Loop Until A > 100

Aquí hago la misma aclaración que antes, si el valor inicial de A es más de 100 se ejecutará
como mínimo una vez.
Realmente para contar de forma secuencial y prácticamente para casi todo tipo de bucle, no es
necesario hacer los bucles con DO/LOOP, ya que FOR/NEXT lo hace bastante bien.
Sigamos con estos bucles, pero en lugar de contar de menor a mayor, vamos a contar "pa trás",
es decir de mayor a menor... quién sabe, lo mismo necesitas hacer un programa que cuente al revés...

A = 100
Do While A >= 1
Print A
A = A - 1
Loop
Cuando se muestre el 1, A=A-1 se convertirá en A = 0 y la comparación A >= 1 no se cumplirá,
por tanto dejará de repetirse el bucle, pero esto también se puede hacer con FOR/NEXT:

For A = 10 To 1
Print A
Next

El único inconveniente es que NO SE REPITE NI UNA VEZ... ¿Por qué?


Porque si no se le indica lo contrario, FOR/NEXT siempre cuenta de forma ascendente y cuando ve que
A debe ir de 10 hasta 1 y que eso no es ascendente... pasa de ejecutar el bucle. Esto es una cosa a
tener en cuenta, FOR siempre evalúa los valores del bucle que tiene que hacer y si no está entre los
valores que debe, no se ejecuta ni una sola vez. En este caso debe empezar por DIEZ y llegar hasta
UNO, así que se da cuenta de que ya ha terminado... incluso sin haber empezado... ¡que listo es el
FOR!
Para que el FOR cuente hacia atrás, necesitamos un nuevo peldaño (esto en inglés quedaría
"clavado"), en la escala evolutiva del FOR/NEXT (ahí queda eso!!!)
Ya sin coñas, se necesita la palabra STEP para indicarle que no queremos ir de uno en uno de forma
ascendente, en nuestro ejemplo lo usaríamos así:

For A = 10 To 1 Step -1
Print A
Next

De esta forma contará desde 10 hasta 1, restando uno en cada repetición.


Pero, ¿que hacer si queremos usar otros valores?
Simplemente ponerlo después de STEP, por ejemplo:

For A = 10 To 1 Step -1
For A = 1 To 10 Step 3, etc, etc.

Insisto, todo esto está muy bien, pero en la práctica usaremos otras cosas además de contar
de forma lineal, con incrementos o sin ellos... habrá veces que queramos salir de un bucle.
Ya lo hemos visto, por ejemplo Exit Sub salía del procedimiento, ¿recuerdas el Exit For?
Para salir de los bucles podremos Exit y a continuación For, Do, etc. Pero NO podremos salir de un
bucle WHILE/WEND.
Ya veremos ejemplos para estos casos y otros que surgirán más adelante.

Ejercicios
1. Haz un programa que al pulsar en un botón (CommandButton) haga un bucle entre dos
valores que habrás introducido por medio de dos cajas de textos (una para el inicio y
otra para el final) y en un LABEL salga la suma de todos los valores intermedios.

2. Modificar el anterior para que…Utilizando una tercera caja de textos, se pueda introducir
ella sea el incremento. Una vez terminado el bucle, que muestre otro LABEL las veces
que se ha repetido.

3. Realizar (usando WHILE – WEND) un procedimiento que me permita sumar todos los
numeros pares desde el 10 al 1000.

4. Se tira un dado X veces, contar las veces que el dado fue tirado y contar cuantas veces
salio el 1 y cuantas salio el 6. (Utilice la función RND)

5. En una farmacia, se anota el dinero ingresado en caja por cada venta, y una letra “O” si
es el ingreso de una obra social, o una “E” si el cliente paga en efectivo. Al finalizar el
día se desea saber, cuantos clientes pagaron en efectivo, cuantos con Obra social y
que cantidad de dinero total se ingreso en caja.

S-ar putea să vă placă și

  • Ar Chivos
    Ar Chivos
    Document1 pagină
    Ar Chivos
    Harvey Meneses Mena
    Încă nu există evaluări
  • Procyon Lotor
    Procyon Lotor
    Document31 pagini
    Procyon Lotor
    Cristina Castillo
    Încă nu există evaluări
  • Untitled
    Untitled
    Document8 pagini
    Untitled
    Harvey Meneses Mena
    Încă nu există evaluări
  • Datos Del Firmware Oficial
    Datos Del Firmware Oficial
    Document1 pagină
    Datos Del Firmware Oficial
    Harvey Meneses Mena
    Încă nu există evaluări
  • Datos Del Firmware Oficial
    Datos Del Firmware Oficial
    Document1 pagină
    Datos Del Firmware Oficial
    Harvey Meneses Mena
    Încă nu există evaluări
  • Visual Basic 6.0-Guía 2
    Visual Basic 6.0-Guía 2
    Document8 pagini
    Visual Basic 6.0-Guía 2
    Carlos Cisneros
    Încă nu există evaluări
  • List A
    List A
    Document2 pagini
    List A
    Harvey Meneses Mena
    Încă nu există evaluări
  • Conceptos Basicos PC
    Conceptos Basicos PC
    Document29 pagini
    Conceptos Basicos PC
    Luthien Urquiza
    Încă nu există evaluări
  • 06 - Bucles
    06 - Bucles
    Document3 pagini
    06 - Bucles
    Harvey Meneses Mena
    Încă nu există evaluări
  • Conceptos Basicos PC
    Conceptos Basicos PC
    Document29 pagini
    Conceptos Basicos PC
    Luthien Urquiza
    Încă nu există evaluări
  • Power
    Power
    Document26 pagini
    Power
    Harvey Meneses Mena
    Încă nu există evaluări