[BASE Cinque - Appunti di Matematica ricreativa]
Come usare le variabili e i cicli per creare un programma flessibile.
Sintesi. Un percorso pratico per capire come generalizzare il disegno dei poligoni regolari con la turtle graphics. Partendo dal triangolo equilatero, introduciamo i cicli e le variabili per guidare la tartaruga a disegnare autonomamente un qualsiasi poligono regolare fino a sfiorare la circonferenza.
Per iniziare, facciamo disegnare alla nostra tartaruga un triangolo equilatero. Scriviamo le seguenti istruzioni nell'editor di LibreLogo.
forward 200 right 120 forward 200 right 120 forward 200 right 120

Figura. Triangolo equilatero ottenuto con la turtle graphics
Nota didattica.
L’angolo di rotazione indica di quanti gradi la tartaruga cambia direzione tra un segmento e il successivo della linea spezzata che sta disegnando.
Nel caso di un poligono, l’angolo di rotazione corrisponde all'angolo esterno del poligono, non a quello interno!
Per un triangolo equilatero:
Per scrivere più velocemente un programma possiamo usare le istruzioni abbreviate.
fd 200 rt 120 fd 200 rt 120 fd 200 rt 120
Se vogliamo disegnare un triangolo equilatero più grande o più piccolo, dobbiamo modificare manualmente le misure di tutti e tre i lati. Per evitare questo lavoro ripetitivo, conviene usare una variabile e assegnarle il valore desiderato.
Per creare una variabile e assegnarle un valore usiamo la sintassi:
lato = 38
In questo caso, lato è il nome della variabile e 38 è il suo valore, espresso con un numero intero o decimale. La misura degli angoli di rotazione, invece, rimane costante a 120°.
Scriviamo lo stesso programma sfruttando la nostra variabile:
lato = 38 fd lato rt 120 fd lato rt 120 fd lato rt 120

Figura. Triangoli equilateri di misure diverse ottenuti con la turtle graphics
Osserviamo che per disegnare il triangolo dobbiamo ripetere per 3 volte consecutive la coppia di istruzioni:
fd lato rt 120
In programmazione si usa un ciclo, che in LibreLogo si esprime con questa sintassi:
lato = 150 repeat 3 [ fd lato rt 120 ]
Le parentesi quadrate [ ] aprono e chiudono il blocco di istruzioni
che costituisce il ciclo.
Per rendere visivamente più chiara la
struttura del programma, spostiamo le linee di codice interne al ciclo di qualche spazio
verso destra. Questo rientro si chiama indentazione ed è una
buona pratica per scrivere codice ordinato e facile da leggere!
L’indentazione aiuta a visualizzare meglio la gerarchia delle istruzioni, soprattutto quando si lavora con cicli annidati o sequenze più complesse.
Aspetti tecnici importanti.
Riprendiamo la procedura che disegna un triangolo equilatero e apportiamo due piccole modifiche: il ciclo si ripete 4 volte e l'angolo di rotazione diventa 90°.
In questo modo otteniamo un quadrato.
l=200 repeat 4 [ forward l right 90 ]

Figura. Quadrato ottenuto con la turtle graphics
Pentagono regolare: l'angolo di rotazione (come abbiamo già visto, è l'angolo esterno del pentagono) misura:
360/5 = 72°
Usiamo una nuova variabile, a, che esprime l'angolo di rotazione e le assegniamo un valore tramite un calcolo.
l=150 a=360/5 repeat 5 [ forward l right a ]

Figura. Pentagono regolare ottenuto con la turtle graphics
Esagono regolare: l'angolo di rotazione (angolo esterno dell'esagono) misura:
360/6 = 60°
Facciamo un passo avanti e introduciamo un'altra variabile, nl, che esprime il numero dei lati del poligono.
Inoltre, calcoliamo il valore dell'angolo a tramite una formula che usa a sua volta la variabile nl. In questo modo, se cambia il numero dei lati, l'angolo si adegua automaticamente.
l=150 nl=6 a=360/nl repeat nl [ forward l right a ]

Figura. Esagono regolare ottenuto con la turtle graphics
A questo punto si capisce che possiamo usare questa procedura generale per disegnare un qualunque poligono regolare di n lati semplicemente cambiando alcuni valori.
Osserviamo che:
Informaticamente, diciamo che questa procedura ha solo due parametri indipendenti: la lunghezza del lato (l) e il numero dei lati (nl).
L'ampiezza dell'angolo di rotazione (a) è invece una variabile dipendente, perché il computer la calcola in base a quanti lati abbiamo scelto.
Proviamo per esempio a disegnare un poligono regolare con 19 lati:
l=10 nl=19 a=360/nl repeat nl [ forward l right a ]

Figura. Poligono regolare di 19 lati ottenuto con la turtle graphics
Con le istruzioni che abbiamo visto finora, è possibile disegnare una circonferenza?
Risposta: una quasi-circonferenza.
La turtle, con l'istruzione forward n, può tracciare solo segmenti, quindi non può disegnare una circonferenza.
Ma possiamo farle disegnare un poligono regolare con tantissimi lati molto corti. Il risultato è arbitrariamente vicino a una circonferenza.
Ecco un esempio di poligono con 360 lati lunghi 2.
l=2 nl=360 a=360/nl repeat nl [ forward l right a ]

Figura. Poligono di 360 lati, una quasi-circonferenza, ottenuto con la turtle graphics
L'esecuzione di questo programma è lenta. Per fortuna LibreLogo ha un comando diretto che permette di disegnare una circonferenza velocemente:
circle n
circle 120 ; disegna una circonferenza (o un cerchio colorato) di diametro 120 con il centro nella posizione della turtle
Per esempio, disegniamo un quadrato con un cerchio a ogni vertice.
l=120 nl=4 a=360/nl repeat nl [ forward l circle 120 right a ]

Figura. Cerchi ottenuti con l'istruzione circle
Note didattiche.
forward n (fd n)
forward 10 ; muove avanti di 10pt
back n (bk n)
back 10 ; muove indietro di 10pt
left n (lt n)
left 90 ; ruota la tartaruga di 90 gradi in senso antiorario
right n (rt n)
right 90 ; ruota la tartaruga di 90 gradi in senso orario
penup (pu) ; penna su, la tartaruga si sposterà senza disegnare
pendown (pd) ; penna giù, la tartaruga si sposterà disegnando
hideturtle (ht) ; nasconde la tartaruga (fino al comando showturtle)
showturtle (st) ; mostra la tartaruga
home ; muove la tartaruga al centro dello schermo
clearscreen (cs) ; cancella gli oggetti di disegno dal documento
pensize n (ps n)
pensize 3; lo spessore della linea è di 3 punti
pencolor "colore" (pc "colore")
pencolor [n] (pc [n])
pencolor "red" ; colore impostato per nome
pencolor [5] ; colore impostato per codice numerico
pentransparency n
pentransparency 80 ; definisce la trasparenza della penna all'80%
penstyle "stile"
penstyle "solid" ; linea piena (impostazione predefinita)
penstyle "dashed" ; linea tratteggiata
Nota didattica.
Il disegno di forme precostituite non è una caratteristica tipica della turtle graphics ma LibreLogo offre questa possibilità. In particolare, il disegno del cerchio conviene perché è molto veloce.
Inoltre, anche i testi scritti su un disegno sono considerati oggetti grafici.
circle n
circle 100 ; disegna una circonferenza (o un cerchio colorato) di diametro 10 con il centro nella posizione della turtle
point ; disegna un punto nella posizione della turtle con le dimensioni e il colore della penna
label "testo"
label “Ciao mondo!” ; stampa il testo "Ciao mondo!" a partire dalla posizione e dall'orientamento della turtle
Vediamo un esempio con l'applicazione di label e point.
d1=19 d2=30 repeat 7 [ pensize 2 pencolor “blue” pd forward 120 pu pensize d2 pencolor [18] pd point pu label “Ciao mondo!” back 120 forward 80 pensize d1 pencolor [8] pd point pu back 80 right 360/7 ]

Figura. Scritte generate con l'istruzione label, cerchi generati con l'istruzione point
LibreLogo supporta due tipi di numeri e passa automaticamente da un tipo all'altro.
Creazione e assegnazione
a=5
b=a-3
a=a+1
Operazioni aritmetiche
7+2 ; addizione
7-2 ; sottrazione
7*2 ; moltiplicazione
7/2 ; divisione
7**2 ; elevamento al quadrato
7**0.5 ; radice quadrata
repeat numero [ comandi ] ; ripete numero volte il blocco di [ comandi ], attenzione allo spazio che separa le parentesi dalle istruzioni
; scrittura su un'unica linea
repeat 10 [ forward 10 left 45 circle 10 ]
; scrittura su più linee con indentazione
repeat 10 [ forward 10 left 45 circle 10 ]
Il colore si può assegnare in vari modi. Per le istruzioni dettagliate e complete, rimando al manuale ufficiale dei LibreLogo.
Qui riporto solo i codici numerici e i nomi dei 24 colori principali.
0, black
1, silver
2, gray/grey
3, white
4, maroon
5, red
6, purple
7, fuchsia/magenta
8, green
9, lime
10, olive
11,
yellow
12, navy
13, blue
14, teal
15, aqua
16, pink
17, tomato
18, orange
19, gold
20, violet
21, skyblue
22, chocolate
23,
brown
24, invisible
Crediti.
Contenuti originali di Gianfranco Bo, rilasciati nel pubblico dominio (CC0).
LibreOffice è un marchio registrato di The Document Foundation. Gli screenshot
dell’interfaccia provengono dal software LibreOffice (v.26.2).
Pace e bene a tutti.
GfBo
Data creazione: luglio 2026
Ultimo aggiornamento: luglio 2026
Sito Web realizzato da Gianfranco Bo