lunes, 09 de noviembre de 2009
Ayúdanos a crecer, haz NeoTeo tu página de inicio RegistrarseIniciar sesión

Páginas:

Programar con Visual BASIC (V)

Por: Ariel Palazzesi  @  martes, 08 de julio de 2008  Nota vista 10716 veces

En la quinta entrega de éste tutorial comenzaremos a analizar las diferentes instrucciones que Visual BASIC dispone para la construcción de bucles (o reiteraciones). Su comprensión nos ayudará a crear programas capaces de realizar tareas más complejas y útiles.

¿te interesa?
38 -1
39 votos

También puede ser útil construir bucles que modifiquen el valor de la “variable” de forma decreciente. Esto es posible gracias a que el valor a continuación del Step puede ser negativo. Si se da esta condición, el valor de la “variable” se decrementa en cada iteración. Veamos un ejemplo:

Dim suma As Integer

For i As Integer = 100 To 0 Step -2
            suma = suma + i
 Next

En este caso, el valor inicial de “i” será 100, ira descendiendo de a dos unidades en cada iteración, y la última se producirá cuando el valor de “i” sea igual a cero. La variable “suma” va incrementando su valor en cada pasada, y al finalizar contiene la suma de los números pares que se encuentran entre el 0 y el 100, ambos inclusive. Puedes comprobarlo, el resultado final de “suma” será 2550.

La prueba: el resultado final de “suma” es 2550.

Por supuesto, en ese caso el “valor_inicial” debe ser mayor que el  “valor_final”, si no nuestro bucle no se ejecutará ni una vez. Esto plantea un tema interesante: puede darse el caso de que un bucle no se ejecute ninguna vez, ya que sus valores iniciales son tales que lo hacen imposible. La situación se produce cuando, al principio del bucle, Visual Basic evalúa los valores de “variable”, “valor_inicial”,“valor_final” e “incremento” y descubre que se ha alcanzado el máximo valor posible, saltando a la instrucción que sigue al Next.

Por ejemplo, el siguiente código no realiza ninguna suma, ya que el valor inicial es inferior al final, y el incremento es negativo:

Dim suma As Integer

For i As Integer = 1 To 10 Step -2
            suma = suma + i
Next

Este código no realiza ninguna suma.

Nada impide utilizar valores no enteros en cualquiera de los parámetros del For-Next. Supongamos que, siguiendo con las sumas, queremos sumar los valores comprendidos entre 0 y 10, de 0.1 en 0.1:

        Dim suma, i As Double

        For i = 0 To 10 Step 0.1
            suma = suma + i
        Next


(nótese el detalle de que hemos declarado las variables como “Double”).
El código anterior sumará 0.0, 0.1, 0.2, etc hasta 10.0 . El resultado, como se ve en la imagen siguiente es 505.

Código y resultado de la ejecución.

Por supuesto, todos los parámetros de un For-Next pueden ser variables. Esto le otorga una gran flexibilidad a nuestros programas, ya que permite construir bucles cuyo numero de ejecuciones dependa, por ejemplo, del numero de productos que contiene una base de datos, o de los días que tiene el mes en curso.

El ejemplo siguiente ilustra esta posibilidad:

        Dim suma, i, inicio, final, incremento As Double

        inicio = 85.7
        final = 100.8
        incremento = 0.1

        For i = inicio To final Step incremento
            suma = suma + i
        Next i


Por supuesto, como dijimos antes, si no se es cuidadoso se puede terminar con un bucle que no se ejecute ni una vez. Dato curioso: el resultado, que debería ser 14.174 tiene un pequeño error de redondeo.

¡Ops! Un error de redondeo.

Por ultimo, hay un par de instrucciones que pueden alterar el número de veces que se va a repetir el contenido de un bucle For-Next. Supongamos que queremos sumar los números enteros hasta que la suma sea superior a 1000. Salvo que seamos muy buenos con la matemática, no tenemos forma de conocer cual será el “valor_final” de nuestra cuenta.

Pero con “Exit For” podemos abortar el For-Next cuando queramos. Si Visual BASIC se encuentra con esta instrucción, inmediatamente pasa a la instrucción posterior al Next, sin importar que se haya alcanzado el “valor_final” elegido o no. Así es como se usa:

        Dim suma, i, inicio, final, incremento As Double

        inicio = 1
        final = 1000
        incremento = 1

        For i = inicio To final Step incremento
            suma = suma + i
            If suma >= 1000 Then
                Exit For
            End If
        Next i

Usando el IF-THEN que vimos en una entrega anterior, preguntamos si la suma ya es igual o superior a 1000. En caso de que sea así, ejecutamos el Exit For para abandonar el bucle. En la imagen siguiente puede verse el resultado del programa, y también que “i” sólo ha necesitado incrementarse 35 veces.

Exit For en acción.

For-Next tiene una variante que permite recorrer los ítems de una colección, mediante For-Each. Cuando hayamos visto que son y como se emplean las colecciones, volveremos sobre For-Next para explicar este ultimo aspecto.

Con esto terminamos la quinta entrega de nuestro tutorial. En la siguiente veremos los demás tipos de bucles que podemos emplear en nuestros programas Visual BASIC.


Anterior
FOR-NEXT
Artículo Siguiente
Curso de Flash: Flash Básico (I)
Artículo Anterior
LG y su móvil proyector
CopyRight
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

 

URL Trackback para esta noticia:
 
 
Datos  Login Registrarse
Usuario
   
Email
Website
 
Nuevo comentario:


Tags HTML permitidos: br
 

Síguenos en TwitterAgréganos a tu RSS

 

 

Autores