Está en la página 1de 25

Curso: Algoritmos y

Estructura de Datos
Sesión 11: Estructuras anidadas
Docente: Mg. Julissa Reyna González
Definiciones Importantes

La estructura (del latín structūra) es la


disposición y orden de las partes dentro
de un todo. También puede entenderse
Tipos de estructura: Simples, dobles,
como un sistema de conceptos
compuestas o múltiples
coherentes enlazados, cuyo objetivo es
precisar la esencia del objeto de
estudio.
Estructuras básicas
6.3 Estructuras de Control. Bucles

En muchas ocasiones la forma más apropiada de expresar un algoritmo


consiste en la repetición de una misma instrucción de manera
controlada, una cantidad finita de veces determinada de antemano (al
diseñar el programa) o en tiempo de ejecución (cada vez que se corre el
programa).
Por ejemplo, podría ser necesario diseñar un algoritmo similar al de los
cajeros automáticos, que solicite una clave al usuario y bloquee el
acceso en caso de no ingresar la contraseña correcta luego de tres
intentos. O bien, si se desea procesar grupos de datos ingresados por
teclado o leídos desde un archivo, hasta que no se encuentren más
datos.
Las estructuras algorítmicas que permiten realizar operaciones de este tipo se
conocen con el nombre de estructuras repetitivas o iterativas.

Definicion: Las estructuras que repiten una


secuencia de instrucciones un número determinado de
veces se denominan repetitivas o bucles; y se
denomina iteración a la ejecución de cada repetición.

Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

Ejemplo
Se desea sumar una lista de números que ingresa desde teclado
(por ejemplo, edades de los alumnos de una clase). El
algoritmo debería ingresar el valor y sumarlo a una variable
SUMA que contenga las sucesivas sumas parciales.

ALGORITMO suma
INICIO
Suma=0
LEER número
Suma = suma + número
LEER número
Suma = suma + número
….
FIN Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

Es evidente que el método no es óptimo, pero el ejemplo sirve para


identificar las instrucciones que se repiten. En este caso, el bucle está
formado por las instrucciones:
LEER número
suma = suma + número

y la cantidad de iteraciones estará relacionada con el número de


alumnos que se procesen durante la ejecución.

Entonces, las dos cuestiones importantes cuando se utilizan


estructuras repetitivas son: ¿qué contiene el bucle? y ¿cuántas veces
se repite?

Las estructuras repetitivas se diferencian en la forma en que se


produce la condición de fin del bucle y deberá utilizarse aquella más
apropiada al problema particular de que se trate.

A continuación, veremos las más usuales:

Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.1 La estructura PARA (for)


Problema: Se desea un programa que muestre en pantalla los
números pares entre 1 y 99.

INICIO
ESCRIBIR 2
ESCRIBIR 4
[…]
ESCRIBIR 96
ESCRIBIR 98
FIN

Se dijo que la computadora es muy hábil para repetir tareas sencillas,


como la del problema. Cuando se necesita que la computadora repita
una operación, con una pequeña variación cada vez, se deben identificar
las condiciones para la repetición, y expresar
Computacion - FA.CE.NA. esta variación de una forma
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.1 La estructura PARA (for)


Problema: Se desea un programa que muestre en pantalla los
números pares entre 1 y 99.

En este caso, lo que se desea es una secuencia de números pares,


que van desde 2 hasta 98. Estos números pueden expresarse como 2
x k, siendo k un entero que varía entre 1 y 98/2 = 49.

Cuando se conoce exactamente la cantidad de veces que es necesario


repetir una instrucción, la estructura más apropiada para expresarlo
como algoritmo es la estructura PARA. En este caso se puede
escribir:

INICIO
PARA k DESDE 1 HASTA 49
ESCRIBIR k * 2
FIN-PARA
FIN Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.1 La estructura PARA (for)


Problema: Se desea un programa que muestre en pantalla los
números pares entre 1 y 99.

En este caso, lo que se desea es una secuencia de números pares,


que van desde 2 hasta 98. Estos números pueden expresarse como 2
x k, siendo k un entero que varía entre 1 y 98/2 = 49.

Cuando se conoce exactamente la cantidad de veces que es necesario


repetir una instrucción, la estructura más apropiada para expresarlo
como algoritmo es la estructura PARA. En este caso se puede
escribir:

INICIO
PARA k DESDE 1 HASTA 49 Otra opción sería:
INICIO
ESCRIBIR k * 2
PARA i DESDE 2 HASTA 98 INCREMENTO 2
FIN-PARA
ESCRIBIR i
FIN
FIN-PARA
FIN

Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.1 La estructura PARA (for)

Si ahora se solicita:

Problema: Se desea un programa que


muestre en pantalla los números
pares entre 1 y 200.

la solución mantiene su sencillez de expresión:

INICIO
PARA N DESDE N HASTA 200
INCREMENTO 2
ESCRIBIR i
FIN-PARA Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.1 La estructura PARA (for)

La estructura PARA en forma general es:


PARA variable DESDE inicial HASTA final [INCREMENTO incremento]
INSTRUCCIÓN
[…]
INSTRUCCIÓN
FIN-PARA

Donde:
variable es el nombre de una variable de tipo numérico, en particular entero,
definida en el programa, cuyos valores se irán modificando en cada
repetición. Es común utilizar como nombre de esta variable i, que proviene
de la palabra índice (index en inglés), y si se utilizan varias instrucciones
PARA, emplear las letras siguientes del abecedario: j, k, l.
inicial es el valor que toma la variable en la primera repetición.
final es el valor que toma la variable en la última repetición.
incremento es el incremento que recibirá la variable entre repeticiones, es
decir, el valor que se le sumará a variable
Computacion - FA.CE.NA. cada vez que se termine una
repetición y antes de iniciar la siguiente. Si se omite, se considera que vale
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.2 La estructura MIENTRAS (while…do) y la estructura


HASTA (repeat…until)
En algunos casos no se conoce de antemano la cantidad de veces que
será necesario repetir un conjunto de instrucciones para solucionar el
problema, o bien es conveniente que estas instrucciones sean
repetidas hasta alcanzar una determinada condición (llamada
condición de parada). En estas situaciones se emplean estructuras
repetitivas más generales que PARA, como las estructuras
MIENTRAS y HASTA.

Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.2 La estructura MIENTRAS (while…do) y la estructura HASTA


(repeat…until)
Problema: Se desea un programa que calcule e informe el precio de
una llamada telefónica, a partir del número de minutos ingresado
por el operador, sabiendo que el precio por minuto es de $0,23.
Esta operación debe repetirse cada vez que el operador ingrese
una cantidad de minutos mayor que 0, y detenerse en caso
contrario.

Como se desconoce la cantidad de veces que se repetirá el


cálculo del precio, y tampoco puede solicitarse al operador que
indique este dato al inicio del programa, la estructura PARA no es
apropiada para resolver el problema.

INICIO
LEER minutos
HACER
precio = minutos * 0,23
ESCRIBIR precio
LEER minutos
HASTA minutos <= 0
FIN Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.2 La estructura MIENTRAS (while…do) y la estructura HASTA


(repeat…until)
Puede cuestionarse que si el operador ingresa un número menor que 0 la
primera vez, el programa mostrará un valor incorrecto y solicitará un
nuevo dato antes de detenerse.

Una solución alternativa sería:


INICIO
LEER minutos En este caso, el operador puede ingresar un número
menor o igual a cero la primera vez que el programa
MIENTRAS minutos > 0 le solicita un dato, y el programa se detendrá sin
precio = minutos * 0,23 informar un precio erróneo.

ESCRIBIR precio Es importante notar que las condiciones de parada


LEER minutos son diferentes. Existen muchas posibilidades para
expresar la solución a este problema
FIN-MIENTRAS
FIN

Computacion - FA.CE.NA.
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

6.3.2 La estructura MIENTRAS (while…do) y la estructura HASTA


(repeat…until)
La estructura MIENTRAS tiene la forma:

MIENTRAS condición
INSTRUCCIÓN
[…]
INSTRUCCIÓN
FIN-MIENTRAS
Al ejecutarse se evalúa condición, y en caso de resultar verdadera se
ejecutan las instrucciones del bloque, mientras condición mantenga su valor
verdadero.

La estructura HASTA toma la forma:


HACER
INSTRUCCIÓN
[…]
INSTRUCCIÓN
HASTA condición

Se dice que MIENTRAS y HASTA son -formas


Computacion FA.CE.NA. más generales de iterar que
PARA porque esta última se puede expresar utilizando tanto MIENTRAS
Estructuras básicas
6.3 Estructuras de repeticion. Bucles

Problema: Se desea un programa que muestre en pantalla


los números pares entre 1 y 99.
que se resolvió utilizando PARA de la siguiente manera:
INICIO
PARA k DESDE 1 HASTA 49
ESCRIBIR k * 2
FIN-PARA
FIN

también puede expresarse utilizando


MIENTRAS: O utilizando HASTA:
INICIO INICIO
k = 1 k = 1
MIENTRAS k <= 49
HACER
ESCRIBIR k * 2
ESCRIBIR k * 2
k = k + 1
k = k + 1
FIN-MIENTRAS
HASTA k > 49
FIN
FIN

Computacion - FA.CE.NA.
Estructuras básicas
6.4 Terminaciones Anormales

Instrucción INTERRUMPIR (BREAK)


Esta instrucción se utiliza cuando se desea terminar un bucle en un
lugar determinado del cuerpo del bucle sin esperar a que este
termine de modo natural por su entrada o su salida. Esta instrucción
corta el ciclo de ejecución, debe ser utilizada con precaución.

Ejemplo:
LEER número
HACER
IF número <= 0 INTERRUMPIR
suma = suma + número
LEER número
HASTA número > 100
Computacion - FA.CE.NA.
La instrucción Interrumpir sale del bucle HACER y sigue con la
Estructuras básicas
6.4 Terminaciones Anormales

Instrucción CONTINUAR (CONTINUE)


Esta instrucción hace que el flujo de ejecución salte el resto de un cuerpo
del bucle para continuar con el siguiente bucle o iteración. Esta
característica suele ser útil en algunas condiciones.

Ejemplo:
PARA i DESDE 0 HASTA 20
SI (i mod 4 = 0 ) ENTONCES
CONTINUAR
FIN-SI
ESCRIBIR i, “ , “
FIN-PARA

En este ejemplo, si el valor de i es múltiplo de 4, no escribe ese valor en la


salida.
El resultado de este bucle será:Computacion
1, 2, 3, -5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 18,
FA.CE.NA.
Estructuras básicas
6.5 Diseño de bucles. Bucles Anidados

En un algoritmo puede existir y es muy frecuente que existan 2 o más


bucles. Dependiendo de la forma en que estén dispuestos, estos
pueden ser anidados o independientes.
Decimos que los bucles están anidados cuando están dispuestos de
forma tal que unos son interiores a otros; y los bucles serán
independientes cuando son extremos unos con otros.
Así como se podían anidar estructuras de selección, también es posible
insertar un bucle dentro de otro. Las reglas para construir estructuras
repetitivas anidadas son iguales en ambos casos: la estructura interna
debe estar incluida totalmente dentro de la externa y no puede existir
solapamiento.

Computacion - FA.CE.NA.
Estructuras básicas
6.5 Diseño de bucles. Bucles Anidados
P E R M IT ID A S Y P R O H IB ID A S

IN D E P E N D IE N T E S A N ID A D A S N ID O S C R U Z A D O S

S A L IR D E L B U C L E ENTRAR AL BUC LE

Computacion - FA.CE.NA.
EJERCICIOS PRACTICOS
1. Hacer un programa utilizando una estructura condicional anidada
que en pantalla principal te pregunte si eres mayor de edad, dicha
pregunta se va a validar con un sí o un no (S/N). En caso de que la
respuesta sea NO (N), deberá mostrarte un mensaje con la
leyenda(«No puedes entrar.»), en caso de ser sí, te preguntará si
cuentas con tu ID, si la respuesta es NO, te mostrará el mismo mensaje
(«No puedes entrar.»). en caso de ser Sí, te mostrará la
leyenda(«Puedes entrar.»).
EJERCICIOS PRACTICOS
2. En un colegio se han formado 4 equipos de 3 estudiantes cada uno para
participar en unas pruebas deportivas, y se quiere seleccionar al mejor
equipo para unos campeonatos regionales. Para ello, el comité del colegio
realiza dos pruebas a cada uno de los estudiantes: carrera de 200m. y carrera
de 1500m. El colegio ha establecido un tiempo máximo para cada una de las
dos carreras de modo que si algún componente de un equipo supera el
tiempo máximo establecido en alguna de las dos pruebas, el equipo es
desestimado. De todos los posibles equipos candidatos (equipos no
desestimados), el colegio seleccionará aquél cuya suma de tiempos de las
dos pruebas de todos sus integrantes sea menor. Se pide un programa que
resuelva el problema anterior y determine al final si existe algún equipo del
colegio que pueda participar en los campeonatos regionales; en dicho caso
mostrar por pantalla cuál es el equipo seleccionado (indicar simplemente el
número del equipo) y el tiempo total empleado por dicho equipo. Nota: Los
tiempos máximos establecidos por el colegio para cada una de las dos
pruebas pueden solicitarse por teclado o bien especificarlo al principio del
programa como constantes simbólicas.
EJERCICIOS PRACTICOS
3. Realice el análisis, diseño, pruebas e implementación de un
programa que verifique si un estudiante aprobó, reprobó o tiene la
opción de rendir examen supletorio, en cuyo caso se debe indicar qué
calificación debe obtener para aprobar una asignatura. La normativa
indica que debe obtenerse un total de 14 puntos entre la nota final
del primer y segundo bimestre para aprobar; 11, 12, 13 para rendir
examen supletorio; y si obtiene una nota inferior no aprobará la
asignatura. El promedio para aprobar en cualquier caso es 7.
EJERCICIOS PRACTICOS
4. Realice el análisis, diseño, pruebas e implementación de un
programa que calcule la edad de una persona en días, meses y
años. Se asume que todos los meses tienen 30 días.
5. Calcule el valor de una factura cuyo total de compras es ingresado
por el usuario. Considere en los cálculos, el impuesto IVA (12%) y un
descuento que equivale al 1% para compras menores a 100 dólares, del
5% para compras mayores o iguales de $100 y menores o iguales de
$500; y del 10% para compras con montos superiores de $500.
6. Leer una letra que corresponda a un número romano y encontrar su
valor en números decimales, en caso contrario decir no es un número
romano válido.
Bibliografía
• L. JOYANES AGUILAR, I. ZAHONERO. Fundamentos de programación :
algoritmos, estructuras de datos y objetos . Ed. McGraw Hill, España,
2008.
• PANTIGOSO SILVA ,Robert Jaime :Fundamentos de Programación:
Algoritmos y Diagramas de flujo. Paso a Paso,Megabyte,2007 .

• Aho A. V., Hopcroft J. E. & Ullman J. D. Estructuras de Datos y


Algoritmos. Addisson-Wesley Iberoamericana, 1998.
• https://riptutorial.com/es/cplusplus/example/11914/clases---
estructuras-anidadas
MUCHAS GRACIAS!!!

También podría gustarte