Date post: | 21-Jan-2018 |
Category: |
Education |
Upload: | elba-sepulveda |
View: | 295 times |
Download: | 1 times |
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