0.f.1 - Pensamiento Computacional - Aplicación Profesional

Objetivo

Aplicar las cuatro técnicas del pensamiento computacional (descomposición, abstracción, algorítmica y reconocimiento de patrones) a la resolución de un problema real del ámbito profesional logístico.

1. Enunciado del problema

Contexto profesional

Eres el responsable de logística de FreshMenu, una empresa de comida preparada a domicilio. Cada día cocina entre 50 y 80 pedidos y los reparte en 3 vehículos con un conductor cada uno.

Datos disponibles por pedido

  • Dirección completa (calle, número, piso, código postal, barrio)
  • Hora solicitada de entrega (franja de 30 minutos)
  • Tipo de comida (caliente / fría)
  • Nombre del cliente
  • Teléfono de contacto
  • Método de pago (tarjeta / efectivo / online)
  • Observaciones dietéticas (alergias, preferencias)
  • Observaciones de acceso (portal sin ascensor, código de entrada, etc.)
  • Número de referencia del pedido
  • Fecha de registro del pedido

Restricciones operativas

  • Los pedidos de comida caliente deben entregarse en menos de 30 minutos desde que salen de cocina.
  • El centro histórico de la ciudad tiene restricciones de tráfico: solo pueden acceder vehículos con permiso especial (1 de las 3 furgonetas lo tiene).
  • Cada conductor trabaja 8 horas y debe hacer una pausa de 30 minutos.
  • Hay 3 franjas horarias de reparto: mañana (11:00-13:00), mediodía (13:00-15:00) y tarde (19:00-21:00).

Tu tarea

Aplicar las cuatro técnicas del pensamiento computacional para diseñar un plan sistemático de reparto diario que pueda seguir cualquier conductor, maximizando la eficiencia y cumpliendo las restricciones.

2. Descomposición

Antes de resolver el problema completo, divídelo en partes más pequeñas y manejables.

2.1 Descomposición funcional del problema general

Identifica al menos 4 subproblemas en los que se divide la planificación diaria de FreshMenu. Cada subproblema debe expresarse como una acción (verbo + objeto).

  1. _______________________________________________
  2. _______________________________________________
  3. _______________________________________________
  4. _______________________________________________

2.2 Descomposición jerárquica

Toma el subproblema "Organizar la ruta de reparto para un vehículo" y descompónlo en al menos 4 pasos concretos ordenados secuencialmente:

  1. _______________________________________________
  2. _______________________________________________
  3. _______________________________________________
  4. _______________________________________________

Preguntas guía

  • ¿Qué técnica de descomposición (funcional, estructural, secuencial, jerárquica…) es más adecuada para cada parte del problema?
  • ¿Hay algún subproblema que pueda descomponerse aún más? ¿Hasta qué nivel de detalle merece la pena llegar?
  • ¿Cómo detectarías si dos subproblemas se solapan?

3. Abstracción

No todos los datos disponibles son útiles para planificar rutas. Hay que separar lo esencial de lo irrelevante.

3.1 Identificación de información relevante

De los 10 campos de datos de cada pedido, identifica cuáles son esenciales para planificar la ruta de reparto y cuáles puedes abstraer (ignorar). Completa la tabla:

Campo esencial Justificación
__________________________________
__________________________________
__________________________________
__________________________________
Campo irrelevante (abstraer) Justificación
__________________________________
__________________________________

Preguntas guía

  • ¿Cambiaría tu selección de campos esenciales si el objetivo no fuera planificar rutas sino atención al cliente (ej. llamar para confirmar pedidos)?
  • ¿Qué técnica de abstracción (eliminación de detalles, clasificación, generalización…) has aplicado en cada caso?
  • Si añadiéramos el campo "color del embalaje", ¿sería relevante? ¿Por qué?

4. Algorítmica

Una vez descompuesto el problema y abstraída la información irrelevante, diseña una secuencia precisa de pasos que resuelva el subproblema fundamental: la ruta de reparto.

4.1 Algoritmo de ruta diaria para un vehículo

Escribe en pseudocódigo el algoritmo que debe seguir un conductor para completar su ruta. Debe incluir obligatoriamente:

  • Una estructura de secuencia (pasos ordenados)
  • Al menos una estructura de selección (SI / SINO)
  • Al menos una estructura de iteración (MIENTRAS o PARA)

Algoritmo: RutaDiaria
Entrada: lista_pedidos_asignados (ordenada por ubicación y hora)
Salida: entregas realizadas, incidencias registradas

Inicio
	// Inicializar recursos
	cargar_furgoneta(lista_pedidos_asignados)
	incidencias = lista_vacia()

	// [Completar el algoritmo aquí]

Fin
				

4.2 Diagrama de flujo

Representa el algoritmo anterior como un diagrama de flujo textual usando la siguiente simbología:

  • Óvalo: Inicio / Fin
  • Rectángulo: Acción
  • Rombo: Decisión
  • Flecha: Flujo

Ejemplo de formato para tu diagrama:

[Inicio]
    |
    v
[¿Quedan pedidos?] --SI--> [Entregar siguiente pedido]
    |                         |
   NO                         v
    |                    [¿Recoge destinatario?]
    v                         |
[Fin]                    SI / NO (ramas)
				

4.3 Variante con restricción temporal

Modifica el algoritmo para que, si un pedido de comida caliente lleva más de 25 minutos en la furgoneta sin entregarse, el conductor lo priorice inmediatamente (lo entregue antes que el siguiente planificado). ¿Qué estructura de control añades?

Preguntas guía

  • ¿Tu algoritmo cumple las 5 propiedades de un buen algoritmo (preciso, ordenado, finito, determinista, efectivo)?
  • ¿Qué ocurre si el conductor encuentra un imprevisto (atasco, cliente ausente)? ¿Tu algoritmo contempla esas alternativas?
  • ¿Cómo contarías el número total de entregas exitosas al final del día usando el algoritmo?

5. Reconocimiento de Patrones (opcional)

FreshMenu ha registrado el número de pedidos diarios durante 4 semanas. Analiza los datos para encontrar regularidades que ayuden a planificar mejor los recursos.

5.1 Datos históricos

Pedidos diarios de las últimas 4 semanas:

Día Semana 1 Semana 2 Semana 3 Semana 4
Lunes52554953
Martes48504751
Miércoles55585356
Jueves62646063
Viernes78807579
Sábado70726871
Domingo42403841

5.2 Tareas

  1. Calcula el promedio de pedidos por día de la semana y escríbelo:
    • Lunes: ____ | Martes: ____ | Miércoles: ____ | Jueves: ____ | Viernes: ____ | Sábado: ____ | Domingo: ____
  2. Identifica al menos 2 patrones diferentes en los datos (ej. patrón semanal, patrón de crecimiento, tendencia). Describe cada patrón y formula una regla general.
  3. Usando los patrones identificados, predice cuántos pedidos esperarías para el próximo viernes.
  4. Sabiendo que un vehículo puede repartir hasta 25 pedidos al día, ¿cuántos vehículos necesitarías cada día de la próxima semana?

Preguntas guía

  • ¿Qué día de la semana es consistentemente el de mayor demanda? ¿Y el de menor?
  • ¿Hay diferencias significativas entre semanas para un mismo día? ¿A qué pueden deberse?
  • ¿Cómo afectarían estos patrones a la decisión de cuántos conductores contratar cada día?
  • ¿Qué otros datos externos (clima, festivos, eventos deportivos) podrían enriquecer el análisis de patrones?

6. Crea tu propio problema

Diseña un enunciado original de problema profesional que pueda resolverse aplicando las cuatro técnicas del pensamiento computacional. Utiliza la siguiente plantilla:

Contexto profesional

Elige un sector: tienda online, clínica, taller mecánico, escuela, gimnasio, hotel, empresa de mudanzas, agencia de viajes, etc.

Sector elegido: _______________________________________________

Situación problemática

Describe en 2-3 frases un problema realista que enfrente ese negocio u organización.

Descripción del problema: _______________________________________________

______________________________________________________________________________________

Aplica el pensamiento computacional

Descomposición

¿En qué subproblemas se divide tu problema? Enumera al menos 3:

  1. _______________________________________________
  2. _______________________________________________
  3. _______________________________________________

Abstracción

¿Qué información es esencial para resolverlo y cuál puede ignorarse?

Esencial: _______________________________________________

Irrelevante (abstraer): _______________________________________________

Algorítmica

Describe la secuencia de pasos principal para resolver el problema (puede ser en lenguaje natural o pseudocódigo):

______________________________________________________________________________________

______________________________________________________________________________________

Reconocimiento de patrones

¿Qué regularidades o tendencias buscarías en los datos de tu problema?

______________________________________________________________________________________

Criterios de éxito del enunciado

  • El problema debe ser de un ámbito profesional realista.
  • Debe requerir al menos 3 de las 4 técnicas del pensamiento computacional.
  • Debe tener suficiente complejidad como para merecer un análisis estructurado.
  • No debe requerir conocimientos técnicos de programación para plantearlo.

Evaluación entre compañeros

Intercambia tu enunciado con un compañero. Resuelve su problema aplicando las cuatro técnicas y valora si el enunciado cumple los criterios de éxito. ¿Falta información? ¿Sobra? ¿El problema se presta al pensamiento computacional?

7. Usa la IA

Puedes usar el siguiente prompt en cualquier IA (LLM) para generar nuevos problemas y practicar.

		Contexto: Actúa como un profesor del Ciclo Formativo de Grado Superior en Desarrollo de Aplicaciones Web. Módulo de Programación.

		Tarea: Diseña el enunciado de un problema que, enmarcado en un contexto profesional, se resuelva mediante la aplicación de pensamiento computacional. Debe requerir: descomposición del problema, abstracción de información innecesaria, resolución algorítmica (es decir, como una secuencia de acciones) y, opcionalmente, reconocimiento de patrones.
	Incluye preguntas guía para ayudar en su resolución y criterios para su evaluación.
				

Bibliografía