Repeticion condicionada

17
Estructuras de Repetición mrodriguez @unimet.edu.ve epartamento de Programación y Tecnología Educativa Estructuras de Repetición

description

Material de apoyo para la asignatura bptpr01 Programación para Ingeniería de la Universidad Metropolitana.

Transcript of Repeticion condicionada

Page 1: Repeticion condicionada

Estructuras de Repetición

[email protected] de Programación y

Tecnología Educativa

Estructuras de Repetición

Page 2: Repeticion condicionada

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.

Page 3: Repeticion condicionada

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.

Page 4: Repeticion condicionada

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.

Page 5: Repeticion condicionada

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

Page 6: Repeticion condicionada

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.

Page 7: Repeticion condicionada

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

Page 8: Repeticion condicionada

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:

Page 9: Repeticion condicionada

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:

Page 10: Repeticion condicionada

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.

Page 11: Repeticion condicionada

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

Page 12: Repeticion condicionada

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

Page 13: Repeticion condicionada

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

Page 14: Repeticion condicionada

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

Page 15: Repeticion condicionada

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.

Page 16: Repeticion condicionada

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

Page 17: Repeticion condicionada

Estructuras de Repetición

[email protected] de Programación y

Tecnología Educativa

Pasemos ahora a estudiar las repeticiones indexadas….