Tal como habíamos prometido, en esta entrega del tutorial de Visual Basic veremos el resto de los bucles de control. Se trata de las instrucciones del tipo “Do…Loop” (y sus variantes) y “While…End”. También veremos cómo funciona “GoTo”, que tiene el honor de ser una de las instrucciones más polémicas de todos los lenguajes de programación.

En la quinta entrega de este pequeño tutorial, vimos que con FOR…NEXT podíamos resolver aquellas situaciones en las que un grupo de instrucciones debía repetirse un número determinado de veces. Pero existen otras situaciones, y aparecen con mucha frecuencia, en las que no se conoce de antemano el número de iteraciones que debería tener nuestro bucle.

A pesar de que un programador con experiencia siempre encontrará la forma de afrontar esas situaciones haciendo uso de FOR…NEXT, resulta más fácil, apropiado y eficiente emplear las instrucciones que el repertorio de sentencias de Visual Basic pone a nuestra disposición. Veamos cuáles son.

El bucle Do…Loop

El bucle DO...LOOP es muy versátil. Tanto, que puede reemplazar a FOR…NEXT en casi todos los casos. Con él se pueden crear una gran variedad de bucles diferentes, dependiendo de si comprueban una condición antes de ejecutar el bucle una vez; después de la primera ejecución; mientras que se cumple la condición o hasta que la mencionada condición se cumpla. La sintaxis básica de esta estructura es la siguiente:

Do
    Instrucciones…
    [Exit Do]
    Instrucciones…
Loop

Esta es la forma más simple de escribir este tipo de bucle. Las instrucciones comprendidas entre el Do y el Loop se ejecutarán indefinidamente. Resulta muy apropiado para aquellos casos en que nuestro programa se encuentra esperando que ocurra alguna situación determinada, a la vez que repite un grupo de instrucciones.

La opción “Exit Do” permite abandonar el bucle cuando lo deseemos. En general, una sentencia “If…Then” comprueba el valor de alguna expresión, y cuando dicha expresión es verdadera, se ejecuta el “Exit Do”. El siguiente ejemplo ilustra este caso:

Dim edad As Integer
edad = 20
Do
    edad = edad - 1
    If edad = 0 Then
        Exit Do
    End If
Loop

Como puede verse, el bucle se repetirá mientras que el valor de “edad” sea diferente de cero. Cuando edad sea cero, la condición que evalúa el “If…Then” será verdadera y el control del programa saltará a la instrucción que haya a continuación del “Loop”.

Programar con Visual BASIC (VI)
La opción “Exit Do” permite abandonar el bucle cuando lo deseemos.

La segunda forma en que se puede escribir un bucle “Do…Loop” es la que sigue:

Do { While | Until } condición
    Instrucciones…
    [Exit Do]
    Instrucciones…
Loop

Por supuesto, no podemos utilizar “While” y “Until” a la vez. En esta forma del bucle, la condición se evalúa al comienzo del mismo. En el caso de utilizar la opción “While”, el bucle se repetirá mientras que la condición sea verdadera. Podemos escribir el ejemplo anterior utilizando esta posibilidad:

Do While edad <> 0
    edad = edad - 1
Loop

Como puede verse, es mucho más simple utilizar “While” que “If…Then” y “Exit Do”. Aclaramos que la condición evalúa que edad sea diferente de cero.

También podríamos haber resuelto el problema con el uso de “Until”:

Do Until edad = 0
    edad = edad - 1
Loop

En este caso, el bucle se repetirá hasta que edad sea igual a cero. En estos dos últimos ejemplos puede darse el caso de que, si edad es igual a cero cuando se llega a la instrucción “Do”, las instrucciones existentes en el interior del bucle no se ejecuten nunca.

Programar con Visual BASIC (VI)
El bucle se repetirá hasta que edad sea igual a cero.

La tercera forma que puede adoptar el bucle que estamos analizando es la siguiente:

Do
    Instrucciones…
    [Exit Do]
    Instrucciones…
Loop { While | Until } condición

Como puede verse, se ha delegado la capacidad de evaluar la condición al final del bucle. Esto tiene la particularidad de permitir que el grupo de instrucciones existentes en el interior del bucle se ejecuten al menos una vez, independientemente de que la condición a evaluar sea o no verdadera.

Nuestro ejemplo podría resolverse así:

Dim edad As Integer
edad = 20
Do
    edad = edad - 1
Loop Until edad = 0

O así:

Dim edad As Integer
edad = 20
Do
    edad = edad - 1
Loop While edad <> 0
Programar con Visual BASIC (VI)
Se puede evaluar la condición al final del bucle.

En todos los casos puede utilizarse, entre las instrucciones que están dentro del bucle, la sentencia “Continue Do”, que hace que el control del programa salte nuevamente al “Do…”, repitiendo el ciclo actual.

El bucle While…End

Veamos ahora cómo utilizar “While…End”.

Si comprendiste la forma en que funciona el bucle “Do… Loop” con la opción “While”, no tendrás ninguna dificultad en aprender a usar “While…End”.

“While…End” tiene la siguiente estructura:

While condición
    Instrucciones…
    [Exit While]
    Instrucciones…
    [Continue While]
    Instrucciones…
End While

Lo primero que notamos es que en este bucle también existe la posibilidad de abandonarlo en cualquier momento, gracias a “Exit While”; y que, al igual que antes, la sentencia “Continue While” permite repetir el ciclo.

Este es el tipo de bucle que debemos usar si deseamos repetir un conjunto de instrucciones un número indefinido de veces. Esto ocurrirá mientras la condición sea verdadera. Es menos flexible que “Do...Loop”, pero a muchas personas les resulta más sencillo de utilizar.

Programar con Visual BASIC (VI)
No tendrás ninguna dificultad en aprender a usar “While…End”.

Su funcionamiento es el siguiente: si la condición es verdadera, se ejecutan todas las instrucciones hasta que se encuentra la instrucción “End While”. Luego, el control vuelve a la instrucción “While” y se comprueba de nuevo la condición. Esto se repite hasta que la condición evaluada resulte falsa, en cuyo caso el control pasa a la instrucción que sigue a la instrucción “End While”.

Para poder compararla con las otras opciones vistas, vamos a escribir el código de los ejemplos anteriores utilizando “While…End”:

Dim edad As Integer
edad = 20
While edad <> 0
    edad = edad - 1
End While

Como puede verse, resulta muy simple de usar. Para terminar, tengamos presente que si se desea repetir las instrucciones un número fijo de veces, la instrucción “For...Next” siempre es la mejor opción.

La instrucción GoTo

Esta instrucción, GoTo, es la “oveja negra” de todos los dialectos BASIC, aunque también existe en otros lenguajes de programación.

Su función consiste en transferir, sin condiciones, la ejecución del programa a otro punto del mismo, identificado por una etiqueta (o número de línea) determinada. En realidad, en la “prehistoria” de la programación, en la época en que los lenguajes de programación eran muy primitivos, la mayoría de los bucles se construían con “GoTo”.

De esta forma se lo utiliza en Visual Basic:

Instrucciones…
Goto etiqueta
Instrucciones…
Etiqueta:
Instrucciones…

Cuando el programa se encuentra con “GoTo etiqueta”, salta a la instrucción siguiente a “Etiqueta:”. “Etiqueta:” puede estar antes o después del “GoTo”, lo que permite hacer “saltos hacia atrás” o “saltos hacia adelante”. Tampoco hay límite entre la cantidad de instrucciones que pueden escribirse entre el “GoTo” y la “etiqueta:”.

Programar con Visual BASIC (VI)
“Etiqueta:” puede estar antes o después del “GoTo”.

Esta “libertad” que otorga hace que muchos programadores, en general los principiantes, hagan un uso abusivo del “GoTo”, y sus programas sean muy difíciles de comprender. Además, es posible escribir cualquier programa sin necesidad de siquiera un solo “Go To”.

Para terminar este capítulo, realizaremos el ejemplo de antes, pero con “GoTo”:

Dim edad As Integer
edad = 20

repetir:
    edad = edad - 1
    If edad > 0 Then
        GoTo repetir
    End If

Como puede verse, y a pesar de su poca longitud, el código resulta algo más confuso que los otros ejemplos. En programas largos, de miles de instrucciones, con varios “GoTo” saltando de un lado para otro, el seguimiento del programa puede convertirse en una pesadilla, incluso para la misma persona que lo escribió.

Con esto, damos por finalizada esta entrega del tutorial de programación en Visual Basic. Dentro de unos días publicaremos el capítulo siguiente.

Programar con Visual BASIC (VI)
Programar con Visual BASIC (VI)

Visual Basic, Visual Basic, Visual Basic, Visual Basic, Visual Basic,