Introducción

En este módulo, aprenderemos sobre las estructuras de datos fundamentales: listas y arreglos. Estas estructuras son esenciales para almacenar y manipular colecciones de datos de manera eficiente.

Objetivos

  • Comprender qué son las listas y los arreglos.
  • Aprender a declarar y utilizar listas y arreglos.
  • Realizar operaciones básicas con listas y arreglos.
  • Conocer las diferencias entre listas y arreglos.

Conceptos Clave

Listas

Las listas son estructuras de datos que permiten almacenar una colección ordenada de elementos. En muchos lenguajes de programación, las listas son dinámicas, lo que significa que pueden cambiar de tamaño durante la ejecución del programa.

Características de las Listas

  • Dinámicas: Pueden cambiar de tamaño.
  • Ordenadas: Mantienen el orden de inserción de los elementos.
  • Heterogéneas: Pueden contener elementos de diferentes tipos (dependiendo del lenguaje).

Ejemplo en Python

# Declaración de una lista
mi_lista = [1, 2, 3, 4, 5]

# Acceso a elementos
print(mi_lista[0])  # Salida: 1

# Modificación de elementos
mi_lista[1] = 10
print(mi_lista)  # Salida: [1, 10, 3, 4, 5]

# Añadir elementos
mi_lista.append(6)
print(mi_lista)  # Salida: [1, 10, 3, 4, 5, 6]

# Eliminar elementos
mi_lista.remove(10)
print(mi_lista)  # Salida: [1, 3, 4, 5, 6]

Arreglos

Los arreglos (o arrays) son estructuras de datos que almacenan una colección de elementos del mismo tipo. A diferencia de las listas, los arreglos suelen tener un tamaño fijo.

Características de los Arreglos

  • Estáticos: Tienen un tamaño fijo.
  • Homogéneos: Todos los elementos deben ser del mismo tipo.
  • Eficientes: Acceso rápido a los elementos mediante índices.

Ejemplo en Java

// Declaración de un arreglo
int[] miArreglo = {1, 2, 3, 4, 5};

// Acceso a elementos
System.out.println(miArreglo[0]);  // Salida: 1

// Modificación de elementos
miArreglo[1] = 10;
System.out.println(Arrays.toString(miArreglo));  // Salida: [1, 10, 3, 4, 5]

// Añadir elementos (no es posible, se debe crear un nuevo arreglo)
int[] nuevoArreglo = new int[miArreglo.length + 1];
System.arraycopy(miArreglo, 0, nuevoArreglo, 0, miArreglo.length);
nuevoArreglo[miArreglo.length] = 6;
System.out.println(Arrays.toString(nuevoArreglo));  // Salida: [1, 10, 3, 4, 5, 6]

// Eliminar elementos (no es posible, se debe crear un nuevo arreglo)
int[] arregloReducido = new int[miArreglo.length - 1];
System.arraycopy(miArreglo, 0, arregloReducido, 0, 1);
System.arraycopy(miArreglo, 2, arregloReducido, 1, miArreglo.length - 2);
System.out.println(Arrays.toString(arregloReducido));  // Salida: [1, 3, 4, 5]

Comparación entre Listas y Arreglos

Característica Listas Arreglos
Tamaño Dinámico Fijo
Tipo de datos Heterogéneo (en algunos lenguajes) Homogéneo
Eficiencia Menos eficiente en acceso aleatorio Más eficiente en acceso aleatorio
Flexibilidad Alta (pueden crecer y decrecer) Baja (tamaño fijo)

Ejercicios Prácticos

Ejercicio 1: Manipulación de Listas

  1. Crea una lista con los números del 1 al 5.
  2. Añade el número 6 al final de la lista.
  3. Cambia el segundo elemento de la lista por el número 10.
  4. Elimina el número 3 de la lista.
  5. Imprime la lista resultante.

Solución

# Paso 1
mi_lista = [1, 2, 3, 4, 5]

# Paso 2
mi_lista.append(6)

# Paso 3
mi_lista[1] = 10

# Paso 4
mi_lista.remove(3)

# Paso 5
print(mi_lista)  # Salida: [1, 10, 4, 5, 6]

Ejercicio 2: Manipulación de Arreglos

  1. Crea un arreglo con los números del 1 al 5.
  2. Crea un nuevo arreglo que añada el número 6 al final del arreglo original.
  3. Cambia el segundo elemento del nuevo arreglo por el número 10.
  4. Crea un nuevo arreglo que elimine el número 3 del arreglo modificado.
  5. Imprime el arreglo resultante.

Solución

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // Paso 1
        int[] miArreglo = {1, 2, 3, 4, 5};

        // Paso 2
        int[] nuevoArreglo = new int[miArreglo.length + 1];
        System.arraycopy(miArreglo, 0, nuevoArreglo, 0, miArreglo.length);
        nuevoArreglo[miArreglo.length] = 6;

        // Paso 3
        nuevoArreglo[1] = 10;

        // Paso 4
        int[] arregloReducido = new int[nuevoArreglo.length - 1];
        System.arraycopy(nuevoArreglo, 0, arregloReducido, 0, 1);
        System.arraycopy(nuevoArreglo, 2, arregloReducido, 1, nuevoArreglo.length - 2);

        // Paso 5
        System.out.println(Arrays.toString(arregloReducido));  // Salida: [1, 10, 4, 5, 6]
    }
}

Conclusión

En esta lección, hemos explorado las listas y los arreglos, dos estructuras de datos fundamentales en la programación. Hemos aprendido a declarar, modificar y realizar operaciones básicas con ambas estructuras. Además, hemos comparado sus características y usos. Con estos conocimientos, estarás mejor preparado para manejar colecciones de datos en tus programas.

En la próxima lección, profundizaremos en las cadenas de caracteres, otra estructura de datos esencial en la programación.

© Copyright 2024. Todos los derechos reservados