1.3. Pensamiento algorítmico
Para poder comunicarnos con las máquinas y sacar el mayor provecho de estas, debemos empezar a «pensar» como lo haría una máquina. Normalmente, cuando trabajamos con un ordenador le damos algún tipo de instrucción (input) y esperamos un resultado (output). Por ejemplo: puedo hacer clic con el ratón en mi programa de diseño y que, como resultado, me muestre un punto en la pantalla. Este proceso lo podríamos definir como el algoritmo para dibujar puntos.
Los algoritmos son omnipresentes en el mundo digital en el que vivimos (desde la recomendación de la próxima serie que vayáis a ver en vuestra plataforma de streaming hasta la toma de decisiones en mercados bursátiles pasando por la calculadora de vuestro teléfono), pero ¿qué es exactamente un algoritmo? Lo podríamos definir de la siguiente manera:
Un algoritmo es un conjunto de instrucciones definidas, ordenadas y finitas que permiten solucionar un problema, realizar un cómputo, procesar datos o llevar a cabo otras tareas o actividades.
Veamos un ejemplo sencillo:

Fuente: elaboración propia.
El algoritmo para convertir grados Fahrenheit a Celsius tiene los siguientes pasos:
- Restar 32 al valor de entrada
- Multiplicarlo por 5
- Dividirlo entre 9
Dado cualquier valor de entrada, podemos seguir esta serie de instrucciones de manera sucesiva y llegaremos inequívocamente al valor de salida: el valor convertido a Celsius.
Podemos representar los algoritmos de manera visual en forma de árbol de decisiones. A continuación, tenéis un ejemplo de algoritmo para arreglar una lámpara que no funciona.

Fuente: elaboración propia.
Los anteriores son ejemplos muy sencillos de algoritmos, pero enseguida veréis cómo el nivel de complejidad puede crecer de manera exponencial con el siguiente ejemplo:

Fuente: elaboración propia.
Si quisiéramos resolver el problema de encontrar la mejor ruta entre dos puntos, empezaríamos a tener distintas variables que deberíamos considerar: ¿qué consideramos mejor? ¿La más corta? ¿La más rápida? ¿Vamos a pie, en coche, metro, bicicleta? ¿Cuánto tráfico hay a esta hora? Como podréis observar, el árbol de decisiones que deberíamos realizar tendría múltiples ramificaciones, lo que implicaría realizar muchos cálculos. Por suerte, si hay algo en lo que los ordenadores son realmente eficientes es realizando un gran número de operaciones a gran velocidad.
Como ejercicio mental os proponemos lo siguiente: ¿podríais pensar en el algoritmo para crear un café perfecto en una máquina de café?

Fuente: elaboración propia.
¿En vaso o en taza? ¿Con leche? ¿Caliente o fría? ¿Condensada? ¿De soja? ¿Azúcar? ¿Cuántas cucharaditas? ¿Con hielo? Como podréis observar, el asunto no es trivial e implica muchas decisiones. Tendremos que valorar hasta qué punto queremos darle múltiples opciones al usuario para personalizar su café a costa de un proceso más largo o si, por el contrario, queremos simplificar la tarea sacrificando la capacidad de personalización.
Lo fundamental como programadores/diseñadores es que entendamos el problema al que nos enfrentamos para no perder el foco una vez que nos pongamos a escribir nuestros algoritmos, a programar. De hecho, escribir el código en sí no es más que una pequeña parte del proceso global al que nos enfrentamos al crear nuestros programas, y que engloba también una labor previa de investigación y planificación y una labor posterior de testar nuestro código e ir refinándolo.