Primers algoritmes i la seva codificació en Javascript

En aquest lliurament anem a aprofundir de manera més pràctica en el concepte d’algorisme i anem a veure els nostres primers programes en el llenguatge de programació Javascript. És una classe de el Curs de Programació que realitzem recentment a DesarrolloWeb.com / EscuelaIT.

En aquesta classe vam realitzar un parell d’exercicis interessants que ens ajuden a assentar de manera empírica els coneixements de la primera xerrada de Miguel Angel Alvarez, dedicada als algoritmes. De fet, aquesta part amb els primers algoritmes de Javascript i la part anterior, van ser realitzats en el mateix bloc o mateixa sessió. En realitat formen part de la mateixa classe, simplement nosaltres l’hem dividit perquè l’estudiant la pugui digerir millor.

La aquest segment de la classe es divideix al seu torn en dos exercicis realitzats per entendre millor els algoritmes . D’una banda vam realitzar la descomposició en anys, mesos i dies un nombre de dies donat. D’altra banda calculem la distància entre dos punts en un eix de coordenades 2D.

Exemple d’algorisme: anys, mesos i dies viscuts

Anem a suposar que pregunto a una persona (usuari) quants dies ha viscut. Em contesta alguna cosa com 10.000. Llavors vull fer un algoritme i el seu corresponent programa en Javascript per convertir aquest nombre de dies en un nombre d’anys, nombre de mesos i dies restants.

Per a aquest valor de dies, 10.000, el programa ens retornaria un dada com aquest: “Ha viscut 27 anys, 4 mesos i 25 dies.”. En simples paraules, l’algoritme que faríem servir per obtenir aquest resultat el podem veure a continuació.

Nota: Per simplificar els nostres càlculs suposarem que tots els anys tenen 365 dies i ens oblidem dels anys de traspàs. També suposarem tots els mesos igual a 30 dies.

1. Demano el nombre de dies viscuts de 2. Càlcul el nombre d’anys / 365 de 3. Als dies viscuts els trec els dies dels anys calculats. Aquesta operació és la resta de la divisió dels dies viscuts / 365. Aquest residu de la divisió són els dies restants que necessito per seguidament calcular el nombre de mesos. De 4. Sobre els dies restants calculo el nombre de mesos / 30 de 5. Als dies restants els trec els dies dels mese calculats. És la mateixa operació de la resta de la divisió dels dies restants / 30. Aquest residu de la divisió són els dies restants que em queden. De 6. Mostro els resultats, anys, mesos i dies restants calculats

En codi Javascript aquest algoritme el pots veure a continuació.

var diasVida = parseInt(prompt("Cuántos días has vivido",""));var numAnos = Math.floor(diasVida / 365);var diasRestantes = diasVida % 365 ;var numMeses = Math.floor(diasRestantes / 30);diasRestantes = diasRestantes % 30;alert("Ha vivido " + numAnos + " años, " + numMeses + " meses y " + diasRestantes + " días.");

Si vas entendre l’algoritme, aquest exercici no requereix moltes explicacions. Simplement per aclariments addicionals és millor que vegis el vídeo de la classe a el final d’aquest text.

És un exemple interessant perquè podem veure l’algoritme com una sèrie de passos seqüencials. Per calcular uns necessito haver calculat els anteriors.

Exemple d’algorisme: Distància entre dos punts

Si ens donen dos punts en un eix de coordenades de 2 dimensions, podem calcular la distància entre ells. Si aquests punts es troben alineats en l’horitzontal o en la vertical, calcular la distància és molt fàcil, ja que és el resultat de fer una simple resta.

Però què passa si aquests punts no estan alineats, són dos punts qualsevol? llavors la tasca no és tan senzilla.

En realitat tampoc és tan complex, només es tracta d’un problema de trigonometria que, si recordem el teorema de Pitàgores és molt senzill de resoldre. Si us fixeu, la distància entre dos punts és la hipotenusa d’un triangle rectangle i el teorema diu així: En un triangle rectangle la hipotenusa és igual a l’arrel quadrada de la suma dels quadrats dels catets. Això és el que expressa aquesta fórmula.

Si no ho enteneu encara no us preocupeu, hi ha desenes de vídeos a Youtube que ho expliquen millor que jo i més a poc a poc. De totes maneres, anem a veure-ho pas per pas, encara que ens centrarem no tant en la trigonometria com a expressar la solució en termes d’un algoritme.

1. Demano la coordenada x del punt a de 2. Demano la coordenada i del punt a de 3. Demano la coordenada x del punt b de 4. Demano la coordenada i de el punt b de 5. Càlcul la mida de la component horitzontal (catet 1) de 6. Càlcul la mida de la component vertical (catet 2) de 7. Elevo a el quadrat components vertical i horizontal8. Les màxim de 9. Aplico l’arrel quadrada de 10. Mostro la distància

Això en codi font Javascript és el següent.

var ax = prompt("Dame punto a coordenada x","");var ay = prompt("Dame punto a coordenada y","");var bx = prompt("Dame punto b coordenada x","");var by = prompt("Dame punto b coordenada y","");var comp_horizontal = (bx-ax);var comp_vertical = (by-ay);comp_horizontal = comp_horizontal * comp_horizontal;comp_vertical = comp_vertical * comp_vertical;var distancia = Math.sqrt(comp_horizontal + comp_vertical);alert(distancia);

La importància dels algoritmes

per acabar tornem sobre alguna cosa que ja s’havia expressat anteriorment, la importància dels algoritmes en la programació.

“en veritat són més importants els algoritmes que el codi”

Us sembla correcta aquesta frase?Pensar en el que hem comentat, un programa no és més que l’expressió d’un algoritme en un llenguatge de programació. L’algoritme, aquest concepte que hem conegut avui és més important per ser comuna a tots els llenguatges. El codi no és més que l’expressió d’aquest algoritme. És com una recepta de cuina, la Paella, coneguda arreu de món. Pots escriure la recepta d’aquest deliciós plat en espanyol, valencià o català, francès, japonès, etc. Però el cuiner quan es posi a fer la paella realitzarà els mateixos passos exactament independentment de l’idioma que parli. Així que és més important el procés en si que l’idioma amb el que vulguis expressar la recepta.

Conclusió

Hem après què és un algoritme, què és un programa, que escriure codi en un llenguatge de programació és una petita tasca de les que un programador ha de realitzar. Hem après que els algoritmes s’han de dissenyar amb compte, perquè són la part més important d’un programa.

A continuació pots trobar el vídeo amb la gravació d’aquesta classe. La classe va ser emesa en directe, però aquí tens la gravació per veure-la en el moment que vulguis.

Per acabar us deixo uns exercicis perquè penseu sobre ells:

Dissenyar un algoritme per: a Fer una truita a Creuar el carrer sense ser atropellat

Nota: per creuar el carrer observareu que heu de preguntar-vos coses que seran necessàries per a algoritmes més complexos i que formen part de les següents classes de el curs.

Fer l’algorisme i després el programa en Javascript: a Convertidor de metres a litres a Calcular l’àrea d’un cercle

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *