Ficha🔵 Intermedio

Pensamiento computacional y programación básica

🔵 Nivel Intermedio  ·  Tecnológicas

Programar no empieza escribiendo código: empieza eliminando ambigüedades.

Puedes diseñar un algoritmo completo sin escribir una sola línea de Python o mover un bloque de Scratch. Antes de que una computadora pueda obedecer una instrucción, alguien debe decidir exactamente qué entra, qué debe ocurrir, bajo qué condiciones se repite una acción y cuándo termina. En esta ficha descubrirás cómo pasar de un problema cotidiano a una secuencia que una persona o una máquina pueda ejecutar y comprobar.

Qué lograrás

Objetivo didáctico

Al terminar esta ficha serás capaz de analizar un problema cotidiano, convertirlo en un algoritmo expresado mediante pseudocódigo e implementar una solución básica con condicionales y bucles en Python o Scratch, comprobando su funcionamiento con distintos casos.

Punto de partida

Introducción

El pensamiento computacional no consiste únicamente en aprender un lenguaje de programación. Consiste en observar un problema y preguntarse qué información realmente importa, qué partes pueden separarse, qué patrones se repiten y qué procedimiento permitiría llegar a un resultado de manera consistente. Jeannette Wing ayudó a popularizar esta idea en 2006 al proponer que el pensamiento computacional es una habilidad fundamental que puede resultar útil mucho más allá de la informática (Wing, 2006).

Lo utilizas, incluso sin llamarlo así, cuando comparas rutas de transporte, organizas gastos, estableces reglas para clasificar mensajes, detectas pasos repetitivos en un trámite o decides qué hacer dependiendo de una condición. La diferencia aparece cuando haces explícito ese razonamiento: en vez de actuar por intuición, describes qué datos recibes, qué reglas aplicas y qué resultado esperas.

Programar lleva ese razonamiento un paso más lejos. Una computadora no interpreta frases ambiguas como una persona. Si una instrucción dice “hazlo varias veces” o “cobra un poco más”, faltan datos esenciales. Por eso aprender programación básica también enseña precisión: obliga a convertir intenciones vagas en instrucciones verificables.

💡 Pensamiento computacional
Es una forma de formular problemas y representar soluciones mediante datos, descomposición, reglas y secuencias suficientemente claras para que puedan ser ejecutadas y comprobadas. No exige que toda solución termine convertida en un programa.

El contenido

Desarrollo del tema

01

Algoritmos y pseudocódigo: pensar antes de programar

Un algoritmo es una secuencia finita y ordenada de instrucciones para obtener un resultado. La palabra puede sonar técnica, pero la idea es cotidiana: calcular cuánto cambio debes recibir, decidir qué autobús tomar o preparar una comida siguiendo cantidades y tiempos son procedimientos que pueden describirse como algoritmos.

La clave está en reducir la ambigüedad. “Cocina hasta que esté listo” puede funcionar entre personas con experiencia, pero es una mala instrucción para una máquina. “Calienta durante 8 minutos y después comprueba si la temperatura supera cierto valor” contiene datos observables. Pensar algorítmicamente significa sustituir intuiciones implícitas por pasos y condiciones que puedan verificarse.

El pseudocódigo sirve como puente entre una idea y un lenguaje de programación. No tiene una sintaxis universal obligatoria: puede usar expresiones como INICIO, LEER, SI, ENTONCES, MIENTRAS y MOSTRAR. Lo importante es representar la lógica. Si una compra cuesta MXN 137 y pagas con MXN 200, un algoritmo puede recibir ambos valores, restarlos y mostrar un cambio de MXN 63.

La historia detrás de esta forma de pensar precede a muchas computadoras actuales. Alan Turing describió una máquina abstracta que ejecutaba operaciones elementales paso a paso para estudiar qué problemas podían calcularse. Su aportación ayudó a separar dos ideas: el procedimiento lógico y la máquina física que lo ejecuta (Turing, 1936).

1936
💫 El dato que cambia todo: Turing formuló su modelo de computación antes de que existieran las computadoras digitales de uso general como las conocemos. Primero se formalizó la idea de ejecutar instrucciones; después llegaron las máquinas capaces de hacerlo a gran escala.
Toca un paso para recorrer la construcción de un algoritmo.
02

Lógica condicional y bucles: decidir y repetir

Muchos algoritmos no siguen una línea recta. Necesitan tomar decisiones. Una estructura condicional expresa precisamente eso: SI ocurre una condición, ENTONCES ejecuta una acción; SINO, ejecuta otra. Una aplicación bancaria puede, por ejemplo, autorizar una transferencia solo si el saldo disponible es igual o mayor que el monto solicitado.

Los bucles resuelven otro problema: repetir instrucciones sin escribirlas una y otra vez. Un ciclo PARA es útil cuando conoces el número de repeticiones; un ciclo MIENTRAS funciona cuando la repetición depende de una condición. Un formulario puede permitir hasta 3 intentos de acceso y detener el ciclo en cuanto la contraseña sea correcta.

Condicionales y bucles suelen aparecer juntos. La repetición controla cuántas veces ocurre una acción, mientras la condición decide qué debe suceder en cada momento. Si se diseña mal una condición de salida, el programa puede repetir una tarea más veces de las necesarias o incluso quedar atrapado en un ciclo que nunca termina.

En la vida diaria sucede algo semejante. Cuando revisas una lista de pagos, puedes repetir la misma comprobación para cada registro y aplicar una regla diferente según el monto. La programación no inventa ese razonamiento: lo vuelve explícito, preciso y reproducible.

03

Python y Scratch: dos puertas de entrada a la programación

Python y Scratch permiten practicar los mismos principios desde interfaces distintas. Python utiliza texto y una sintaxis relativamente compacta; su primera versión pública apareció en 1991 y fue creada por Guido van Rossum. Scratch, desarrollado en el MIT Media Lab y lanzado públicamente en 2007, representa instrucciones mediante bloques visuales que encajan entre sí.

En Python debes escribir correctamente palabras, signos e indentación. En Scratch, muchos errores sintácticos desaparecen porque los bloques incompatibles simplemente no encajan. Esa diferencia permite concentrarse primero en la lógica. Sin embargo, los conceptos permanecen: variables, eventos, condicionales, bucles, operadores y secuencias aparecen en ambos entornos.

Observa este ejemplo de Python. Una lista contiene tres gastos; el programa recorre cada monto y muestra solo aquellos superiores a MXN 500. Hay una variable temporal, un bucle y una condición:

gastos = [120, 650, 80]

for monto in gastos:
    if monto > 500:
        print("Revisar:", monto)

En Scratch podrías representar la misma lógica con bloques de “repetir” o “para cada elemento” y un bloque “si”. Lo importante no es memorizar la forma exacta de escribirla, sino poder explicar qué hace cada paso y predecir qué ocurriría si la lista cambiara, por ejemplo, a cinco o diez cantidades.

⚠️ Que el código funcione no significa que lo comprendas
Copiar un programa y ejecutarlo puede producir el resultado correcto sin que sepas por qué. Una prueba más útil es modificar un dato, anticipar lo que ocurrirá y explicar después qué instrucción causó el cambio.
04

Resolver problemas por pasos: del síntoma a una solución comprobable

Frente a un problema complejo, intentar programar inmediatamente suele ocultar preguntas importantes. Primero conviene definir el resultado esperado. Si quieres diseñar una herramienta para organizar entregas, por ejemplo, necesitas decidir qué datos recibirá: dirección, horario, prioridad, distancia u otras restricciones. Sin entradas claras, tampoco puede existir una salida bien definida.

Después viene la descomposición: separar el problema en partes que puedan resolverse por separado. En vez de “organizar todas las entregas”, puedes dividir la tarea en validar direcciones, ordenar pedidos, identificar restricciones y construir una secuencia. Cada subproblema puede tener su propio algoritmo.

El siguiente paso es probar. Un algoritmo que funciona con un ejemplo no necesariamente funciona con todos. Una práctica sencilla consiste en usar al menos 3 casos: uno normal, uno límite y uno inesperado. En una calculadora de cambio serían, por ejemplo, pago mayor que el precio, pago exactamente igual y pago insuficiente.

Finalmente se ajusta la solución. Este ciclo —definir, dividir, construir, probar y corregir— es útil fuera de la programación. Sirve para revisar un proceso administrativo, organizar una investigación o detectar por qué una rutina cotidiana falla siempre en el mismo punto.

🤔

Si otra persona no puede ejecutar tus instrucciones sin preguntarte qué quisiste decir, ¿el problema está en quien las sigue o en el algoritmo que escribiste?

05

Automatización simple: dejar a la máquina lo repetitivo

Automatizar significa delegar a un sistema una tarea que puede describirse mediante reglas suficientemente claras. No toda tarea merece automatización. La mayor ventaja aparece cuando una operación es repetitiva, consume tiempo y produce un resultado verificable. Si cada semana revisas 30 movimientos para localizar montos superiores a MXN 500, existe un patrón sencillo de automatizar.

El primer requisito es distinguir entre una decisión mecánica y una decisión que exige juicio. Un programa puede marcar automáticamente movimientos que superan un umbral; no puede determinar por sí mismo si una compra fue “prudente” sin que antes definas qué significa prudente. Las computadoras ejecutan reglas con velocidad, pero las reglas siguen necesitando criterios humanos.

Una automatización básica puede comenzar con pseudocódigo y después trasladarse a Python o Scratch. Recibe una lista, repite una comprobación para cada elemento, aplica una condición y produce una salida. Esa estructura aparece en filtros de datos, alertas, inventarios, recordatorios y numerosos procesos cotidianos.

Automatizar bien también exige verificar. Si el sistema recibe una lista vacía, un monto negativo o un dato escrito como texto en lugar de número, ¿qué debería hacer? Preguntar por esos casos antes de confiar en la automatización evita convertir un pequeño error en un proceso que repite el mismo error muchas veces.

Cierre

Conclusión

Analizar un problema, expresarlo como algoritmo y convertir parte de esa lógica en un programa básico cumple el objetivo central de esta ficha: pasar de una intención general a una solución que puede ejecutarse y comprobarse. El lenguaje de programación importa, pero viene después de las decisiones esenciales: qué datos entran, qué pasos ocurren, qué condiciones cambian el camino y qué acciones deben repetirse.

Esta manera de pensar también cambia la relación con la tecnología. En lugar de tratar una aplicación como una caja misteriosa, puedes comenzar a preguntarte qué reglas debe seguir, qué supuestos hicieron sus diseñadores y en qué casos podría fallar. Programar unas cuantas instrucciones es solo el comienzo; comprender cómo convertir problemas en procedimientos abre la puerta a analizar sistemas mucho más complejos.

🔭 Para seguir aprendiendo

  • ¿Qué problemas cotidianos parecen simples para una persona pero resultan difíciles de convertir en reglas precisas?
  • ¿Cómo cambia un algoritmo cuando debe tomar decisiones con información incompleta o incierta?
  • ¿Qué tareas conviene no automatizar aunque técnicamente sea posible hacerlo?
Ahora tú

Actividad de aprendizaje autónoma

Producto esperado: un mini-algoritmo útil de 8 a 12 pasos. Elige una tarea cotidiana que tenga decisiones y alguna acción repetitiva: revisar gastos, organizar una lista de pendientes, controlar intentos de acceso, clasificar productos o preparar un pedido. La meta no es producir un programa complejo, sino demostrar que puedes convertir una situación real en instrucciones verificables.

Antes de construir tu propio algoritmo, completa estas tres estructuras. Sirven para comprobar si distingues una condición, un bucle dependiente de una condición y una repetición sobre elementos.

Ahora construye tu solución:

  1. Escribe en una oración qué problema quieres resolver.
  2. Identifica al menos una entrada y una salida.
  3. Divide el problema en pasos pequeños y ordénalos.
  4. Incluye al menos una estructura SI / ENTONCES / SINO.
  5. Incluye al menos un bucle PARA o MIENTRAS.
  6. Exprésalo en pseudocódigo de 8 a 12 pasos.
  7. Prueba el algoritmo con tres casos: uno normal, uno límite y uno inesperado.
  8. Corrige cualquier instrucción que haya producido un resultado ambiguo o incorrecto.
  9. Si lo deseas, implementa la versión final en Python o Scratch.

Evidencia de logro

Tu algoritmo está completo si otra persona puede identificar claramente sus entradas y salidas, seguir sus 8–12 pasos sin pedir aclaraciones, encontrar al menos una condición y un bucle, y obtener resultados coherentes en los tres casos de prueba.

Reflexión final: ¿qué parte del problema entendiste de manera diferente cuando intentaste explicársela a una máquina paso por paso?

Referencias principales

Turing, A. M. (1936). On computable numbers, with an application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, s2-42(1), 230–265. https://doi.org/10.1112/plms/s2-42.1.230

Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33–35. https://doi.org/10.1145/1118178.1118215

Python Software Foundation. (s. f.). General Python FAQ. Python Documentation. https://docs.python.org/3/faq/general.html

Scratch Foundation. (s. f.). About Scratch. https://scratch.mit.edu/about