Come fare il fiocco di neve, proposto nel manuale in fieri su LibreLogo?
È sempre una buona idea quella di individuare dei problemi più semplici a partire dai quali sarà poi più facile risolvere il problema complesso: divide et impera! Non è quasi mai facile come in questo esempio. È questione di riflessione, spirito di osservazione, intuito. Dedico questo pensiero a coloro che ritengono, a torto, che la scrittura del codice sia un’operazione meccanica, come ho letto recentemente: una vera e propria eresia, che denota ignoranza completa della questione. Ebbene, proviamo quindi a costruire uno dei rami del fiocco di neve:
HIDETURTLE PENSIZE 2 L = 20 A = 60 REPEAT 3 [ FORWARD L LEFT A FORWARD L PENUP BACK L PENDOWN RIGHT A*2 FORWARD L PENUP BACK L PENDOWN LEFT A ]
Come si vede, abbiamo compattato il codice traendo vantaggio dalla funzione REPEAT, anche qui in base al principio divide et impera, perché se guardiamo bene la struttura di quel rametto, ci accorgiamo che è costituita da tre parti eguali. Ora possiamo estendere questo risultato ai sei rami del fiocco di neve, e già che ci siamo, lo coloriamo di celeste:
HOME HIDETURTLE PENCOLOR “blue” PENSIZE 2 L = 20 A = 60 REPEAT 6 [ REPEAT 3 [ FORWARD L LEFT A FORWARD L PENUP BACK L PENDOWN RIGHT A*2 FORWARD L PENUP BACK L PENDOWN LEFT A ] PENUP BACK L*3 PENDOWN RIGHT 60 ]
Va da se che a partire da uno qualsiasi di questi esercizi uno può costruire tutte le varianti che vuole. Se qualcuno ritiene di avere qualcosa di interessante da proporre me lo scriva, in un commento qui o per email. Pubblicherò volentieri la sua opera!
La scrittura del codice un’operazione meccanica? Magari!! sarebbe tutto più semplice 🙂
Comunque il tuo esercizio mi è piaciuto molto e dopo essermi bloccata al passaggio dal ramo singolo al fiocco di neve (beh … forse anche prima) sono riuscita a generalizzare lo script in modo che sia possibile ottenere un fiocco di neve con un numero variabile di punte, con rami di lunghezza e numero di ramificazione a scelta, cambiando i parametri inziali.
Te lo invio per mail. Mi sembra funzioni tutto. Almeno con i parametri che ho utilizzato per provare …
Se dovessi scrivere cosa è (soggettivamente) “scrivere codice” direi: una sfida interessante che può dare grande soddisfazione. Certo … anche frustrazione se non si calibrano bene le proprie competenze … e quindi, pensandoci bene, diventa anche un buon sistema di autovalutazione!
Domani lo provo e lo posto 🙂