![]() | ![]() | ![]() | 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:
""
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:
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.
![]() | ![]() | ![]() | Alcuni esempi |