4. Didàctica de la programació
lloc: | Odissea |
Curs: | Aprenent a programar: Scratch orientat a la robòtica - Macrokudi 8 - Versió 23-24 (2n Torn) |
Llibre: | 4. Didàctica de la programació |
Imprès per: | Enric Álvarez Nebot |
Data: | diumenge, 10 de març 2024, 00:27 |
1. Bloc propi de moviment
Apropant-nos a la robòtica amb Scratch
La gran diferència que trobem entre les aplicacions pròpies de cada robot –mBlock, Blockly, EdScratch, LEGO Spike– i l'Scratch és en els blocs de moviment.
El robot, al ser un element físic, sempre es desplaçarà a través d'un motor i unes rodes i, per tant, la forma de representar-ho a l'aplicació serà diferent en funció del robot.
Per a posar un exemple: si volem que un robot avanci, en cadascuna de les apps ho farà d'una manera diferent:
Robot Codey Rocky - Aplicació mBlock

- D'una banda el percentatge de potència, és a dir, la velocitat a la que es mourà el motor.
- D'altra banda el temps de moviment.
El robot es mourà a una velocitat determinada, que la podem modificar, durant un temps determinat, que també el podem canviar.
Robot Dash - Aplicació Blockly

- D'una banda la distància recorreguda, expressada en centímetres.
- D'altra banda la velocitat de moviment: molt lent (very slow), lent (slow), normal (normal), ràpid (fast), molt ràpid (really fast).
El robot es mourà els centímetres que es posin al bloc en concret, i amb la velocitat associada (que modificarà el temps de desplaçament).

- D'una banda la velocitat, que oscil·la entre 1 i 10.
- D'altra banda es pot escollir la segona variable entre centímetres o polzades (distància) o segons (temps).
El robot es mourà els centímetres, polzades o segons que es posin al bloc en concret, i amb la velocitat associada.

- El nombre de rotacions, a les quals se'ls pot assignar un valor en centímetres.
- D'altra banda la velocitat de moviment, expressat en percentatge sobre la potència total.
El robot es mourà els centímetres que es posin al bloc on s'associa a cada rotació, i tantes rotacions com se li digui a la velocitat (potència) definida.

- D'una banda el temps, expressada en segons.
- D'altra banda la velocitat de moviment, expressada en revolucions per minut.
Al segon bloc:
- La distància recorreguda, expressada en centímetres.
I amb l'Scratch, com simulo el moviment del robot?
Per a fer-ho hem creat un bloc propi, on es poden definir el nombre de passos que es vol que el robot es mogui.
Aquest bloc ens permet que el robot llisqui (i per tant veiem el moviment poc a poc enlloc de "teletransportar-se") poc a poc per recórrer la distància que li especifiquem, que estarà doblada (es mou 2 passos cada 0,01 segons enlloc de 1, pel que es desplaçarà el doble del que li indiquem) per fer més àgil aquest moviment.
Aquest bloc el podreu trobar als projectes que fareu servir per fer les tasques, dins de la categoria "els meus blocs".
2. Seqüències
Seqüències d’instruccions
Els programes es componen de seqüències d'instruccions que s’executen per realitzar una tasca. Les seqüències d’instruccions són una sèrie d'ordes, una rere l’altre. Cada pas es segueix en ordre, quan el pas anterior s'ha completat. El resultat d'un programa dependrà de les ordres i de com s'organitzen.
els programes tenen una estructura seqüencial aquesta estructura és aquella en què una acció segueix l'altra. Les tasques se succeeixen de manera que la sortida d’una és l’entrada de la següent i així successivament fins al final del procés.
Aquesta sèrie de passos específics per solucionar un problema o resoldre una tasca es denomina algoritme.
En el nostre dia a dia, per resoldre certes situacions seguim una seqüència d'instruccions, per exemple, en cuinar un pastís, per arribar a un destí de viatge, quan construïm un moble, quan plantem una llavor...
Has pensat mai, com podries desglossar en petites instruccions el moment de fer-te l'esmorzar? No és mateix agafar una tassa i abocar el suc, que abocar el suc i després agafar la tassa. Un altre exemple, evidentment, és que primer torrem el pa i posteriorment posem la melmelada. Al revés seria una mica desastrós, oi?
Quan programem el que fem és donar instruccions pas a pas a un ordinador sobre què ha de fer i en quin ordre. Les instruccions han de ser prou petites perquè els ordinadors les entenguin, han de ser clares i detallades. Si no, l'ordinador s'equivocarà o farà coses diferents dels que pensàveu que havíeu programat.
Anem a Scratch:
Per exemple, crearem la seqüència de un programa on el nostre robot avanci 100 passos endavant, esperi 1 segon giri 180 graus, esperi 1 segon més, i torni a avançar 100 passos.
Cliqueu al següent enllaç per la tasca: "Seqüències".
3. Bucles o repeticions
Bucles
Un bucle és acció que es repeteix un cop rere l'altre.
En la vida quotidiana fem coses en bucle constantment, per exemple, quan fem una sèrie d'exercicis al gimnàs o quan fem voltes a un circuit. Utilitzem paraules com <sempre que...>, <fins que...> o <repeteix 20> en bucle.
En programació els bucles són blocs de codi o instruccions que es repeteixen un cop rere l'altre. Alguns bucles s'executen sempre (bucles infinits). D'altres tenen alguna cosa que els atura, com el bucle comptador. I d’altres que es repeteixen mentre es compleix una condició.
Com creem repeticions amb Scratch?
Per crear repeticions amb Scratch, podem utilitzar aquests tres blocs:
Bucle "per sempre":
El bloc “per sempre” executa les instruccions de manera infinita. Aquest bloc de codi es troba dins de la categoria "Control".
Exemple de programa
Bucle "repeteix":
El bloc “repeteix” executa les instruccions un determinat nombre de cops. Aquest bloc de codi es troba dins de la categoria de "Control".
Exemple de programa:
Dins del bloc es col·loquen ordenades les accions a repetir. Les accions es repeteixen el nombre indicat de vegades i després continua executant els següents blocs.
En aquest exemple el nostre robot avançaria 50 passos, rotaria 90 graus i repetiria aquesta acció 4 vegades, executant un quadrat i acabant en la posició inicial.
Bucle "repeteix fins _":
El bucle “repeteix fins _” repeteixen un grup d'instruccions fins que no es compleixi una condició. Aquest bloc de codi també es troba dins de la categoria de "Control".
Exemple de programa:
Aquest programa farà que el nostre robot avanci fins que no detecti el color vermell.
Cliqueu al següent enllaç per la tasca: "Fem una figura geomètrica".
4. Condicionals
El condicional
En el nostre dia a dia, estem prenent decisions constantment:
-
Si prems el botó de l’ascensor, faràs que vingui.
-
Si el semàfor està vermell, atura't, si no, camina.
A l’hora de programar és important saber dir com prendre decisions i què fer en determinades situacions. D'això se’n diu selecció o condicionals.
Els condicionals o selecció són estructures de programació que responen a una condició. Permeten diversificar un programa i fer una de dues opcions diferents. Si passa alguna cosa determinada, fes això; si no, fes una altra cosa.
Per exemple:
El tren segueix recte pels raïls fins que arriba a un encreuament de camins, és a dir, a la condició. Aquest encreuament simbolitza el compliment d'una acció o una altra, si les agulles de les vies estan cap a la dreta, el tren girarà a la dreta, si no, seguirà recte.
Com ho programem?
Per crear un condicional amb Scratch disposem de dos blocs (SI i el SI - SI NO). Aquest es troben a la categoria “Control”.
1. Penseu una pregunta o condició. Com a condicions, podem utilitzar o bé sensors, o bé operadors, col·locant-los dins del lloc adequat. Penseu sempre que esteu fent una pregunta, que s'ha de poder contestar amb CERT o FALS.
Si < Pregunta o condició >
2. Segon pas, dieu al programa el què voleu que faci (accions) SI la condició és CERTA.
En aquest cas, si el robot està tocant el color vermell avançarà 5 passos.
si: seqüència d'accions a realitzar si la condició és CERTA
3. No és obligatori, però també li podeu dir que voleu que faci SI NO és CERTA. Amb un bloc SI - SI NO, col·loqueu a la part superior les accions a realitzar si la condició es compleix (CERT), i a la part inferior les accions a realitzar si no es compleix (FALS).
Per exemple: Si el robot està tocant el color vermell avançarà 5 passos. En el moment en que no ho estigui fent, emetrà el so d'una alarma per avisar-nos que ha sortit del circuit vermell.
si no: Accions a realitzar si la condició és FALSA
Cal destacar que els condicionals s'executen només una vegada, a no ser que estiguin dins d'un bloc “per sempre”.
5. Expressions i operadors
Operadors
Dins de la categoria de lògica, trobem els blocs d'operadors de comparació, els operadors matemàtics i les expressions booleanes que us permetran treballar amb diferents expressions.
Operadors matemàtics
Els operadors matemàtics engloben les diferents operacions matemàtiques (suma, resta, multiplicació, divisió…) i altres elements relacionats amb elles.
Per exemple, podem programar des de sumes, restes o multiplicacions… fins a tornar el residu de la divisió de dos nombres o obtenir un número aleatori amb el bloc “escollir aleatoriament entre 2 numeros”.
Anem a mostrar un exemple de programa que utilitza el nombre aleatori.
Treballant l'estadística, volem veure quantes vegades aleatòriament el nostre robot va cap a l'esquerra o cap a la dreta en un espai predefinit.
Per a fer-ho, el que fem és assignar-li al gir a la dreta un valor entre -45 graus (és a dir, girar en sentit contrari –cap a l'esquerra– amb un angle màxim de 45º) i 45 graus (girar cap a la dreta amb un angle màxim de 45º. El codi emprat és el següent:
El resultat final és el següent:
Operadors de comparació
Els operadors de comparació permeten comparar dos valors del mateix tipus, tal com el seu nom indica.
Si la comparació és certa el resultat serà verdader. En cas contrari, el resultat serà fals.
En general, això serveix per prendre decisions.
Per exemple, volem programar el nostre robot per a que, un cop activat, doni voltes fins que el volum de l'espai on es troba sigui acceptable (en aquest cas hem definit acceptable com a <8, però caldria fer proves). Cada cop que es vulgui utilitzar, caldrà tornar-lo a activar –en el nostre cas fer-li clic al damunt. En un robot de la dotació podria ser iniciar el programa amb l'aplicació o apretar un polsador del robot–.
A la part superior esquerra podeu veure el volum de so captat pel micro i com, un cop arriba a un valor inferior a 8, s'atura.
Operadors lògics
Les expressions booleanes utilitzen els operadors <<i>> <<o>> <<no>> per combinar valors i retornar un resultat: cert o fals (o 1 i 0). En altres paraules, la lògica booleana és fer afirmacions que combinin expressions amb paraules com <<i>> <<o>> <<no>>.
L’operador lògic “i” combina dues condicions. Perquè el resultat sigui vertader, les dues condicions han de ser verdaderes.
L’operador lògic “o” també permet combinar dues condicions. Però, perquè el resultat sigui cert, només és necessari que una de les dues condicions sigui verdadera.
L’operador lògic “no” inverteix el valor vertader d’una condició.
Per exemple, en el cas que mostrem repetirà l'acció –avançar 5 passos– fins que no estigui tocant el color negre.
Això amb l'Scratch es veuria així:
Cliqueu al següent enllaç per la tasca: "Activem el robot amb so".
6. Variables
Una variable és un lloc on el programa pot emmagatzemar una dada, com un número o una cadena de text. Aquestes dades no són fixes, sinó que poden anar canviant (variant) al llarg del nostre programa.
Per exemple, en un joc, la variable pot guardar i mostrar informació com ara la puntuació, el temps que queda o el nom de l'usuari.En resum, una variable és semblant a una capsa on podem guardar coses importants a dins, en el nostre cas, dades.
Com treballar amb variables a Scratch:
Per mostrar-vos com treballar amb les variables fareu un programa molt senzill on creareu un comptador de temps.
El primer que heu de fer és definir la variable. Aneu a la categoria de variables i cliqueu sobre "crear una variable".
Veureu que apareixerà un quadre de diàleg per posar el nom de la variable.
És com posar una etiqueta per saber que hi ha a dins de la "capsa". Per tant, trieu un nom que descrigui bé el seu contingut, és a dir, les dades que conté la variable. Així tot serà més fàcil d'entendre. En aquest cas, posarem el nom de "comptador".
Un cop definida la variable, veureu que dins de la categoria apareixen els blocs que permeten treballar amb ella: assigna el valor de la variable, canvia el valor de la variable i mostrar la variable.
Ara ja esteu preparats per començar a programar.
El primer que fareu és inicialitzar el programa, és a dir, donar un valor inicial a la variable ( en el nostre cas). Si no li doneu cap, voldrà dir que la capsa és buida, és a dir, que la variable no té valor. En aquest cas, el valor serà 0. Si la casella amb el nom de la variable està marcada, aquesta apareixerà a la pantalla de Scratch.Tot seguit, programeu les ordres per canviar
el valor de la variable. En aquest cas, cada cop que pasi un segon, se
sumarà 1 a la variable comptador. És a dir el valor de la variable
incrementarà en un (1,2,3,4...).
Cliqueu al següent enllaç per la tasca: "Fem comptadors".
7. Funcions
La Funció
Una funció és un conjunt d'instruccions que fan una tasca, tornant normalment un resultat. Podem dir que són petits programes que s'utilitzen dins d'un programa més gran.
Serveixen per no repetir les mateixes instruccions al llarg d'un programa, o per fer trossets petits d'un programa que fan accions molt concretes i, que a més, es poden copiar d'un programa a un altre.Si teniu un tros de codi que feu servir molt, segurament serà més útil convertir-lo en una funció. És una bona manera per segmentar i seqüenciar el codi d'un programa.
Una manera molt senzilla d’explicar una funció podria ser a través del següent exemple:
Us heu d’imaginar una obra teatral. Tenim un programa principal que executa l’obra de teatre. Dins d’aquest programa hi ha diverses funcions que representen les accions que poden fer cadascun dels personatges que fan l’obra de teatre.
Com crear funcions a Scratch
A l'inici d'aquest llibre s'ha explicat la creació d'un bloc de moviment per simular el desplaçament del robot. A Scratch, la categoria "Els meus blocs" és la que defineix les funcions. És a dir, cada bloc que creem i que inclou una sèrie d'instruccions a realitzar, és el que anomenem una funció.
Per fer-ho, hem de crear un bloc nou. A Scratch podem crear funcions de diferents tipus, depenent de quina sigui la seva finalitat.
Després de
fer-ho, apareix a l'escriptori de programació un nou bloc amb el nom de
la funció. També uns comandaments que permeten cridar la funció. Dins de
l'esdeveniment heu d'introduir les instruccions que s'executaran cada
cop que es cridi la funció.