Facultad de Ingeniería de Sistemas: Escuela Politécnica Nacional

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA DE
SISTEMAS

ESTRUCTURA DE DATOS Y
ALGORITMOS I (ICCD343) GR1COM1
GRUPO: No. 1
Taller No: 1
Alumnos: David Alejandro Puga Novoa

PROFESORA: Dra. María Pérez

FECHA DE ENTREGA: 14-11-2023


ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Tema:

Estructuras de Datos Estáticas y Dinámicas: Arrays (unidimensional de tamaño fijo y


redimensionable)

Objetivos:
• Familiarizarse con la manipulación básica de arrays en Java.
• Mejorar la capacidad para diseñar algoritmos simples.
• Comparar el tiempo de ejecución entre dos funciones diferentes para
entender cómo el rendimiento puede variar.

Marco Teórico:

En programación, un array (o arreglo) es una estructura de datos que almacena elementos


del mismo tipo de manera contigua en memoria. Está compuesto por un conjunto de
elementos identificados por índices o claves. La utilidad principal de los arrays radica en su
capacidad para organizar y acceder a datos de manera eficiente.

• Características Principales:

-Tipo de Datos Homogéneo: Todos los elementos de un array deben ser del mismo tipo de
datos, ya sea entero, punto flotante, carácter, u otro.

-Índices: Cada elemento en un array está asociado con un índice. Los índices suelen
comenzar desde 0 (en lenguajes como Java) y representan la posición del elemento en el
array.

-Tamaño Fijo: La dimensión de un array generalmente se establece al momento de su


creación y no puede cambiarse dinámicamente durante la ejecución del programa.

Ejercicios experimentales:
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Desarrollo de la práctica:

Ejercicio 1: Crear un Array No Aleatorio


1. Lógica:
Solicitar al usuario la longitud del array.
Inicializar un array de tamaño especificado.
Utilizar un bucle para ingresar valores uno por uno desde el usuario.
Imprimir el array resultante.
2. Cronología:
El programa comienza solicitando la longitud del array.
Se crea un array con la longitud especificada.
Mediante un bucle, se solicitan y almacenan los valores en el array.
Finalmente, se imprime el array para su visualización.

Ejercicio 2: Crear un Array Aleatorio sin Repeticiones


1. Lógica:
Solicitar al usuario el valor mínimo (a) y máximo (b) para el rango.
Generar un array con números en el rango [a, b] sin repeticiones.
Imprimir el array resultante.
2. Cronología:
Se pide al usuario que ingrese los valores mínimo y máximo del rango.
Se genera un array aleatorio utilizando un algoritmo sin repeticiones.
El array resultante se imprime para su visualización.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Ejercicio 3: Calcular el Coste de Ejecución


1. Lógica:
Utilizar System.currentTimeMillis() para medir el tiempo de inicio.
Colocar el código en los ejercicios 1 o 2 entre las marcas de tiempo.
Medir el tiempo de finalización y calcular la diferencia.
Imprimir el tiempo de ejecución.
2. Cronología:
Se inicia el cronómetro antes de ejecutar el código.
Se ejecuta el código de la tarea 1 o 2.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Se detiene el cronómetro después de la ejecución.


Se calcula y muestra el tiempo de ejecución.

SE ENCUENTRAN EN EL CODIGO DE LOS EJERCICIOS 1 Y 2

Análisis de resultados:

Ejercicio 1: Crear un Array No Aleatorio

• Se observará cómo el tiempo de ejecución está relacionado con la longitud del array.
• Mayor longitud podría implicar más tiempo de entrada de datos.
• El tiempo aumenta linealmente con la longitud.

Ejercicio 2: Crear un Array Aleatorio sin Repeticiones

• Se examinará cómo el tiempo de ejecución varía con el rango y la generación aleatoria.


• Hay alguna relación entre el rango y el tiempo.
• Comparar la eficiencia del algoritmo de generación aleatoria.

Ejercicio 3: Calcular el Coste de Ejecución

1.-

2.-
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

• Se analizará cómo difieren los tiempos de ejecución entre las tareas.


• Una tarea es más costosa que la otra.

Conclusiones y recomendaciones:

➢ La práctica logró los objetivos establecidos inicialmente.


➢ Se aplicaron principios básicos de entrada de datos, manipulación de arrays y medición
de tiempo en Java.
➢ Los resultados fueron coherentes con las expectativas en términos de los arrays
generados y los tiempos de ejecución medidos.

o Considerar la implementación de técnicas avanzadas para mejorar la eficiencia del


código, especialmente en la generación de arrays aleatorios.
o Explorar métodos más precisos para medir el tiempo de ejecución en situaciones
donde la exactitud es crítica.
o Este análisis objetivo y detallado proporciona una evaluación clara del éxito de la
práctica, los fundamentos aplicados y los resultados obtenidos.

Bibliografía:

[1]. Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2014). Data Structures and Algorithms
in Java (6th ed.).

[2]. Cairo, M., & Guardati, E. (s.f.). Estructuras de Datos.

[3]. Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms
(4th ed.). The MIT Press.

[4]. Cormen, T., Leiserson, C., Rivest, R., & Stein, C. (s.f.). Introduction to Algorithms (3rd ed.).

[5]. Joyanes, L. (s.f.). Estructura de Datos en Java.

También podría gustarte