Martina Palazzolo (IC Ilaria Alpi di Milano) ha proposto una generalizzazione del fiocco di neve. Spiega Martina:
Lo script permette di disegnare un fiocco di neve che abbia un numero P di punte, una lunghezza L dei rami che partono dal punto centrale e un numero D di ramificazioni per ogni ramo lungo L.
[code language=”text”]
CLEARSCREEN
HOME
HIDETURTLE
P= 12; NUMERO DI PUNTE, USATO PER DETERMINARE L’ANGOLO RIGHT (360/P)
D = 4; NUMERO DI RAMIFICAZIONI PER OGNI RAMO PRINCIPALE
L= 60; LUNGHEZZA DI OGNI RAMO PRINCIPALE DAL CENTRO ALLA PUNTA
PENCOLOR “blue”
PENWIDTH 2
REPEAT P [
PENUP
FORWARD L
REPEAT D [
BACK L/D
PENDOWN
RIGHT 360/P
FORWARD L/D
BACK L/D
LEFT 360/P*2
FORWARD L/D
BACK L/D
RIGHT 360/P
]
RIGHT 360/P
[/code]
È 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:
[code language=”text”]
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
]
[/code]
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:
[code language=”text”]
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
]
[/code]
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!
Con questo inizia una serie di post lampo, ciascuno con la soluzione di un esercizio proposto nel manuale in fieri su LibreLogo. Proporrò anche esercizi o schede didattiche proposte da altri.
Questa che segue è una soluzione dell’esercizio sulla funzione RECTANGLE. Per ora non metto il riferimento alla pagina perché il manuale è lungi dall’essere nella sua forma definita (quando mai…?). Dico “una soluzione” e non “la soluzione” perché con il codice le cose si possono fare sempre in molti modi diversi.
[code language=”text”]
RECTANGLE [40mm, 20mm]
PENUP FORWARD 2,5mm LEFT 90
FORWARD 2,5mm RIGHT 90 PENDOWN
RECTANGLE [35mm, 15mm]
PENUP FORWARD 2,5mm LEFT 90
FORWARD 2,5mm RIGHT 90 PENDOWN
RECTANGLE [30mm, 10mm]
PENUP FORWARD 2,5mm LEFT 90
FORWARD 2,5mm RIGHT 90 PENDOWN
RECTANGLE [25mm, 5mm]
HIDETURTLE
[/code]