Estructuras de Datos

Arreglos y Vectores Paso a Paso

Contigüidad en memoria, indexación cero y tipos de arrays en C, Java, JavaScript y Python.

SLIDE 1 / 6

1. Contigüidad e Indexación Base Cero

Un arreglo almacena una secuencia fija de elementos en posiciones consecutivas de memoria RAM. Su dirección base se calcula con el índice multiplicando por el tamaño en bytes del tipo de dato.

ESTRUCTURA DE CELDAS EN RAM
arr[0]Valor: 10 (0x1000)
arr[1]Valor: 20 (0x1004)
arr[2]Valor: 30 (0x1008)

2. C: Arrays Fijos e Índices

En C el tamaño del arreglo es fijo en tiempo de compilación (salvo VLA/malloc). No hay chequeo de límites (out-of-bounds).

array.c
int numeros[5] = {10, 20, 30, 40, 50};
int primer = numeros[0]; // 10

3. Java: Arrays como Objetos (.length)

En Java los arrays son objetos en el Heap con una propiedad fija `.length` y lanzan `ArrayIndexOutOfBoundsException` si el índice es inválido.

ArrayTest.java
int[] nums = new int[]{1, 2, 3};
System.out.println(nums.length); // 3

4. JavaScript: Arrays Dinámicos y Heterogéneos

JS ofrece arrays dinámicos que pueden cambiar de tamaño automáticamente y contener tipos mixtos.

array.js
const lista = [10, "Hola", true];
lista.push(99); // Crecimiento dinámico

5. Python: Listas y Slicing

Las listas en Python son arrays dinámicos de referencias a objetos y soportan slicing avanzado `list[start:stop:step]`.

lists.py
nums = [10, 20, 30, 40, 50]
sub = nums[1:4] # [20, 30, 40]

6. Inspector Interactivo de Arreglos

Visualizá la búsqueda por índice:

Índice arr[0]
Dirección Base ➔ 0x1000 ➔ Valor: 10
Índice arr[2]
Dirección Base + (2 × 4 bytes) ➔ 0x1008 ➔ Valor: 30