![]() | ![]() | ![]() | DGS attraverso esempi |
Il comando per creare un DGS è disponibile all'interno della sezione riguardante i numeri del menu azionabile cliccando con il tasto destro del mouse in un punto dello sfondo o nella barra delle applicazioni. Un DGS può ricevere da 0 a n parametri di ingresso.
Subito dopo aver selezionato il comando per attivare uno script si deve cliccare sugli oggetti geometrici di ingresso e, successivamente, cliccare in un punto del foglio di lavoro dove si desidera venga visualizzata l'output dello script.
Conviene a questo punto passare direttamente all'analisi di qualche esempio di DGS che permetta di comprendere facilmente le potenzialità di questo strumento. Macro e DGS conferiscono a DR. GEO un aspetto speciale1 nel panorama dei programmi di studio interattivo della geometria euclidea. Oltre a questo è importante comprendere come, attraverso i DGS, vengono messe a dispozione la maggior parte delle funzionalità dell'interprete GNU Guile. Ciò vale in particolare per la libreria delle funzioni matematiche di cui qui viene fatto largo uso.
Dopo aver selezionato il comando script, clicchiamo sullo sfondo del foglio di lavoro nel punto in cui desideriamo compaia il valore di uscita dello script. Se lo script non ha parametri in ingresso si deve prestare attenzione a non cliccare erroneamente su oggetti della figura in quanto questi verrebbero considerati da DR. GEO come parametri di ingresso dello script2. Una volta collocato lo script appare la scritta "Dr. Genius". Ogni volta che viene generato un nuovo script di default viene fatta comparire questa scritta. Per editare lo script si deve azionare il comando per modificare le proprietà di un oggetto. Azionato questo comando si clicca sullo script o, più precisamente, sul suo valore e automaticamente si aprirà una finestra di dialogo con il contenuto dello script. In questa finestra è possibile editare lo script stesso.
Il codice da editare per ottenere un numero casuale è molto semplice:
(random 10)
Ogni volta che si clicca sullo script compare un numero casuale tra 0 e 9.
Se si vuole generare un numero casuale appartenente all'intervallo [0;1[, possiamo utilizzare lo script:
(random:uniform)
Per calcolare un valore approssimato di pigreco è sufficiente scrivere:
(acos -1)mentre per calcolare un valore approssimato di e :
(exp 1)
I valori restituita da questi DGS si possono utilizzare alla stregua di un qualsiasi altro valore numerico editabile in DR. GEO. I DGS sono vostri amici per tutte queste piccole cose. Tuttavia la loro amicizia si sente maggiormente quando vengono loro passati dei parametri in ingresso.
Il procedimento per creare un DGS con un parametro in ingresso è simile a quanto visto in precedenza. Dopo aver selezionato il comando per attivare uno script, si clicca sugli oggetti che vengono passati allo script come parametri di ingresso, quindi si clicca in un punto del foglio di lavoro dove si desidera venga visualizzato il numero che rappresenta l'uscita dello script.
All'interno dello script il riferimento al primo parametro di entrata è rappresentato dalla variabile a1. In caso di due o più parametri di ingresso si utilizzeranno, rispettando l'ordine in cui sono stati selezionati gli oggetti, le variabili a1, a2..., an.
A seconda del tipo di oggetto a cui si fa riferimento sono disponibili diversi metodi per ottenere valori numerici, coordinate, lunghezze ecc... e i loro codici sono contenuti nel capitolo Metodi di riferimento per DGS.
In quanto segue proponiamo un esempio - non il più semplice - esaustivo della procedura di creazione di uno script. L'esempio, che svilupperemo gradualmente, riguarda la costruzione del grafico di una funzione e della tangente in un punto variabile del grafico.
La figure finale è contenuta nella documentazione di DR. GEO e prende il nome di slope.drgenius
In un foglio di lavoro bianco disegnamo due punti e il segmento che li congiunge. Su questo segmento sistemiamo un punto che chiamiamo "Move me!".
Questo punto ci serve per determinare valori numerici in un dato intervallo. Infatti il seguente script, il cui parametro a1 si riferisce a "Move me!", restituisce un numero decimale nell'intervallo [-10;+10]:
(define x (getAbscissa a1)) (* 20 (- x 0.5))
La prima linea dello script definisce una variabile x il cui valore (getAbscissa a1) coincide con l'ascissa curvilinea dell'oggetto geometrico a cui si riferisce a13 ossia del punto "Move me!". Nella seconda riga dello script, che traduce l'espressione algebrica 20 ·( x - 0.5), si fa in modo che il valore restituito dallo script appartenga all'intervallo [-10;+10]. Finalmente chiamiamo questo script X0.
Il valore numerico generato dallo script precedente ci serve ora per calcolare, attraverso un secondo script, la sua immagine attraverso la funzione x -> cos(x) :
(define x (getValue a1)) (cos x)
Sottolineiamo che in (getValue a1) l'oggetto a cui si riferisce a1 non è il punto "Move me!" ma lo script X0. Chiamiamo questo secondo script Y0.
Infine creiamo il punto M0 di coordinate (X0;Y0) che è un punto del grafico della funzione x -> cos(x). Per disegnare il grafico costruiamo il luogo del punto M0 quando "Move me!" descrive tutto il segmento su cui giace.
Per determinare la tangente nel punto M0 del grafico calcoliamo in primo luogo la pendenza della retta tangente. Consideriamo allora la derivata prima della funzione x -> -sin(x) nel punto X0 e scriviamo lo script:
(- 0 (sin (getValue a1)))
che ha come riferimento l'ascissa X0. Le notazioni di tipo Scheme/Guile possono sembrare inizialmente poco intuitive ma dopo aver familiarizzato con esse appariranno semplici. Chiamiamo lo script "pendenza in M0". Nel momento in cui M0 viene spostato sul grafico la pendenza viene ricalcolata.
Non resta che disegnare la tangente. Per fare questo calcoliamo le coordinate di un secondo punto M1 di questa retta.
Iniziamo dall'ascissa ponendo, ad esempio, X1 = X0 + 2 e scriviamo uno script, che chiamiamo X1, con parametro d'ingresso lo script X0:
(define x1 (getValue a1)) (+ x1 2)
Per determinare l'ordinata di M1 abbiamo bisogno di:
Nello script seguente calcoliamo l'ordinata di M1 calcolando Y0 + m(X1 - X0):
(define x0 (car (getCoordinates a1))) (define y0 (cadr (getCoordinates a1))) (define m (getValue a2)) (define x1 (getValue a3)) (+ (* m (- x1 x0)) y0)
Qualche parola relativamente alla chiamata (getCoordinates a1), in essa a1 deve riferirsi a un oggetto di tipo punto. Il metodo restituisce in questo caso una lista contenente le coordinate del punto che per noi è M0. Scrivendo car si estrae dalla lista il primo valore, scrivendo cadr il secondo. La parte rimanente dello script dovrebbe risultare chiara.
Chiamiamo questo script Y1 e costruiamo il punto M1 di coordinate (X1;Y1) e finalmente la tangente M0M1.
Osserviamo che, al posto di tutti questi script, sarebbe stato possibile scriverne solo due o tre, anche se più complessi. La speranza è comunque di aver dato un quadro complessivo ed esaustivo di utilizzo dei DGS.
![]() | ![]() | ![]() | DGS attraverso esempi |