Metodi di riferimento per le Figure Scheme per DR. GEOFigure Scheme per DR. GEOAlcuni esempi

Alcuni esempi

Scheme è per sua natura un linguaggio di alto livello, per questa ragione, una volta definita una figura, avremo a disposizione tutta la sua potenza per eseguire, ad esempio, azioni ricorsive su parti della figura o per utilizzare funzioni aleatorie per modificarla ad ogni sua comparsa sul foglio di lavoro. In altri termini le FSD sono allo stesso tempo svincolate dall'interfaccia grafica e potenziate dalla presenza di Scheme.

Una FSD è un file con estensione .scm creato attraverso un editore di testo che, una volta aperto in DR. GEO attraverso il comando File->Valuta, genera una figura sul foglio di lavoro.

Iniziamo studiando un semplice esempio di FSD:

 

(new-figure "Figura")

Si tratta della più semplice FSD che si possa definire. Una volta valutato il file in DR. GEO appare una nuova figura vuota con nome "Figura". Ripetendo il comando (new-figure "Figura") verranno create quante figure si desiderano.

Vediamo un secondo esempio:

(new-figure "Figura")
(lets Point "A" free 1.2 -2)

Questa FSD definisce una figura con un punto libero A di coordinate (1,2 ; -2). Come si può vedere la sintassi utile per la definizione dell'oggetto geometrico è intuitiva e espressa in un linguaggio molto vicino a quello comune. Osserviamo inoltre come questa definizione sia sostanzialmente identica nella forma a quella di tutti i comandi che permettono di definire i rimanenti oggetti:

  1. inizia con la parola chiave lets che indica che si desidera costruire un nuovo oggetto;
  2. segue la categoria a cui appartiene l'oggetto, in questo caso Point.
  3. quindi si scrive il nome dell'oggetto, nel nostro caso A, sempre tra virgolette ". Se non si desidera dare alcun nome all'oggetto è sufficiente scrivere:
    ""
  4. infine si precisa il tipo di oggetto, ossia il tipo di punto, che nel nostro caso è libero free;
  5. il tipo di oggetto è seguito da una lista di argomenti specifici che, nel nostro esempio, coincide con la coppia di coordinate che definiscono il punto A.

Vediamo un terzo esempio:

(define (triangolo p1 p2 p3)
  (Segment "" extremities p1 p2)
  (Segment "" extremities p2 p3)
  (Segment "" extremities p1 p3))

(define (casuale)
  (- 8 (* 16 (random:uniform))))

(new-figure "Figura")

(lets Point "A" free (casuale) 0)
(lets Point "B" free 5 0)
(lets Point "C" free (casuale) 5)

(triangolo A B C)

Questo esempio è di particolare interesse in quanto ci mostra tre aspetti essenziali:

  1. come introdurre costruzioni di più alto livello non previste inizialmente in DR. GEO. Qui abbiamo definito la funzione triangolo che a partire da tre punti qualsiasi costruisce un triangolo. Possiamo confrontare questa costruzione con quella che potremmo definire attraverso una macro concludendo che il primo metodo è più potente;
  2. come definire funzioni associate: nel nostro caso la funzione casuale che ritorna un numero decimale casuale compreso tra -8 e 8. Attraverso questa funzione, ogni volta che viene aperta la figura, il disegno apparirà diverso;
  3. l'uso della parola chiave lets non è obbligatorio, ma legato alla necessità di definire o meno dei riferimenti per l'oggetto creato. Ad esempio nella funzione triangolo non abbiamo bisogno di alcun riferimento ai segmenti creati; al contrario quando definiamo i punti A, B e C sono necessari dei riferimenti. In questo caso i riferimenti hanno lo stesso nome5 senza virgolette: A, B e C. Nel seguito chiameremo questi riferimenti simboli; ciò per utilizzare in modo corretto la terminologia del linguaggio Scheme. In questo modo quando la funzione triangolo viene chiamata vengono passati ad essa come parametri i simboli A, B e C, che vengono utilizzati per definire i vertici del triangolo.

Osserviamo che quando si definiscono i segmenti non vengono assegnati ad essi dei nomi in quanto DR. GEO fa questo automaticamente: nel nostro caso i segmenti saranno [AB], [BC] e [AC].

Per concludere questa sezione vediamo un ultimo esempio:

(lets Point "A" free 1 0)
(lets Point "B" free 5 0)
(lets Line "d1" 2points A B)

(send A color yellow)
(send A shape round)
(send A size large)
(send B masked)
(send d1 thickness dashed)

I primi tre comandi permettono di costruire due punti e una retta. La parte che qui maggiormente interessa riguarda la serie di comandi preceduti da send. Questo comando permette di comunicare con un oggetto di cui si dispone del simbolo relativo. In questo caso i simboli di cui disponiamo sono A, B e d1. La struttura di send consiste in primo luogo di un primo argomento che identifica l'oggetto con cui si vuole comunicare e di un secondo argomento che definisce il messaggio. Dal terzo argomento in poi seguono informazioni legate alla natura del messaggio. Ad esempio (send A color yellow) invia il messagio color con parametro yellow: in questo caso il punto viene dipinto di giallo. Il significato dei rimanenti comandi dovrebbe a questo punto risultare ovvio. In ogni caso ritorneremo su essi nel seguito.

Terminata questa breve visita guidata alle Figure Scheme per Dr. Geo nella sezione seguente verranno esposti i comandi disponibili per definire le diverse FSD.


Hai domande o commenti da fare?
Vuoi partecipare alla stesura di parti di questo manuale?
-> Contatta Andrea Centomo all'OFSET (acentomo at ofset dot org) o aggiungiti alla lista per la diffusione di DR. GEO.

Metodi di riferimento per le Figure Scheme per DR. GEOFigure Scheme per DR. GEOAlcuni esempi