Ir al contenido
Tecnología · 3o de Preparatoria · Pensamiento Computacional y Algoritmos Complejos · I Bimestre

Estructuras de Datos Lineales: Pilas y Colas

Los estudiantes implementan pilas (LIFO) y colas (FIFO) y analizan sus aplicaciones en la gestión de tareas y procesos.

Aprendizajes Esperados SEPSEP EMS: Pensamiento Computacional y Estructuras de DatosSEP EMS: Algoritmos y Programación

Acerca de este tema

La recursividad es una de las técnicas más elegantes y desafiantes de la programación. Consiste en resolver un problema dividiéndolo en versiones más pequeñas de sí mismo hasta llegar a un caso base. En el programa de la SEP, este tema fomenta el pensamiento analítico y la capacidad de descomposición de problemas complejos, habilidades transferibles a cualquier disciplina científica.

Entender la recursión requiere un cambio de paradigma mental: pasar de la iteración lineal a la autorreferencia. Es fundamental para comprender estructuras de datos avanzadas como los árboles y grafos. Este concepto se domina con mayor rapidez mediante la visualización de procesos y la explicación entre pares, donde los estudiantes deben 'rastrear' el camino de ida y vuelta de las llamadas a funciones.

Preguntas Clave

  1. ¿Cómo la estructura LIFO de una pila se aplica en la gestión de llamadas a funciones?
  2. ¿De qué manera una cola garantiza el procesamiento justo de solicitudes?
  3. ¿Por qué es fundamental entender el comportamiento de estas estructuras en sistemas operativos?

Objetivos de Aprendizaje

  • Implementar operaciones básicas (push, pop, peek, isEmpty) para estructuras de pila y cola en un lenguaje de programación.
  • Comparar el comportamiento LIFO (Last-In, First-Out) de las pilas con el comportamiento FIFO (First-In, First-Out) de las colas.
  • Analizar la aplicabilidad de las pilas en la gestión de llamadas a funciones y la de las colas en la administración de procesos concurrentes.
  • Diseñar un algoritmo simple que utilice una pila o cola para resolver un problema práctico, como el historial de navegación o la gestión de impresiones.

Antes de Empezar

Conceptos Básicos de Programación: Variables y Tipos de Datos

Por qué: Es necesario comprender cómo almacenar y manipular datos individuales para poder construir estructuras de datos más complejas.

Estructuras de Control: Ciclos (for, while)

Por qué: Los estudiantes deben estar familiarizados con la iteración para poder implementar las operaciones de recorrido y manipulación de pilas y colas.

Arreglos o Listas Simples

Por qué: Comprender cómo funcionan los arreglos o listas es fundamental, ya que a menudo se utilizan como base para implementar pilas y colas.

Vocabulario Clave

Pila (Stack)Una estructura de datos lineal que sigue el principio LIFO (Last-In, First-Out). El último elemento agregado es el primero en ser eliminado.
Cola (Queue)Una estructura de datos lineal que sigue el principio FIFO (First-In, First-Out). El primer elemento agregado es el primero en ser eliminado.
PushOperación para agregar un elemento a la cima de una pila.
PopOperación para eliminar y devolver el elemento de la cima de una pila o el frente de una cola.
PeekOperación para ver el elemento en la cima de una pila o al frente de una cola sin eliminarlo.
LIFOAcrónimo de Last-In, First-Out. Describe el comportamiento de las pilas, donde el último elemento en entrar es el primero en salir.
FIFOAcrónimo de First-In, First-Out. Describe el comportamiento de las colas, donde el primer elemento en entrar es el primero en salir.

Cuidado con estas ideas erróneas

Idea errónea comúnOlvidar el caso base, causando un bucle infinito.

Qué enseñar en su lugar

Los estudiantes suelen enfocarse en la regla recursiva. Usar 'rastreos de escritorio' manuales donde deben escribir cada paso ayuda a notar que sin una condición de salida, el programa nunca termina.

Idea errónea comúnCreer que la recursividad siempre es mejor que los ciclos for/while.

Qué enseñar en su lugar

Es vital enseñar que la recursión consume más memoria de la pila (stack). Comparar el uso de memoria en tiempo real mediante herramientas de depuración ayuda a entender cuándo evitarla.

Ideas de aprendizaje activo

Ver todas las actividades

Conexiones con el Mundo Real

  • Los sistemas operativos utilizan colas para administrar la ejecución de procesos y la asignación de recursos de CPU, asegurando que las tareas se procesen de manera ordenada y justa, similar a cómo una línea de atención al cliente gestiona a las personas.
  • La función 'deshacer' (undo) en editores de texto o software de diseño gráfico implementa una pila para registrar las acciones del usuario. Cada acción se 'apila', y al presionar 'deshacer', se 'desapila' la última acción realizada.
  • Los navegadores web usan pilas para gestionar el historial de páginas visitadas. El botón 'atrás' permite retroceder a través de las páginas en el orden inverso al que fueron visitadas, simulando el comportamiento de una pila.

Ideas de Evaluación

Boleto de Salida

Entregue a cada estudiante una tarjeta con un escenario (ej. 'historial de navegación', 'cola de impresión'). Pida que escriban qué estructura (pila o cola) es más adecuada y por qué, nombrando al menos una operación clave (push, pop, peek).

Verificación Rápida

Presente un diagrama simple de una pila con 5 elementos y muestre las operaciones push(X) y pop(). Pregunte a los estudiantes cuál será el estado final de la pila y qué valor se obtendrá con la operación pop().

Pregunta para Discusión

Plantee la siguiente pregunta al grupo: 'Si un sistema de atención médica usa una cola para priorizar pacientes según la gravedad de su condición, ¿qué pasaría si accidentalmente usara una pila en su lugar? Describa las posibles consecuencias negativas para la atención al paciente.'

Preguntas frecuentes

¿Qué es un caso base en palabras simples?
Es la condición que detiene la recursión. Es como la instrucción de 'deja de cavar' cuando llegas al fondo de un pozo; sin ella, seguirías bajando para siempre.
¿Dónde se usa la recursividad en la vida real?
Se usa mucho en el sistema de archivos de tu computadora (carpetas dentro de carpetas), en el procesamiento de lenguaje natural y en la generación de gráficos para videojuegos.
¿Qué actividades prácticas ayudan a entender la recursión?
Las actividades de 'Juego de Roles' donde los alumnos actúan como funciones son las más efectivas. Al tener que esperar físicamente la respuesta de un compañero para completar su propia tarea, comprenden el concepto de la pila de llamadas y por qué la función no termina hasta que el caso base responde.
¿Es difícil de aprender para alumnos de prepa?
Puede ser contraintuitivo al principio. La clave es usar muchas analogías visuales, como las muñecas rusas (Matrioshkas), antes de pasar directamente a escribir código complejo.