Disegnare con Python e Turtle - Lezione 00

Python è un linguaggio molto versatile in svariati ambiti. Uno è molto interessante per approcciarsi al mondo del coding e della robotica nell'ottica delle competenze STEM. Vediamo ad esempio come utilizzare questo linguaggio in modo imperativo per disegnare forme geometriche o, se preferite un altro punto di vista, per simulare gli spostamenti di un veicolo robotico. Adatto agli studenti più piccoli e, con cicli e strutture dati complesse, anche per i più grandi delle scuole superiori.

Cos'è Turtle?

Turtle è una libreria aggiuntiva di Python che, come si intuisce anche dal nome, ha a che fare con una piccola tarturighina che possiamo comandare con semplici comandi per tracciare sullo schermo delle forme geometriche colorate. Un vero e proprio disegno!

Come possiamo sperimentarla?

Ci sono due modi: se abbiamo un pc o portatile possiamo installare un IDE di sviluppo, un programma che serve apposta per scrivere codice Python ed eseguirlo. In questo caso suggerisco di installare il più semplice e funzionale IDLE incluso nel software di base che ci servirà comunque per usare Python, o se volete qualcosa di più complesso Thonny o se avete mire da sviluppatore in erba PyCharm Free Community Edition. Per i lettori che frequentano i miei corsi, troveranno sicuramente installati sui pc IDLE e PyCharm.

Il secondo modo è più semplice ed anche per i meno "smanettoni" risulta decisamente più pratico. Possiamo usare Python con uno degli svariati IDE online sul web. Suggerisco l'ottimo Repl.it. Ovviamente lo svantaggio principale è che ci serve una connessione internet sempre attiva ed ovviamente non ha le stesse caratteristiche avanzate di un IDE da scaricare sul PC ma per gestire piccoli script è più che adeguato. Su Repl esistono quattro voci sul Python che potete trovare scorrendo la pagina principale in basso: Python, Python 2.7, Python (with turtle), Python, Tkinter, PyGame.  Mentre sconsiglio fortemente Python 2.7 che è ormai obsoleto, Python e la sua versione con interfaccia grafica possono essere utilizzati per le esercitazioni presenti su questo sito. PyGame è invece una libreria per realizzare videogiochi col Python. A noi, nello specifico per queste lezioni, ci occorre cliccare la voce "Python (with Turtle)".

Inoltre, per gli studenti soprattutto, vi consiglio di creare un account sul sito Repl.it alla voce "Sign in". Con l'account i nostri script di codice vengono archiviati così da poterli riusare e controllare anche da altre postazioni, che sia a scuola, che a casa.

 

Il primo frammento di codice

Vediamo subito un primo frammento di codice e proviamo a commentarlo assieme per capire il funzionamento. Di seguito riporto proprio uno snapshot dell'ambiente di lavoro di Repl.it per commentarlo assieme

 

Il codice lo possiamo digitare sulla parte sinistra o lo potete copiare dallo specchietto qui sotto. Nella parte destra compare una pagina bianca dove ci sarà il nostro disegno ed un secondo tab "console", dove potremo andare a leggere eventuali errori del nostro codice o inserire di volta in volta dei dati per far evolvere il nostro software.

import turtle

pina = turtle.Turtle()

pina.color("red")
pina.forward(100)

 

La prima riga è un import. Dobbiamo immaginare che, quando scriviamo un programma, abbiamo un foglio bianco ed una penna con cui sappiamo fare/scrivere solo poche lettere dell'alfabeto italiano. Allora se vogliamo usare anche gli ideogrammi cinesi, ci tocca aggiungere alla nostra penna un qualcosa in più. LA stessa cosa vale per il software: scriverlo da zero è complicato e lungo, allora vale la pena, spesso, avvalersi del software scritto da altri e compatibile con quello che vogliamo fare. Queste si chiamo "librerie" che vanno quindi importate per aggiungere funzionalità al nostro software. Come si usa una libreria? Se non c'è il professore a spiegarvela, sicuramente c'è della documentazione online dove indica cosa e come può essere usata. La documentazione di turtle è qui, ma più in generale le librerie le trovate descritte sul sito https://docs.python.org/3.3/library/. L'inglese è d'obbligo per il provetto programmatore ma con un po' di fortuna e una buona ricerca Google si può trovare un'alternativa italiana.

 

A questo punto possiamo utilizzare la nostra libreria. Prima cosa da fare: crearci un cursore per disegnare; questo cursore lo voglio chiamare con un nome familiare: "pina". Pina è quella che si dice una variabile, un qualche cosa che funge da contenitore e che conterrà, in questo caso, il nostro cursore per disegnare. Per costruire un oggetto cursore basta scrivere in minuscolo turtle seguito dal punto e la parola a lettera grande Turtle. Questo è un metodo, una funzionalità della nostra libreria che, non a caso, ha lo stesso nome. A questo punto alla nostra variabile "pina" possiamo dire cosa fare e non fare. Ad esempio gli cambiamo colore dando il comando punto color e all'interno delle parentesi, specifichiamo con che parametro colorarsi ovvero rosso. L'istruzione successiva chiede alla nostra variabile "pina" di spostarsi in avanti di 100 punti dello schermo.

A questo punto, premiamo il bottone run col triangolino rovesciato e, se tutto è scritto bene, sulla destra ci compare il disegno di una riga tracciata dal nostro cursore che si sposta!

Proviamo a disegnare un quadrato col nostro cursore. Prima di tutto dobbiamo far girare il cursore o verso destra o sinistra. Il comando da impartirgli è rispettivamente pina.right() e pina.left(). Come parametro tra parentesi inseriamo l'angolo da fargli fare.

import turtle

pina = turtle.Turtle()

pina.color("red")
pina.forward(100)
pina.left(90)

Il lettore ormai non sarà stupito se per chiudere il quadrato replichiamo avanti, gira per disegnare il lato destro; avanti, gira per disegnare il lato sopra e avanti finale per chiudere il tutto con il lato sinistro. Per dare un tocco carino al nostro esercizio, prima del comando forward() cambiamo anche colore col comando color() già visto. Il codice finale è quindi il seguente e ricordiamoci di premere il pulsante play/run per vedere il cursore muoversi.

import turtle

pina = turtle.Turtle()

pina.color("red")
pina.forward(100)
pina.left(90)

pina.color("blue")
pina.forward(100)
pina.left(90)

pina.color("green")
pina.forward(100)
pina.left(90)

pina.color("orange")
pina.forward(100)