Esercizio 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
TO albero ramo IF ramo < 2 [ STOP ] ; fine della ricorsione FORWARD ramo ; tronco LEFT 45 ; ramo di sinistra albero(ramo/1.67) RIGHT 90 ; ramo di destra albero(ramo/1.67) LEFT 45 ; torna alla radice BACK ramo END CLEARSCREEN HOME HIDETURTLE albero(200) |
Esercizio 2
Angolo di 180° tra i rami e rapporto di riduzione inferiore (LIBRELOGO impiega alcune ore…)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
TO albero ramo IF ramo < 2 [ STOP ] FORWARD ramo LEFT 90 albero(ramo/1.45) RIGHT 180 albero(ramo/1.45) LEFT 90 BACK ramo END CLEARSCREEN HOME HIDETURTLE albero(200) |
Esercizio 3
Introducendo un parametro per il livello della ricorsione è più semplice gestire altre caratteristiche dell’albero: spessore dei rami
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
TO ALBERO n d ; n=ricorsione, d=dimensione IF n >= 1 [ PENSIZE n ; spessore del ramo FORWARD d d2=d/1.67 ; prossima dimensione LEFT 45 ALBERO(n-1, d2) RIGHT 90 ALBERO(n-1, d2) LEFT 45 BACK d ] END CLEARSCREEN HOME HIDETURTLE PENCAP “ROUND” ALBERO(9, 200) |
Esercizio 4
Utilizza delle liste con le costanti colore, spessore, dimensione per ogni livello della ricorsione
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
GLOBAL c, s, d ; colore, spessore, dimensione TO ALBERO n GLOBAL c, s, d IF n >= 1 [ PENSIZE s[n] PENCOLOR c[n] PENDOWN FORWARD d[n] LEFT 45 ALBERO(n-1) RIGHT 90 ALBERO(n-1) LEFT 45 PENUP BACK d[n] ] END CLEARSCREEN HIDETURTLE PENCAP “ROUND” c=[“0”, “lime”, “lime”, “green”, “teal”, “chocolate”, “brown”, “brown”, “maroon”, “maroon”] ricorsione=9 dimensione=240 s=(ricorsione+1)*[0] d=(ricorsione+1)*[0] s[ricorsione]=30 d[ricorsione]=dimensione FOR i IN RANGE ricorsione-1 0 -1 [ s[i]=s[i+1]*0.75 ; spessore diminuisce... d[i]=d[i+1]/1.67 ; dimensione diminuisce... ] ALBERO(ricorsione) |
Vedi