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

11 estructuras de repeticion-tema11

  • 1.
  • 2.
  • 3.
    Categorías de losbucles (Loops)
  • 4.
  • 5.
    Pseudocódigo para uncontador 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
  • 7.
    Pseudocódigo para unacumulador 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
  • 9.
  • 12.
    Ejemplos En estos dosprimeros ejemplos solo se mostrará el código de programación con el fin de observar el funcionamiento de la estructura For-Next
  • 16.
    Ejemplo 3 Realizar unprograma 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.
  • 17.
    Solución 1-Análisis Se desea hacerun 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
  • 18.
    b)Tabla de variables VARIABLEDESCRIPCION 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
  • 19.
    c) Input -Las variablesde 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:”
  • 20.
  • 21.
    c) Prueba manual -Seasignan 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”
  • 22.
    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=70N4=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”
  • 23.
  • 24.
    4-Corrida del programa -caso1 -Se deben probar todos los casos, pero para este ejemplo solo probaremos el caso 1 y 3
  • 25.
  • 26.
    Solución utilizando For-Each -Elprograma 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”
  • 27.
    Tabla de variables VARIABLEDESCRIPCION 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
  • 28.
  • 29.
    Código utilizando For-Each -Parapropósitos de visualización este código muestra en cada ciclo el numero del ciclo (contador) y el valor acumulado de la suma (Acumulador)
  • 30.
  • 31.
    Código utilizando For-Eachversion2 -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.
  • 32.
  • 33.
  • 34.
    Solución 1-Análisis Se desea hacerun 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
  • 35.
    b)Tabla de variables VariableDescripció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
  • 36.
    c) Input -Las variablesde 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
  • 37.
  • 38.
    c) Prueba manual -Seasignan 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
  • 39.
  • 40.
  • 41.
  • 42.
    BUCLES ANIDADOS -Una determinadasituació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.
  • 43.
  • 44.
  • 45.
    - -En elsiguiente 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
  • 46.
    -En el procedimientola 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.
  • 47.
    -De acuerdo conlo 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
  • 48.
  • 49.
    Codificación -Si lo quedeseamos es llenar la matriz con los números de 1 al z, lo que debemos hacer es poner un contador interno así:
  • 50.
    Ejemplo 6 -Hacer unprograma 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:
  • 51.
    -Por simplicidad laforma 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
  • 52.
    -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
  • 53.
    llenar el restode 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