Programming Concept

Arrays, Colecciones y Memoria Dinámica

Arrays, memoria estática vs dinámica, copias superficiales/profundas, arrays multidimensionales, colecciones.

Capítulo 7 (pp. 159–176) de Computer Science I.

Temas

SecciónPáginaContenido
Uso Básico160Declarar/indexar arrays.
Memoria Estática y Dinámica162Asignación de memoria dinámica; copias superficiales vs profundas.
Arrays Multidimensionales1662-D y superiores.
Otras Colecciones167Listas, mapas, etc.

Ideas Clave

  • Memoria estática vs dinámica — más explícita en C con malloc/free y arrays 2-D contiguos; abstraída en Java/PHP.
  • Copia superficial vs profunda — una fuente clásica de errores; copiar una referencia vs copiar contenidos.
  • Los arrays asociativos de PHP generalizan la idea de colección con índices clave-valor / no contiguos.
  • Se itera con bucles (foreach).

Ejemplos

Encontrar el máximo

max ← A[0]
para i desde 1 hasta longitud(A) - 1:
  si A[i] > max:
    max ← A[i]

La copia superficial crea un alias de los mismos datos

B ← A            // ambos nombres apuntan al mismo arreglo
B[0] ← 99        // A[0] ahora también es 99

Una copia profunda duplicaría cada elemento en su lugar.

En Java

int max = a[0];
for (int i = 1; i < a.length; i++)
    if (a[i] > max) max = a[i];

int[] b = a;      // b y a son la misma referencia de array (superficial)
b[0] = 99;        // a[0] ahora también es 99
int[] c = a.clone();   // copia profunda de un array 1-D

Citas

[1] Computer Science I, Cap. 7, pp. 159–176.