|  |  | DGS a través de ejemplos

### DGS a través de ejemplos

La herramienta para crear un DGS esta disponibe al seleccionar la sección Valor Numérico dentro del menú contextual que se obtiene al hacer click con el botón derecho del ratón en el fondo de la figura. Un DGS puede recibir de 0 a n parámetros de entrada.

Después de haber escogido el DGS, basta hacer click en los objetos geométricos (o numéricos) que constituirán los parámetros de entrada. Al terminar de escoger los parámetros de entrada, se debe hacer click en un área libre del fondo de la figura; con ello, el script sera visible.

En lo que sigue nos proponemos trabajar con algunos ejemplos de DGS que permitirán comprender fácilmente su uso y su potencialidad.

Los DGS, como las macros, dan una dimensión particular a DR. GEO, Le permiten, junto con las macros5, llevar a cabo cosas que los autores del programa no incorporaron o no quisieron incorporar: "Ir hacia donde ellos no fueron o no quisieron ir".

Es también importante comprender que la mayor parte de las funciones del intérprete GNU Guile están disponibles a través del DGS. Esto es particularmente cierto para las librerías de funciones6 que utilizaremos ampliamente.

##### DGS sin parámetros de entrada

El procedimiento para crear un script sin parámetros de entrada es el siguiente :

1. Después de haber escogido Script Guile de DR. GEO , hacer click en el lugar de la figura donde se desee colocar el script. Como deseamos que el script no tenga parámetros de entrada, debemos prestar atención y no hacer click erróneamente en algún objeto geométrico; no sea que DR. GEO considere ese objeto como un parámetro de entrada 7.
2. Una vez que el DGS ha sido creado, aparece en la figura la cadena de caracteres "Dr. Genius". Todo script recién creado contiene un comando predeterminado que muestra ese mensaje. Usted puede editarlo seleccionando propiedades del objeto.
3. Una vez que esta herramienta ha sido seleccionada, hacer click sobre el script -o para ser más precisos sobre su valor - de su elección. Una ventana se abrirá con el contenido del script y le permitirá editarlo. En lo que sigue, usaremos ese diálogo para escribir nuestros ejemplos.

###### Un generador de números aleatorios y otros ejemplos

Si usted desea un generador de números aleatorios, nada es más simple: simplemente su script contiene únicamente la siguiente línea (recuerde hacer click en aplicar y luego cerrar...):

    (random 10)

Así, cada vez que se dibuja la figura, este script devuelve un número entero aleatorio en el intervalo [0 ; 10[ (es decir, [0 ; 10) )

Si usted prefiere un número real en el intervalo [0 , 1), utilice el siguiente script:

    (random:uniform)

(!) Algunas precisiones :

- El valor devuelto por el script es el valor calculado por la última línea del script. En nuestros ejemplos, se trata del valor devuelto por la función que usamos.
- La última línea debe devolver un número real; de otro modo DR. GEO imprimirá "Resultado no imprimible".
- Si lo que se desea es mostrar el valor de una variable, basta poner esa variable en la última línea.

###### Cálculo de algunas constantes comunes

Para calcular el valor aproximado de pi :

    (acos -1)

O de e :

    (exp 1)

Los valores devueltos por estos DGS pueden ser inmediatamente utilizados como todos los demás valores numéricos que DR. GEO genera. Por todo lo anterior, los DGS son verdaderamente nuestros aliados. Pero eso no es todo, los DGS pueden hacer muchas más cosas interesantes cuando reciben parámetros de entrada. Enseguida veremos cómo.

##### DGS con al menos un parámetro de entrada

El procedimiento para crear un DGS con un parámetro de entrada es esencialmente el mismo. Justo después de haber seleccionado la herramienta script, basta hacer click sobre el objeto que será el parámetro de entrada y enseguida hacer click sobre el fondo de la figura, en el lugar donde se desee tener al nuevo script.

Enseguida, dentro del script, el parametro de entrada será referido por la variable a1. En caso de tengamos dos o más parámetros de entrada, utilizaremos, respetando el orden en que fueron seleccionados, las variables a1, a2, a3, a4, etc. dependiendo del número de objetos seleccionados.

Dependiendo del objeto que seleccionemos, diversos métodos estarán disponibles para obtener valores, como pueden ser coordenadas, longitud, etc. Estos métodos son mostrados en la Sección Métodos de referencia para un DGS.

En lo que sigue, expondremos gradualmente un ejemplo no muy complicado en que construiremos la curva de una función así como la tangente en un punto de la curva que podremos mover.

La figura final es mostrada por DR. GEO. Esta se llama slope.fgeo

La figura que obtendremos

###### Definir un valor en un intervalo dado.

En una nueva figura, empezamos colocando dos puntos y el segmento que ellos determinan. Sobre este segmento colocamos un punto libre al que llamaremos "¡Muéveme!"("Move me!" en inglés). Este punto nos sirve para determinar un valor numérico que identifica la posición del punto dentro del segmento; esto lo lograremos dentro del script.

En seguida crearemos un script que tiene como único parámetro de entrada el punto "¡Muéveme!".

Ya que a1 es la variable en el script del punto "¡Muéveme!", el script siguiente (que llamaremos Xo) nos dará un valor decimal comprendido entre [-10 ; 10] .

    (define x (getAbscissa a1))
    (* 20  (- x 0.5))

Cabe aclarar algunas cosas. En la primera línea, `(getAbscissa a1)` permite obtener la "abscisa curvilínea" del objeto al que se refiere a18 . En la segunda línea calibramos el valor. En este caso la expresión significa 20 ×( x -0.5). Dado que ésta es la última línea del script, el resultado de esta última operación será el valor que el script devuelva, y será un número decimal en el intervalo [-10;+10] como se deseaba9.

Finalmente, llamemos este script Xo. (Esto se puede hacer en el menú contextual: seleccione otros, luego apariencia, y haga click en el script para ponerle nombre).

###### Dibujar la gráfica de una función.

El valor obtenido por el script precedente nos servirá, a través de otro script, para calcular la imagen del punto bajo la función x -> cos(x). Este segundo script tiene como parámetro de entrada al script Xo.

    (define x (getValue a1))
    (cos x)

Subrayemos que en `(getValue a1)` el objeto al que se refiere a1 no es el punto "¡Muéveme!", sino el script Xo, y que no estamos obteniendo la "abscisa curvilínea" de un punto, sino el valor de un número (en este caso del script Xo, que dentro del segundo script es llamado a1). Llamamos a este script Yo

Por ejemplo, si el punto "¡Muéveme!" estaba a la mitad entonces su "abscisa curvilínea" es 0.5, de modo que Xo toma el valor 20 ×( 0.5 -0.5)=0, y Yo toma el valor cos(0)=1.

Enseguida crearemos el punto Mo de coordenadas (Xo ; Yo). Es un punto de la curva de la función x -> cos(x). Para dibujar la porción de la gráfica con dominio [-10 ; 10], crearemos el lugar geométrico del punto Mo cuando el punto "¡Muéveme" describe el segmento. Con ello obtendremos la gráfica!(Recordar que para crear Mo, hay que seleccionar, en el menú contextual, punto, coordenadas y luego hacer click en los scripts que dan las coordenadas. Para lograr el lugar geométrico, recordar seleccionar en el menú contextual curva, lugar geométrico y luego seleccionar los puntos "¡Muéveme!" y Mo.)

###### Calcular y dibujar la tangente a la gráfica en un punto

Para dibujar la tangente en Mo=(Xo,Yo), hace falta tener la pendiente en ese punto. Usando Cálculo Diferencial, sabemos que la pendiente esta dada por la derivada, que en este caso es x -> -sin(x) evaluada en el punto Xo. De modo que crearemos un script que tiene como parámetro de entrada al script Xo :

    (- 0 (sin (getValue a1)))

La notación prefija (i.e "* 2 3" en vez de "2 * 3") utilizada por Scheme/Guile puede parecer poco intuitiva, pero es cuestión de simplemente acostumbrarse a ella; es simplemente decir "El producto de dos y tres" en lugar de "dos por tres".

Llamemos al script recién creado "Pendiente en el punto Mo".

Resta, pues dibujar la tangente. Para esto calcularemos, primero, las coordenadas de un segundo punto - M1 - de esa recta.

Comencemos por su abscisa (No confundir con la "abscisa geométrica"); por ejemplo: X1 = X0 + 2. Para hacer esto crearemos un script que tendrá como parámetro de entrada al script Xo , y al que llamaremos X1:

    (define x1 (getValue a1))
    (+ x1 2)

Encontremos en este momento la ordenada del punto M1. Para ello necesitamos:

- Mo (referencia a1) ;
- la pendiente en Mo (a2) ;
- la abscisa X1 (a3).(No confundir con "la abscisa geométrica")

Después de seleccionar como parámetros de entrada al punto Mo, a la pendiente en Mo(que llamamos "Pendiente en el punto Mo", "Slope at Mo" en inglés), y a X1, determinamos la ordenada de M1, que llamaremos Y1, a través del siguiente cálculo:

Yo + 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)

En relación con la función `(getCoordinates a1)` en la que a1 debe ser una referencia a un objeto de tipo punto, el método devuelve una lista que contiene las coordenadas del punto, en este caso Mo. La instrucción `car` permite extraer el primer elemento de esta lista; la instrucción `cadr`, el segundo. El resto del script debe resultar claro.

Habiendo nombrado este último script Y1, construimos el punto M1=(X1 ; Y1), y, para terminar, construimos la tangente (MoM1). (Para esto ya no necesitamos scripts; podemos usar el menú, escogiendo punto dadas sus coordenadas y la recta dados dos puntos).

Por supuesto, habría sido posible utilizar unos dos o tres scripts en lugar de la gran cantidad que usamos. Sin embargo, esperamos que estos pequeños ejemplos logren en usted el deseo de experimentar por usted mismo los DGS.

|  |  | DGS a través de ejemplos