Appendice D
Soluzioni

D.1 Capitolo 5

per quadrato 
  Ripeti 4[Avanti 150  DX 90] 
fine 
 
per triangolo 
  Ripeti 3[Avanti 150 DX 120] 
 fine 
 
per porta 
  Ripeti 2[Avanti 70 DX 90 Avanti 50 DX 90] 
fine 
 
per camino 
  Avanti 55 DX 90 Avanti 20 DX 90 Avanti 20 
fine 
 
per spostaAB 
  DX 90 Avanti 50  SX 90 
fine 
 
per spostaBC 
  SX 90 Avanti 50 DX 90 Avanti 150 DX 30 
fine 
 
per spostaCD 
  PS DX 60 Avanti 20 SX 90 Avanti 35 PG 
fine 
 
per casa 
  quadrato spostaAB porta spostaBC triangolo spostaCD camino 
fine

D.2 Capitolo 6

per supercubo 
  PulisciSchermo PS ImpPos[ -30 150] PG ImpPos[-150 150]  ImpPos[-90 210] 
  ImpPos[30 210] ImpPos[-30 150] 
  ImpPos[-30 -210] ImpPos[30 -150] ImpPos[30 -90] ImpPos[-30 -90] ImpPos[90 -90] 
  ImpPos[90 30] 
  ImpPos[-270 30] ImpPos[-270 -90] ImpPos[-210 -90] ImpPos[-210 -30] 
  ImpPos[-90 -30] ImpPos[-90 -150] 
  ImpPos[-210 -150] ImpPos[-210 -30] ImpPos[-150 30] ImpPos[-30 30] 
  ImpPos[-90 -30] ImpPos[90 150] 
  ImpPos[30 150] ImpPos[30 210] ImpPos[30 90] ImpPos[90 90] ImpPos[90 150] 
  ImpPos[90 90] ImpPos[150 90] 
  ImpPos[150 -30] ImpPos[90 -90] ImpPos[90 30] ImpPos[150 90] PS 
  ImpPos[-150 30] PG ImpPos[-150 150] 
  ImpPos[-150 90] ImpPos[-210 90] ImpPos[-270 30] PS  ImpPos[-90 -150] PG 
  ImpPos[-30 -90] 
  PS ImpPos[-150 -150] PG ImpPos[-150 -210] ImpPos[-30 -210] 
fine

D.3 Capitolo 7

D.3.1 Il robot

Il primo disegno è formato da sole figure piane, rettangoli, quadrati e triangoli. Ecco il codice:

per rec :lo :la 
  # draws a rectangular with choosen dimansion 
  Ripeti 2[Avanti :lo DX 90 Avanti :la DX 90] 
fine 
 
per square :c 
  # draws a square with side length :c 
  Ripeti 4[Avanti :c DX 90] 
fine 
 
per tri :c 
  # draws an equilateral triangle with side length :c 
  Ripeti 3[Avanti :c DX 120] 
fine 
 
per leg :c 
  rec 20*:c 30*:c square 20*:c 
fine 
 
per antenna :c 
  Avanti 30*:c SX 90 Avanti 10*:c DX 90 square 20*:c 
  PS Indietro 30 *:c DX 90 Avanti 10*:c SX 90 PG 
fine 
 
per robot :c 
  PulisciSchermo NascondiTartaruga 
  # body 
  rec 40*:c 280* :c 
  # legs 
  DX 90 Avanti 20*:c leg :c Avanti 40* :c leg :c Avanti 140*:c leg :c 
  Avanti 40*:c leg :c 
  # queue 
  PS SX 90 Avanti 40* :c PG DX 45 Avanti 110*:c Indietro 110* :c SX 135 
  # head 
  Avanti 180 *:c square 10*:c Avanti 30*:c square 10*:c DX 90 
  Avanti 10*:c SX 90 
  Avanti 20*:c DX 90 square 80* :c 
  # ears 
  Avanti 40*:c SX 60 tri 30*:c PS DX 150 Avanti 80 *:c SX 90 PG tri 30*:c 
  #  antennas 
  Avanti 40 *:c SX 90 Avanti 20*:c DX 90 antenna :c SX 90 Avanti 40*:c 
  DX 90 antenna :c 
  # eyes 
  PS Indietro 30 *:c PG square 10*:c DX 90 PS Avanti 30*:c PG SX 90 
  square 10*:c 
  # mouth 
  PS Indietro 30*:c SX 90 Avanti 30*:c DX 90 PG rec 10*:c 40*:c 
fine

D.3.2 La rana

per frog :c 
  PulisciSchermo NascondiTartaruga 
  Avanti 20 *:c DX 90 Avanti 50*:c SX 90 Avanti 40*:c 
  SX 90 Avanti 70 *:c DX 90 Avanti 70*:c DX 90 
  Avanti 210 *:c DX 90 Avanti 20*:c SX 90 Avanti 20*:c 
  DX 90 Avanti 90*:c DX 90 Avanti 20*:c SX 90 
  Avanti 20*:c DX 90 Avanti 90*:c DX 90 Avanti 20*:c 
  DX 90 Avanti 70*:c Indietro 50*:c SX 90 Avanti 40*:c 
  DX 90 Avanti 40*:c Indietro 40*:c SX 90 Indietro 20*:c SX 90 
  Avanti 50*:c SX 90 Avanti 40*:c DX 90 Avanti 70*:c 
  DX 90 PS Avanti 90*:c PG Ripeti 4[Avanti 20*:c DX 90] 
fine

D.4 Capitolo 9

per game 
  # initailaize number e counter 
  AssegnaVar "number Casuale 32 
  AssegnaVar "counter 0 
  loop 
fine 
 
per loop 
  Leggi [choose a number] "try 
  Se Numero? :try[ 
  # Se the value is a number 
  Se :number=:try[Stampa Frase Frase [you win in ] :counter+1 [tries]][ 
  Se :try>:number [Stampa [lesser]][Stampa [greater]] 
  AssegnaVar "counter :counter+1 
  loop 
  ] 
  ] 
  [Stampa [enter a valid number!] loop] 
fine