1. Estructuras de
Repetición
Estructuras de Repetición
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
2. Estructuras de
Repetición
Hemos visto que en la mayoría de los problemas a
resolver existen procesos que se hacen una sola vez y
procesos que se repiten varias veces.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
3. Estructuras de
Repetición
Podemos codificar problemas donde las acciones se
ejecutan sólo una vez.
¿Qué pasa si necesito repetir las acciones?
La estructura de repetición nos permite indicar las acciones
que queremos repetir, un número determinado o
indeterminado de veces.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
4. Estructuras de
Repetición
¿Qué harías si se te presenta el siguiente ejercicio:
Leer los datos de un grupo de personas. Imprimir los
nombres solo de aquellos que sean del sexo masculino.
Observa que debemos repetir la lectura y chequeo de
los datos, tantas veces como personas haya en el
grupo.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
5. Estructuras de
Repetición
Se utilizaría entonces la siguiente codificación:
Dim Nombre As String, Sexo As String, Respuesta As String
Sub Principal()
' Inicializar la posicion en la hoja de calculo Se van a REPETIR el
Lineas = 2 proceso de leer y escribir
'Variable de control del ciclo
Respuesta = MsgBox("Hay Más Datos?", vbYesNo, "Datos")
datos mientras Si hay más
' ciclo de repeticion datos que leer
While Respuesta <> vbYes
' Lectura de Datos
Nombre = InputBox("Cuál es tú nombre?", "Nombre")
Sexo = InputBox("Escriba M (Masculino) o F (femenino)", "Sexo")
' Escritura del reporte en la hoja de calculo
If Sexo = "M" Then
Sheets("Salida").Cells(Lineas, 1) = Nombre
' incrementar una linea en la hoja de calculo
Lineas = Lineas + 1
End If
' actualizar la variable de control del ciclo
Respuesta = MsgBox("Hay Más Datos?", vbYesNo, "Datos")
Wend
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
6. Estructuras de
Repetición
Hay dos tipos de estructuras de repetición:
La primera es aquella en la cual el número de repeticiones
es desconocido y se hará mientras se cumpla cierta
condición. Se conoce como Repetición Condicionada.
La segunda es aquella en donde se tiene perfectamente
establecido el número de veces que un grupo de acciones
se va a ejecutar (20, 5, 2 veces). Esta se conoce como
Repetición Indexada.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
7. Estructuras de
Repetición
Repetición un número indeterminado de veces
La primera forma de estructura repetitiva es para
aquellos casos donde no se conoce el número de
repeticiones o iteraciones en que se va a ejecutar una
acción o un bloque de acciones.
Estructura
Mientras se cumpla una condición
...
fin-mientras
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
8. Estructuras de
Repetición
While (condición)
En Visual Basic Sería: acción1
accion2
...
Wend
Las instrucciones acción1, acción2 hasta la instrucción
Wend se repetirán mientras la condición sea verdadera.
Debemos identificar la condición de parada, la cual
indica cuándo termina la repetición.
Se trata entonces, de una toma de decisión para repetir un
proceso mientras se cumpla una condición, y salir de él al
momento de no cumplirse.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
9. Estructuras de
Inicialización
Repetición
Veamos el siguiente Y sí está
ejemplo: instrucción no se
Numero = 10 coloca, ¿qué
While (Numero > 0) pasa?
MsgBox (Numero)
Numero = Numero - 1
Wend
Modificación
La variable Numero que controla la condición de
parada debe ser inicializada antes de la repetición y
modifica dentro de la repetición.
La repetición puede no ejecutarse nunca.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
10. Estructuras de
Repetición
La respuesta es : Si no se coloca esa
instrucción ocurren Infinitas repeticiones!!!!
Al no modificarse la variable la condición
es siempre verdadera y por lo tanto la
repetición no termina.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
11. Estructuras de
Repetición
¿Y qué pasaría en este caso?
Contador se inicializa en 5
Contador = 5 Entra en la repetición
Entra de nuevo a la While contador <> 0 porque Contador <> 0
repetición porque Contador contador = contador - 3
<> 0 Wend
Contador ahora Contador ahora vale 2
vale -1
Entra de nuevo a la repetición
porque Contador <> 0
Respuesta: Nunca se sale de la repetición...
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
12. Estructuras de
Repetición
¿Qué vemos entonces nuestro programa?
Dim Nombre As String, Sexo As String, Respuesta As String
Sub Principal() Inicialización de la
' Inicializar la posicion en la hoja de calculo variable Respuesta
Lineas = 2
'Variable de control del ciclo
Respuesta = MsgBox("Hay Más Datos?", vbYesNo, "Datos")
' ciclo de repeticion
While Respuesta <> vbYes Condición de parada:
' Lectura de Datos Respuesta = VbNo
Nombre = InputBox("Cuál es tú nombre?", "Nombre")
Sexo = InputBox("Escriba M (Masculino) o F (femenino)", "Sexo")
' Escritura del reporte en la hoja de calculo
If Sexo = "M" Then
Sheets("Salida").Cells(Lineas, 1) = Nombre
' incrementar una linea en la hoja de calculo
Lineas = Lineas + 1
End If
Modificación de la
' actualizar la variable de control del ciclo
Respuesta = MsgBox("Hay Más Datos?", vbYesNo, "Datos") variable Respuesta
Wend
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
13. Estructuras de
Repetición
¿Cómo resolvemos el siguiente enunciado?
Dado el precio de varios productos, codifique las
instrucciones para calcular el monto final a pagar por
cada uno, sabiendo que se hace un descuento de
acuerdo a la siguiente tabla:
precio (Bs.) descuento (%)
> 10.000 6
<= 10.000 5
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
14. Estructuras de
Repetición
Codificación en VBA:
Precio = InputBox (“Diga el Precio” , “Precio”)
While ( Precio <> 0 ) Las variaciones de la
If (Precio > 10.000) then variable Precio controlan la
cantidad de veces que se
Monto = (Precio – (Precio * 0.06)) hace la repetición: si no
else hay más productos que
revisar, se coloca Precio=0
Monto = Precio – (Precio * 0.05)) y termina la repetición
endif
msgbox (“El monto a pagar es:” & Monto)
Precio = InputBox (“Diga el siguiente precio” , “Precio”)
Wend
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
15. Estructuras de
Repetición
¿Qué pasa si a este enunciado le agregamos :
Se desea un total de los montos a pagar por todos los productos.
¿Cómo calculamos ese monto total?
Deberíamos sumar cada uno de los montos a pagar por
producto a medida que los vayamos calculando.
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
16. Estructuras de
Repetición
Utilizamos un acumulador de nombre AcuMonto
AcuMonto = 0
Precio = InputBox (“Diga el precio” , “Precio”)
While ( Precio <> 0 )
If (Precio > 10.000) then
Monto = (Precio – (Precio * 0.06))
else
Monto = Precio – (Precio * 0.05)) Cuando termina la
endif repetición, se
ejecuta la siguiente
msgbox (“El monto a pagar es:” & Monto)
instrucción debajo
AcuMonto = AcuMonto + Monto de Wend
Precio = InputBox (“Diga el siguiente precio” , “Precio”)
Wend
msgbox (“El monto total es:” & AcuMonto)
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
17. Estructuras de
Repetición
Pasemos ahora a estudiar las repeticiones indexadas….
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve