0% encontró este documento útil (0 votos)
66 vistas47 páginas

Curso de Algoritmia - Un2 - v2 - Compressed

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 47

Curso de

Algoritmia
Unidad 2.
Estructura cíclica o repetitiva

Laboratorio de
Innovación Nacional Esap
Jaime Alberto Echeverri Arias
Autor

ENTORNOS Y SERVICIOS VIRTUALES ESAP


EQUIPO TÉCNICO

Bibiana Muñoz Bocanegra


Diseño curricular y pedagógico

José Eduardo Ramos


Diseñador Gráfico

Juan Pablo Muñoz


Corrector de estilo

ESCUELA SUPERIOR DE ADMINIS-


TRACIÓN PÚBLICA (ESAP)

Octavio Duque Jiménez


Director nacional

Carlos Arturo Correa Mojica


Director Fortalecimiento y Apoyo a la Gestión Estatal

Miguel Dario Aristizábal Gómez


Líder del Laboratorio de Innovación ESAP
Director de Entornos y Servicios Virtuales
UNIDAD 02
Estructura cíclica o repetitiva

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

Un algoritmo se puede definir como un En este módulo se introduce el concepto


método para la resolución de problemas. No de “estructura repetitiva”, también denomi-
solo son aplicables a la actividad intelectual, si nada “estructura cíclica”, que permite resolver
no, también, a todo tipo de problemas relacio- problemas donde se debe ejecutar un conjun-
nados con actividades cotidianas. En el primer to de instrucciones una y otra vez hasta que
módulo trabajamos un conocimiento previo se cumpla una determinada condición (Trejos,
en el diseño de algoritmos, identificamos sus 1999).
operadores, expresiones, tipos de datos, varia-
bles y constantes, manejando adecuadamen-
te estructuras de programación y de diseño
en pseudocódigo, secuencial y selectivo. Dado
lo anterior, nos centraremos en la estructura
repetitiva, de tal forma que le provea al estu-
diante comprensión y capacidad para diseñar
algoritmos con ciclos. Esta es una estructura
útil para indicar conjuntos de pasos que se
repiten un determinado número de veces o Para
ante el cumplimiento de una condición. Para recordar
cada concepto se proporcionarán definiciones
y ejemplos explicativos, desde los cuales el es- Las estructuras repetitivas o
tudiante logre un concepto claro y sustentado iterativas nos facilitan la
repetición de un conjunto de
en la práctica, así como destrezas para avanzar instrucciones, dadas
en el aprendizaje de la programación creando determinadas condiciones
arreglos, matrices y programas modulares. (implícitas o explícitas).

Normalmente, las sentencias de un pro-


grama son ejecutadas en el orden en el que
aparecen. Hasta el momento, en el desarrollo
de este curso, el estudiante está en capacidad
de resolver problemas donde cada sentencia
es ejecutada una y solamente una vez. Sin em-
bargo, son tan importantes las sentencias con-
dicionales como las sentencias repetitivas.

4
2
UNIDAD 02
Estructura cíclica o repetitiva

Concepto de Ciclo

5
Curso de Algoritmia

Un ciclo es el nombre usado para referirse, Las características anteriormente plantea-


en algoritmia, a la repetición o iteración de un das serán mejor entendidas con los ejemplos
conjunto de instrucciones (Trejos, 2004). Las que se desarrollarán a lo largo de este módulo.
siguientes características deben cumplirse al
trabajar con ciclos:

• El conjunto de instrucciones debe


ser finito; es posible contarlas.

• La cantidad de veces que se repita di-


cho conjunto de instrucciones también Para
debe ser finita. En algunos casos esta recordar
cantidad de veces va a depender de una
condición explícita y, en otros casos, va Todo ciclo debe ser finito, igual
a depender de una condición implícita. que las instrucciones que lo
componen. Debe tener inicio y fin.
Puede contener las estructuras
• Debe marcarse un inicio y un fin
secuenciales, condicionales o,
claramente delimitados. En los ca- incluso, otras repetitivas.
sos en los cuales solo exista una
instrucción a iterar, no se pondrá
ninguna de estas dos marcas.

• Dentro de un ciclo podrá ir cualquie-


ra de las otras estructuras que se han
estudiado (incluyendo otros ciclos).

6
UNIDAD 02
Estructura cíclica o repetitiva

Para determinar el número de veces que implícita cuando depende solamente


se repetirá el ciclo se debe verificar una condi- de la voluntad del usuario. Por lo tanto,
ción. Cada evaluación de la condición se deno- la cantidad de iteraciones o repeticiones
mina paso o iteración de ciclo. En el momento del ciclo podrá ser diferente, pues puede
en el que no se cumpla la condición dada, se cambiar con cada usuario. (Trejos, 1999)
genera el llamado “rompimiento de control”
del bucle o ciclo. Hasta allí se ejecutarán las • El cuerpo del ciclo. Es el conjunto de
instrucciones que están dentro de él. Luego, instrucciones que deben ser ejecutadas
se continúa con la ejecución del resto del al- siempre que se cumple la condición.
goritmo (Trejos, 1999).
• La salida del ciclo. Es la señal que se
Dentro de la condición del ciclo, se debe pone para producirse la salida en el
utilizar una variable denominada variable de momento de terminar la ejecución del
control. Si la condición está bien planteada, se cuerpo del ciclo, cuando ya no se cum-
obtendrá el rompimiento de control del ciclo, pla la condición. Puede darse con la
en caso contrario, el ciclo será infinito y, por lo palabra “Fin”, en el caso de tener varias
tanto, se ejecutará indefinidamente. Este es instrucciones dentro del cuerpo del ciclo.
un error de ejecución delicado. Ahora, una es-
tructura repetitiva o cíclica consta de tres par-
tes básicas:

• La condición del ciclo. Como ya se


mencionó, las condiciones pueden ser
explícitas o implícitas. Una condición es
explícita cuando depende solamente
de la misma ejecución del programa,
sin que sea importante la participación
del usuario. Asimismo, una condición es

7
Curso de Algoritmia

2.1.Ejemplos Básicos para Entender


Tabla 1
la Utilidad de los Ciclos Ejemplo secuencia de variables

Para entender la potencia de la nueva Algoritmo


estructura tipo ciclo, es preciso mirar algunos Ejemplo1_Secuencial Variables:
ejemplos. Asumiendo que hasta el momento
el estudiante no sabe cómo utilizar un ciclo,
debe resolver el siguiente problema. Inicio:
Muestre (”1”)
EJEMPLO Muestre (”2”)
Elabore un algoritmo para mostrar los Muestre (”3”)
números del 1 al 100 de 1 en 1. Este problema Muestre (”4”)
puede resolverse de dos formas: empleando
estructura secuencial o, en un segundo inten-
Muestre (”5”)
to, es posible resolverlo mediante una estruc- Muestre (”6”)
tura condicional. También, es posible hacerlo Muestre (”7”)
mediante ciclos, pero esta solución se verá en
Muestre (”8”)
unas secciones más adelante.
Muestre (”9”)
Muestre (”10”)
Muestre (”11”)
Muestre (”12”)
Muestre (”13”)
Muestre (”14”)
Muestre (”15”)
Muestre (”16”)
Muestre (”17”)
.
.
.
Muestre (”98”)
Muestre (”99”)
Muestre (”100”)
Fin

Fuente: tabla tomada de (Echeverri-Arias &


Orrego Villa, 2012)

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

Fuente: tabla tomada de (Echeverri-Arias &


Orrego Villa, 2012)

9
Curso de Algoritmia

Mediante esta solución habría que escri- Tabla 3


Ejemplo ciclo para
bir 99 veces el esquema. Esta segunda versión
es más larga e ineficiente que la anterior. Todo Para variable_control = valorInicial hasta valorFinal paso ValorPaso

esto se resuelve empleando el concepto de ci- Instrucción 1


Instrucción 2
clo que se verá en el desarrollo de este módu- …
lo. Instrucción n
Fin_Para

Fuente: (Echeverri-Arias & Orrego Villa, 2012)


EXTENDIENDO EL SABER

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

za en 0 (el rango incluye este número). Tabla 4


Ciclo para con incrementos de 5
• Valor final de la variable de control: para
que los ciclos sean finitos, es indispensable Para i = 10 hasta 50 paso 5
que haya un valor de finalización para la can-
Instrucción 1
tidad de iteraciones. Este valor se indica en
Instrucción 2
“ValorFinal”, que asumirá la variable de con-

trol (incluido dicho valor dentro del rango). Instrucción n
Fin_Para
• Incremento: este valor se indica en “ValorPa-
so” y refleja los incrementos o decrementos
que va a tener la variable de control con cada Fuente: (Joyanes L. E., 2016)
iteración del ciclo. Si este valor no se especifi-
ca, en pseudocódigo se toma como un valor
de 1. Está la opción de decrementar en lugar Ahora bien, ¿cómo se estructura la ins-
de incrementar y se opta por esta cuando trucción “para” en Python? En este lenguaje
el valor inicial sea mayor que el valor final. de programación, se usa la sentencia “in ran-
ge” para indicar los tres parámetros ya enun-
• Cuerpo: es lo que se hará en cada itera- ciados anteriormente, pero en el siguiente or-
ción, pueden ser una o más instrucciones, den: valor_inicial, paso, valor_final.
entre estructura secuencial, condicio-
nal e incluso otras estructuras cíclicas.
Tabla 5
Ciclo para con rango
Para
recordar
For i in range (1,50,5)
Si se quiere ejecutar un ciclo por 10 veces, ¿qué datos deberían usarse
para valor inicial, valor final e incremento o valor paso? En este caso, hay
dos opciones:
Instrucción 1
Instrucción 2
Valor inicial=0; valor final=9, paso=1
Valor inicial=1; valor final=10, paso=1 …
Si se quiere ejecutar un ciclo por 5 veces y que vaya desde 10 hasta 1, ¿qué Instrucción n
valores adquieren los parámetros del ciclo? En este caso, la opción sería:

ValorInicial=1; valor final=10; paso=-2

Fuente: (Echeverri-Arias & Orrego Villa, 2012)


Así, los valores que va a tomar la variable de control serán: 10, 8, 6, 4, 2.

Si quisiéramos, por ejemplo, incrementar


de cinco en cinco, desde 10 hasta 50, el ciclo se
escribiría de la siguiente manera. Fuente: (Jo-
yanes L. E., 2016)

11
Curso de Algoritmia

Al usar la instrucción “For” en Python es


importante tener en cuenta lo siguiente:

• El valor inicial es incluido en el rango.

• El valor final no es incluido en el rango.

• Si se requiere un paso diferente a


1, se debe indicar explícitamente.

Para
recordar

También es importante no perder


de vista que en Python no se
indica mediante ningún símbolo
ni palabra el inicio, el fin de un
ciclo o un condicional. Todo se
hace mediante la tabulación o
indentación del código.

Es importante recordar que cuando se


omite la palabra “paso”, se asume que el incre-
mento es de uno en uno (Paso = 1).

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

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

Es posible, también, diseñar ciclos para


regresivos. Estos son ciclos que inician en un
valor mayor que el valor de fin de ciclo, como
se da en el siguiente caso.

Tabla 7
Ciclo para con decremento

Para i = 10 hasta 1 paso -1


Instrucción 1
Instrucción 2

Instrucción n
Fin_Para

Fuente: (Echeverri-Arias & Orrego Villa, 2012) Para


recordar
En el caso anterior no se puede omitir el
dato sobre el paso, porque hay que ponerlo Cuando utiliza un ciclo para, se
conoce de entrada la cantidad de
negativo. Este bloque de instrucciones indica
veces que se ejecutará el ciclo y
que la variable “I” empieza en diez y termina que, en cada iteración, la variable
en uno, con decrementos de -1. Por lo tanto, los controladora del ciclo incrementa
valores de “I” son 10, 9, 8, 7, 6, 5, 4, 3, 2, 1. Esta va- una unidad.
riación del ciclo se hace útil en situaciones que
parten de un valor inicial y se van descontando
las sucesivas iteraciones ejecutadas.

13
Curso de Algoritmia

EJEMPLO

Escribir un programa que imprima los 10 pri-


meros números enteros empezando por el cero.

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

En Python Salida al ejecutar el código

for i in range (0,10): número 0


print 'número',i número 1
número 2
número 3
número 4
número 5
número 6
número 7
número 8
número 9

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

Como se mencionaba anteriormente, en Python el límite


inferior (valor inicial) indicado es tomado dentro del
Para rango, mientras que el límite superior (valor final) no es
incluido en el rango. De otro lado, no es necesario
recordar declarar las variables que se usarán ni indicar el nombre
del algoritmo. Tampoco se requiere cerrar con alguna
etiqueta el ciclo, ni indicar el fin del algoritmo.

14
UNIDAD 02
Estructura cíclica o repetitiva

EJEMPLO

Escribir un algoritmo que sume los 5 primeros núme-


ros comenzando con el 1.

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

En Python Salida al ejecutar el código

suma=0
for i in range (1,6):
suma=suma+i

print 'La suma de los cinco La suma de los cinco


primeros números es', suma primeros números es 15

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

15
Curso de Algoritmia

Aunque en Python hay muchas sentencias que


Para es posible ahorrarse, comparando con
pseudocódigo, se recomienda siempre escribir en
recordar comentario (es decir, anteponiendo el #). Esto
para no olvidar la estructura exigida por el
pseudocódigo.

EJEMPLO

Algoritmo para sumar los números pares entre cero y un límite


establecido por el usuario.

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

En Python Salida al ejecutar el código

sumaPares=0 Ingrese el límite superior para la suma de


n= input ('ingrese el limite superior números pares 5
para la suma de números pares')
for i in range (0,n+1): La suma de los números pares en el
if (i%2==0): rango establecido es: 6
sumaPares=sumaPares+i
print 'La suma de los números pares en
el rango establecido es:',sumaPares

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

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

Comprender la utilidad de un paso negativo en un ciclo para, haciendo el siguiente ejercicio:


construir un ciclo para que inicie en 10 y vaya hasta 1, con decrementos de -2 cada vez. Al mismo
tiempo, se debe trabajar con dos variables: la “s” que inicia en 100 y la “a” que inicia en 10. Dentro
del ciclo se debe aplicar la siguiente fórmula: s=s-i

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

En Python Salida al ejecutar el código

s=100 el valor de s es: 90


a=10 el valor de a es: 5
for i in range (10,0,-2): el valor de s es: 82
s=s-i el valor de a es: 0
a=a-5 el valor de s es: 76
print 'el valor de s es: ',s el valor de a es: -5
print 'el valor de a es: ',a el valor de s es: 72
el valor de a es: -10
el valor de s es: 70
el valor de a es: -15

Fuente (Echeverri-Arias & Orrego Villa, 2012)

17
Curso de Algoritmia

Prueba de escritorio y análisis del código an-


terior:

En este caso, el ciclo para tiene un paso


negativo, esto indica que la variable controla-
dora del ciclo disminuye 2 unidades en cada
ejecución hasta alcanzar un valor de uno o
inferior. Como el decremento es de dos uni-
dades los valores de “I” serán 10, 8, 6, 4, 2 y 0,
cuando alcanza el valor cero finaliza el ciclo.

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

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

Observe cómo a medida que se incre-


mentan las iteraciones del ciclo los valores de
“S” y de “a” decrementan. “S” decrementa en
10, 8, 6, 4, y 2, mientras que “a” siempre decre-
menta un valor constante igual a 5.

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

En Python Salida al ejecutar el código

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

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

19
Curso de Algoritmia

EJEMPLO

Un cliente se acerca a una tienda porque desea comprar va-


rios artículos. Diseñe un algoritmo que facilite a quien atiende to-
talizar las compras que haga el cliente. Como entrada de datos se
indica la cantidad de artículos comprados, el nombre del cliente y
el precio de cada artículo.

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

En Python Salida al ejecutar el código

n=input ('ingrese cantidad de artículos: ') ingrese cantidad de artículos: 3


nombreC= raw_input ('Ingrese nombre Ingrese nombre del cliente: Liliana
del cliente: ') Ingrese valor producto: 100
sumaC=0
for i in range (1,n): Ingrese valor producto: 200
valorP= input ('Ingrese valor producto: ')
sumaC= sumaC+valorP Ingrese valor producto: 300
el cliente Liliana compro artículos
print 'el cliente ', nombreC, 'compro
por valor de: 600
artículos por valor de: ',sumaC

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

20
UNIDAD 02
Estructura cíclica o repetitiva

EJEMPLO

Haga un algoritmo que imprima el promedio de una serie de 100 números


ingresados por el usuario.

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

En Python Salida al ejecutar el código

suma=0 Ingrese numero 10


promedio=0 Ingrese numero 20
for k in range (1,101): Ingrese numero 30
numero = input ('Ingrese numero') Ingrese numero40
suma= suma+numero … se siguen solicitando
promedio = suma/100 números
print 'El promedio de la serie es: ',promedio El promedio de la serie es: 40

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

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

Una buena práctica asociada al uso de


contadores es inicializar el contador, es decir,
poner un valor inicial a dicha variable. Esto se
Para hace para evitar tener basura o valores no con-
recordar trolados en la variable, lo cual puede generar
Se puede usar la instrucción Imprima (“ “) resultados no esperados al ejecutar el algorit-
equivalente a la instrucción Muestre (“ “).
Las variables acumuladoras y las
mo. Normalmente la variable tipo contador se
contadoras deben inicializar en cero (cont inicializa en 0.
←0, Acum←0) para evitar que se acumulen
valores equivocados. Son variables tipo
contador, acumulador.

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

suma=0 ¿Cuál es la diferencia entre


Para i = 1 hasta 5 contadores y acumuladores?
Mientras que el contador tiene
Muestre (‘Ingrese el número que desea sumar’)
incrementos/decrementos
Lea (numero)
constantes, el acumulador
suma= suma + numero
almacena cantidades variables.
Fin_Para
Muestre (‘La suma de los 5 números ingresados es: ’,a)

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

23
Curso de Algoritmia

2.3. Ciclo Mientras ble evidenciar, en este caso, no se tendría claro


el número de veces que se ejecutará el ciclo,
La estructura repetitiva mientras permite porque depende de qué números ingrese el
realizar varias veces las instrucciones que es- usuario. El ciclo mientras nos permite ejecutar
tán en el cuerpo del ciclo. Funciona mediante una acción hasta que se cumpla alguna condi-
una expresión lógica llamada condición, que ción específica que, en ese caso, depende de
permitirá decidir las veces que se ejecutará que el número sea mayor a 100. Si el usuario,
el ciclo. Si la condición es verdadera el ciclo por ejemplo, ingresa de manera sucesiva los
inicia y continuará ejecutándose mientras se números 1, 50, 99, 49, 21, 30 y 100, el programa
cumpla la condición interna, si la condición no finalizará, pues ninguno es mayor que 100;
es falsa, el ciclo se romperá. Este tipo de ciclo sin embargo, si luego ingresa el número 300,
en pseudocódigo se escribe como indica la si- el programa finalizará inmediatamente (Her-
guiente tabla (Joyanes L. , 1999). nández, 2001).

Ahora, es importante visualizar un ejem-


plo de su uso. Para ello, se puede diseñar un al-
Tabla 18 goritmo donde se le pidan al usuario una serie
Ciclo mientras
sucesiva de números que se vayan sumando.
En el momento que el usuario ingrese un valor
Mientras <Condición> entonces mayor que 10, el algoritmo debe terminar.
Instrucción 1
Instrucción 2

Instrucción n
Fin_mientras

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

A diferencia del ciclo para, en el ciclo mien-


tras (en inglés while) no es necesario conocer
a priori el valor final que asumirá la variable
controladora. Por esta razón, el ciclo mientras
se usa cuando desconocemos el número de
veces a repetir el conjunto de instrucciones
dentro del ciclo. A diferencia del ciclo para, (en
el cual se conoce de entrada el inicio, el fin y el
incremento) para el cual se sabe de entrada el
número de veces que se ejecutara.

Para comprender mejor el funcionamien-


to del ciclo mientras, imaginemos lo siguiente.
Se le pide a un usuario una serie de números
enteros, el ingreso de datos terminará cuando
añada un número mayor a 100. Como es posi-

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

En Python Salida al ejecutar el código

N=0 Digite el valor de N: 5


S=0 Digite el valor de N: 6
while N<10: Digite el valor de N: 7
N= input ('Digite el valor de N: ') Digite el valor de N: 8
S=S+N Digite el valor de N: 9
Digite el valor de N: 10
print 'Suma: ',S
Suma: 45

Fuente: (Joyanes L. E., 2016)

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

Que la variable que controla


5 5 el ciclo debe tener un valor
tal, que la condición deje de
cumplirse, en este caso N=11,
6 5+6=11 es la condición de salida o
parada del ciclo.

7 5+6+7=18

8 5+6+7+8=26

9 5+6+7+8+9=35 Otra forma de regular un ciclo mientras es


mediante una variable tipo bandera, centinela
10 5+6+7+8+9+10=45 o interruptor. Esta se comporta como un swit-
che (tipo booleano o entero) que indica si se
sigue ejecutando el ciclo o si ya llegó a su final.
Fuente: (Echeverri-Arias & Orrego Villa, 2012)
Normalmente asume valores de 1 o 0; verda-
Cuando el valor de N es 11, la condición dero o falso.
(N < 10) no se cumple y se rompe el ciclo.
La aplicación más habitual es una señal
de terminación de una serie de datos válidos.
En estos casos el usuario está ingresando da-
tos y, al final de la ejecución de cada ciclo, se
le preguntará si desea ingresar más datos (0
para sí, 1 para no, o viceversa).

Veamos un ejemplo de uso de las varia-


bles tipo bandera. Se debe diseñar un progra-
ma que lea una serie de números reales y los
sume. El programa debe preguntar al usuario
si desea ingresar más datos. Para ello, digitará
un 1 y, en el caso contrario, un 0. Si el usuario
desea continuar ingresando datos se deben
seguir solicitando y, si quiere salir, el programa
debe mostrar la suma de los datos leídos hasta
el momento y terminar.

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

En Python Salida al ejecutar el código

suma=0 Ingrese un numero real: 10


bandera=1
while bandera ==1: ¿Desea ingresar más datos? 1 para sí,
0 para no
numero= input ('Ingrese un
numero real: ') Ingrese un numero real: 20
suma= suma + numero
bandera= input ('¿Desea ingresar ¿Desea ingresar más datos? 1 para sí,
0 para no
más datos? 1 para si, 0 para no')
print 'La suma de los numeros Ingrese un numero real: 30
ingresados es:',suma
¿Desea ingresar más datos? 1 para sí,
0 para no

La suma de los números ingresados


es: 60

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012)

27
Curso de Algoritmia

Note que el primer valor dado a bandera debe ser


conveniente (en este caso debe ser 1), para que el
Para algoritmo entre por lo menos una vez al ciclo. Luego,
recordar sí se pregunta al usuario si desea ingresar más datos.
No se incluyen tildes para evitar algunos problemas
que se generan al ejecutar el código.

2.3.1. Actividad de Aprendizaje


Tipo: Apareamiento.

El objetivo: Demostrar el nivel de compren-


sión en la lectura de un algoritmo con ciclo
mientras.

Tabla 22
Ciclo mientras con
condicional compuesto

Inicio:
Variables
Entre N 0, Acum 0

Mientras ( N > ADN Acum < 30 )


N N + 2

Si ( N Mod 3 = 0 ) ENTONCES

Acum Acum + N * 3
Fin Si

Muestre (” Acumulado “ Acum)

Fin

Fuente: (Echeverri-Arias & Orrego Villa, 2012)

Instrucción o descripción: Haga una prueba


de escritorio del anterior pseudocódigo y luego
asocie de manera correcta cada respuesta a su
respectiva pregunta.

28
UNIDAD 02
Estructura cíclica o repetitiva

Pregunta Respuesta

1 Se ejecuta de forma infinita, porque siempre la N


será mayor o igual a 0 y obtendrá valores pares. Por
¿Cuántas veces se lo tanto, nunca se cumplirá la condición interna
ejecuta el ciclo? donde se modifica el valor de la variable Acum, la
cual permitiría que en algún momento el ciclo ya no
cumpla las dos condiciones impuestas.

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.

5 La condición del ciclo mientras


El ciclo nunca se rompe, es infinito.
está compuesta por N>=0 y por
Acum < 30, el ciclo se puede Ambas condiciones se cumplen
romper porque ambas todo el tiempo.
condiciones dejan de cumplirse
o porque una de ellas deja de
cumplirse. En este caso, ¿por
cuál de las dos situación se
rompe el ciclo?

A continuación, se exponen otros ejemplos que incluyen el ciclo mientras.

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

Muestre (‘La suma de los números es: ’,suma)


Muestre (‘La cantidad de números ingresados y que cumplen la
condición es: ’, cantidad)
Fin

En Python Salida al ejecutar el código

numero=99 Ingrese un número entero menor que 100.


suma=0 Si desea terminar digite número mayor o
cantidad=0 igual a 100: 20
while numero<100:
Numero= input ('Ingrese un Ingrese un número entero menor que 100.
numero entero menor que 100. Si Si desea terminar digite número mayor o
desea terminar digite numero igual a 100: 30
mayor o igual a 100')
if numero<100: Ingrese un número entero menor que 100.
suma=suma+numero Si desea terminar digite número mayor o
cantidad=cantidad+1 igual a 100: 50
print ('La suma de los números es:
',suma) Ingrese un número entero menor que 100.
print ('La cantidad de números Si desea terminar digite número mayor o
ingresados y que cumplen la igual a 100: 40
condición es: ', cantidad)
Ingrese un número entero menor que 100.
Si desea terminar digite número mayor o
igual a 100: 100
('La suma de los números es: ', 140)
('La cantidad de números ingresados y
que cumplen la condición es: ', 4)

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012).

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

Un algoritmo para ingresar números en-


teros hasta que el usuario lo desee. Cuando

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

En Python Salida al ejecutar el código

bandera=1 Ingrese un número: 10


mayor=0
menor=0 ¿Desea ingresar más números? 1 para sí, 0
contador=0 para no 1
suma=0
promedio=0 Ingrese un numero: 20
while bandera==1:
numero= input ('Ingrese un número: ') ¿Desea ingresar más números? 1 para sí, 0
if numero>mayor: para no 1
mayor=numero
if contador==0: Ingrese un número: 30
menor=numero
elif numero<menor: ¿Desea ingresar más números? 1 para sí, 0
menor=numero para no 1
suma=suma+numero
contador=contador+1 Ingrese un numero: 40
bandera= input ('¿Desea ingresar más
números? 1 para si, 0 para no') ¿Desea ingresar más números? 1 para sí, 0
promedio= suma/contador para no 0
print 'El mayor de los valores es: ',mayor El mayor de los valores es: 40
print 'El menor de los valores es: ',menor El menor de los valores es: 10
print 'El promedio es: ',promedio El promedio es: 25
print 'La suma es: ',suma La suma es: 100

Fuente: tabla (Echeverri-Arias & Orrego Villa, 2012).

31
Curso de Algoritmia

Para Para que el ciclo mientras se ejecute por lo


menos una vez, es necesario que la condición
recordar del ciclo se cumpla inicialmente.

EJEMPLO

Un algoritmo para determinar si un nú- última cifra del número y se considerará el


mero entero ingresado por el usuario es ca- nuevo número, o sea, el número inicial sin su
picúa. Esta palabra (en matemáticas, número última cifra. Así, con las cifras que se le qui-
palíndromo) se refiere a cualquier número ten al número se formará un nuevo número
que se lee igual de izquierda a derecha y de de- que llamaremos REVES que, como su nom-
recha a izquierda (ejemplos: 212, 7540550457, bre lo indica, obtendrá el revés del número.
1223221). Por lo tanto, si el número inicial fue el 2563
el revés almacenara el número 3652. En caso
Para escribir este algoritmo, se debe ve-
de que REVES sea igual al número inicial, se
rificar si el número que ingresa el usuario es
puede concluir que el número ingresado es
capicúa. Una de las formas para validarlo es
capicúa. La siguiente imagen muestra el pro-
descomponer el número inicialmente ingre-
ceso que se usará.
sado utilizando el operador Módulo (residuo
de la división entera). Con él, se obtendrá la

Tabla 25
Descomposición por divisiones

Observe que inicialmente se tiene el número


2563 10 2563 y, por medio de un proceso iterativo de
división, se descompone, obteniendo en cada
3 256 10 división las cifras del primer número,
empezando de derecha a izquierda, hasta el
6 25 10 momento en el cual el cociente de la división
entera es un número menor que 10. En este
momento termina el proceso iterativo, si
5 2 formamos un número únicamente con los
residuos de las divisiones, quedaría faltando
el ultimo cociente, en este caso el dos.

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012)

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

En Python Salida al ejecutar el código

numero = input ('ingrese un Primera ejecución:


número: ') ingrese un número: 23654
El número ingresado no es capicúa
auxiliar = numero
reves=1
while numero>10:
residuo= numero % 10 Segunda ejecución:
reves = reves*10+residuo ingrese un numero: 212
El numero ingresado es capicúa
numero=numero//10
reves=reves*10+numero
if reves== auxiliar:
print 'El número ingresado es
capicúa'
else:
print 'El número ingresado no
es capicúa'

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012)

33
Curso de Algoritmia

La mayoría de las veces un ciclo para se EJEMPLO


puede reemplazar por un ciclo mientras. A Escribir un programa que imprima y sume
continuación, se presentan algunos ejem- los 10 primeros números enteros empezando
plos sobre la forma en que se convierte un por el uno.
ciclo mientras en un ciclo para y viceversa.

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

En Python Salida al ejecutar el código

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

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012)

34
UNIDAD 02
Estructura cíclica o repetitiva

Ahora, se presenta el mismo ejercicio,


pero usando un ciclo para.

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

En Python Salida al ejecutar el código

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

Fuente: tabla tomada de (Echeverri-Arias &


Orrego Villa, 2012)

Según ambos ejemplos, ¿qué dife- EJEMPLO


rencias existen entre los dos códigos ante-
riormente presentados? ¿En qué casos se Un algoritmo para sumar los números pa-
puede reemplazar un ciclo mientras por res entre cero y un límite “n” establecido por
un ciclo para? el usuario.

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)

En Python Salida al ejecutar el código

suma=0 Ingrese numero n: 10


i=0 La suma de números pares en el
rango establecido es: 30
n= input ('Ingrese numero n: ')
while i<=n:
suma=suma+i
i=i+2 Ingrese numero n: 5
print 'la suma de números pares en el La suma de números pares en el
rango establecido es: 6
rango establecido es: ', suma

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012).

36
UNIDAD 02
Estructura cíclica o repetitiva

El problema anterior también se puede


resolver usando un ciclo para. Veamos.

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)

En Python Salida al ejecutar el código

suma=0 Ingrese numero n: 10


i=0 La suma de números pares en el
rango establecido es: 30
n= input ('Ingrese numero n: ')
for i in range (0,n+1,2):
suma=suma+i

print 'la suma de números pares en el


rango establecido es: ', suma

Fuente: tabla tomada de (Echeverri-Arias & Orrego Villa, 2012).

Para Para que el ciclo mientras se ejecute por lo


menos una vez, es necesario que la condición
recordar del ciclo se cumpla inicialmente.

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.

6. Calcule el factorial de un número dado por el


• El ciclo para es automático; ejecuta
usuario.
las acciones para cada uno de los va-
lores tomados desde un valor inicial, 7. Determine los números primos menores que
se detiene cuando toma el valor final. 1000.
Además, se incrementa automática-
mente, según lo haya determinado el 8. Determine el máximo común divisor (MCD)
programador. De ahí que poner una de dos números enteros. Para tal fin, divida el
instrucción con la intención de romper mayor de los números entre el menor. A conti-
la condición del ciclo no es posible. nuación, divida el número menor (el divisor) por
el residuo. Continúe este proceso (dividiendo el
último divisor por el residuo) hasta que la divi-
2.3.2. Ejercicios de Repaso y sión sea exacta. El último divisor será el MCD.
Auto entrenamiento
9. Haga un algoritmo que calcule el promedio
1. De una lista de 100 números, determine cuá- del peso de los hombres y el de las mujeres que
les son pares y cuáles impares, con sus respecti- ingresan a un recinto. Tenga en cuenta que
vos mensajes. no se conoce la cantidad de personas. Calcule,
además, el porcentaje de los hombres y el de
las mujeres que han asistido a este sitio.

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.

14. Para un reinado popular se ha presentado


una cantidad desconocida de candidatas (se Tabla 31
exige máximo 250). La junta directiva del reina-
do decide inscribirlas a todas, pero solo selec- Ciclo anidados
ciona a aquellas cuya estatura oscila entre 165 y
185 cm de altura. Dicha junta pasa dos listados:
una con los nombres y otra con las estaturas,
Ciclo condición 1 haga
pues el jurado selecciona a la candidata más
alta (de las que están por encima del prome- Ciclo condición 2 haga
dio). Haga un programa que muestre ambos Ciclo condición 3 haga
listados y la estatura promedio de las candida- Conjunto de instrucciones
tas seleccionadas por la junta. Cuerpo ciclo3
Cerrar ciclo Cerrar ciclo 2
15. Diseñe un algoritmo que permita el ingreso
Cerrar ciclo 1
de números enteros aleatorios menores o igua-
les que 200. Adicionalmente, determine si el
número es menor que 100 cuando sea o no sea
par y si es múltiplo o no de 5. En caso de que
Fuente: tabla tomada de (Echeverri-Arias &
el número esté entre 100 y 200, diga si es o no
Orrego Villa, 2012).
impar y múltiplo o no de 3.

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

Descripción o instrucción: Haciendo un se-


Inicio guimiento a cada variable señale el núme-
ro de veces que se ejecutará la instrucción
Variables
a va + 1 en el algoritmo anterior:
Entero I, J, Cont ←0,
Para I ← 1 Hasta 10
a. 5 veces
Para J ← 1 Hasta 10
b. 10 veces
Cont ← Cont + 1
c. 15 veces
Fin Para (J)
d. 2 veces
Fin Para (I)

Fin Ejercicio: Diseñar un algoritmo que per-


mita determinar si un número es primo. El
siguiente ejemplo presenta una situación
Fuente: tabla tomada de (Echeverri-Arias & Orrego donde se tienen dos ciclos anidados, deter-
Villa, 2012). mine los valores de salida.

Este algoritmo utiliza dos ciclos para ani- Tabla 33


dados. Cada ciclo empieza en uno y termina Algoritmo número primo
en diez, esto quiere decir que la instrucción
se ejecutará 10 por 10 veces, o sea, cien veces.
En cada uno de los casos la variable contado- Inicio

ra del ciclo (también llamada índice del ciclo) Variables


Entero N=0, S=0, A
incrementa una unidad cada vez que se eje- Mientras (N <= 10)
cuta el ciclo, hasta que esta variable supere el A=10
Mientras (A > 0)
tope impuesto. En este caso, el tope es diez en S=S+A
cada ciclo. A=A-4
Fin Mientras
N=N+4
Fin Mientras
2.4.1. Actividad de Aprendizaje Muestre (“Suma “S)
Fin
Tipo: Selección única.

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

Prueba de escritorio Observe que el ciclo interno se ejecuta


tres veces para N= 0, N=4 y N=8. Además, cada
En esta prueba se muestran los diferentes instrucción dentro de este ciclo se ejecuta
valores de las tres variables que hacen parte 9 veces, para los valores de A=10, A=6 y A= 2.
de este proceso. Finalmente, se debe tener presente que para
realizar las instrucciones del ciclo externo, la
condición del ciclo interno debe ser falsa (se
Tabla 34
debe dejar de cumplir).
Prueba de escritotio
Prueba de escritorio n EJEMPLO

Diseñar un algoritmo que haga la sumato-


N S A
ria de números pares e impares que estén en-
tre 1 y un número ingresado por el usuario. Por
ejemplo, si el usuario ingresa el 10, entonces, el
0 0 10 programa debe mostrar la suma de 1+3+5+7+9
y la suma de 2+4+6+8+10. Debe permitir esto
10 6
tantas veces como lo desee el usuario, situa-
ción que se indicará ante la pregunta: ¿desea
2
ingresar más datos?
16

18 -2

4 28 10

38 6

44 2

46 -2

8 56 10

62 6

68 2

70 -2

12

Fuente: tabla tomada de (Echeve-


rri-Arias & Orrego Villa, 2012).

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

En Python Salida al ejecutar el código

#algoritmo sumatoria de números pares e impares Ingrese numero: 10


bandera=1 La suma de los números pares entre 1 y: 10 es
contadorN=0 30
while bandera==1: La suma de los números impares entre 1 y: 10 es
numero=input ('Ingrese número: ') 25
numero=numero+1
sumaPares=0 ¿Desea ingresar más números? 1 para si, 0 para
sumaImpares=0 no1
for i in range (1,numero):
if i%2==0: #es par Ingrese numero: 20
sumaPares=sumaPares+i La suma de los números pares entre 1 y: 20 es
else: 110
suma La suma de los números impares entre 1 y: 20
Impares=sumaImpares+i es 100
contadorN=contadorN+1
print 'La suma de los números pares entre 1 y: ¿Desea ingresar más números? 1 para sí, 0 para
',número-1,'es',sumaPares no
print 'La suma de los números impares entre 1 y: El total de números ingresados fue de: 2
',número-1,'es',sumaImpares
bandera= input ('¿Desea ingresar más
números? 1 para sí, 0 para no')
print 'El total de números ingresados fue de:
',contadorN

Fuente: Elaboración propia

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

Variables : Entero A=0, I, boolenao H=0 1 13


Para I=1 hasta 20 Paso 5
A=10+I*3 14
Mientras (H==0)
Si (A Mod 3 = 0) Entonces 21 15 1
H=1
I=21
16
Fin Si
A=A+1
Fin Mientras Fuente: (Echeverri-Arias & Orrego Villa, 2012)
Fin Para

Fin

Fuente: Elaboración propia

Observe que, en este caso, se tienen dos


sentencias cíclicas anidadas (un ciclo mien-
tras dentro de un ciclo para). El ciclo para tie-
ne variable controladora a “I”, la incrementa
de 5 en 5, empezando en uno y terminado en
20. Se tiene la presencia de una variable lógi-
ca “H” (que puede tener dos valores 0 [falso]
o 1 [verdadero]). Dentro del ciclo mientras, se
presenta un condicional que verifica si el va-
lor de “A” es múltiplo de tres, en caso de ser
así, la variable “H” cambia de estado y rompe
el ciclo interno. En el caso contrario, se incre-
menta el valor de “A” en una unidad y, nueva-
mente, se verifica la condición de ser divisible
por tres. Ahora, dentro del condicional hay una
sentencia que rompe el ciclo para, pues la va-
riable controladora (o sea “I”) toma el valor 21

43
Curso de Algoritmia

EJEMPLO de hacer ejercicios más complejos como cal-


cular una sumatoria de artículos comprados
Veamos cómo se determina la suma de por un cliente y, adicionalmente, tener la op-
números de tres cifras que son primos. ción de ingresar datos de otros cliente para
poder presentar la sumatoria. Con este tipo de
configuraciones será posible, al final, tener un
Tabla 38 acumulado total para todos los clientes, pero
Suma de números primos
Veamos cómo se determina la suma también estará la opción de saber la sumato-
de números de tres cifras que son ria de cada uno de ellos. De esta manera, se da
primos.
por concluido este módulo sobre estructura
cíclica. En los siguientes módulos se observará
Inicio que el uso de ciclos anidados es la forma de
Variables recorrer vectores y matrices (temática que aún
Entero N, M, I, J, Cont =0, Suma=0
Para I = 100 Hasta 999
no hemos abordado).
Para J = 1 Hasta I
SI I Mod J =0 Entonces
Cont = Cont + 1
Fin Para
Sin Cont = 2 Entonces
Suma = Suma + I
Fin Si
Fin Para
Cont = 0
Muestre (“La suma de los números terminados en siete
entre “M” y “N” Es
“Suma)

Fin

Fuente: tabla tomada de (Echeverri-Arias &


Orrego Villa, 2012)
En este algoritmo se tienen dos ciclos
para anidados, el primero recorre los números
de tres cifras, por eso inicia en 100 (que es el
primer número de tres cifras) y termina en 999
(que es el último número de tres cifras). La va-
riable controladora de este primer ciclo es la
“I”, el ciclo interno se encarga de contar todos
los divisores de cada uno de los números de
tres cifras, si determinado número sólo tuviera
dos divisores (el uno y el mismo número), en-
tonces, sería un número primo y se sumaría en
la instrucción Suma = Suma + I. Observe que
la variable contadora se reinicia cada vez que
finaliza el ciclo más interno, esto se hace con
el fin de iniciar el conteo de divisores cada vez
que cambia de número de tres cifras.

En esta última sección se presentó el tema


de ciclos anidados, los cuales facilitan la forma

44
UNIDAD 02
Estructura cíclica o repetitiva

Referencias

Trejos, O. (1999). La esencia de la lógica de


programación. Editorial Papiro: Pereira, Co-
lombia.

Trejos, O. (2004). Algoritmos: problemas


básicos. Editorial Papiro: Pereira, Colombia.

Bibliografía

Cairo, O. (2006). Metodología de la progra-


mación: Algoritmos, Diagramas de Flujo y pro-
gramas. México: Algaomega.

Echeverri-Arias, J. A., & Orrego Villa, G.


(2012). Programación: teoría y aplicaciones.
Medellin: Sello Editorial Universidad de Mede-
llin.

Hernández, R. (2001). Estructura de datos


y algoritmos. Madrid: Prentice Hall.

Herrera, J., & Gutierrez , J. (2017). Introduc-


cion a la logica de programacion. Armenia (Co-
lombia): EIIZCOM SAS.

Joyanes, L. (1999). Fundamentos de pro-


gramación. . Mexico: McGraw Hill.

Joyanes, L. E. (2016). Programación: teoría


y aplicaciones 2.ª ed. Medellín, Colombia. : Sello
Editorial Universidad de Medellín.

Trejos, O. (1999). Lógica de Programción.


Pereira: Ediciones U.

45
Curso de Algoritmia

Laboratorio de
Innovación Nacional Esap

46

También podría gustarte