Prof.
Niriaska Perozo
TALLER DE INICIACIÓN A LA
LÓGICA DE PROGRAMACIÓN
TEMA III: ESTRUCTURAS REPETITIVAS DE
CONTROL
INTRODUCCIÓN
Hasta este momento hemos revisado algunos
conceptos de programación, como entradas, salidas,
asignaciones, expresiones y operaciones, sentencias
secuenciales y de condicionales. Sin embargo muchos
problemas requieren características de repetición, en las
que algunos cálculos o secuencia de instrucciones se repiten
una y otra vez, utilizando diferentes conjuntos de datos.
Observe los pasos para resolver el ejercicio siguiente:
Calcular la nota promedio de un
estudiante si se realizaron 4
pruebas parciales sobre 20 puntos
cada uno.
Entradas: N1, N2, N3 y N4. Ej: 15,
18, 13 y 16
Salidas: PromNt
Proceso: sumamos las entradas y
dividimos entre 4
PromNt = (N1 + N2 + N3 + N4) / 4
PromNt = (15 + 18 + 12 + 19) / 4 =
64 / 4 = 16
El programa que resuelve el
problema es:
Inicio
Leer N1
Leer N2
Leer N3
Leer N4
Asignar a PromNt ç
(N1+N2+N3+N4)/4
Escribir PromNt
Fin
ESTRUCTURAS REPETITIVAS
Ahora describiremos y analizaremos el concepto de
bucle, como una sección de instrucciones que se repiten, y
que se denomina así ya que cuando termina la ejecución de
la última sentencia, el flujo de control vuelve a la primera
instrucción y comienza otra repetición de las sentencias de
código o instrucciones del programa.
Cada repetición se conoce como iteración, o pasada a
través del bucle.
Los bucles más típicos son:
§ Para (Desde-Hasta): a usar cuando se conoce el
número exacto de iteraciones.
§ Repetir (Repita hasta): se usa cuando se requiere
ejecutar por lo menos una iteración y se analiza la
condición de control al final.
§ Mientras (haga mientras): cuando se necesita
ejecutar el bucle 0 ó mas veces dependiendo de
una condición, para lo cual se evalúa la condición de
control antes de entrar en el ciclo.
CONTAR Y/O ACUMULAR
Estos conceptos debemos revisarlos al momento de
trabajar con bucles. Frecuentemente será necesario contar
cuantas veces damos vueltas en un ciclo; también es posible
que acumulemos (sumar) algunos valores para conocer el
total respectivo.
§ Contar: iniciar una variable en cero (0) e
incrementar en uno (1) en cada ciclo.
§ Acumular: iniciar una variable en cero (0) y
sumarle un nuevo valor para cada ciclo.
Puede decirse que se trata de procesos universales, o
sea, el proceso es el mismo para cualquier lenguaje de
programación. En este caso tenemos: el proceso universal
de contar y el de acumular.
MÍNIMO Y/O MÁXIMO
Nuevamente son variables de control. Las usaremos si
queremos determinar, por ejemplo, la edad menor o mayor
de una persona. También deben ser inicializadas.
§ Mínimo: iniciar una variable en un número
suficientemente grande y cambiarla cada vez que
tengamos un nuevo valor menor.
§ Máximo: iniciar una variable en un número
suficientemente pequeño y cambiarla cada vez que
tengamos un nuevo valor mayor.
Acá tenemos: el proceso universal de mínimo y el de
máximo.
EJEMPLO DE PROGRAMA CON ESTRUCTURA
REPETITIVA
Analice detenidamente el programa y el gráfico
respectivo.
Calcular el Promedio de Notas
de una sección con
varios alumnos.
Entradas: varias notas. Ej: 65,
40, 80, 30, 15 y 70
Salidas: PromNt. Ej:
(65+40+80+30+15+70)/6
Proceso: Acumular las notas y
contar la cantidad de las
mismas, luego dividir.
El programa que resuelve el
problema es:
Inicio
Asignar a CantNtas 0
{Inicia contador}
Asignar a SumaNtas 0
{Inicia acumulador}
Repetir
Leer Nota
Asignar a SumaNtas
SumaNtas + Nota
Asignar a CantNtas
CantNtas + 1
Escribir ‘Quedan datos
por procesar?: ’
Leer Resp {Será ‘SI’ o
‘NO’}
Hasta que Resp = ‘NO’
Asignar a PromNt
SumaNtas / CantNtas
Escribir PromNt
Fin
OTROS EJEMPLOS CON INSTRUCCIONES
REPETITIVAS...
En cada ejemplo siguiente (elaborado por un
programador) podrá observar la secuencia correcta para
que el programa funcione:
1- Sean varios números 2- Sean varios números enteros
enteros, se desea determinar (positivos o negativos). Haga un
el mayor valor entre todos. programa que determine la cantidad
Entradas: varios Nros. Ej: 10, de positivos y negativos.
40, 25, 60, 53 y 28 Entradas: varios Nros. Ej: 5, -2, 8, 9,
Salidas: NroMayor. Ej: 60 -4, 0, -2, 7
Proceso: usar proceso de Salidas: CantPos y CantNeg. Ej: 5 y 3
cálculo de mayor Proceso: usar procesos con contadores
El programa que resuelve el El programa que resuelve el problema
problema es: es:
Inicio {Usando el ciclo Inicio {Usando el ciclo
“Repita”} “Repita”}
Asignar a NroMayor 0 Asignar a CantPos 0 {Iniciar}
{Iniciar} Asignar a CantNeg 0 {Iniciar}
Repetir Repetir
Leer Nro Leer Nro
Si Nro > NroMayor Si Nro >= 0
Entonces Asignar a Entonces Asignar a CantPos
NroMayor Nro CantPos + 1
Escribir ‘Hay otro Sino Asignar a CantNeg
número (SI-NO): ’ CantNeg + 1
Leer Resp Escribir ‘Hay más datos (SI-
Hasta que Resp = ‘NO’ NO): ’
Escribir ‘El N° mayor es Leer Resp
’ + NroMayor Hasta que Resp = ‘NO’
Fin Escribir ‘Se procesaron ’ +
Otra forma de resolver el CantPos + ‘ positivos’
Escribir ‘Y ’ + CantNeg +
problema es: ‘ negativos’
Inicio {Usando el ciclo Fin
“Para”}
Asignar a NroMayor 0 Otra forma de resolver el problema
{Iniciar} es:
Escribir ‘Cuantos Nros Inicio {Usando el ciclo
procesará: ’ “Mientras”}
Leer CantNros Asignar a CantPos 0 {Iniciar}
Desde Ctrl=1 hasta Asignar a CantNeg 0 {Iniciar}
CantNros Haga Escribir ‘Comenzar a procesar
Leer Nro (SI-NO): ’
Si Nro > NroMayor Leer Resp {Si el usuario dice
Entonces Asignar a NO, no habrá ciclo}
NroMayor ç Nro Mientras Resp = ‘SI’ Haga
Fin Desde Leer Nro
Escribir ‘El N° mayor es Si Nro >= 0
’ + NroMayor Entonces Asignar a CantPos
Fin CantPos + 1
Sino Asignar a CantNeg ç
3- Varios vendedores CantNeg + 1
realizaron unas ventas y a la Escribir ‘Hay más datos (SI-
compañía le queda el 30% del NO): ’
Leer Resp
monto total. Cuánto dinero le Fin mientras
queda a la empresa por los Escribir ‘Se procesaron ’ +
vendedores masculinos? CantPos + ‘ positivos’
Escribir ‘Y ’ + CantNeg +
Entradas: N. Ej: 5 ‘ negativos’
Entonces Asignar a NO, no habrá ciclo}
NroMayor ç Nro Mientras Resp = ‘SI’ Haga
Fin Desde Leer Nro
Escribir ‘El N° mayor es Si Nro >= 0
’ + NroMayor Entonces Asignar a CantPos
Fin CantPos + 1
Sino Asignar a CantNeg ç
3- Varios vendedores CantNeg + 1
realizaron unas ventas y a la Escribir ‘Hay más datos (SI-
compañía le queda el 30% del NO): ’
Leer Resp
monto total. Cuánto dinero le Fin mientras
queda a la empresa por los Escribir ‘Se procesaron ’ +
vendedores masculinos? CantPos + ‘ positivos’
Escribir ‘Y ’ + CantNeg +
Entradas: N. Ej: 5 ‘ negativos’
Salidas: SumaNros. Ej: Fin
1+2+3+4+5=15
Proceso: usar procesos con
acumuladores y el ciclo “Para” 4- Hacer un programa que permita
determinar la suma de los primeros N
(note que se conoce el número
de ciclos) números enteros, dado N.
Entradas: N. Ej: 5
El programa que resuelve el
problema es: Salidas: SumaNros. Ej: 1+2+3+4+5=15
Inicio {Usando el ciclo Proceso: usar procesos con
“Repita”} acumuladores y el ciclo “Para” (note
Asignar a SumaMto ç 0
{Iniciar}
que se conoce el número de ciclos)
Repetir El programa que resuelve el problema
Leer Sexo es:
Leer Ventas Inicio {Usando el ciclo “Para”}
Si Sexo = Escribir ‘Deme el valor de N: ’
‘M’ {Masculino} Leer N
Entonces Asignar a Asignar a SumaNro 0 {Iniciar}
SumaMto Desde Nro=1 hasta N Haga
ç Asignar a SumaNro SumaNro +
SumaMto + Ventas Nro
Escribir ‘Hay más Fin Desde
vendedores (SI-NO): ’ Escribir ‘Los ’ + N +
Leer Resp ‘ primeros Nros ’
Hasta que Resp = ‘NO’ + ‘suman ’ + SumaNro
Escribir ‘A la empresa le Fin
quedan Bs. ’ + SumaMto
Fin
EJERCICIOS PROPUESTOS: HACER UN PROGRAMA
PARA CADA CASO
1. Dada la edad de varias personas, determinar la edad
promedio de los mayores de edad.
2. El factorial del número N se obtiene al multiplicar los N
primeros números. Ej: el factorial de 4 es 1*2*3*4, que
es 24. Hacer un programa que calcule el factorial de un
número dado.
3. Hacer un programa que calcule para varios sueldos: el
valor promedio y el total.
4. Dados los nombres y edades de varias personas,
determinar el nombre y edad del mayor.
5. Se tienen varios números enteros positivo, determinar
cuantos son pares.
6. Dados varios números enteros y un valor particular,
hacer un programa que determine cuántas veces se
procesó ese valor particular.
7. En un proceso de elecciones hay 3 candidatos. Hacer un
programa que lea la intención del voto de cada persona y
al final reporte el nombre del candidato ganador.
8. Realice el mismo programa anterior pero al final debe
mostrar el porcentaje de votos que obtuvo cada
candidato.
9. Una persona vende varios artículos y se sabe que si logra
un total menor de 100.000 clp le toca una comisión del
10%, si es menor de 200.000 clp una comisión del 15% y
el 20% si vende en total al menos 200.000. Programe y
muestre la comisión que le toca.
10. Dadas las notas y unidades de créditos de varias
materias de un alumno, hacer un programa que calcule el
promedio ponderado de sus notas (que es el índice
académico).
11. Se tienen todas las transacciones de una cuenta
bancaria (tipo: débito/crédito y Monto); hacer un
programa que, dado el saldo inicial de la cuenta, calcule
el saldo final de la misma.
12. Realice los ejercicios anteriores con cada tipo de ciclo
estudiado en clases.
GLOSARIO: ELEMENTOS QUE INTERVIENEN EN
LOS CICLOS.
Ø Contador: es una variable que se incrementa en una
unidad para cada vuelta de un ciclo. Ej: contar cada
persona procesada, al final tenemos un contador de
personas.
Ø Acumulador: es una variable que se incrementa en más
de una unidad para cada ciclo. Ej: acumular las edades
de varias personas para calcular el promedio.
Ø Mínimo: variable que almacena el menor valor procesado
entre varios datos.
Ø Máximo: variable que almacena el mayor valor procesado
entre varios datos.
Ø Bucle: cada vuelta que da un programa en una
instrucción repetitiva. También se conoce como
iteración o ciclo.
Ø Inicializar: dar un valor inicial a una variable,
asegurando que se asigna el necesario.