Unidimensionales#
Un arreglo de una dimensión es una lista lineal de elementos. Se define siguiendo la estructura:
elementType[] arrayRefVar = {content};
// Declaración y inicialización de un arreglo de enteros
int[] numeros = {1, 2, 3, 4, 5};
// Acceso a elementos
System.out.println(numeros[2]); // Imprime 3
3
// Declaración y inicialización de un arreglo de enteros
String[] letras = {"1", "2", "3", "4", "5"};
// Acceso a elementos
System.out.println(letras[1]); // Imprime 2
2

Figura 10 Here is my figure caption!#
// Poblar una lista
double[] myList = new double[10];
myList[0] = 5.6;
myList[1] = 4.5;
myList[2] = 3.3;
myList[3] = 13.2;
myList[4] = Double.parseDouble("1");
myList[5] = 34.33;
myList[6] = 34.0;
myList[7] = 45.45;
myList[8] = 99.993;
myList[9] = 11123;
//myList.getClass();
System.out.println(myList[4]);
1.0
¿Se puede imprimir una lista completa usando la función print
, es decir, funciona el siguiente comando?
System.out.println(myList);
double[] myList = new double[10];
for (int i = 0; i < myList.length; i++) {
myList[i] = i;
System.out.println(myList[i]);
}
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
// java.util.Scanner input = new java.util.Scanner(System.in);
import java.util.*;
System.out.print("Enter " + myList.length + " values: \n");
for (int i = 0; i < myList.length; i++){
// myList[i] = input.nextDouble();
myList[i] = Math.random();
System.out.println(" %d: %f".formatted(i,myList[i]));
}
Enter 10 values:
0: 0.233803
1: 0.482927
2: 0.975932
3: 0.409444
4: 0.040599
5: 0.529541
6: 0.050085
7: 0.890163
8: 0.385074
9: 0.316768
Implementa un método que imprima de forma «bonita» un vector
// Agrega el código aquí
Búsquedas#
Búsqueda Lineal: Se recorre el arreglo elemento por elemento hasta encontrar el valor deseado.
public static int busquedaLineal(int[] arreglo, int valor) {
for (int i = 0; i < arreglo.length; i++) {
if (arreglo[i] == valor) {
return i; // Retorna la posición del valor
}
}
return -1; // Si no se encuentra el valor
}
// Prueba la clase con un arreglo y buscando 3 elementos de esta
Búsqueda Binaria: Requiere que el arreglo esté ordenado. Divide el arreglo en mitades para encontrar el valor de manera más eficiente.

Figura 11 Here is my figure caption!#
public static int busquedaBinaria(int[] arreglo, int valor) {
int inicio = 0;
int fin = arreglo.length - 1;
while (inicio <= fin) {
int medio = (inicio + fin) / 2;
if (arreglo[medio] == valor) {
return medio;
} else if (arreglo[medio] < valor) {
inicio = medio + 1;
} else {
fin = medio - 1;
}
}
return -1;
}
// Prueba la clase con un arreglo y buscando 3 elementos de esta
Aplicaciones#
Almacenamiento de Datos: Los arreglos se utilizan comúnmente para almacenar listas de elementos, como números, nombres, o cualquier otro tipo de datos homogéneos.
Matrices en Matemáticas: Los arreglos bidimensionales (matrices) se utilizan en aplicaciones matemáticas, tales como la resolución de sistemas de ecuaciones o transformaciones en gráficos.
Tablas de Datos: Las matrices también se usan para representar tablas de datos, como una hoja de cálculo.
Ejemplo#
import java.util.Scanner;
public class AnalyzeNumbers {
public static void main(String[] args) {
// Scanner input = new Scanner(System.in);
System.out.print("Enter the number of items: ");
// int n = input.nextInt();
int n = 15;
double[] numbers = new double[n];
double sum = 0;
System.out.print("Enter the numbers: ");
for (int i = 0; i < n; i++) {
numbers[i] = input.nextDouble();
sum += numbers[i];
}
double average = sum / n;
int count = 0; // The numbers of elements above average
for (int i = 0; i < n; i++)
if (numbers[i] > average)
count++;
System.out.println("Average is " + average);
System.out.println("Number of elements above the average is "
+ count);
}
}
// Prueba la clase: crea un objeto y llama el método main
Clases Predefinidas#
Arrays#
La clase java.util.Arrays
contiene métodos útiles para operaciones comunes con matrices, como la ordenación y la búsqueda.
// Sorting Arrays
import java.util.Arrays;
double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5};
Arrays.sort(numbers); // Sort the whole array
Arrays.parallelSort(numbers); // Sort the whole array
char[] chars = {'a', 'A', '4', 'F', 'D', 'P'};
Arrays.sort(chars, 1, 3); // Sort part of the array
Arrays.parallelSort(chars, 1, 3); // Sort part of the array
// Searching in an Arrays
int[] list = {2, 4, 7, 10, 11, 45, 50, 59, 60, 66, 69, 70, 79};
System.out.println("1. Index is " + Arrays.binarySearch(list, 11));
System.out.println("2. Index is " + Arrays.binarySearch(list, 12));
char[] chars = {'a', 'c', 'g', 'x', 'y', 'z'};
System.out.println("3. Index is " + Arrays.binarySearch(chars, 'a'));
System.out.println("4. Index is " + Arrays.binarySearch(chars, 't'));
1. Index is 4
2. Index is -6
3. Index is 0
4. Index is -4
// Comparing Arrays
int[] list1 = {2, 4, 7, 10};
int[] list2 = {2, 4, 7, 10};
int[] list3 = {4, 2, 7, 10};
System.out.println(java.util.Arrays.equals(list1, list2)); // true
System.out.println(java.util.Arrays.equals(list2, list3)); // false
true
false
// Filling Arrays
int[] list1 = {2, 4, 7, 10};
int[] list2 = {2, 4, 7, 7, 7, 10};
java.util.Arrays.fill(list1, 5); // Fill 5 to the whole array
java.util.Arrays.fill(list2, 1, 5, 8); // Fill 8 to a partial array
Para mayor información revisa la clase de java Arrays.java.
ArrayList#
Un ArrayList se utiliza para representar una lista dinámica. Mientras que la clase Array de Java crea vectores de tamaño fijo (el tamaño no se puede modificar), una ArrayList permite flexibilidad al poder añadir y eliminar elementos.
En su comportamiento la clase ArrayList es muy similar a la clase Array. Para mayor información revisa la clase de java ArrayList.java.
Conclusión#
En esta clase, los estudiantes han aprendido sobre la estructura y manipulación de arreglos y cadenas en Java, tanto en una como en varias dimensiones. Estos conceptos son fundamentales para la programación en Java, ya que permiten organizar y procesar grandes cantidades de datos de manera eficiente. A través de aplicaciones prácticas y algoritmos de búsqueda, los estudiantes han adquirido las habilidades necesarias para aplicar estos conceptos en la resolución de problemas reales.
Ejercicio#
Taller 3
Elige un tema de tu interés, como una película, un deporte, un videojuego, una banda musical, etc. Con base en ese tema, desarrollarás un programa en Java que utilice arreglos y cadenas unidimensionales para realizar una tarea relacionada.
Instrucciones
Definición del Tema:
Escoge un tema que te apasione o te interese. Por ejemplo, si te gusta el cine, podrías trabajar con una lista de tus películas favoritas; si prefieres los deportes, podrías utilizar los nombres de los equipos de fútbol o los jugadores.
Diseño del Programa:
Arreglo de Cadenas: Crea un arreglo unidimensional para almacenar una lista de nombres relacionados con tu tema (por ejemplo, títulos de películas, nombres de jugadores, etc.).
Arreglo de Enteros: Si es relevante para tu tema, crea un segundo arreglo para almacenar números asociados a cada elemento del primer arreglo (por ejemplo, el año de lanzamiento de cada película o las puntuaciones de los jugadores).
Si requieres crear más arreglos o variables eres libre de agregar el código que deseas y creas pertinente.
Funcionalidades del Programa:
Buscar en el Arreglo: Implementa un método que permita buscar un elemento en el arreglo de cadenas y muestre información relacionada (por ejemplo, buscar una película por nombre y mostrar su año de lanzamiento).
Agregar y Eliminar Elementos: Crea funcionalidades que permitan al usuario agregar nuevos elementos al arreglo o eliminar elementos existentes.
Mostrar el Contenido: Implementa un método para mostrar todos los elementos del arreglo y su información asociada.
Desarrollo del Código:
Escribe el código en Java para implementar las funcionalidades descritas. Asegúrate de manejar correctamente los índices y las posibles excepciones (como intentar acceder a un índice fuera de los límites del arreglo).
Prueba del Programa:
Prueba el programa con diferentes entradas para asegurarte de que todas las funcionalidades funcionan correctamente.
Entregables
Código fuente en Java (o notebook) que implemente el ejercicio de acuerdo con el tema elegido.
Un documento breve que describa el tema seleccionado, las funcionalidades implementadas, y cómo el programa maneja los datos. Esto se puede hacer en el notebook fácilmente o comentando los códigos.
(Opcional) Resolver alguno de los siguientes problemas utilizando clases, métodos, arreglos, cadenas, etc.
Truco
Pueden implentar todo desde cero pero sería un trabajo arduo, lo mejor es que utilicen las clases Array
o ArrayList
que ya tiene todos los métodos implementados.
Importante
Pueden trabajar en grupo pero NO deben tener el mismo tema, como todos tenemos gustos diferentes todos tendremos códigos diferentes.