Curs BJC 2: Exercicis

2016-09-16

Snap! és un llenguatge de programació amigable per a no programadors i, com veurem en aquesta segona setmana del curs, permet personalitzar blocs. Fer-ho ens ajuda a estalviar feina, ja que els blocs personalitzats poden actuar com a funcions recurrents que podem cridar quan les necessitem.

Aquesta setmana se’ns parla de funcions (domain & range) i dels tipus de blocs a Snap! o Scratch (command -blocs rectangulars-, reporter -blocs rodons-, predicate -blocs punxeguts). La lectura de la setmana és el primer capítol de Blow to bits (2008).

Continguts del curs BJC

Recordatori

Per il·lustrar la creació de blocs, continuem amb els polígons. A la primera setmana del curs, se’ns animava a dibuixar quadrats i triangles. Ara bé, podem, directament, programar una figura a la que poder-li canviar la mida en qualsevol moment. Per fer-ho, elaborarem el nostre propi bloc. I és molt xulo! Veiem-ho!

Si recordem el quadrat que vam fer la setmana anterior, el bloc blau de moviment ens indicava el nombre de passos, és a dir, la mida del quadrat. Si en posem 50, surt petitet, si en posem 100, ja surt més gran… I així, anar fent. La cosa és que si ara vols fer un quadrat gran i, cinc minuts després, un de petit, hauràs d’escriure el codi dues vegades i perdràs molt de temps…I diuen que els programadors són tant mandrosos que s’inventen el que faci falta per estalviar-se feina. Què carai! Clar que sí! Que treballin les màquines! ;)

Deures 1: inputs

I aquest és el truc: fer-te el teu propi bloc de quadrat amb un nombre que puguis canviar quan vulguis. Per començar, haurem d’anar a Snap! Podem treballar online però si volem desar els canvis als projectes, ens haurem de registrar amb el nostre mail. Si acabes d’aterrar, potser t’interessa fer una ullada al tutorial introductori a Snap!

De fet, al tuto, hi ha tres entrades relacionades amb polígons i creació de blocs. Un cop ja sabem com dibuixar un quadrat, podrem reciclar els blocs de codi del quadrat per crear un bloc propi que dibuixarà un quadrat. Només cal entendre la lògica dels polígons (passos i graus) per crear qualsevol polígon, així que podem modificar graus i costats per crear triangles, hexàgons, octògons, etc. A més, com hem vist creant blocs propis, també podem afegir ranures de mida als blocs per poder controlar la grandària d’un polígon.

blocs-crea-bloc-dibuixa-triangle-editor

L’objectiu final d’aquest primer exercici pràctic és aconseguir un sol bloc per dibuixar una caseta. Aquest nou bloc de la caseta serà possible gràcies a dos blocs que haurem creat abans: el del quadrat i el del triangle. Posant el triangle damunt del quadrat obtindrem la caseta i, si posem moltes casetes, dibuixarem un poblet :)

Per tal de trastejar un nou bloc d’Snap!, el de “repetir fins que”, se’ns proposa dibuixar casetes fins a una posició determinada de l’escenari. Aquí va bé repassar una mica de què van les coordenades, que són imprescindibles per situar els objectes a la pantalla o escenari. A més, a l’entrada de les coordenades, també trobem un exemple d’ús del bloc “repetir fins que”.

Quan tinguem les coordenades controlades, ens serà fàcil dir-li al bloc “repetir fins que” que es dibuixi les casetes fins on vulguem. Si tenim temps, ens animen a crear un hexàgon i, un cop creat, a dibuixar un rusc! Perquè faci la figura del rusc s’ha de jugar una mica amb els graus de gir… sinó, dibuixarà un hexàgon sobre un altre…

Deures 2: polígons

Després se’ns proposa un altre exercici: crear un bloc polivalent amb el que puguem dibuixar qualsevol polígon de qualsevol mida :) Tal com hem fet amb les ranures anteriors al quadrat, al triangle i a la caseta, crearem dues ranures en un sol bloc. El polígon es pot dir “polígon X costats X mida” (en anglès li han posat “draw polygon with X sides of lenght X”).

Les X seran els foradets on després li posarem el número que vulguem. Si volem que el polígon tingui 3 costats per crear un triangle, ho indicarem al primer foradet (costats). Si li posem 6, dibuixarà un hexàgon i si n’hi posem 8, un octògon, i així anar fent… Amb el segon input o ranura podrem controlar la mida del polígon, així que si volem que mesuri 100 píxels o 50, ho haurem d’indicar al segon input o ranura.

Es poden crear blocs molt “locus”, com aquest per dibuixar totes les flors imaginables :) A més del nombre de pètals i la mida de la flor, podem escollir els costats, la posició de la flor a l’escenari, l’angle, el color i l’ombra. Tela, Manela!

bjc-block-flor

Si t’entrebanques molt i molt, deixo aquí el meu bloc de polígon :)

Bloc de polígon

Deures 3: the for block

Després de trastejar tres blocs de control (“per sempre”, “repetir vegades” i “repetir fins que”), en veurem un tercer, el “The FOR block”. Aquest bloc, però, no surt per defecte quan obrim Snap! El trobarem si cliquem a la icona de l’arxiu primer i, després, a l’opció “Importa eines”. Si passem el cursor pel damunt de l’opció, ens apareixerà un missatget indicant què fa aquesta opció. I el que fa és que “Carrega la llibreria oficial de blocs avançats”. Entre ells, trobarem aquest “The FOR block”, que diu “For i = 1 to 10”. Aquests blocs, de moment, estan en anglès.

!

Aquest bloc permet nombrar una variable (on posa “i” en taronja podem escriure el que vulguem) que indica a quina repetició som. Com a exemple, se’ns posa tot un seguit de blocs de “digues”. Cada bloc diu un número arrencant per 1 i simula que un personatge compta, tot dient: 1,2,3,4…

Imaginem que volem que compti fins a 100. Seria una bajanada escriure 100 vegades 100 números diferents. Ja comentàvem que els programadors/es tenen fama de ser molt mandrosos/es i que sempre se les empesquen per estalviar-se feina. Ben fet que fan :) Així que, per no posar innecessàriament 100 blocs gairebé iguals al nostre projecte, farem servir aquest bloc avançat.

Primer posem un sol bloc “digues durant 1 segons” (o els que vulguem) dins del bucle del nou bloc “the FOR block”. I després, arrosseguem la “i” fins al text del bloc d’aparença “digues”… Tachán! Veurem com compta tot solet de 0 a deu amb només dos blocs i no 10! Per trastejar una mica, podem fer-li fer un compte enrere. Al FOR block, haurem d’escriure 10 enlloc d’1 i 0 enlloc de 10. Tachán! Ja tenim un compte enrere :)

Per trastejar encara més, se’ns fa fer un exercici: hem de comptar de dos en dos, de 0 a 30. Houston!!!, no em surt! Per què segueix comptant després de 30 si li he posat de 0 a 30? Misteri… Aviam si me’n surto… També ens fan fer una “Squiral”, que és una espiral quadrada, així que haurà de girar 90 graus. Si variem els graus, es fan figures geomètriques molt xules, com flors: si posem 110 graus… Oi que sembla una carxofa? És divertit anar canviant el número de graus i veure formes diferents: sembla un caleidoscopi!

A mi m’agraden les formes del 92, 126, 175 i 225 :) També ens fan fer alguna la figura més propera a l’espiral, que es fa trastejant els blocs de moviment i gir. Apa, a provar… Si no te’ns surts gens gens, aquí la meva espiral.

Ara ens fan fer nius de quadrats. Primer hem de fer un quadrat normal amb ranura per la mida i, després, un bloc “nest squares” (quadrats “anidados”, que no em surt en català… “aniuats” o “niuat” no ho trobo…Coses de l’idioma, hehe). El nou bloc “nest squares” també ha de tenir ranura i l’input que posem dins determinarà quants quadrats es dibuixen. La conya marinera és que cada quadrat ha de ser més gran que el seu precedent a mesura que es dibuixen. El dibuix que ens ha de sortir és aquest:

bjc-quadrats

El FOR block serveix per comptar i dibuixar “floretes” però també serveix per lletrejar! (“spell” en anglès). Ara, toca crear un bloc que digui “Que tinguis un bon dia!” Com trobo que és molt llarg, n’he creat un altre que lletreja: “WOW, mola!” ;)

bjc-spell block

Snap!Lab – Tres en ratlla