Está en la página 1de 20

Fundamentos de programación: Estructuras repetitivas

Como se ha podido observar hasta el momento, tanto Estructuras repetitivas o de ciclo (Bucle)
en las soluciones que se plantearon con estructuras Los bucles son un conjunto de instrucciones que se ejecutan
secuenciales como con las decisivas; han sido manera repetidamente hasta que una condición es reunida. Por lo cual
unitaria. Es decir, para una persona, un objeto o cosa. estas estructuras se usan cuando se desea automatizar una
Sin embargo, se debe considerar que cuando se tarea específica de carácter repetitivo o ahorrar la escritura de
plantean problemas como calcular el pago por nomina líneas de código que se repiten varias veces, los nombres con
en una empresa cabe la posibilidad de que el cálculo se los que se conocen estas estructuras de flujo repetitivas son:
tenga que hacer para dos o más empleados, usando el
Mientras que (While)
mismo proceso de cálculo que por lógica debe ser igual
En esta estructura el ciclo se repite hasta que la condición lógica
para cada uno, pero donde existe la posibilidad de que
(booleana) resulta ser falsa. Dicho de otro modo, las líneas de
los parámetros que determinan el sueldo de cada
código internas del proceso del ciclo (cuerpo del ciclo) se van a
empleado sean los que cambien. Así, se pueden
repetir de manera secuencial desde el inicio hasta el fin de
presentar muchos casos donde el proceso se debe
forma indeterminada mientras la condición del ciclo resulte ser
repetir varias veces y sólo cambien los parámetros que
verdadera. Además, como se puede ver en la figura, en esta
se utilizan en el proceso. Por tal motivo se emplean
estructura primero se evalúa la condición y luego se realiza el
estructuras denominadas repetitivas, de ciclo o de
proceso, por lo cual es posible que el ciclo While no se ejecute
bucle, estas permiten que un proceso pueda realizarse
si de entrada no se cumple la condición para la ejecución.
N veces.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Además, note, en la imagen, que el al final de un ciclo
el flujo vuelve a recircularse al inicio del bucle y verificar
nuevamente si la condición aún se cumple, de ser así se
vuelve a ejecutar las líneas del cuerpo del bucle, de lo
contrario el ciclo se rompe y la información fluye a las
siguientes instrucciones líneas abajo. Observe como lo
anterior se representa en el diagrama de flujo, el
pseudocódigo y un código escrito de forma general en
Hasta que (Do while)
Python para los ciclos While.
En esta estructura el ciclo se repite siempre y cuando el
resultado de la condición lógica sea verdadero; Además en esta
estructura primero se realiza el proceso y luego se evalúa, por
consiguiente, este tipo de estructura siempre realizará por lo
menos un proceso. Esta estructura existe para los casos
específicos en los que se desea que el código se ejecute al
menos una vez. Esto suele ser recurrente en casos de
validación. Por ejemplo, cuando se escribe un programa que
recibe información de los usuarios, este puede solicitar, por
ejemplo, solo un número positivo.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
El código se ejecutará al menos una vez. Si el número Tipos de ciclos
que envía el usuario es negativo, el ciclo se volverá Estas dos estructuras cíclicas o de bucle (While, do While)
ejecutar, quizás después de haber enviado un mensaje pueden generar, a su vez, dos clases de ciclos, finitos e infinitos.
al usuario que ingrese una cantidad positiva, volverá a Cuando se pretende generar un ciclo finito estas estructuras se
solicitar la cantidad hasta que el usuario ingrese una apoya de manera imprescindible en dos tipos de variables
cantidad positiva, ya que, si es positivo, se detendrá y auxiliares:
continuara el flujo líneas abajo. A continuación, se Contadores.
muestra el diagrama de flujo y el pseudocódigo para Un contador es una variable que aumenta o disminuye en un
esta estructura. En Python no hay una forma literal de valor contante cada vez que se repite una vez el ciclo. Su forma
escribirla esta estructura, aunque se puede emular. general es:
𝑐𝑜𝑛𝑡𝑎𝑑𝑜𝑟 = 𝑐𝑜𝑛𝑡𝑎𝑑𝑜𝑟 + 𝑣𝑎𝑙𝑜𝑟_𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
Recuerde que en Python esto se puede escribir como
𝑐𝑜𝑛𝑡𝑎𝑑𝑜𝑟 += 𝑣𝑎𝑙𝑜𝑟_𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
Acumuladores.
Un acumulador es una variable que almacena cantidades
variables resultantes de un proceso. La diferencia con el
contador es que la cantidad es variable. Su forma general es:
𝑎𝑐𝑢𝑚𝑢𝑙𝑎𝑑𝑜𝑟 = 𝑎𝑐𝑢𝑚𝑢𝑙𝑎𝑑𝑜𝑟 + 𝑣𝑎𝑙𝑜𝑟_𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒
Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
De nuevo en Python se puede escribir de manera simple Es pertinente mencionar que algunas veces los ciclos infinitos
así: son usados para generar estructuras de lecturas y
procesamiento de información. Esto, por ejemplo, en programas
acumulador + = 𝑣𝑎𝑙𝑜𝑟_𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒
de adquisición de datos por microcontroladores donde el
proceso de censado de magnitudes externas es efectuado de
En las estructuras de ciclos finitos, es necesario contar manera constante y repetitiva de forma infinita mientras el
con un acumulador o un contador dentro de la dispositivo de censado este encendido.
estructura, ya que estos sirven para ir contando las Desde, hasta que (For):
veces que se ha pasado por el ciclo o en su defecto En esta estructura se aplican cuando se tiene definido el
acumulado valores las cuales sirven para determinar número de veces que se realizará el proceso dentro del ciclo.
cuándo se la ruptura del ciclo. De no haber esta línea Además, en este ciclo (bucle) su contador se inicializa e
que permita llegar a una condición que provoque el incrementa de forma automática, por lo cual no se tiene que
término del ciclo se generaría un ciclo infinito que en la efectuar mediante un proceso adicional, como en los otros dos
mayoría de los casos es indeseado ya que generaría una tipos. A continuación, se muestra la forma de representa un
ejecución infinita de las líneas de código del cuerpo del ciclo for en diagrama de flujo y pseudocódigo.
ciclo. Si usted ha ingresado, por error, a un ciclo infinito
presiona, en Python, Control + C para romper el ciclo de
manera manual por consola.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Tener en cuenta que, para el valor final, en un lenguaje de
programación como Python, el ciclo termina cuando la variable
controladora sea igual al valor final menos 1.

Break y Continue
En todas las estructuras se pueden utilizar el comando break para
terminar un bucle prematuramente. Es decir, aun cuando la
comparación del While todavía es verdadera o aun cuando no se
haya llegado al fin del ciclo for. En otras palabras, un enunciado
En Python la sintaxis es como se muestra. break provocará la terminación de un bucle while, do while o for
en el momento en el que se enuncie.
Cabe aclarar que este comando siempre se ejecuta y está
presente sin necesidad de escribirse y se efectúa por defecto
cuando las condiciones para la ejecución del ciclo cambien a falso
o se llega al final del for. En este caso, se dice que es la
finalización normal del ciclo. No obstante, un usuario puede
Donde la variable i es el contador, también llamado
introducir una condición proporcionada desde el exterior (Fuera
índice debido algunos usos específicos en listas, tuplas, del ciclo), o bien, al resultado de un proceso ejecutado dentro del
diccionarios y arreglos que se verá después. Seguido al mismo, para que marque el final aun cuando la condición
índice se encuentra la palabra in que indica en el rango
principal de ejecución del ciclo siga cumpliéndose.
que se mueve el contador, finalmente se escribe el rango
en sí mismo. Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
Por otro lado, el comando continue es similar a break; Nombre de la Descripción Tipo
sin embargo, en lugar de terminar el bucle, el programa variable
sólo salta al paso siguiente. Es decir, no romperá el ciclo, C Contador Entero
pero no ejecutara las líneas siguientes en el ciclo, VA Valor por sumar Real
después de su aparición, sino que volverá al inicio del
SU Suma de los valores Real
ciclo como si hubiera recorrido todo su cuerpo y lo
tomara como una ejecución completa. La solución de este problema mediante el ciclo Mientras, que
también es conocido como ciclo While en los diferentes lenguajes
En los siguientes ejemplos se mostrará la aplicación de
de programación. El pseudocódigo correspondiente de la solución
los tres tipos de ciclos antes mencionados.
de este problema es:
Ejemplo 1. Se requiere un algoritmo para obtener la
1. Inicio
suma de diez cantidades mediante la utilización de un
2. Hacer SU = 0
ciclo “Mientras”. Realice el diagrama de flujo, el
3. Hacer C = 1
pseudocódigo y el diagrama N/S para representarlo e
4. Mientras C < = 10
impleméntelo en Python.
Leer VA
Solución. Con base en lo que se requiere determinar se Hacer SU = SU + VA
puede establecer que las variables requeridas para la Hacer C = C + 1
solución del problema son las mostradas en la tabla: Fin mientras
5. Escribir SU
6. Fin
Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
De esta solución planteada se puede ver, primeramente,
que el contador del ciclo “C” se inicializa en uno,
posteriormente se verifica que éste sea menor o igual a
diez, que es lo que debe durar el ciclo (diez veces), ya
dentro del ciclo el contador se incrementa por cada
vuelta que dé y se realice el proceso de leer un valor y
acumularlo en la suma. En general, todo ciclo debe
tener un valor inicial, un incremento y un verificador
que establezca el límite de ejecución (inicializa,
incrementa, “mientras que”). Ahora se presenta la
solución mediante el diagrama de flujo:

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Ahora, con el fin de conocer como se ve la estructura Código en Python:
“mientras que” en un diagrama de N/S, el mismo
algoritmo correspondiente a la solución del problema se
representar en esta herramienta a continuación.

Ejemplo 2. Se requiere un algoritmo para obtener la suma de diez


cantidades mediante la utilización de un ciclo Do while. Realice el
diagrama de flujo, el pseudocódigo y diagrama N/S para
representarlo e impleméntelo en Python.
Solución. Las variables que se requieren son las que se muestran
en la tabla.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
La forma de representar este ciclo en el diagrama de flujo es el
Nombre de la variable Descripción Tipo
que se muestra.
C Contador Entero
VA Valor por sumar Real
SU Suma de los valores Real
El ejemplo anterior y el presente son el mismo, lo que
cambia es el planteamiento de solución del problema
en lo que respecta al tipo de ciclo por utilizar.

El pseudocódigo presenta el algoritmo correspondiente


de la solución de este problema mediante la utilización
de estas herramientas.
1. Inicio
2. Hacer SU = 0
3. Hacer C = 1
4. Repite
Leer VA
Hacer SU = SU + VA
Hacer C = C + 1
Hasta que C > 10
5. Escribir SU
6. Fin Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
El diagrama N/S para esta estructura es el que se Para crear los ciclos do while en Python, es necesario modificar
muestra el ciclo while un poco con el propósito de obtener un
comportamiento similar al esperado. Como resumen, el
bucle do while se ejecutará al menos una vez. Si la condición es
verdadera se ejecutará otra vez. Teniendo esto en mente y que
el bucle while, no se ejecutará a menos que la condición sea
verdadera se puede usar la siguiente estructura con las
sentencias break para emular lo de deseado como se muestra a
continuación.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Como se puede ver, el ciclo tiene como condición True El pseudocódigo sería de la forma:
para que entre por defecto, además tiene un valor 1. Inicio
inicial (C=0), un incremento (C+=1) y un verificador (if C
>= 10), el cual establece el límite de ejecución, tal y 2. Hacer SU = 0
como se tiene para el ciclo Mientras. 3. Desde C = 1 hasta C = 10
Ejemplo 3. Se requiere un algoritmo para obtener la Leer VA
suma de diez cantidades. Realice el diagrama de flujo, el
Hacer SU = SU + VA
pseudocódigo y el diagrama N/S para representarlo e
impleméntelo en Python. Fin desde
Solución. Con base al análisis de la información se 4. Escribir SU
puede ver que las variables que son necesarias son las 5. Fin
que se muestran en la siguiente tabla.
El diagrama de flujo es:
Nombre de la variable Descripción Tipo
SU Suma parcial Float
VA Valor para sumar Float
C Contador Integer

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Código en Python:

El diagrama N/S que representa la solución se ve así: Como se mencionó, este tipo de estructura para el control de
ciclos se utiliza exclusivamente cuando el número de veces
que se realizará el ciclo está bien definido. Además, se debe
observar que el incremento de la variable que controla el
ciclo no se indica en este tipo de estructura, ya que el
incremento o decremento de la variable se realiza de manera
automática; cuando el caso es decremento la forma de
indicarlo dependerá del lenguaje de programación que se
esté utilizando.
Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
Además, observe que la sintaxis en Python es un poco Nombre de la variable Descripción Tipo
diferente a los demás lenguajes de programación ya que, password Palabra clave String
en vez de usar un contador y su respectivo incremento, en C Contador Integer
Python se usa el contador y un elemento iterable como
puede ser una lista, una tupla, un diccionario o incluso un El pseudocódigo correspondiente de la solución de este
arreglo. Por ahora todo esto se limita a usar la sentencia problema es:
range para simular un poco la sintaxis de los otros 1. Inicio
lenguajes. Más adelante en el curso se precisará mejor 2. Mientras True
todo esto con detalle. Leer password
Ejemplo 4. Elabore un algoritmo que imprima el mensaje Hacer C = C+1
“Autenticación exitosa: tiene acceso a la ejecución del Si password = Python
código”, solo si el usuario ingresa la contraseña: “Python”. Entonces
Asegúrese que si el usuario ingresa más de tres veces la Mostrar Autenticación exitosa:
clave incorrecta le muestre el mensaje “Acceso denegado” tiene acceso a la ejecución del código
y finalice el código. Haga el pseudocódigo e impleméntelo Si de lo contrario password <> Python y C >=3
en Python. Entonces

Solución. Con base a la información del problema se ve que Mostrar Acceso denegado
se necesitan las siguientes variables. Fin mientras.
3. Fin
Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
El código en Python es el que se muestra.
Nombre de la variable Descripción Tipo
C Contador Entero
ED Edad de cada alumno Entero
SU Suma de las edades Entero
NU Número de alumnos Entero
PR Edad promedio Real

El pseudocódigo muestra el algoritmo de solución mediante


la utilización de un ciclo mientras.
1. Inicio
2. Hacer SU = 0
Ejemplo 5. Se requiere un algoritmo para obtener la edad 3. Leer NU
promedio de un grupo de N alumnos. Realice el diagrama 4. Hacer C = 1
de flujo, el pseudocódigo para representarlo e 5. Mientras C < = NU
impleméntelo en Python. Leer ED
Hacer SU = SU + ED
Solución. La tabla muestra las variables que se van a
Hacer C = C + 1
utilizar para la solución del problema, sin importar qué
Fin mientras
estructura de ciclo se utilice; por consiguiente, es la misma
6. Hacer PR = SU / NU
para los tres tipos de ciclo para los que se dará la solución.
7. Escribir PR
8. Fin Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
El diagrama de flujo muestra el mimo código. Código en Python:

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Ejemplo 6. Se requiere un algoritmo para obtener la Tabla de variables utilizadas para obtener la estatura
estatura promedio de un grupo de personas, cuyo número promedio de un número desconocido de personas:
de miembros se desconoce, el ciclo debe efectuarse
Nombre de la variable Descripción Tipo
siempre y cuando se tenga una estatura registrada. Realice
C Contador de personas Entero
el pseudocódigo y el diagrama de flujo para representarlo,
ES Estatura de cada persona Real
utilizando el ciclo apropiado e implemente en Python.
SU Suma de las estaturas Real
Solución. Como se puede ver, para resolver este problema PR Estatura promedio Real
no se puede utilizar el ciclo for, ya que no se tiene el
número de personas exacto, que es lo que en un momento El pseudocódigo que representa el algoritmo para obtener
determinaría el número de veces que el ciclo se ejecute. la estatura promedio de un número desconocido de
para este caso es necesario contar al menos con la estatura personas es:
de una persona (para que tenga caso realizar el proceso del
ciclo).
El ciclo que es apropiado para utilizar en la solución de este
problema es while, ya que este ciclo se realiza siempre y
cuando se cuente con una estatura mayor a cero, de una
manera natural sin forzar el proceso en ningún momento, y
en caso de que no se tenga estatura registrada el promedio
es cero, y se debe indicar que no existe ninguna estatura
registrada.
Santiago Gómez Narváez
Fundamentos de programación: Estructuras repetitivas
1. Inicio
2. Hacer SU = 0
3. Leer ES
4. Hacer C = 0
5. Mientras ES > 0
Hacer SU = SU + ES
Leer ES
Hacer C = C + 1
Fin mientras
6. Si C = 0
Entonces
Escribir “No hay estaturas”
Si no
Hacer PR = SU / C
Fin comparación
7. Escribir PR
8. Fin

Diagrama de flujo: Algoritmo para obtener la estatura


promedio de un número desconocido de personas.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
El código en Python es: Una forma alternativa seria programar este ejercicio
mediante el Do while, como se muestra.

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
Problemas propuestos: 8. Elabore un algoritmo que lea un número n y determine si
1. Elabore un algoritmo que imprima los primeros cinco es un número perfecto. Un número perfecto n, es aquel
números naturales. cuya suma de sus divisores es n.
2. Elabore un algoritmo que imprima la suma de los 9. Haga un algoritmo que multiplicar los números impares
primeros cinco números naturales. hasta N.
3. Elabore un algoritmo que lea N números enteros (los 10. Haga un algoritmo que lea una cantidad indeterminada
que el usuario desee) e imprima cuántos de ellos son de números enteros e imprima la suma. El algoritmo
positivos. termina cuando se ingresa el cero.
4. Haga un procedimiento que lea un numero natural (N) y 11. Haga un algoritmo que lea una cantidad indeterminada
que imprima todos los múltiplos de 3 desde 1 hasta N. de números enteros e imprima su promedio. El algoritmo
termina cuando el usuario decida no ingresar más números.
5. Haga un procedimiento que lea dos números enteros y
reporte todos los números impares entre el menor y el 12. Elabore un algoritmo que lea los primeros N números
mayor. naturales e imprima:
6. Haga un procedimiento que lea un numero natural (N) y • La suma de los números impares.
diga si es primo o no. • La suma de los números pares.
• El porcentaje de los números mayores que 3.
7. Elabore un algoritmo que lea un número entero n y que
imprima todos los divisores de él..

Santiago Gómez Narváez


Fundamentos de programación: Estructuras repetitivas
13. Elabore un algoritmo que lea N números enteros (los
que el usuario desee) e imprima:
• El número mayor ingresado.
• El número menor ingresado.

14. Un vendedor lleva un registro de los artículos vendidos.


Al vendedor le corresponde el 10% de comisión sobre
artículos cuyo precio es menor o igual a $8’000.000 y el 7%
de comisión sobre artículos con precio mayor a $
8’000.000. Elabore un algoritmo para conocer la comisión
total sobre las ventas realizadas.

15. Cree un algoritmo que guarde el nombre de una


persona, su edad en años y su clasificación de acuerdo con
los siguientes criterios: la persona es niño si la edad está
entre 0 y 10; adolescente, si la edad está entre 11 y 18;
adulto si la edad está entre 19 y 35; maduro si la edad está
entre 36 y 60; y anciano si la edad es mayor a 60. Además,
el algoritmo debe reportar cuantas personas hay en cada
clasificación, el total de personas, el promedio de edad por
clasificación y el promedio de edad de todas las personas
Santiago Gómez Narváez

También podría gustarte