11 estructuras de repeticion-tema11

53
Estructuras de Repetición

Transcript of 11 estructuras de repeticion-tema11

Page 1: 11 estructuras de repeticion-tema11

Estructuras de Repetición

Page 2: 11 estructuras de repeticion-tema11

Estructuras de Repetición

Page 3: 11 estructuras de repeticion-tema11

Categorías de los bucles (Loops)

Page 4: 11 estructuras de repeticion-tema11

Contadores y Acumuladores

Page 5: 11 estructuras de repeticion-tema11

Pseudocódigo para un contador

Cont=Valor inicial

Inicio del bucle

Cont=Cont ±Constante

Fin del bucle

Inicializa la variable

Inicia la estructura de repetición

Proceso de contar (+ si es de

incremento y – si es de

decremento

Fin de la estructura de repetición

Si por ejemplo lo que deseamos es contar el numero de personas que se

registran en una pagina web el pseudocódigo es el siguiente:

Npersonas=0

Inicio del bucle

Npersonas=Npersonas+1

Fin del Bucle

Page 6: 11 estructuras de repeticion-tema11
Page 7: 11 estructuras de repeticion-tema11

Pseudocódigo para un acumulador

Acum=Valor inicial

Inicio del bucle

Acum=Acum ±Variable

Fin del bucle

Inicializa la variable

Inicia la estructura de repetición

Proceso de acumular (+ si es de

incremento y – si es de

decremento

Fin de la estructura de repetición

Si por ejemplo lo que deseamos es sumar las edades de los estudiantes del

curso INGE 3016 pseudocódigo es el siguiente:

Variable Edad

SumaEdad=0

Inicio del bucle

SumaEdad=SumaEdad+Edad

Fin del Bucle

Page 8: 11 estructuras de repeticion-tema11
Page 9: 11 estructuras de repeticion-tema11

Bucles determinados

Page 10: 11 estructuras de repeticion-tema11
Page 11: 11 estructuras de repeticion-tema11
Page 12: 11 estructuras de repeticion-tema11

Ejemplos

En estos dos primeros ejemplos solo se mostrará el código de

programación con el fin de observar el funcionamiento de la estructura

For-Next

Page 13: 11 estructuras de repeticion-tema11
Page 14: 11 estructuras de repeticion-tema11
Page 15: 11 estructuras de repeticion-tema11
Page 16: 11 estructuras de repeticion-tema11

Ejemplo 3

Realizar un programa que con base en el promedio de N notas se

obtenga la calificación final según los siguientes criterios:

si Promedio >=90 “A”

80<=Promedio<90 “B”

70<=Promedio<80 “C”

60<=Promedio<70 “D”

Promedio<60 “F”

A diferencia del ejemplo de selección que era con 3 notas, este

ejemplo se debe programar para cualquier numero de notas.

Page 17: 11 estructuras de repeticion-tema11

Solución

1-Análisis

Se desea hacer un programa que me pueda dar la nota final en letra

después de calculado un promedio de N notas.

-El programa me debe preguntar el numero de notas y de acuerdo a

esto me debe ir pidiendo una a una y sumarlas de forma acumulativa.

-Se calcula el promedio de las N notas

-Según el promedio de notas se elige la letra correspondiente de

acuerdo con las condiciones

a)Estrategia de solución

Page 18: 11 estructuras de repeticion-tema11

b)Tabla de variablesVARIABLE DESCRIPCION TIPO DE DATO CONDICION

N Número de Notas Integer Dato de entrada

Nota Valor de cada nota Single Dato de entrada

(debe estar en un

bucle)

i Variable del bucle

for

Integer Toma valores de 1

hasta N

Suma Sumatoria de las

notas

Single Es un acumulador

para calcular

sumatoria de notas

Prom Promedio de Notas Single Suma/N

NF Aprobación Final String Se calcula

dependiendo de las

condiciones

Page 19: 11 estructuras de repeticion-tema11

c) Input

-Las variables de entrada se van a introducir en inputbox

d) Output

-N------”Introduzca el Numero de notas”

-Nh------”Introduzca el valor de la nota N”

-Los valores de salida van a ser por Msgbox.

-Prom------”El valor del promedio es:”

-NF------”La nota final es:”

Page 20: 11 estructuras de repeticion-tema11

2-Diseño

Page 21: 11 estructuras de repeticion-tema11

c) Prueba manual

-Se asignan valores a las variables de entrada y se prueba cada

brazo de decisión

Caso 1

Entrada

N=2

Nota1=100

Nota2=90

Proceso

Prom=(100+90)/2=95

NF=“A”

Caso 2

Entrada

N=3

N1=70

N2=90

N3=80

Proceso

Prom=(70+90+80)/3=80

NF=“B”

Page 22: 11 estructuras de repeticion-tema11

Caso 3

Entrada

N=4

N1=100

N2=60

N3=60

N4=70

Proceso

Prom=(100+60+60+70)/4=72.5

NF=“C”

Caso 4

Entrada

N=5

N1=70 N4=70

N2=60 N5=60

N3=60

Proceso

Prom=(70+60+60+70+60)/5=64

NF=“D”

Caso 5

Entrada

N=6

N1=50 N1=30

N2=40 N1=20

N3=40 N1=45

Proceso

Prom=(50+40+40+30+20+45)/6=37.5

NF=“F”

Page 23: 11 estructuras de repeticion-tema11

3-Codificación

Page 24: 11 estructuras de repeticion-tema11

4-Corrida del programa

-caso 1

-Se deben probar todos los casos, pero para este ejemplo solo

probaremos el caso 1 y 3

Page 25: 11 estructuras de repeticion-tema11

-caso 3

Page 26: 11 estructuras de repeticion-tema11

Solución utilizando For-Each

-El programa debe leer cada uno de los valores de notas de la

columna “A”, hacer el promedio y ubicarlo en la celda “B2” y calcular

la nota final y escribirla en la celda “C2”

Page 27: 11 estructuras de repeticion-tema11

Tabla de variables

VARIABLE DESCRIPCION TIPO DE DATO CONDICION

N Número de Notas Integer Es un Contador

Nota Valor de cada nota Single Dato de entrada

(debe estar en un

bucle)

micelda Variable del bucle

for

Range Toma valores de 1

hasta la seleccion

Suma Sumatoria de las

notas

Single Es un acumulador

para calcular

sumatoria de notas

Prom Promedio de Notas Single Suma/N

NF Aprobación Final String Se calcula

dependiendo de las

condiciones

Page 28: 11 estructuras de repeticion-tema11

-Diagrama de Flujo

Page 29: 11 estructuras de repeticion-tema11

Código utilizando For-Each

-Para propósitos de visualización este código muestra en cada ciclo el numero del ciclo (contador)

y el valor acumulado de la suma (Acumulador)

Page 30: 11 estructuras de repeticion-tema11

Corrida del programa

Page 31: 11 estructuras de repeticion-tema11

Código utilizando For-Each version2

-Generalmente los valores de los contadores y acumuladores no se muestran en cada ciclo, esto

solo se hace para propósitos de verificar errores o para mostrar el funcionamiento. Lo común es no

poner datos de salida dentro del ciclo.

Page 32: 11 estructuras de repeticion-tema11

Corrida del programa

Page 33: 11 estructuras de repeticion-tema11

Ejemplo 4

Page 34: 11 estructuras de repeticion-tema11

Solución

1-Análisis

Se desea hacer un programa que pueda calcular la serie matemática

dado un valor de n

-El programa me debe preguntar el valor de n y de acuerdo a esto me

debe ir calculando termino a termino y sumarlos de forma acumulativa.

a)Estrategia de solución

Page 35: 11 estructuras de repeticion-tema11

b)Tabla de variables

Variable Descripción Tipo de dato Condición

n Numero de términos integer Dato de entrada

i Variable del bucle for integer Toma valores desde 1 a n

suma Sumatoria de terminos double Es un acumulador para

calcular sumatoria de

terminos

Page 36: 11 estructuras de repeticion-tema11

c) Input

-Las variables de entrada se van a introducir en inputbox

d) Output

-N------”Introduzca el Numero de terminos”

-Los datos de salida se deben organizar en una tabla de la siguiente

forma

Page 37: 11 estructuras de repeticion-tema11

-Diagrama de Flujo

2-Diseño

Page 38: 11 estructuras de repeticion-tema11

c) Prueba manual

-Se asignan valores a las variables de entrada y se prueba cada

brazo de decisión

Prueba 1

Entrada

N=3

Proceso=1+1/2+1/3=1.833

Suma=1.833

Prueba 2

Entrada

N=5

Proceso

Prom=1+1/2+1/3+1/4+1/5=2.2833

Suma=2.2833

Page 39: 11 estructuras de repeticion-tema11

3-Codificación

-Programa para calcular

Page 40: 11 estructuras de repeticion-tema11

-Programa para borrar

Page 41: 11 estructuras de repeticion-tema11

4-Corrida del programa

-Para n=3

-Para n=5

Page 42: 11 estructuras de repeticion-tema11

BUCLES ANIDADOS

-Una determinada situación se puede repetir si previamente se han

repetido otras mas pequeñas contenidas en ella.

Un ejemplo de esto es el nacimiento de un nuevo día, el cual para

que ocurra deben pasar 24 horas, pero para que ocurra cada hora

deben pasar 60 minutos y para cada minuto 60 segundos. Se puede

observar que para que se cumpla un ciclo superior se deben

completar los ciclos inferiores.

-Al igual que sucedía con las estructuras de decisión IF, que dentro

de un IF se podían poder todos los IF que fueran necesarios,

análogamente dentro de un Bucle pueden ir otros bucles de tal forma

que los bucles mas internos se completan primero que los bucles

mas externos.

La instrucción “Desde” es anidable dentro de sí misma mediante la

inserción de un bloque Desde dentro de otro. Como siempre,

recurriremos al Indentado para mantener el pseudocódigo ordenado.

Ha de verificarse que todo Desde se cierra con un Siguiente.

Page 43: 11 estructuras de repeticion-tema11

Estructura de anidamiento simple

Page 44: 11 estructuras de repeticion-tema11

Estructura de anidamiento Doble

Page 45: 11 estructuras de repeticion-tema11

- -En el siguiente ejemplo se crea un procedimiento para crear una

matriz de 3 filas y 4 columnas y colocar el valor 500 en cada celda

Ejemplo 5

Solución

-Debemos ver como es la variación de los índices del bucle

-Si llamamos i a las filas y j a las columnas tenemos:

- i varía de 1 a 3

- j varía de 1 a 4

Page 46: 11 estructuras de repeticion-tema11

-En el procedimiento la variable i se utiliza para moverse fila por fila y

la variable j para moverse columna por columna. Así el primer ciclo

For – Next cambiaria la variable i, y en el primer paso nos ubicaría en

la fila 1 de la matriz, (1, j), luego el segundo ciclo For – Next

se movería a lo largo de la primera fila columna por columna hasta

alcanzar la columna 4, al salir del ciclo For – Next interno (variable j),

entonces el comando Next i movería a la segunda fila y continuaría el

ciclo.

Page 47: 11 estructuras de repeticion-tema11

-De acuerdo con lo anterior la secuencia de los ciclos sería:

i=1

j=1

cells(1,1)=500

j=2

cells(1,2)=500

j=3

cells(1,3)=500

j=4

cells(1,4)=500

i=2

j=1

cells(2,1)=500

j=2

cells(2,2)=500

j=3

cells(2,3)=500

j=4

cells(2,4)=500

i=3

j=1

cells(3,1)=500

j=2

cells(3,2)=500

j=3

cells(3,3)=500

j=4

cells(3,4)=500

-Los ciclos del j se deben completar primero

antes de incrementar el ciclo para i. Por lo

tanto el ciclo j es el mas interno y el ciclo i el

mas externo

-For i=1 to 3

For j= 1 to 4

cells(i,j)=500

Next j

Next i

Page 48: 11 estructuras de repeticion-tema11

Codificación

Page 49: 11 estructuras de repeticion-tema11

Codificación

-Si lo que deseamos es llenar la matriz con los números de 1 al z, lo

que debemos hacer es poner un contador interno así:

Page 50: 11 estructuras de repeticion-tema11

Ejemplo 6-Hacer un programa que desarrolle el triangulo de pascal para

cualquier valor de n

-En cada nivel del triangulo hay un uno en los extremos y, a partir del

tercer nivel, cada numero, salvo los extremos, es la suma de los dos de

arriba. Concretamente, el triangulo de pascal es un arreglo triangular de

números de la forma:

Page 51: 11 estructuras de repeticion-tema11

-Por simplicidad la forma de desplegar el triangulo en las celdas de

Excel va a ser el siguiente:

-También se debe hacer un programa para borrar el triangulo

Page 52: 11 estructuras de repeticion-tema11

-La estrategia está en llenar primero las celdas que contienen los

números 1 y después hacer las demás

For i=1 to n

Cells(i,1)=1

Cells(i,i)=1

Next i

llenar de 1 las celdas

Page 53: 11 estructuras de repeticion-tema11

llenar el resto de celdas

If n > 2 Then

For i = 3 To n

For j = 2 To i - 1

Cells(i, j) = Cells(i - 1, j - 1)+ Cells(i - 1, j)

Next j

Next i

End If