viernes, 21 de julio de 2023

OOo Basic. Estructuras

Bucle For Next

Junto con la bifurcación, la iteración constituye el segundo proceso básico de todo algoritmo. En resumen consiste en la repetición de un mismo procedimiento n-veces.



En esencia, un bucle consiste en la repetición de un procedimiento (un conjunto o bloque de sentencias) mientras se cumple una condición, y en su finalización una vez que se deja de cumplir dicha condición. 

El segundo tipo de bucle invierte el procedimiento: se repite la sentencia o el bloque de sentencias siempre que no se cumple la condiciones "x" y dejan de ejecutarse en el momento en que se cumplen.

En OOo Basic utilizamos dos estructuras para trabajar con bucles: For...Next y Do...Loop. En esta entrada trataremos el primero y habrá una segunda entrada para explicar el segundo.


La sintaxis de For...Next es la siguiente (lo que se sitúa entre corchetes es opcional):

For Variable = Inicio To (Variable) Fin [Step Salto]

 Bloque de código

[Exit For]

Next [Variable] 

Como puedes ver se utiliza una variable de control (normalmente identificada como contador por su función) que marca el inicio y el fin del bucle (Variable = Inicio To Fin) y también podemos indicar un salto ( o no, ya que este valor es opcional) que será útil si deseamos que la evolución del recorrido valor Inicio - valor Fin(nal) no sea lineal (+1). 

Una vez que se alcanza el valor Fin, entra en funcionamiento Next, dando por finalizado el ciclo. Mientras tanto (hasta ese momento) se ejecuta el bloque de código que se estableciera entre For y Next.

Al igual que Sept nos permite alterar el desarrollo de la secuencia, Exit For nos permite salir anticipadamente del bucle siempre que se cumpla una condición, lo que remite al uso de estructuras de bifurcación, dando lugar a estructuras complejas y mixtas.

Finalmente, el uso opcional de la identificación de variable tras Next (la misma que utilizamos en For como contador) es una buena práctica cuando se anidan dos bucles y cada uno tiene (obviamente) su propio contador: facilita delimitar ambos bucles, pero carece de valor cuando sólo desarrollamos un único bucle.

Ahora vamos a ejemplificar a continuación el uso simple de For...Next, que es la forma en que se utiliza esta estructura con mayor frecuencia. Para ello vamos a generar una tabla de multiplicar, ejemplo típico de este tipo de estructuras.

Sub TablaMultiplicar

Dim iNum As Integer, i As Integer

iNum = 5

For i = 0 To 10

MsgBox (iNum & " x " & i & " = " & iNum*i,64,"TABLA DE MULTIPLICAR DEL " & iNum)

Next

End Sub

Puedes mejorar este sencillo y poco atractivo script haciéndolo interactivo; para ello el valor iNum se establecerá mediante InputBox. También puedes transformarlo en un pequeño "juego" haciendo que sea el alumno quien deba indicar la solución, aunque en este caso te costará un poco más de trabajo, tendrás que crear una variable para contener el valor de la respuesta y el bloque de código será más complejo. En cualquier caso, lo importante y nuclear de qué es y cómo se construye un ciclo For...Next es lo expuesto en el ejemplo que tienes arriba expresado; el resto son "variaciones sobre el mismo tema".

No hay comentarios:

Publicar un comentario

Comenta esta entrada