Repeticion condicionada
-
Upload
universidad-metropolitana-venezuela -
Category
Education
-
view
1.424 -
download
0
description
Transcript of Repeticion condicionada
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
Estructuras de Repetición
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
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.
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
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.
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
¿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.
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
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
Lineas = 2
'Variable de control del ciclo
Respuesta = MsgBox("Hay Más Datos?", vbYesNo, "Datos")
' ciclo de repeticion
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
Se van a REPETIR el proceso de leer y escribir datos mientras Si hay más datos que leer
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
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.
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
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
Repetición un número indeterminado de veces
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
While (condición)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.
En Visual Basic Sería:
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
Numero = 10While (Numero > 0)
MsgBox (Numero)Numero = Numero - 1Wend
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.
Y sí está instrucción no se coloca, ¿qué pasa?
La repetición puede no ejecutarse nunca.
Inicialización
Modificación
Veamos el siguiente ejemplo:
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
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.
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
¿Y qué pasaría en este caso?
Contador = 5While contador <> 0
contador = contador - 3Wend
Contador se inicializa en 5
Entra en la repetición porque Contador <> 0
Contador ahora vale 2
Entra de nuevo a la repetición porque Contador <> 0
Contador ahora vale -1
Respuesta: Nunca se sale de la repetición...
Entra de nuevo a la repetición porque Contador <> 0
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
Dim Nombre As String, Sexo As String, Respuesta As String
Sub Principal()
' Inicializar la posicion en la hoja de calculo
Lineas = 2
'Variable de control del ciclo
Respuesta = MsgBox("Hay Más Datos?", vbYesNo, "Datos")
' ciclo de repeticion
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
¿Qué vemos entonces nuestro programa?
Inicialización de la variable Respuesta
Condición de parada: Respuesta = VbNo
Modificación de la variable Respuesta
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
¿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
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
Precio = InputBox (“Diga el Precio” , “Precio”)While ( Precio <> 0 )
If (Precio > 10.000) then
Monto = (Precio – (Precio * 0.06))
Monto = Precio – (Precio * 0.05))
else
Wend
endif
msgbox (“El monto a pagar es:” & Monto)
Precio = InputBox (“Diga el siguiente precio” , “Precio”)
Codificación en VBA:
Las variaciones de la variable Precio controlan la cantidad de veces que se hace la repetición: si no hay más productos que revisar, se coloca Precio=0 y termina la repetición
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
¿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.
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
AcuMonto = 0Precio = InputBox (“Diga el precio” , “Precio”)While ( Precio <> 0 )
If (Precio > 10.000) then
Monto = (Precio – (Precio * 0.06))
Monto = Precio – (Precio * 0.05))
else
Wendmsgbox (“El monto total es:” & AcuMonto)
endif
msgbox (“El monto a pagar es:” & Monto)
AcuMonto = AcuMonto + Monto
Precio = InputBox (“Diga el siguiente precio” , “Precio”)
Utilizamos un acumulador de nombre AcuMonto
Cuando termina la repetición, se ejecuta la siguiente instrucción debajo de Wend
Estructuras de Repetición
[email protected] de Programación y
Tecnología Educativa
Pasemos ahora a estudiar las repeticiones indexadas….