Curso de Algoritmia - Un2 - v2 - Compressed
Curso de Algoritmia - Un2 - v2 - Compressed
Curso de Algoritmia - Un2 - v2 - Compressed
Algoritmia
Unidad 2.
Estructura cíclica o repetitiva
Laboratorio de
Innovación Nacional Esap
Jaime Alberto Echeverri Arias
Autor
Tabla de Contenido
Introducción 3
Concepto de Ciclo 5
2.1. Ejemplos Básicos para Entender la Utilidad de los Ciclos 8
2.2. Ciclo Para 10
2.3. Ciclo Mientras 24
2.3.1. Actividad de Aprendizaje 28
2.3.2. Ejercicios de Repaso y Auto entrenamiento 38
2.4. Ciclos Anidados 39
2.4.1. Actividad de Aprendizaje 40
Referencias 45
Bibliografía 45
47
1
UNIDAD 02
Estructura cíclica o repetitiva
Introducción
3
Curso de Algoritmia
Los datos son como el petróleo, para que tengan valor hay
que refinarlos, en el caso de los datos se requiere la cons-
trucción de algoritmos para darles valor.
Michael Palmer
4
2
UNIDAD 02
Estructura cíclica o repetitiva
Concepto de Ciclo
5
Curso de Algoritmia
6
UNIDAD 02
Estructura cíclica o repetitiva
7
Curso de Algoritmia
8
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 2
Ejemplo de un condicional
Algoritmo
Ejemplo1_Condicional
Variables Entre: N
Inicio:
N=1
Muestre ( N )
Si N < = 100
N=N+1
Muestre ( N )
Si N < = 100
N=N+1
Muestre ( N )
Si N < = 100
Esta solución no requiere variables, solo N=N+1
Muestre ( N )
escribir muchas instrucciones del mismo tipo.
Si N < = 100
Los puntos suspensivos representan toda
N=N+1
esa cantidad de instrucciones que hacen fal-
Muestre ( N )
ta, pues, en total, serían 100 instrucciones de Si N < = 100
“muestre”. Es evidente que se logra el objeti- N=N+1
vo planteado, pero ¿qué tal si piden mostrar Muestre ( N )
los números hasta el 1000 o hasta 10.000? En Si N < = 100
ese caso, el algoritmo se convertiría, no solo N=N+1
en una cantidad ineficiente de instrucciones, Muestre ( N )
sino que, por cada vez que existiera una mo- Si N < = 100
dificación, prácticamente tendría que existir N=N+1
un algoritmo diferente con nuevas líneas de Muestre ( N )
órdenes agregadas. Veamos, a continuación, Si N < = 100
N=N+1
otra forma ineficiente de solucionar este mis-
Muestre ( N )
mo problema sin utilizar ciclos.
.
.
.
Si N < = 100
N=N+1
Muestre ( N )
Si N < = 100
N=N+1
Muestre ( N )
Fin
9
Curso de Algoritmia
Tipo de recurso: Video “Algoritmia básica - Módulo Veamos lo que significa cada instruc-
3. Estructuras para la construcción de algoritmos”. ción dentro del algoritmo anterior. (Echeve-
Duración: 22 minutos 11 segundos.
rri-Arias & Orrego Villa, 2012)
Enlace Web: https://www.youtube.com/watch?v=u-
2CQ5Q2dV_k
• Variable de control: como su nombre lo
Actividad significativa: En el video referido, es
indica, es la que controla el ciclo (su inicio
posible recapitular algunos aspectos de los tipos
de estructuras básicas que existen en el algoritmo. y su fin). “Variable_control” representa una
Identifique allí los tipos de estructuras básicas y variable que va a tomar valores iniciando
cuál es su utilidad. en “valorInicial”, terminando en “valorFinal”
y avanzando con un paso de “ValorPaso”.
En los casos donde no se especifica el va-
lor del paso, la mayoría de los lenguajes
La estructura cíclica facilita la solución de de programación asume el incremento de
problemas en donde se debe repetir deter- 1. El cuerpo del ciclo se ejecutará una vez
minado número de veces un conjunto de ins- por cada valor que tome la variable “varia-
trucciones. De esta forma, no se tendrá que es- ble_control”. Otro tema importante es la
cribir muchas veces lo mismo y se optimizará forma común para nombrarla. Lo habitual
el código. En los siguientes apartados se pre- es utilizar la letra “i”, o bien sus sucesoras
sentan las diferentes opciones para introducir en caso de ciclos anidados. La variable de
una estructura cíclica en un algoritmo. control asume el comportamiento de una
variable tipo contador (normalmente es
de tipo entero), concepto que se explicará
2.2. Ciclo Para más adelante (Herrera & Gutierrez , 2017).
El bucle o ciclo for (en adelante, ciclo para)
se emplea cuando se conoce el número de • Inicialización de la variable de control:
veces que se ejecutará una instrucción (sen- es necesario darle un valor inicial a la va-
tencia) o un bloque de sentencias. Este tipo de riable de control. Esto se hace en la par-
ciclo en pseudocódigo se escribe así: te “ValorInicial” que indica con cual dato
iniciará el ciclo para. Por ejemplo, si se
inicia en 0 significa que el conteo comien-
10
UNIDAD 02
Estructura cíclica o repetitiva
11
Curso de Algoritmia
Para
recordar
12
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 6
Inicialización de variables para ciclo
a=0
b=10
c=20
Para i = 1 hasta 5
a=a+1
b=a+b
c=a+a+c
Fin_Para
Tabla 7
Ciclo para con decremento
13
Curso de Algoritmia
EJEMPLO
Tabla 8
Pseudocódigo y salida en Python
En pseudocódigo
Algoritmo Primeros10Numeros
Variables: entero i
Para i=0 hasta 9 paso 1
Muestre (‘número’, i)
Fin_Para
Fin
14
UNIDAD 02
Estructura cíclica o repetitiva
EJEMPLO
Tabla 9
Algoritmo sumatoria
En pseudocódigo
Algoritmo
sumatoriaCincoNumeros
Variables: entero suma, i
Inicio
Suma = 0
Para i=1 hasta 5 paso 1
Suma = suma + i
Fin_para
Muestre (‘La suma de los cinco
primeros números es: ’,suma)
Fin
suma=0
for i in range (1,6):
suma=suma+i
15
Curso de Algoritmia
EJEMPLO
Tabla 10
Sumatoria pares
En pseudocódigo
Algoritmo SumaNumerosPares
Variables: entero n, i, suma
Inicio
Suma = 0
Muestre (‘ingrese un número n: ’)
Lea (n)
Para i=0 hasta n paso 2
Suma = suma + i
Fin_para
Muestre (‘la suma de los números
da como resultado:’, suma)
Fin
16
UNIDAD 02
Estructura cíclica o repetitiva
Para
recordar
Dos detalles importantes. El primero es que al usar input se recomienda no emplear tildes
porque esta versión de Python (2.7) no las reconoce y genera avisos con símbolos ilegibles. Lo
segundo es que el módulo en este lenguaje se representa con %.
¿Qué otro nombre podrá adquirir la variable de control de un ciclo para? Esta variable también
se llama variable tipo contador.
EJEMPLO
Tabla 11
Ciclo para incrementando en 2
En pseudocódigo
s=100
a=10
para i=10 hasta 1 paso -2
s=s-i
a=a-5
17
Curso de Algoritmia
Tabla 12
Decremento de variables
I S a
100 10
10 90 5
8 82 0
6 76 -5
4 72 -15
2 70 -15
18
UNIDAD 02
Estructura cíclica o repetitiva
EJEMPLO
Escribir un ciclo para que imprima los números pares positivos ma-
yores o iguales que 4 y menores o iguales que 20.
Tabla 13
Algoritmo números pares de 4 a 20
En pseudocódigo
Algoritmo pares4_20
Variables:
Inicio
Para i=4 hasta 20
Si i MOD 2 == 0
Muestre (‘número par’,i)
Fin_si
Fin_para
Fin
número par: 4
for i in range (4,21): número par: 6
if i%2==0: número par: 8
print 'número par: ',i número par: 10
número par: 12
número par: 14
número par: 16
número par: 18
número par: 20
19
Curso de Algoritmia
EJEMPLO
Tabla 14
Algoritmo compra clientes
En pseudocódigo
Algoritmo compras_cliente
Variables: entero sumaC=0,valor=0,n,i
String nombreC
Inicio
Muestre ('ingrese cantidad de artículos: ')
Lea (n)
Muestre ('Ingrese nombre del cliente: ')
Lea (nombreC)
Para i=1 hasta n
Muestre ('Ingrese valor producto: ')
Lea (ValorP)
sumaC= sumaC+valorP
muestre ('el cliente ', nombreC, 'compro artículos por valor de: ',sumaC)
Fin_para
Fin
20
UNIDAD 02
Estructura cíclica o repetitiva
EJEMPLO
Tabla 15
Algoritmo compra clientes promedio de serie de 100
En pseudocódigo
Algoritmo compras
Variables: Entero K, Real Numero,
Suma=0, Promedio=0
INICIO
Para K←1 hasta 100
Muestre (‘ingrese el número que
desea sumar’)
Lea (Numero)
Suma ← Suma + Número
Fin Para
Promedio ← Suma/100
Imprima (“el promedio de la serie es:”,
Promedio)
FIN
21
Curso de Algoritmia
Hay que tener una especial atención en En la estructura cíclica (que ya comenza-
los límites cuando se trata de pseudocódigo mos a abordar) se requiere contar acciones o
y cuando se pasa el programa a Python, pues sucesos. Por ejemplo, el número de veces que
son diferentes. Ahora bien, como puede verse se ejecuta el ciclo o las veces que se cumple
en el pseudocódigo anterior, el ciclo PARA tie- una condición. Los ejercicios desarrollados en
ne la función de permitir ingresar los 100 nú- la sección anterior nos permiten ver el uso de
meros. La variable controladora, en este caso variables tipo contador (la “i” del ciclo), cuyo
K, tiene inicio en uno y fin en 100, con incre- valor incrementa o decrementa una cantidad
mentos de a uno. Dentro del ciclo, el usuario constante en cada iteración. Cuando dicha va-
debe ingresar la lista de números, por medio riable no está incluida en un ciclo, la instruc-
de la instrucción Lea (numero). Una vez el ción que la representa es: Cont Cont+1. El
usuario ingresa el número, se acumula en la contador puede ser negativo o positivo y pue-
variable Suma. Cuando se termina el ciclo se den hacerse incrementos o decrementos dife-
procede a determinar el promedio y, por últi- rentes de 1, el requisito es que sea una cantidad
mo, se imprime. constante. Algunos ejemplos de asignaciones
que hacen a una variable de tipo contador son:
I=I+2; j= j-5; contador=contador+3; aux=aux-2
22
UNIDAD 02
Estructura cíclica o repetitiva
De otro lado, están los acumuladores. Su lor exacto de la operación. Este tipo de variable
misión es almacenar cantidades variables. Se es comúnmente usada en ciclos, pero también
utilizan para efectuar sumas o, en general, puede emplearse en otro tipo de estructuras
operaciones sucesivas. La principal diferencia (secuenciales o condicionales). Algunos ejem-
con el contador es que el incremento o decre- plos del uso de acumuladores se muestran a
mento de cada operación es variable en lugar continuación.
de constante. Normalmente, los datos que se
llevan a un acumulador son obtenidos por in-
formación que proporciona el usuario median-
te la combinación de instrucciones muestre/
lea. Es por esto que no se logra conocer el va-
Tabla 17 Para
Suma de números leídos recordar
23
Curso de Algoritmia
24
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 19
Algoritmo ingreso de números
En pseudocódigo
Algoritmo IngresoNumeros
Variables: Entero N=0, S=0
Inicio
Mientras (N < 10)
Muestre (“Digite el valor de N”)
Lea(N)
S=S+N
Fin Mientras
Muestre (“Suma “,S)
Fin
Como podemos ver, este caso presen- Si, en cambio, el usuario ingresara el va-
ta una situación distinta a las que se mane- lor N=5, la condición inicial del ciclo se cum-
jan con ciclo para. Aquí la condición del ciclo ple, pues (5<=10); se continuarán sumando los
mientras verifica que el valor ingresado de N valores ingresados por el usuario en la varia-
sea menor o igual a diez. Como el valor debe ble S. Cuando ingrese un valor superior a 10,
ser ingresado por el usuario en la instrucción el ciclo termina y el valor de S será la suma de
Lea (N), la ejecución del ciclo dependerá del los diferentes valores ingresados. Por ejemplo,
valor seleccionado por el usuario. 5+6+7+8+9+10 darán un valor de S igual a 45.
Veamos la prueba de escritorio con el caso
Así, en el caso de que el usuario ingrese,
N=5,6,7,8,9,10,11.
por ejemplo, un valor para N=15, el ciclo no se
ejecutará y el valor de la variable S será el va-
lor inicial, o sea, cero.
25
Curso de Algoritmia
Tabla 20
Prueba de escritorio
Para
N S recordar
7 5+6+7=18
8 5+6+7+8=26
26
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 21
Algoritmo uso bandera
En pseudocódigo
Algoritmo usoBandera
Variables: real numero, suma=0,
bandera=1
inicio
Mientras bandera==1 haga
muestre (‘Ingrese número real: ’)
Lea (numero)
suma=suma+numero
muestre (‘¿Desea ingresar más
datos? 1 para sí, 0 para no’)
Lea (bandera)
fin_mientras
muestre (‘La suma de números es: ’,suma)
Fin
27
Curso de Algoritmia
Tabla 22
Ciclo mientras con
condicional compuesto
Inicio:
Variables
Entre N 0, Acum 0
Si ( N Mod 3 = 0 ) ENTONCES
Acum Acum + N * 3
Fin Si
Fin
28
UNIDAD 02
Estructura cíclica o repetitiva
Pregunta Respuesta
2
¿Cuántas veces se Nunca se cumple esta condición porque
cumple la condición siempre la N toma valores pares. Por lo
(N Mod 3 = 0)? tanto, el módulo con 3 nunca será 0.
3
¿Cuál es el valor de Este valor no cambia durante la ejecución
Acum al final del ciclo? del algoritmo, es decir, sigue siendo cero.
4
¿Cuál es el valor de N al
Su valor también es infinito, pero
final del ciclo?
siempre par.
EJEMPLO
Un algoritmo para pedir números al usuario hasta que alguno sea mayor
que 100. Luego, debe decir la suma de los números y la cantidad de los mismos.
29
Curso de Algoritmia
Tabla 23
Algoritmo números menores que 100
En pseudocódigo
Algoritmo menores100
Variables: entero numero=99, suma=0, cantidad=0
Inicio
Mientras numero<100
Muestre (‘Ingrese un numero entero menor que 100. Si desea
terminar digite numero mayor o igual a 100’)
Lea (numero)
Si (numero<100)entonces
suma = suma + numero
cantidad = cantidad +1
Fin_si
Fin_mientra
En el ejemplo anterior, ¿cuántas variables se termine el ciclo se debe indicar cuál fue el
de tipo contador y de tipo acumulador están mayor y el menor de los números, así como la
presentes? suma y el promedio de los datos ingresados.
EJEMPLO
30
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 24
Algoritmo números mayores y menores
En pseudocódigo
Algoritmo mayorMenor
Variables: entero número, bandera=1, mayor=0, menor=0,
contador=0, suma=0, promedio=0
Mientras bandera ==1
Muestre (‘Ingrese un número: ’)
Lea (numero)
Si numero>mayor
Mayor=numero
Fin_si
Si contador==0
Menor=numero
Sino_si (numero<menor)
Menor=numero
Fin_si
Suma=suma+numero
contador=contador+1
Muestre (‘¿Desea ingresar más números? 1 para sí, 0 para no’)
Lea (bandera)
Fin_mientras
Promedio=suma/contador
Muestre (‘El mayor de los valores es: ’,mayor)
Muestre (‘El menor de los valores es: ’,menor)
Muestre (‘El promedio es: ’,promedio)
Muestre (‘La suma es: ’, suma)
fin
31
Curso de Algoritmia
EJEMPLO
Tabla 25
Descomposición por divisiones
32
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 26
Algoritmo capicúa
En pseudocódigo
Algoritmo capicúa
Variables: entero reves, residuo, auxiliar
Inicio
Muestre (‘Ingrese un numero entero: ’)
Lea (numero)
auxiliar = numero
mientras numero >10 haga
residuo = numero mod 10
reves= reves*10+residuo
numero= numero div 10
fin_mientras
reves= reves*10 + numero
si revés== auxiliar
muestre (‘el número es capicúa’)
sino
muestre (‘el número es capicúa’)
fin_si
fin
33
Curso de Algoritmia
Tabla 27
Ciclo mientras suma de los primeros números enteros
En pseudocódigo
Algoritmo primeros10_mientras
Variables: entero contador=1, suma=0
mientras contador<=10
muestre (contador)
suma= suma+contador
contador=contador+1
fin_mientras
muestre (‘la suma de los números es:
’,suma)
Fin
contador=1 1
suma=0 2
while contador<=10: 3
4
print (contador) 5
suma= suma+contador 6
contador=contador+1 7
print 'la suma de los números es: 8
9
',suma
10
La suma de los números es: 55
34
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 28
Ciclo mientras suma de los primeros números enteros
En pseudocódigo
Algoritmo primeros10_para
Variables: entero contador=1, suma=0
Para contador=1 hasta 10 haga
muestre (contador)
suma= suma+contador
fin_para
muestre (‘la suma de los números es:
’,suma)
Fin
suma=0 11
for contador in range (1,11): 2
print (contador) 3
4
suma= suma+contador
5
print 'la suma de los números es: 6
',suma 7
8
9
10
La suma de los números es: 55
35
Curso de Algoritmia
Tabla 29
Algoritmo de pares en ciclo mientras
En pseudocódigo
Algoritmo pares
Variables: entero suma=0, i=0, n
Inicio
muestre(‘ingrese un número n: ’)
lea (n)
mientras i <=n
muestre (i)
suma= suma+i
i=i+2
fin_mientras
muestre (‘la suma es’, suma)
36
UNIDAD 02
Estructura cíclica o repetitiva
Tabla 30
Algoritmo de pares en ciclo para
En pseudocódigo
Algoritmo pares
Variables: entero suma=0, i=0, n
Inicio
muestre(‘ingrese un número n: ’)
lea (n)
Para i=0 hasta n
muestre (i)
suma= suma+i
i=i+2
fin_mientras
muestre (‘la suma es’, suma)
37
Curso de Algoritmia
Vale la pena identificar dos diferencias im- 2. De los primeros 100 números enteros positi-
portantes entre el ciclo mientras y el ciclo para: vos, calcule el promedio de sus números pares
y el de sus impares.
• El ciclo mientras ejecuta las acciones
siempre que se cumpla la condición 3. Imprima los 100 primeros números múltiplos
dada. De otra manera, no entra a ejecu- de 3.
tar las acciones. Por consiguiente, este
ciclo es un condicional reiterado, por lo 4. Invierta un número, es decir, que 124 sea 421.
que tiene la posibilidad de que nunca Pista: utilizar división entera y módulo.
realice las acciones. Incluso, dentro del
cuerpo del ciclo, se puede poner una ins- 5. Convierta a horas, minutos y segundos una
cantidad de horas con fracción.
trucción que produzca su rompimiento.
38
UNIDAD 02
Estructura cíclica o repetitiva
10. Muestre el máximo valor y el mínimo valor 16. Diseñe un algoritmo que permita el ingreso
de un conjunto de números diferentes de 0, de un número entero y lo muestre invertido.
ingresados por el usuario.
17. Diseñe un algoritmo que muestre los prime-
11. Muestre el nombre de la persona que tiene ros 100 números primos positivos.
la mayor edad y de quién tiene la menor edad,
dado que no se conoce la cantidad de perso- 18. Diseñe un algoritmo que permita el ingreso
nas. de 20 números enteros aleatorios y determine
cuáles son números primos.
12. Resuelva el problema anterior, mostrando
el porcentaje de los mayores de edad y de los 19. Diseñe un algoritmo que muestre todos los
menores de edad respecto al total de personas números primos encontrados entre los 100 pri-
ingresadas. Además, muestre las edades pro- meros números enteros positivos.
medio de ambos, delos menores y de los mayo-
res.
2.4. Ciclos Anidados
13. En un club recreativo de la ciudad, se realiza- En un algoritmo pueden existir varios ciclos ani-
rá un campeonato de baloncesto que tenga mí- dados o independientes. Independientes quiere
nimo 6 equipos y máximo 16. Los directivos han decir que el segundo ciclo se ejecuta después
decidido que, si se supera el número máximo de que termina el primero. Anidados significa
de equipos, estos sobrarán. Si está por debajo que hay un ciclo completamente dentro del
del mínimo, entonces, no habrá campeonato. otro. Así, el ciclo más interno se procesa más
La cantidad de jugadores por equipo no se co- rápido que los demás y, por lo tanto, para ejecu-
noce; sin embargo, tiene estas condiciones: no tar el ciclo externo se espera la terminación del
debe estar por debajo de cinco ni por encima ciclo interno. Luego, se continúa con la iteración
de diez. correspondiente del ciclo externo.
39
Curso de Algoritmia
EJEMPLO
cont ←0, a←10
El primer ejemplo presenta una situación Para I←1 hasta 5
donde se tienen dos ciclos anidados, se deben Para J←10 hasta 15
determinar los valores de salida. Si←S+I
cont←cont+1
Fin Para
Tabla 32 a←a+I
Ciclo para anidados Fin Para
Propósito: Identificar la habilidad para Fuente: tabla tomada de (Echeverri-Arias & Orrego
hacer seguimiento a las variables de Villa, 2012)
un pseudocódigo.
40
UNIDAD 02
Estructura cíclica o repetitiva
18 -2
4 28 10
38 6
44 2
46 -2
8 56 10
62 6
68 2
70 -2
12
41
Curso de Algoritmia
Tabla 35
Algoritmo sumatoria
pares e imapres
En pseudocódigo
Algoritmo sumatoria_pares_impares
Variables: entero bandera=1, contadorN=0, numero, sumaPares,sumaImpares, i
Inicio
contadorN=0
mientras bandera ==1
muestre (‘Ingrese número: ’)
lea (numero)
sumaPares=0
sumaImpares=0
para i=1 hasta numero
if iMOD2==0
sumaPares=sumaPares+i
else
sumaImpares=sumaImpares+i
fin_si
fin_para
contadorN=contadorN+1
muestre ('La suma de los números pares entre 1 y: ',numero-1,'es',sumaPares)
muestre ('La suma de los números impares entre 1 y: ',numero-1,'es',sumaImpares)
muestre ('¿Desea ingresar más números? 1 para si, 0 para no')
lea (bandera)
fin_mientras
muestre 'El total de números ingresados fue de: ',contadorN
42
UNIDAD 02
Estructura cíclica o repetitiva
Pasemos ahora a analizar el siguiente (superior al tope del ciclo) y, de esta manera,
pseudocódigo. se finaliza el algoritmo. La prueba de escritorio
permite verificar esta discusión.
Tabla 36
Tabla 37
Prueba de escritorio
Pseudocódigo para analizar Prueba de escritorio ciclos
anidados
I A H
Inicio
0
Fin
43
Curso de Algoritmia
Fin
44
UNIDAD 02
Estructura cíclica o repetitiva
Referencias
Bibliografía
45
Curso de Algoritmia
Laboratorio de
Innovación Nacional Esap
46