11 estructuras de repeticion-tema11

Post on 21-Jan-2018

303 views 1 download

Transcript of 11 estructuras de repeticion-tema11

Estructuras de Repetición

Estructuras de Repetición

Categorías de los bucles (Loops)

Contadores y Acumuladores

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

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

Bucles determinados

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

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.

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

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

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:”

2-Diseño

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”

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”

3-Codificación

4-Corrida del programa

-caso 1

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

probaremos el caso 1 y 3

-caso 3

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”

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

-Diagrama de Flujo

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)

Corrida del programa

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.

Corrida del programa

Ejemplo 4

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

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

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

-Diagrama de Flujo

2-Diseño

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

3-Codificación

-Programa para calcular

-Programa para borrar

4-Corrida del programa

-Para n=3

-Para n=5

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.

Estructura de anidamiento simple

Estructura de anidamiento Doble

- -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

-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.

-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

Codificación

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í:

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:

-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

-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

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