Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Jaime Farfán
PROGRAMA DE FORMACIÓN REGULAR jfarfan@tecsup.edu.pe
Laboratorio de Algoritmos y Estructuras de Datos Página 1 de 26
Alumno Nota
Lloja Lucero Deysi Rubí
Grupo C24 - B
Ciclo III
Fecha de entrega 23 / 08 / 2022
I.- OBJETIVOS:
• Definir las reglas básicas a seguir para la construcción y la correcta interpretación de los Diagramas de
Flujo, resaltando las situaciones en que pueden, o deben, ser utilizados.
• Elaborar y Diseñar algoritmos con arreglos de una sola dimensión(unidimensional) denominada vectores
II.- SEGURIDAD:
Advertencia:
En este laboratorio está prohibida la manipulación del
hardware, conexiones eléctricas o de red; así como la
ingestión de alimentos o bebidas.
V.- RECURSOS:
• En este laboratorio cada alumno trabajará con un equipo con Windows 10.
VII.- PROCEDIMIENTO:
EJERCICIO DE APLICACIÓN
Guía de problemas
PARTE I
n=10 #0000
start=timer()
for i in range(0,n):
print("I = {}".format(i))
end=timer()
delay=end-start
print("> Time {}".format(delay))
GRÀFICA:
ANALISÌS:
GRÀFICA:
ANALISIS:
En nuestro 2do ejercicio nos dice que se trabajaran con bucles anidados, este se
conoce que es un bucle que se encuentra incluido en el bloque de sentencias de
otro bloque. Entonces vamos a analizar de adentro hacia afuera y el tiempo total
de ejecución es el producto de los tamaños de todos los bucles. Para empezar al
igual como el anterior se ha importado el temporizador que se encargara de
calcular la operación, a diferencia del anterior en este caso se trabajaran con
bucles anidados, como se puede notar se ha trabajado bajo varias interacciones
cada uno con su respectiva interacción.
n = 10
# Execute n times
for i in range(0,n):
print("i={}".format(i))
# Outer loop executed n times
for i in range(0,n):
for j in range(0,n):
print("i = {} and j = {} ".format(i,j))
Laboratorio de Algoritmos y Estructuras de Datos Página 11 de 26
GRÀFICA:
ANALISIS:
Como se puede apreciar en la gráfica y las capturas del código adjuntado nuestra
variable num cambiara de números, estos serán las interacciones establecidas,
sin embargo se ha trabajado con una complejidad mucho más, ya que como se
observa en el código se ha utilizado 3 bucles o for, uno esta de manera anidada
es decir dentro de la otra , en este caso se puedo observar que después de que
se haya ejecutado la primera sentencia establecida en el for, de mostrarnos los
números en orden se volverán a ejecutar un i dentro de un j, en este se estableció
que el i ira avanzando de 1 en uno por cada 10 de j, como se puede observar el
799 en caso de la interacción 800, el 799 se repite 10 veces hasta que llega a los
800 para realizar el calculo del tiempo, esa fue la mayor razón por o que los
tiempos transcurridos por cada interacción varían demasiado.
If-then-else : 1, 10, 100, 1000, 10000 , 100000
Laboratorio de Algoritmos y Estructuras de Datos Página 16 de 26
GRÀFICA:
ANALISIS:
En este último ejercicio de la parte 1, se puede notar que se han declarado una condición
en caso de que el número que ingrese sea igual a 1 este muestre un mensaje que el valor
es incorrecto y de por terminada la ejecución sin embargo el temporalizador default_ timer
se encarga de calcular su tiempo de ejecución, caso contrario ejecute la operación de
manera normal y que a lado del número muestre que los valores son correctos, como se
puede notar en las capturas, solo en la parte de la interacción 1, el valor fue incorrecto,
en las demás el valor fue correcto y con respecto a la gráfica se puede observar que en
las primeras interacciones los tiempos no varían mucho con respecto a la última
interacción donde nuestra variable tuvo un valor de 1000000 que el tiempo transcurrido
en ejecutarse fue de 469.7551 segundos marcando la diferencia.
Laboratorio de Algoritmos y Estructuras de Datos Página 20 de 26
PARTE II
1. ¿Cuál es el tiempo de ejecución de la función?. Graficar la función cambianod valores para n = 1, 10, 100,
1000, 10000
Código Ejecución
Interacción 1:
Interacción 10:
Interacción 100:
GRÀFICO DE INTERACCIONES:
ANALISIS:
El gràfico nos muestra la relaciòn que existe entre la intersecciòn dada por la variable N
frente al tiempo medido en segundos, como se puede apreciar este tiene forma como una
parabola concaba hacia arriba. Y el tiempo de ejecuciòn en las primeras interacciomes de
1,10,100 se mantenieron casi contantes, a diferencia de la interacciòn de 1000 y 10000
que estas si subieron en su totalidad.
Laboratorio de Algoritmos y Estructuras de Datos Página 22 de 26
2. ¿Cuál es el tiempo de ejecución de la función?. Graficar la función cambianod valores para n= 1, 10, 100,
1000
Código Ejecución
Interacción 1:
Interacción 10:
Interacción 100:
GRÀFICO DE INTERACCIONES:
ANALISIS:
Como se puede apreciar en nuestra gráfica de interacciones se puede observar
que en la interacción 1 el resultado obtenido es 0 y su tiempo transcurrido es de
0.00012 segundos, en la interacción 10 el resultado obtenido es 100 en esta
interacción y el tiempo transcurrido es de 0.00014, el cual se nota que no hubo
una gran diferencia frente al tiempo calculado en la primera interacción, la
interacción 100 el resultado es 1750, notamos que para calcular este resultado
nuestro servidor se demoro 0.00164 segundos, en la interacción 1000 se demoró
//0.19391 segundos.
3. ¿Cuál es el tiempo de ejecución de la función?. Graficar la función cambianod valores para n = 1, 10,
100,1000
Código Ejecución
Interacción 1:
Interacción 10:
Laboratorio de Algoritmos y Estructuras de Datos Página 24 de 26
Interacción 100:
Para analizar
GRÀFICO DE INTERACCIONES:
ANALISIS:
CONCLUSIONES:
1. De acuerdo con los objetivos planteados, podemos sostener que se ha logrado definir las
reglas básicas a seguir o que se necesitaran para la construcción correcta de los diagramas de
flujos, en este caso se ha podido notar que el análisis de algoritmos nos hace ver cuál de todos
ellos nos da una mayor rapidez de reacción o ejecución, verificando cual requiere menos tiempo
para terminar su proceso, es decir este nos permitirá identificar que algoritmo o que sentencia
nos conviene ya que durante el desarrollo de cada ejercicio se ha podido observar que existen
múltiples formas de llegar a calcular el resultado de cada una de las sentencias, a esto se a
sumado la gráfica de interacciones frente al tiempo, que es una muestra de los resultados
obtenidos, con respecto a los diagramas de flujos estos nos permitieron analizar y hacer una
pequeña ejemplificación de cómo será la secuencia de ejecución o que pasos debemos de
seguir para llegar a medir el tiempo, donde comprendimos la importancia de definir nuestra
variable, importar las librerías o consolas que se utilizaran como el temporizador.
2. En síntesis, es importante destacar que el tiempo de ejecución varía según el orden del
código, de lo cual estaríamos optimizando el código. Por ende, elaborar o diseñar algoritmos
con arreglos de una sola dimensión es decir vectores unidimensionales, si bien es cierto los
arreglos unidimensionales es un tipo de dato que permite almacenar un conjunto de datos
homogéneos, es decir, del mismo tipo de dato. Para esto se tiene que haber importado el
temporizador que se encargara de calcular el tiempo que se demoró en ejecutarse, después de
ello debemos de definir nuestra variable, el timer es una subclase que se inicia cuando
llamamos a la función start () correspondiente al temporizador, en muchos de los ejercicios se
han usado condicionales y estructuras repetitivas como el rango que nos establece por cada
for anidado se realizaran n **2 veces.
3. Tras el desarrollo del siguiente laboratorio se ha visto que se ha logrado trabajar con vectores
mediante funciones y se ha calculado el tiempo que se demora por cada tipo de ejercicio e
interacción, como se puede verificar en cada captura, los tiempos transcurridos no son los
mismos ya que en cada ejercicio se ha ido complejizando la sentencia, se ha podido probar con
bucles anidados es decir cuando nuestra variable n se exponía a 4 o hasta 6 respectivamente,
sin embargo el desarrollo de estas sentencias fue un poco complicadas ya que si bien es cierto
se ha tenido que identificar la sintaxis, que a pesar de que las consultas sean diferentes esto
no cambia. Para culminar es importante conocer un poco más de vectores y arreglos ya que si
bien es cierto estas son muy fundamentales.