Ciclos o Bucles.
Estas estructuras se utilizan cuando se desea que algunas instrucciones sean repetidas, básicamente estudiaremos tres de estas estructuras:
Ciclo For o Para se utiliza cuando se conoce de antemano cuántas veces deseamos repetir
las instrucciones.
Ciclo While o mientras se repite mientras la condición dada sea cierta. Es necesario que
dentro del ciclo exista una instrucción que permita hacer la condición falsa o se producirá un ciclo eterno.
Ciclo Do o repetir: las instrucciones se repiten hasta que la condición sea cierta. Al igual
que en el anterior dentro del ciclo debe de existir una instrucción que permita hacer la condición cierta o se producirá un ciclo eterno.
Estructura repetitiva Para (for).
Esta estructura sirve para repetir la ejecución de una sentencia o bloque de sentencias, un número definido de veces. La estructura es la siguiente:
Para Var =Valor_Inicial Hasta Valor_Final Paso Incremento Hacer Sentencia 1
Sentencia 2 ….
….
Sentencia N Fin
Var es una variable que la primera vez que se entra en el bucle se iguala a Valor_Inicial, las sentencias del bucle se ejecutan hasta que Var llega al Valor_Final, cada vez que se ejecutan el bloque de instrucciones Var se incrementa según el valor de Incremento.
En Visual Basic para Excel la estructura Para se implementa con la instrucción For ... Next. For Varible = Valor_Inicial To Valor_Final Step Incremento
Sentencia 1 Sentencia 2 ...
Sentencia N Next Variable
Ejemplo 21.
Entrar 10 valores utilizando la función InputBox, sumarlos y guardar el resultado en la casilla A1 de la hoja activa.
Sub Ejemplo_21() Dim i As Integer Dim Total As Integer Dim Valor As Integer For i=1 To 10
Valor= Val(InputBox("Entrar un valor","Entrada")) Total = Total + Valor
Next i
Cells(1,1).Value = Total End Sub
Ejemplo 22
Llenar el rango de las casillas A1..A5 con valores pares consecutivos empezando por el 2. Sub Ejemplo_22()
Dim Fila As Integer Dim i As Integer Fila = 1
For i=2 To 10 Step 2 Cells(Fila,1)Value = i Fila = Fila+1
Next i End Sub
Estructura repetitiva Do While..Loop (Hacer Mientras).
puede que hayan veinte, en ocasiones treinta, en ocasiones ninguna, etc. Para estos casos la estructura for no es adecuada y deberemos recurrir a la sentencia Do While..Loop en alguna de sus formas. Esta estructura repetitiva está controlada por una o varias condiciones, la repetición del bloque de sentencias dependerá de si se va cumpliendo la condición o condiciones.
Hacer Mientras (se cumpla la condición) Sentencia1
Sentencia2 ...
Sentencia N Fin Hacer Mientras En Visual Basic
Do While (se cumpla la condición) Sentencia1
Sentencia2 ...
...
Sentencia N Loop
Ejemplo 27.
Programa para entrar registros en la base de datos. Cada campo se entra con InputBox. El programa va pidiendo datos mientras se entre un valor en el InputBox correspondiente al nombre, es decir cuando al preguntar el nombre no se entre ningún valor, terminará la ejecución del bloque encerrado entre Do While...Loop. Además diga con un MsgBox cuantos nombres se ingresaron
Sub Nombre() fila = 2
Cells(fila, 1).Activate Contador = 0
Nom = InputBox("Teclea nombre", "Nombre") Do While Nom <> ""
Edad = InputBox("Edad:", "Edad") Cells(fila, 1) = Nom
Cells(fila, 2) = domicilio Cells(fila, 3) = Ciudad Cells(fila, 4) = Edad Contador = Contador + 1
Nom = InputBox("Teclea nombre", "Nombre") fila = fila + 1
Cells(fila, 1).Activate Loop
Ejemplo 28:
Leer una lista de números colocados en la columna “A”, regresar la suma la media, las diferencias con la media al cuadrado, la varianza y la desviación estándar, considerando que los datos corresponden a una población.
Sub Media() linea = 2 SumNum = 0 Contador = 0 SumaDif = 0
Do While Cells(linea, 1).Value <> "" Num = Cells(linea, 1).Value SumNum = SumNum + Num Contador = Contador + 1 linea = linea + 1
Loop
prome = SumNum / Contador linea = 2
linea = linea + 1 Loop
varianza = SumaDif / Contador desv = Sqr(varianza)
Cells(linea, 1) = SumNum Cells(linea, 2) = SumaDif Cells(2, 3) = prome Cells(2, 4) = varianza Cells(2, 5) = desv Cells(2, 6) = Contador End Sub
Estructura Do..Loop Until (Hacer.. Hasta que se cumpla la condición).
Es otra estructura que evalúa la condición al final observe que la interpretación es distinta ya que el bucle se va repitiendo HASTA que se cumple la condición, no MIENTRAS se cumple la condición. Cual de los dos utilizar, pues, no se sorprenda, la que entienda mejor o le guste más.
La entrada de datos con este bucle quedaría Sub Nombre1()
fila = 2 Contador = 0 Do
Nom = InputBox("Teclea nombre", "Nombre") domicilio = InputBox("Domicilio:", "Domicilio") Ciudad = InputBox("Ciudad:", "Ciudad") Edad = InputBox("Edad:", "Edad") Cells(fila, 1) = Nom
Cells(fila, 2) = domicilio Cells(fila, 3) = Ciudad Cells(fila, 4) = Edad Contador = Contador + 1 fila = fila + 1
Loop Until MasDatos=vbNo
Msgbox (“Total de Nombres “ & Contador) End Sub
Ejercicios de tarea.
1. Programa que lea el nombre y la edad de N personas, preguntando ¿Cuántas se capturan? y regrese si es mayor de edad ó no. Que verifique que la edad no sea menor de cero ni mayor de 100 . (Uso de For y Repetir)
2. Programa que lea el número de horas trabajadas, el salario de un trabajador con horas extras, las primeras 40 horas se pagan al sueldo normal, las siguientes son horas extras, se pagan a 1.5 el salario normal. La lectura se hace de una tabla, uso de While o Repetir 3. Leer N números preguntando¿cuántos? y decir si es positivo, negativo o cero. Hacerlo
usando inputbox, el y se vaya formando una tabla
4. Leer un número y decir si es par, impar o cero. Después de cada número pregunta si se continua o no, que forme una tabla y al final regrese la suma de todos los números
5. Se desea calcular el salario neto semanal de N trabajadores en función del número de horas trabajadas y la tasa de impuestos de acuerdo a lo siguiente:
Las primeras 35 horas se pagan a tarifa normal.
Las horas que excedan de 35 se pagan a 1.5 veces la tarifa normal. Las tasas de impuestos son:
o Los primeros 50 dólares son libres de impuesto o Los siguientes 40 dólares tienen un 25% de impuesto o Los restantes un 45% de impuesto.
Hacer una tabla, con Nombre, Horas Trabajadas, Salario por hora, Horas Extra, Salario Normal, Salario Extra, Salario total, Impuesto, Salario Neto. Ademas regrese la suma de todos los salarios netos, El salario Neto Mayor con el nombre del trabajador, El salario Neto Menor con el nombre del trabajador, y el salario neto promedio de todos.
6. Programa que lea kilometraje inicial, final y calcule la renta de un auto, con las siguientes condiciones:
Cuota fija de 500.00 con derecho a recorrer 300 km.
Si se recorren entre 301 y 500 cada km. Extra se paga a 2.00 Si se recorren entre 501 y 1000 cada km. Se paga a 1.50 Si se recorren más de 1000 cada km se paga a 1.00