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.


spirale

 poligoni reg