1.3. Pensament algorítmic
Per poder-nos comunicar amb les màquines i treure’n més profit, hem de començar a «pensar» com ho faria una màquina. Normalment, quan treballem amb un ordinador li donem algun tipus d’instrucció (input) i n’esperem un resultat (output). Per exemple: puc fer clic amb el ratolí al meu programa de disseny i que, com a resultat, em mostri un punt a la pantalla. Aquest procés el podríem definir com l’algorisme per dibuixar punts.
Els algorismes són omnipresents en el món digital en el qual vivim (des de la recomanació de la propera sèrie que veureu a la vostra plataforma de streaming fins a la presa de decisions en mercats borsaris passant per la calculadora del vostre telèfon), però què és exactament un algorisme? Ho podríem definir de la manera següent:
Un algorisme és un conjunt d’instruccions definides, ordenades i finites que permeten solucionar un problema, fer un còmput, processar dades o dur a terme altres tasques o activitats.
Vegem-ne un exemple senzill:

Font: elaboració pròpia.
L’algorisme per convertir graus Fahrenheit a Celsius té els passos següents:
- Restar 32 al valor d’entrada
- Multiplicar-lo per 5
- Dividir-lo entre 9
Donat qualsevol valor d’entrada, podem seguir aquesta sèrie d’instruccions de manera successiva i arribarem inequívocament al valor de sortida: el valor convertit a Celsius.
Podem representar els algorismes de manera visual en forma d’arbre de decisions. A continuació, teniu un exemple d’algorisme per arreglar un llum que no funciona.

Font: elaboració pròpia.
Els anteriors són exemples molt senzills d’algorismes, però de seguida veureu com el nivell de complexitat pot créixer de manera exponencial amb l’exemple següent:

Font: elaboració pròpia.
Si volguéssim resoldre el problema de trobar la millor ruta entre dos punts, començaríem a tenir diferents variables que hauríem de considerar: Quina considerem millor? La més curta? La més ràpida? Anem a peu, amb cotxe, metro, bicicleta? Quant de trànsit hi ha a aquesta hora? Com podreu observar, l’arbre de decisions que hauríem de dur a terme tindria múltiples ramificacions, la qual cosa implicaria fer molts càlculs. Per sort, si hi ha alguna cosa en el que els ordinadors són realment eficients és duent a terme un gran nombre d’operacions a una gran velocitat.
Com a exercici mental us proposem el següent: podríeu pensar en l’algorisme per crear un cafè perfecte en una màquina de cafè?

Font: elaboració pròpia.
En got o en tassa? Amb llet? Calenta o freda? Condensada? De soja? Sucre? Quantes culleradetes? Amb gel? Com podreu observar, l’assumpte no és trivial i implica moltes decisions. Haurem de valorar fins a quin punt volem donar múltiples opcions a l’usuari per personalitzar el seu cafè a costa d’un procés més llarg o si, al contrari, volem simplificar la tasca sacrificant la capacitat de personalització.
El que és fonamental com a programadors/dissenyadors és que entenguem el problema al qual ens enfrontem, per no perdre el focus una vegada que ens posem a escriure els nostres algorismes, a programar. De fet, escriure el codi en si no és més que una petita part del procés global al qual ens enfrontem en crear els nostres programes, i que engloba també una tasca prèvia de recerca i planificació, i una de posterior de testar el nostre codi i anar-lo refinant.