La grafica della tartaruga con il Python nel
GeoGebra
Dopo aver attivato la finestra di Python nell'ambiente
Geogebra come indicato in python_geogebra.html
si
notano tre schede e cioè "Interactive, Script, Events". Aprire Scripts
e digitare il seguente codice (oppure utilizzare il copia incolla):
t=Turtle()
def quadrato(lato):
n=0
while n<=3:
t.fd(lato)
t.turn_right(90)
n=n+1
con la prima istruzione si attiva una tartaruga cioè un "automa" che
può essere comandato per disegnare sullo schermo dell'elaboratore,
chiamata t. L'incollonamento con il rientro è caratteristico del Python
e viene eseguito automaticamente o quasi.
Con def inizia la definizione della nuova parola quadrato ovvero di una
procedura dotata del parametro lato.
Per eseguire il quadrato bisogna ripetere 4 volte avanti (in inglese
forward fd) di lato e gira a destra di 90 gradi.
Per fare ciò si utilizza un "ciclo" while e cioè: mentre che il valore
di n è minore od uguale a 3 devono essere eseguite le tre istruzioni
che seguono e quindi t deve andare avanti di lato, deve girare a destra
di 90 gradi e la variabile n deve essere incrementata ogni volta di
uno. In altre parole l'ultima istruzione è una assegnazione che dice
alla macchina: prendi il vecchio valore di n, aggiungi uno e
questo è il nuovo valore di n.
Adesso fare clic su Edit, Run Script. Nella finestra
grafica del GeoGebra dovrebbe comparire la tartaruga.
Per far eseguire il quadrato bisogna aprire la scheda Interactive che
si trova a fianco a Script ed in basso si nota una riga di
comando. Scrivere in essa:
quadrato(3) ed invio
vogliamo un quadrato di lato 3.
Ovviamente dopo si potrà disegnare un quadrato di lato diverso,
digitando quadrato(4) nella riga della scheda Interactive.
Tornando nella scheda Script si può aggiungere alla scittura precedente
def rotaz():
for n in range(8):
quadrato(3)
t.turn_right(45)
Definiamo una rotazione del quadrato di 45 gradi alla volta per otto
volte. Praticamente range(8) vuol dire conta da 0 a 7 cioè
otto volte. Ciascuna delle otto volte si ripetono le due
istruzioni seguenti.
per veolcizzare il disegno, conviene inserire (con invio)
dopo t=Turtle(), questa riga:
t.speed=0
Tornati nella scheda Interactive, basta adesso digitare rotaz() ed
invio.
In questo modo si capisce meglio come programmi anche complessi si
possono costruire con procedure semplici collegate.
Provate adesso a disegnare un triangolo equilatero, un pentagono, un
esagono, un ottagono. Tenere conto che l'angolo di cui ruota la
tartaruga è l'angolo esterno del poligono non quello interno.
In pratica ricominciare a scrivere lo script dopo t=Turtle() iniziare
con def esagono(lato): e poi far eseguire un ciclo di ripetizioni o for
i in range(n) oppure un ciclo while n <= ... . Quest'ultimo
deve essere preceduto dalla inizializzazione da zero n=0 e dentro il
ciclo si deve incrementare la variabile n.
Segue un esempio molto sofisticato della grafica della tartaruga:
le procedure poli(lato, angolo) ed anche spirale(lato, angolo). La
prima disegna tutti i possibili poligoni regolari ed intrecciati a
partire solo dal lato e dall'angolo.
Provare a disegnare poli(3,90) quadrato, poli(2,60) esagono
Provare pure poli(4,144) oppure poli(4,108)
Nel codice che segue il testo dopo il simbolo # è un commento
cioè viene ignorato dalla macchina
t=Turtle()
t.speed=0
def poli(lato,angolo):
t.fd(lato) #avanti(lato)
t.turn_right(angolo) #destra(angolo)
somma=angolo #somma serve per sommare gli angoli di
cui ruota la tartaruga
while somma % 360 != 0: # mentre il resto della
divisione per 360 si mantiene
t.fd(lato)
# diverso da 0 esegui avanti(lato) e le altre due
t.turn_right(angolo) # istruzioni.
Se somma arriva al valore 360 o
somma=somma+angolo #
multipli di 360 il resto della disione per 360
# diventa 0 e il ciclo si ferma
def spirale(lato, angolo):
while lato<15: #mentre lato si mantiene < di
500 esegui le istruzioni
t.fd(lato)
t.turn_right(angolo)
lato=lato+0.1
Anche la procedura spirale è interessante perchè disegna spirali
equiangole che incrementano il lato ogni volta dello stesso passo (nel
codice 0.1)
Provare spirale(0.5,90) oppure con sli stessi angoli di poli
Provare pure spirale(0.2,89) oppure spirale(0.2,121). Il risultato è
sorprendente.