Introducción: el resultado todavía no es el procedimiento
Cuando hablamos de pensamiento computacional, solemos asociarlo con la programación. En realidad, se refiere a la capacidad de abordar un problema, analizarlo y construir una secuencia de instrucciones precisas para resolverlo. Utilizamos los ojos, la experiencia y conocimientos implícitos; un procedimiento ejecutable debe explicitar las operaciones que hay que realizar.
No existe necesariamente un único método: a menudo podemos elegir entre distintas representaciones de los datos y distintos algoritmos. Aquí partimos de operaciones con cifras que parecen inmediatas, las convertimos en procedimientos aritméticos y después aplicamos la misma forma de razonar a problemas concretos. No hace falta conocer un lenguaje de programación.
Antes de empezar: datos, DIV, MOD y asignaciones
Salvo indicación contraria, trabajamos con enteros no negativos escritos en base diez. Un número y el texto que lo representa no son lo mismo: como número, 05 vale 5; como texto, «05» conserva dos caracteres. Si importan los ceros iniciales, debemos decirlo antes de elegir el algoritmo.
DIV indica el cociente entero y MOD el resto. Dividir 1234 entre 100 produce un cociente de 12 y un resto de 34: no son dos reglas para memorizar sin comprender, sino dos datos de la misma división.
1234 = 12 × 100 + 34
0 ≤ 34 < 100
En los bloques de instrucciones, = significa «asignar a la variable el valor calculado a la derecha». Por tanto, S = S + C actualiza S: no es una ecuación que haya que resolver. Las líneas se ejecutan de arriba abajo y la sangría indica las instrucciones que se repiten. En las condiciones, en cambio, = compara dos valores en lugar de modificarlos.
Son procedimientos aritméticos: no estamos pidiendo a la máquina que reconozca una fotografía de las cifras. También se podrían usar cadenas de texto u otros métodos; lo importante es declarar los datos y las operaciones disponibles.
Primera parte — Siete ejemplos fundamentales
Las tablas comparan una solución intuitiva, a menudo visual, con un procedimiento explícito y ejecutable. No son capacidades exclusivas: una persona también puede ejecutar el algoritmo y un mismo problema puede tener varios algoritmos válidos.
1. Separar las dos últimas cifras
Problema. Separar 1234 en la parte anterior a las dos últimas cifras y en esas dos últimas cifras.
| Solución humana | Solución de la máquina |
|---|---|
Miramos la escritura e imaginamos un corte antes de las dos últimas cifras: 12 | 34. | Calcula el cociente entero de la división entre 100 para obtener A y el resto para obtener B. No necesita reconocer visualmente las cifras. |
En general: A = N DIV 100; B = N MOD 100. Con 987654 obtenemos 9876 y 54. Con 1205 obtenemos 12 y 5: para mostrar 12 | 05, B debe formatearse con dos cifras o tratarse como texto. Si N es menor que 100, A vale 0.
2. Intercambiar dos variables
Problema. Intercambiar A = 5 y B = 8 para obtener A = 8 y B = 5.
| Solución humana | Solución de la máquina |
|---|---|
Imaginamos dos cartulinas con 5 y 8 e intercambiamos sus posiciones. Ambos valores siguen disponibles. | Las asignaciones son sucesivas: A = B por sí sola borraría el antiguo A. Primero guarda A en la variable temporal T y después realiza el intercambio. |
Después de T = A tenemos T = 5, A = 5, B = 8. Después de A = B tenemos T = 5, A = 8, B = 8. Por último, B = T produce A = 8, B = 5. La variable temporal conserva la información necesaria: un algoritmo debe seguir el estado de la memoria durante todos los pasos.
3. Encontrar el mayor de tres números
Problema. Encontrar el mayor de 17, 42 y 29.
| Solución humana | Solución de la máquina |
|---|---|
Comparamos mentalmente los tres valores y reconocemos 42 como el mayor. | Guarda el primer valor en M. Compara los demás con M uno a uno y solo lo actualiza cuando encuentra un valor mayor. |
La primera comparación actualiza M a 42; la segunda no lo cambia porque 29 no es mayor que 42. No necesitamos prever por separado cada orden posible. Para una lista no vacía, inicializamos M con el primer elemento y lo comparamos sucesivamente con los restantes.
4. Contar las cifras
Problema. Determinar cuántas cifras tiene 72845.
| Solución humana | Solución de la máquina |
|---|---|
Leemos la escritura y contamos cinco posiciones: 7, 2, 8, 4, 5. | Divide repetidamente N entre 10 mediante división entera y cuenta las divisiones necesarias para llegar a cero. |
Hay cinco divisiones. Sin embargo, debemos prever que cero tiene una cifra: un bucle que solo empieza cuando N > 0 contaría cero por sí solo. Para números negativos podemos tomar primero el valor absoluto, sin contar el signo menos como cifra.
5. Invertir las cifras
Problema. Transformar 1234 en 4321 sin tratar el número como una cadena de texto.
| Solución humana | Solución de la máquina |
|---|---|
Leemos las cifras de derecha a izquierda: 4, 3, 2, 1, obteniendo 4321. | Extrae la última cifra C con MOD 10, la añade a R tras multiplicar R por 10 y la elimina de N con DIV 10. Repite hasta que N sea cero. |
| Paso | Cifra extraída | R | N después de DIV 10 |
|---|---|---|---|
| 1 | 4 | 4 | 123 |
| 2 | 3 | 43 | 12 |
| 3 | 2 | 432 | 1 |
| 4 | 1 | 4321 | 0 |
Los valores sucesivos de R son 4, 43, 432, 4321. Cada división entera acorta N en una cifra: así sabemos también por qué termina el bucle. Los ceros finales del original no permanecen visibles en el número invertido: 120 se convierte en 21, no en una representación de tres cifras.
6. Reconocer un palíndromo
Problema. Comprobar si 12321 es un palíndromo.
| Solución humana | Solución de la máquina |
|---|---|
Leemos desde la izquierda y desde la derecha y observamos la misma secuencia: 12321. | Guarda el original, calcula R con el algoritmo de inversión y compara ambos valores. Son iguales: el número es un palíndromo. |
12321 coincide con su inverso: es un palíndromo. 1234 y 4321 son distintos: 1234 no lo es. El número 0 es un palíndromo. Aquí se aprecia la reutilización: un algoritmo disponible resuelve otro problema. Conservar el original es indispensable porque el bucle de inversión consume N.
7. Los principios del pensamiento computacional
Los ejemplos muestran seis herramientas que trabajan juntas, no una secuencia rígida que haya que aplicar mecánicamente.
- Descomposición: dividir un problema en partes; para reconocer un palíndromo, separar inversión y comparación.
- Abstracción: conservar las características relevantes; para encontrar el máximo importan los valores, no el color con que están escritos.
- Reconocimiento de patrones: observar que MOD 10 aísla una cifra y DIV 10 permite pasar a la siguiente.
- Generalización: transformar el cálculo con 1234 en un método válido para N.
- Diseño algorítmico: precisar instrucciones, condiciones, repeticiones y parada.
- Verificación: probar casos normales y casos límite, buscando también situaciones que puedan refutar el método.
El pensamiento computacional no consiste simplemente en «pensar como una máquina»: consiste en formular soluciones que puedan ejecutarse sistemáticamente, explicarse, comprobarse y reutilizarse.
Segunda parte — Diez problemas resueltos con los ojos y con las matemáticas
En los diez ejemplos siguientes utilizamos sobre todo enteros no negativos. El objetivo es obtener mediante operaciones explícitas lo que reconocemos de un vistazo.
8. Extraer la última cifra
Problema. Extraer la última cifra de 5837.
| Solución humana | Solución de la máquina |
|---|---|
Miramos la posición situada más a la derecha y leemos 7. | Calcula el resto de la división entre 10: ese resto es la última cifra. |
En general, ultima = N MOD 10. El resto siempre es una cifra entre 0 y 9. También con N = 0 el resultado es 0.
9. Eliminar la última cifra
Problema. Eliminar la última cifra de 5837.
| Solución humana | Solución de la máquina |
|---|---|
Tapamos mentalmente el 7 final y leemos 583. | Calcula el cociente entero de la división entre 10, descartando el resto. |
Al repetir la operación eliminamos más cifras. Un número de una sola cifra se convierte en 0.
10. Extraer las tres últimas cifras
Problema. Extraer las tres últimas cifras de 123456.
| Solución humana | Solución de la máquina |
|---|---|
Aislamos visualmente las tres últimas posiciones: 456. | Calcula el resto de la división entre 1000. El resto contiene el valor de las tres últimas cifras. |
La misma idea sirve para las últimas k cifras usando MOD 10^k, con k entero positivo. Si pedimos exactamente tres posiciones, un resto de 7 debe mostrarse como 007: el valor numérico y su formato siguen siendo dos problemas distintos.
11. Separar un número en grupos de tres cifras
Problema. Separar 1234567 en grupos de tres cifras.
| Solución humana | Solución de la máquina |
|---|---|
Empezamos por la derecha y agrupamos las cifras: 1 | 234 | 567. | Extrae un grupo con MOD 1000 y continúa con el cociente obtenido mediante DIV 1000. Guarda los grupos y los muestra en orden inverso al de extracción. |
Obtenemos primero 567, después 234 y finalmente 1: para mostrar el número original, hay que leer los grupos en orden inverso al de extracción. Repetimos hasta que el cociente sea cero; el número 0 necesita un único grupo 0. Cada grupo posterior al primero en la escritura final debe tener tres cifras: 1002003 se convierte en 1 | 002 | 003.
12. Determinar si un número es par
Problema. Determinar si 2468 es par.
| Solución humana | Solución de la máquina |
|---|---|
Reconocemos 8 como última cifra par y concluimos que el número es par. | Comprueba si el resto de la división del número entre 2 es cero. |
Si el resto es cero, el número es par; en caso contrario, es impar. Cero también es par, porque su división entre 2 tiene resto cero.
13. Sumar las cifras
Problema. Calcular la suma de las cifras de 472.
| Solución humana | Solución de la máquina |
|---|---|
Leemos las cifras y sumamos 4 + 7 + 2 = 13. | Empieza con S = 0; extrae cada última cifra con MOD 10, la añade a S y continúa con DIV 10. |
Las cifras llegan en el orden 2, 7, 4; S pasa a ser 2, luego 9 y después 13. El orden no cambia la suma. Con N = 0, S permanece correctamente en 0.
14. Encontrar la cifra de las decenas
Problema. Encontrar la cifra de las decenas de 5837.
| Solución humana | Solución de la máquina |
|---|---|
Localizamos la segunda posición desde la derecha y leemos 3. | Elimina las unidades con DIV 10 y aísla la última cifra restante con MOD 10. |
El primer paso produce 583 y el segundo 3. Si N tiene una sola cifra, su cifra de las decenas es 0.
15. Comparar las primeras cifras de dos números
Problema. Comprobar si 7824 y 7910 empiezan por la misma cifra.
| Solución humana | Solución de la máquina |
|---|---|
Miramos la primera posición de ambos: leemos 7 y 7, por lo que coinciden. | Divide cada número entre 10 mediante división entera hasta que queda una sola cifra y después compara los resultados. |
7824 → 782 → 78 → 7; 7910 → 791 → 79 → 7. Las primeras cifras coinciden. El método también funciona para números de distinta longitud: 7824 y 73 empiezan ambos por 7. Si el dato es 0, la primera cifra es 0 y no hacen falta divisiones.
16. Contar cuántas veces aparece una cifra
Problema. Contar cuántas veces aparece la cifra 7 en 727272.
| Solución humana | Solución de la máquina |
|---|---|
Recorremos la escritura y marcamos cada 7: encontramos tres. | Extrae una cifra cada vez con MOD 10, incrementa CONT solo si la cifra es 7 y continúa con DIV 10. |
Para contar una cifra elegida, sustituimos 7 por un parámetro C entre 0 y 9. Cuidado con el número 0: la cifra 0 aparece en él una vez, no cero. Lo tratamos por separado antes del bucle; para cualquier otra cifra, el recuento en 0 es nulo.
17. Comprobar si todas las cifras son iguales
Problema. Comprobar si todas las cifras son iguales en 5555 y en 5553.
| Solución humana | Solución de la máquina |
|---|---|
Reconocemos cuatro 5 en el primer número; en el segundo observamos el 3 distinto de los demás. | Guarda la primera cifra extraída con MOD 10 y la compara con las siguientes. Se detiene ante la primera diferencia. |
Para 5555, la cifra de referencia es 5 y todas las comparaciones confirman la igualdad. Para 5553, la referencia es 3 y el siguiente 5 la desmiente: no es necesario continuar. El procedimiento no requiere conocer de antemano el número de cifras. Un número de una sola cifra, incluido 0, satisface la propiedad.
Tercera parte — Tres aplicaciones significativas
Las mismas ideas no sirven solo para manipular cifras. Trasladémoslas a horarios, búsquedas y comprobación de errores: en cada caso especificamos los datos, el procedimiento y la verificación.
18. Horarios: cuando una división describe una situación real
Problema. Una clase empieza a las 09:50 y dura 95 minutos. ¿A qué hora termina?
| Solución humana | Solución de la máquina |
|---|---|
Descomponemos 95 minutos en 60 + 35: una hora después son las 10:50; otros 35 minutos nos llevan a las 11:25. | Convierte el inicio en minutos desde el comienzo del día, añade la duración y reconvierte con DIV 60 y MOD 60. Admite horas entre 0 y 23, minutos entre 0 y 59 y una duración entera no negativa. |
La clase termina a las 11:25. DIV 60 cuenta las horas completas y MOD 60 los minutos restantes: es la misma idea que con las cifras, pero con grupos de 60.
Caso límite: 23:50 más 30 minutos produce 1460 minutos. El cociente de la división entre 1440 indica cuántos días han pasado; el resto indica los minutos del nuevo día. Obtenemos el día siguiente a las 00:20. Declarar el cambio de día forma parte de la solución, no es un detalle gráfico.
23 × 60 + 50 + 30 = 1460
1460 DIV 1440 = 1
1460 MOD 1440 = 20
20 DIV 60 = 0
20 MOD 60 = 20
19. Buscar un número: por qué la representación cambia el método
Problema. Buscar 42 en la lista ordenada [3, 8, 12, 17, 23, 31, 42, 58].
| Solución humana | Solución de la máquina |
|---|---|
Recorremos la lista desde la izquierda y reconocemos 42 en la séptima posición: esta estrategia examina siete elementos. | Aprovecha el orden mediante una búsqueda binaria: numera las posiciones desde 1, elige la central redondeada hacia abajo y descarta la mitad incompatible con la comparación. Visita las posiciones 4, 6 y 7. |
| Comparación | Intervalo siguiente |
|---|---|
| Posición 4: 17 < 42 | Posiciones 5–8 |
| Posición 6: 31 < 42 | Posiciones 7–8 |
| Posición 7: 42 = 42 | Encontrado: posición 7 |
Han bastado tres comparaciones. Si buscáramos 40, tras compararlo con 42 quedaría un intervalo vacío: podríamos declarar que el número no está. La condición de parada incluye tanto «encontrado» como «no quedan posiciones».
Esta búsqueda funciona porque la lista está ordenada y podemos acceder a las posiciones centrales. En una lista desordenada, descartar la mitad de los valores no estaría justificado. Ordenar tiene un coste: para una sola búsqueda puede no compensar; para muchas búsquedas se pueden reutilizar los mismos datos ordenados. Un buen algoritmo también depende de las hipótesis y del contexto.
20. Encontrar un error: el máximo de números negativos
Problema. ¿Por qué iniciar el máximo con M = 0 funciona para [17, 42, 29] pero falla para [−8, −3, −12]? ¿Cómo se corrige?
| Solución humana | Solución de la máquina |
|---|---|
Reconocemos −3 como el mayor de los tres números negativos. Observamos que 0 no pertenece a la lista y no puede ser su máximo. | Con M = 0 ningún número negativo actualiza el máximo: el resultado sigue siendo erróneamente 0. Para una lista no vacía, inicializa M con el primer elemento y después compara los demás. |
El resultado correcto es −3. Probar números positivos no bastaba para establecer la validez del procedimiento. Probemos también una lista con un solo elemento, valores todos iguales y una lista vacía: en este último caso, el máximo no está definido y hay que indicar que faltan datos, no inventar un cero.
Esta también es una buena costumbre con la IA: no pedir solo una solución, sino sus hipótesis, un contraejemplo y casos de prueba. Una respuesta convincente todavía debe superar comprobaciones independientes.
Por qué hablar de ello en «IA y pensamiento»
Saber formular un procedimiento también ayuda a utilizar la inteligencia artificial sin confundir una respuesta plausible con una respuesta comprobada. Podemos pedirle una estrategia, pero debemos saber qué datos usa, qué hipótesis necesita y cómo comprobar el resultado.
Una petición útil es: «Necesito contar las cifras de un entero, incluido cero. Muestra los pasos para 72845, explica la condición de parada y prueba también 0 y −10, contando solo las cifras y no el signo». La petición precisa la entrada, el resultado deseado, el método de explicación y los casos límite. No garantiza por sí sola la corrección, pero nos permite comprobarla.
Una pequeña lista de comprobación
- ¿Cuáles son los datos de entrada y qué valores se admiten?
- ¿Qué resultado quiero obtener y en qué representación?
- ¿Qué operaciones puedo utilizar y qué información debo conservar?
- ¿Qué instrucciones se repiten y por qué termina la repetición?
- ¿Qué sucede con cero, datos mínimos, datos ausentes o valores inesperados?
- ¿Puedo ejecutar el procedimiento a mano y comprobarlo con otro método?
Conclusión — Del resultado al procedimiento
Muchas operaciones nos resultan inmediatas porque vemos la representación escrita de un número. Al buscar un procedimiento, debemos explicitar qué datos utilizar, qué operaciones realizar, cuándo repetirlas y cuándo detenernos.
El objetivo educativo no es renunciar a la intuición, sino convertirla en un método: «¿Cómo has encontrado el resultado? ¿Funciona siempre el procedimiento? ¿Puedes explicárselo a quien no puede confiar en tus ojos?». Estas preguntas conectan matemáticas, lógica e informática y pueden abordarse mucho antes de aprender un lenguaje de programación.