Ingeniería de Sistemas e Informática
Algoritmos & Estructuras de Datos
Mg. Fernando Díaz Sánchez
Imagen extraída de: https://fognigma.com/wp-content/uploads/2018/11/bigstock-Software-Web-Development-Pro-247189348-1590x894.jpg
Dudas de la clase anterior…
Imagen extraída de: https://i2.wp.com/sokrsokr.net/wp-content/uploads/2016/06/man-thinking-dark-
thoughts.jpg?w=800&ssl=1
Sesión 4: Estructuras de
datos estáticas
Imagen extraída de: https://www.the-digital-insurer.com/wp-
content/uploads/2018/06/Fotolia_99103349_Subscription_Monthly_M.jpg
Conocimientos previos…
Mira la imagen y responde
¿Qué información se muestra en la imagen?
¿La información está relacionada?
¿Cuántas variables en Java necesitarías para mostrar la
información de 1 sola aplicación?
¿Cómo reducirías el nro de variables para guardar toda
esta información?
Imagen extraída de: https://m-cdn.phonearena.com/images/articles/190101-
image/Apps-menu.webp
Logro de aprendizaje
Al finalizar la sesión, el estudiante
desarrolla algoritmos utilizando
arreglos unidimensionales como
estructura estática y la POO con el
lenguaje Java
Imagen extraída de: https://anviaholdings.com/wp-content/uploads/2018/10/Learning-
Management.jpg
Utilidad
Desarrollar Reportes ASCII en Java
Mira la imagen y responde
¿Qué tipo de documento es?
¿Porqué crees que aún existen este tipo de
documentos?
¿Cuántas partes tiene el documento?
¿Alguna parte del documento tiene un patrón similar?
¿Cuál?
¿Cómo te podría servir en tu futuro profesional
elaborar Reportes ASCII?
Contenido de la sesión
1. Arreglos unidimensionales
2. Principales operaciones con
arreglos unidimensionales
3. Práctica
Imagen extraída de: https://www.bkacontent.com/wp-
content/uploads/2020/06/Depositphotos_356584242_l-2015-1080x675.jpg
1
Arreglos
unidimensionales
Imagen extraída de: https://www.the-digital-insurer.com/wp-
content/uploads/2018/06/Fotolia_99103349_Subscription_Monthly_M.jpg
Arreglos unidimensionales
¿Qué es un arreglo?
• (Array) Es una estructura de datos lineal y
estática
• Permite una forma sencilla de agrupar
información relacionada
• Pueden ser de 1 o varias dimensiones
• Permite “juntar” variables del mismo tipo de
datos como si fueran una sola
• Permite acceder y manipular a sus datos
mediante un índice (index)
Arreglos unidimensionales
¿Qué es un arreglo unidimensional?
índice elemento
0 1 2 3 4 5 6
variable
‘J’ ‘A’ ‘V’ ‘A’ ‘O’ ‘K’
longitud: 7
Es una estructura de datos que permite agrupar información del mismo
tipo de dato en una sola variable
Arreglos unidimensionales
¿Un arreglo puede estar compuesto de objetos?
elemento
SI
índice
0 1 2 3 4 5 6
variable
The Twist Smooth La isla bonita Sussudio My sharona I swear The sign
longitud: 7
Es una estructura de datos que permite agrupar información del mismo
tipo de dato en una sola variable
2
Principales
operaciones
Imagen extraída de: https://www.the-digital-insurer.com/wp-
content/uploads/2018/06/Fotolia_99103349_Subscription_Monthly_M.jpg
Arreglos unidimensionales
Operaciones de un arreglo unidimensional
1. Creación 2. Medición 3. Acceso
4. Asignación 5. Iteración 6. Inserción
7. Eliminación 8. Copiado 9 Clonación
10. Ordenamiento 11. Igualdad
Arreglos unidimensionales
¿Cómo se crea un arreglo unidimensional?
1. Creación
Con Inicializadores Con New
Arreglos unidimensionales
¿Cómo crear un arreglo con inicializadores? 1. Creación
✓Se requiere:
Declaración Asignación
1. Declarar la
variable del tipo
deseado
tipo_dato[ ] nombre = { valor1, …, valorN} ;
2. Asignar los datos
mediante valores
separados por
comas Ejemplo: char[ ] rptas = { ‘A’, ‘B’, ‘D’, ‘A’, ‘C’ };
(Inicializadores)
Arreglos unidimensionales
¿Cómo se crea un arreglo con new? 1. Creación
Declaración Asignación
✓Se requiere:
1. Declarar la
variable del tipo tipo_dato[ ] nombre = new tipo_dato[N];
deseado
2. Asignar la
memoria Donde N es el número de elementos que va a tener el
necesaria que va arreglo
a tener el arreglo
(longitud)
Ejemplo: int[ ] notas = new int[5];
Arreglos unidimensionales
¿Cómo se crea un arreglo con new? 1. Creación
Instrucción Descripción
int[] notas = { 20, 19, 20, 18}; Crear el arreglo de tipo int llamado notas con 4 elementos
String[] lenguajes = {“Java”,”C++”}; Crear el arreglo de tipo String llamado lenguajes con 2 elementos
float[] temp = new float[5]; Crear el arreglo de tipo float llamado temp con 5 elementos
char[] info = new char[10]; Crear el arreglo de tipo char llamado info con 10 elementos
char[] ext = {‘J’,’P’,’G’}; Crear el arreglo de tipo char llamado ext con 3 elementos
double[] gasto = new double[100]; Crear el arreglo de tipo double llamado gasto con 100 elementos
int p01 = 150; Crear el arreglo de tipo int llamado puntos con 2 elementos
int p02 = 200; inicializados desde las variables p01 y p02
int[] puntos = {p01,p02};
Arreglos unidimensionales
¿Cómo se mide un arreglo? 2. Medición
0 1 2 3 4 5 6
variable
‘J’ ‘A’ ‘V’ ‘A’ ‘O’ ‘K’
longitud: 7
variable.length
Arreglos unidimensionales
¿Cómo se accede a un arreglo? 3. Acceso
es un int
variable[i]
Se accede por su índice
Arreglos unidimensionales
¿Cómo se accede a un arreglo? 3. Acceso
por su índice 0 1 2 3 4 5 6
char[] data = { ‘J’ ‘A’ ‘V’ ‘A’ ‘O’ ‘K’ };
data[0] ‘J’ data[4]
data[5] ‘O’ data[7] ArrayIndexOutOfBoundsException
Arreglos unidimensionales
¿Cómo se asigna un valor a un arreglo? 4. Asignación
0 1 2 3 4 5 6
char[] data = { ‘J’ ‘A’ ‘V’ ‘A’ ‘O’ ‘K’ };
data[0] = ‘L’ ‘L’ ‘A’ ‘V’ ‘A’ ‘O’ ‘K’
data[4] = ‘/’ ‘L’ ‘A’ ‘V’ ‘A’ ‘/’ ‘O’ ‘K’
Arreglos unidimensionales
¿Cómo se itera un arreglo? 5. Iteración
char[] data = { ‘J’ ‘A’ ‘V’ ‘A’ ‘O’ ‘K’ };
for (int i = 0; i < data.length; i++) { for (int item : data) {
// //
// código usando índices // código usando items
// //
} }
IntellIJ IDEA Usando for => data.fori IntellIJ IDEA Usando foreach => data.for
Arreglos unidimensionales
Aplicaciones comunes de iteración 5. Iteración
int[] puntaje = { 20 15 19 17 };
Sumatoria y promedio Máximo y mínimo
Arreglos unidimensionales
¿Cómo se inserta un valor en un arreglo? 6. Inserción
0 1 2 3 4 5
Paso 1:
Elegir índice 10 30 40 50 60 70 OJO
0 1 2 3 4 5 6
Paso 2:
Copiar valor 10 20 30 40 50 60 70
y desplazar
elementos
Insertando elemento 20 en el array
Arreglos unidimensionales
¿Cómo se inserta un valor en un arreglo? 6. Inserción
✓Java no permite que los
arrays “crezcan”, para ello
utilizamos funciones
especiales
✓La clase ListArray nos
permite crear un array
dinámico
Se debe indicar el índice
donde se quiere insertar el
nuevo elemento
Arreglos unidimensionales
¿Cómo se elimina un valor en un arreglo? 7. Eliminación
✓Java no permite que los
arrays “encojan”, para
ello utilizamos funciones
especiales
✓La clase ListArray nos
permite alterar un array
Se debe indicar el índice
donde se quiere eliminar el
elemento
Arreglos unidimensionales
¿Cómo se copia un arreglo? 8. Copiado
✓Para copiar valores de un
arreglo en otro debemos
utilizar una función especial
en Java
✓La clase System trae el
método arraycopy que
permite copiar de manera
flexible un array en otro
Arreglos unidimensionales
¿Cómo se clona un arreglo? 9 Clonación
✓Para clonar valores de un
arreglo en otro debemos
utilizar una función especial
de la clase ArrayList
✓El método clone retorna
una copia “Shallow” de los
datos hacia otra variable.
Debemos realizar una
conversión debido a que
devuelve un tipo Object
Arreglos unidimensionales
¿Cómo se ordena un arreglo? 10. Ordenamiento
✓Para ordenar valores de
un arreglo podemos usar
los algoritmos de
ordenamiento
✓También podemos usar
el método Arrays.sort o el
método sort de la clase
ArrayList
Arreglos unidimensionales
¿Cómo se compara un arreglo? 11. Igualdad
✓Para comparar valores de
un arreglo podemos usar
la clase Arrays con el
método equals
✓La clase ArrayList,
también permite usar el
método equals
Arreglos unidimensionales
Trabajando con arreglos
Ejercicio Propuesto
Elaborar el siguiente reporte ASCII:
Se debe utilizar una clase Alumno
Crear la clase AppAlumno e instanciar 5
objetos de la clase Alumno en un array
llamado data
Copiar el array data en otro array
llamado info desde el cual se debe
generar el reporte ASCII
Práctica
• Elaborar el siguiente reporte ASCII
• Crear la clase Producto con los siguientes
atributos (id, nombre, cantidad, precio,
total)
• Crear la clase AppBoleta e instanciar 3
objetos de la clase Producto en un array
llamado datos
• Copiar el array datos en otro llamado info
que será usado para generar el reporte
Imágenes Extraída de:
https://c1.wallpaperflare.com/preview/202/519/739/office-work-business-workspace.jpg
Tarea – Avance de proyecto 1
• Diseñar un sistema de catalogo de películas (tipo Netflix)
• Identificar las principales clases
• Registrar 20 objetos por cada clase identificada (inicializados en
código)
• Ordenar la información utilizando algoritmos de ordenamiento
• Implementar un sistema de búsqueda básico para buscar
películas
Imágenes Extraída de:
https://c1.wallpaperflare.com/preview/202/519/739/office-work-business-workspace.jpg
Resumen de la sesión
• ¿Para que sirven los arreglos?
• Mencione 5 operaciones básicas de
los arreglos unidimensionales
• ¿Se puede ordenar un arreglo?
• ¿Qué clase puedo utilizar en Java
para trabajar con arreglos de
objetos?
Imágenes Extraída de:
https://blog-consumer.glassdoor.com/app/uploads/sites/2/GoogleDrive_cover-letter-
enclosure.jpg
Bibliografía
• Tanenbaum & Van Steen (2008). Algoritmos y Estructuras de Datos -
Principios y Paradigmas, 2da Edición. Pearson Education
• Khalid A. Mughal & Rolf W. Rasmussen (2017). A Programmer’s guide to
Java SE 8 Oracle Certified Associate