Estructuras de datos: array, lista enlazada, pila y cola
Una estructura de datos es una forma de organizar los datos para que un programa los use rápido y con facilidad.
- Array: tamaño fijo, los elementos están uno junto a otro y se llega a cada uno con su índice (a[3]). Añadir en el medio es lento.
- Lista enlazada (dinámica): cada nodo guarda un valor y un enlace al siguiente nodo. Crece y se encoge según haga falta, pero para llegar al elemento 5 hay que pasar por los elementos 1 a 4.
- Pila: push y pop solo por un extremo (LIFO). Se usa para deshacer, para el botón de retroceso y para revisar paréntesis.
- Cola: se añade por detrás y se quita por delante (FIFO). Se usa para trabajos de impresión y filas de espera.
Las bibliotecas ya traen estas herramientas. En Python una list sirve como pila (append, pop) y collections.deque sirve como cola rápida. Si ya existe en una biblioteca, úsala; no la vuelvas a escribir.
stack = []
stack.append(5); stack.append(8)
stack.pop() # gives 8
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft() # gives 4
Usar un IDE: escribir, ejecutar y probar
Un IDE (entorno de desarrollo integrado) reúne en un solo lugar un editor, un botón de ejecutar, un depurador y otras herramientas. Colorea tu código, sugiere nombres y muestra los errores mientras escribes.
- Ejecuta el programa y lee la salida.
- Prueba con entradas fáciles, normales y difíciles (una lista vacía, el cero, un número muy grande).
- Depura: pon un punto de interrupción (breakpoint) y avanza línea por línea para ver cómo cambian las variables.
Visualización y animación en 2D y 3D
Las imágenes nos ayudan a ver patrones. Los programas pueden dibujar gráficos (de barras, de líneas, de dispersión), dibujos en 2D y escenas en 3D. Una animación es el mismo dibujo repetido una y otra vez con un pequeño cambio cada vez (unas 30 a 60 veces por segundo). Una forma sencilla: guarda una variable como x, súmale un poco en cada cuadro y vuelve a dibujar. El 3D de esta página se hace igual, con una biblioteca 3D.
Funciones avanzadas de hoja de cálculo
Las hojas de cálculo pueden hacer trabajo de programa con funciones:
IF(B2>=50,"Pass","Fail")elige entre dos resultados (en español, SI).SUMIF(B2:B5,">=50")suma solo las celdas que cumplen una regla;COUNTIFlas cuenta (en español, SUMAR.SI y CONTAR.SI).VLOOKUP(2, A2:B5, 2, FALSE)busca el 2 en la primera columna y devuelve el valor de la columna 2 de la misma fila (en español, BUSCARV).XLOOKUPhace lo mismo de forma más fácil (BUSCARX).- Las tablas dinámicas resumen muchos datos por grupos, y los gráficos muestran el resultado.
Bases de datos relacionales y SQL
Una base de datos relacional guarda los datos en tablas de filas y columnas. Cada tabla tiene una clave primaria, una columna cuyos valores no se repiten (el id). Otra tabla usa ese valor como clave foránea para enlazar con la primera. Un buen diseño guarda cada dato una sola vez, así no hay datos repetidos.
SQL es el lenguaje para hacer preguntas y cambiar datos:
SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;
INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;Integridad significa que los datos se mantienen correctos: las claves no se repiten, una clave foránea debe coincidir con una fila real y los valores deben tener el tipo correcto. Seguridad significa contraseñas para los usuarios, dar a cada usuario solo los permisos que necesita, hacer copias de seguridad y nunca armar el SQL pegando el texto del usuario dentro de la consulta (usa parámetros), lo que evita la inyección SQL.
Contribuir a recursos abiertos
Muchas herramientas y bibliotecas son de código abierto: cualquiera puede leerlas, usarlas y mejorarlas bajo una licencia. Puedes ayudar corrigiendo un error, mejorando una guía, traduciendo una página o añadiendo un ejemplo. Lee siempre la licencia, da el crédito y escribe mensajes claros y amables cuando propongas un cambio.
Pruébalo
En el paso 5 del 3D, haz push de 3 elementos en una pila y luego haz pop de todos. Anota el orden. Haz lo mismo con una cola. Después predice primero y comprueba después: si añades 4, 9 y 2 y quitas un elemento, ¿qué valor queda al frente de la cola y cuál en la cima de la pila?
Fórmulas y definiciones clave
- Pila = LIFO (el último en entrar es el primero en salir): push, pop.
- Cola = FIFO (el primero en entrar es el primero en salir): enqueue, dequeue.
- Array: tamaño fijo, acceso por índice. Lista enlazada: tamaño dinámico, se siguen los enlaces.
- SELECT columns FROM table WHERE condition
- Clave primaria = id único. Clave foránea = enlace a otra tabla.
Ejemplos resueltos
1. Los elementos 5, 8 y 2 se meten en una pila en ese orden. Luego se hace pop dos veces. ¿Qué queda arriba ahora?
Pila tras los push: 5, 8, 2 (el 2 arriba). El pop quita el 2 y luego el 8. Queda: 5. La cima = 5.
2. Los elementos 4, 9 y 2 entran en una cola en ese orden. Se hace un dequeue. ¿Qué elemento está ahora al frente?
Sale el primero que entró, así que se quita el 4. El frente es 9.
3. Tabla de notas: ids del 1 al 4 con notas 72, 45, 88, 51. ¿Cuántas filas devuelve WHERE score >= 50?
72, 88 y 51 son 50 o más. Son 3 filas.
4. Las celdas B2:B5 contienen 72, 45, 88, 51. ¿Cuánto da =SUMIF(B2:B5,">=50")?
Suma solo 72, 88 y 51: 72 + 88 + 51 = 211.
5. ¿Por qué usar una pila para revisar paréntesis como ( [ ] ) en una expresión?
Se hace push de cada paréntesis que abre. Cuando llega uno que cierra, se hace pop y se comprueba que coincida. El último que se abrió debe cerrarse primero (LIFO), y eso es justo lo que da una pila. Si al final la pila está vacía, los paréntesis coinciden.
Errores comunes
- Usar un array cuando no se sabe el tamaño de antemano. Es mejor una lista o una lista enlazada.
- Confundir pila y cola. La pila quita el más nuevo; la cola quita el más antiguo.
- Olvidar WHERE en UPDATE o DELETE, lo que cambia todas las filas.
- Armar el SQL pegando el texto del usuario en una cadena. Usa parámetros en su lugar.