Un algorisme és un conjunt finit d'instruccions o passos que serveixen per a executar una tasca o resoldre un problema. En la vida quotidiana, s'empren algorismes en multitud d'ocasions per a resoldre diversos problemes, com per exemple per posar una rentadora (conjunt d'instruccions enganxades a la tapa de la màquina), per tocar un instrument musical (partitures), per construir un aeroplà a escala (expressats en les instruccions), per fer trucs de màgia (passos per a fer el truc) o, fins i tot, per a fer receptes de cuina (passos de la recepta).

Hi ha moltes formes de descriure algoritmes, incloent-hi el llenguatge humà, el pseudocodi, els diagrames de flux o els llenguatges de programació.

En aquest CodeLab aprendrem a descriure algoritmes amb diagrames de flux, implementant el joc: "Guess the number!"

Accedeix a la web https://app.drakon.tech/signup i crea't un compte d'usuari.

Un cop hagis creat el compte, accedeix a l'IDE: https://app.drakon.tech/ide/doc/

Crea un mòdul fent clic al botó Create module. Posa-li de nom GuessNumber.

Apareixerà un diàleg amb les propietats del mòdul:

Fes clic a Basement... i introdueix GuessNumberGame()

Fes clic a Save i després Create.

S'haurà creat el mòdul GuessNumber. Fes clic sobre el mòdul i apareixerà la següent finestra:

Ja ho tenim tot preparat per a crear algoritmes mitjançant diagrames de flux.

Fes clic al botó "Create diagram". Posa-li el nom GuessNumberGame.

Apareixerà la finestra per a dibuixar el diagrama:

Descriu la primera instrucció fent doble clic sobre el rectangle:

Escriu el codi per a generar un nombre aleatori entre 0 i 100:

hiddenNumber = Math.floor(
    Math.random() * 100
)

Afegeix una altra instrucció fent clic sobre la icona i escollint el punt on vols afegir la instrucció:

Escriu el codi de la instrucció per a inicialitzar els intents a 0:

tries = 0

Afegeix una altra instrucció a continuació (fent clic a la icona )

Escriu a dintre el següent codi per a demanar al jugador que introdueixi un nombre:

number = prompt(
    "Guess the hidden number!"
)

Afegeix una nova instrucció per a augmentar el comptador d'intents realitzats:

tries++

Ara introduirem un altre tipus d'instrucció, una Decisió. Comprovarem si el number que ha introduït l'usuari és igual al hiddenNumber, i en funció d'això decidirem si ha acabat el joc o ha de seguir tractant d'adivinar-lo.

Per a introduir una Decisió fes clic sobre la icona . Introdueix la Decisió a continuació de la darrera instrucció:

Escriu la instrucció que comprova si el number és igual al hiddenNumber:

number == hiddenNumber

Ara intercanviarem els camins per a que en cas de que el number sigui igual al hiddenNumber, el joc finalitzi.

Fes clic-dreta sobre la Decisió i selecciona l'opció "Swap Yes and No":

Abans de finalitzar el joc (en cas de que hagi encertat el hiddenNumber), mostrarem un missatge indicant el nombre d'intents que ha utilitzat:

alert(
    "You guessed the number in " + tries
)

Tal i com està de moment el flowchart, si el jugador endevina el nombre se li mostra el missatge de que l'ha encertat. Però si no l'endevina, podem veure que el camí que segueix l'algoritme (marcat en vermell a sota) és, efectivament, no mostrar-li el missatge, però no obstant el joc finalitza igualment:

Corregim el camí que segueix l'algoritme quan el jugador no endevina el número.

En aquest cas, el jugador ha de tornar a introduir un altre número, però li indicarem si el hiddenNumber era més gran o més petit que el number que havia introduït.

Per tant, en el camí del "No", necessitem fer una altra comprovació per veure si el hiddenNumber era més gran o més petit que el number.

Introdueix una nova Decisió al camí del "No":

Introdueix el codi per comprovar si el number és més gran que el hiddenNumber:

number > hiddenNumber

En cas de que sigui major, li ho indicarem així al jugador en el moment de demanar-li un altre número:

number = prompt(
    "Hidden number is lower than " + number
)

En cas de que NO sigui major, li ho indicarem així al jugador:

number = prompt(
    "Hidden number is higher than " + number
)

Ja només queda l'últim pas. Tal i com ho tenim ara, si el jugador endevina el nombre, el programa el felicita i acaba, però si no l'endevina li demana un altre, però també acaba. Corregim això últim.

En cas de que no l'endevini i li hem de demanar un altre nombre, el programa ha de tornar a la instrucció que suma un intent i després tornar a comprovar si l'ha encertat aquesta vegada.

Selecciona el cami que porta a End les dues instruccions que demanen un nou number a l'usuari, i recondueix-lo al punt just abans de la instrucció tries++

Ja està, ja hem acabat l'algorisme. Finalment queda així:

Per a executar el joc, fes clic a la icona del menú superior.

Fes clic a l'enllaç que et genera:

Endevina el número secret!