¿Qué es GeoScript? GeoScript es un lenguaje de programación que crea
demostraciones geométricas para fines educativos. Permite
programar construcciones geométricas estáticas y animadas, con
o sin interacción del usuario. Los programas GeoScript no son
compilados en ejecutables, sino son interpretados a través del
programa intérprete "GeoScript.exe". GeoScript es gratis y puede distribuirse libremente; pero es prohibido cobrar alguna forma de pago por su distribución o uso.. ¿Qué es un archivo de programa GeoScript? Los programas GeoScript son simples archivos de texto sin formato, y pueden tener cualquier extensión. Por tanto, se pueden escribir programas GeoScript con cualquier editor de texto que guarda los documentos como texto sin formato (como p.ej. "Bloc de notas" en Windows). Documentos formateados (tales como *.rtf, *.doc, *.htm, etc.) no serán reconocidos por el intérprete GeoScript. Ejecutar GeoScript (para Windows) Al abrir "GeoScript.exe" directamente, se mostrará
un diálogo "Abrir archivo" donde se puede seleccionar
un programa a ejecutar. Aprender GeoScript Si recibiste el paquete completo de GeoScript, encontrarás allí un curso tutorial (tutorial.htm) con programas de ejemplo (tutorial*.geo), y también varios programas adicionales de ejemplo, que te ayudarán a comenzar. Referencia del
lenguaje GeoScript: Puesto que GeoScript es un programa de geometría, las variables que usa son objetos geométricos. Existen tres tipos de datos: puntos, rectas y círculos. Estos objetos tienen dos clases de propiedades: propiedades de posición y propiedades gráficas. Las propiedades de posición indican dónde un objeto está ubicado en el sistema de coordenadas. Estas propiedades son obligatorias. Las propiedades gráficas indican cómo un objeto aparece en la pantalla. Estas propiedades son opcionales. Si no asignas propiedades gráficas a un objeto, simplemente recibirá las propiedades predefinidas. La tabla siguiente muestra las propiedades disponibles de los objetos:
Los círculos pueden también ser circulos parciales (arcos), de los que puedes indicar los ángulos de su inicio y fin. Si inicio y fin son ambos cero, se trata de un círculo completo. (Este es el valor predefinido.) Estilo (para puntos) puede tener los siguientes valores:
Patrón (para rectas) es un valor de 16 bits que indica los píxeles que deben dibujarse, resp. no dibujarse, en un patrón repetido de 16 píxeles. Lo puedes indicar como un valor hexadecimal al estilo de BASIC (con el prefijo &H), o como un valor binario (con el prefijo &B). Así por ejemplo, &HFFFF (&B1111111111111111) es una línea llena. &HFF00 (&B1111111100000000) dibuja una línea interrumpida a espacios iguales (- - - - -). Un valor de 1 dibuja una línea punteada de puntos bastante espaciados; un valor de 0 no dibuja nada en absoluto. Los colores pueden indicarse de una de las formas siguientes: - Podrías preguntar por qué no hay otros elementos geométricos como elipses, parábolas, curvas de seno, curvar Bézier, etc. Pero éstos no son objetos de la geometría clásica propiamente dicho, porque no se pueden construir directamente con solo compás y regla. Por tanto decidí no incluirlos en el programa. Sin embargo, puedes construir tales curvas punto por punto, usando un procedimiento ANIMATION con la instrucción TRACE. (Vea los ejemplos de programas incluidos.) Datos inválidos: Puede suceder que ciertas instrucciones no rindan un resultado válido. (Por ejemplo, si intentas crear la intersección de dos rectas paralelas.) En este caso no se genera ningún error; pero el objeto correspondiente recibirá como valor la constante predefinida INVALIDO, y cualquier operación subsiguiente con este objeto como parámetro producirá a su vez resultados INVALIDOs (hasta que la variable sea nuevamente inicializada a un valor válido). Disposición de la pantalla e interfaz del usuario: De manera predefinida, la construcción
geométrica ocupa la ventana completa de la aplicación, excepto
20 píxeles al borde inferior donde se muestran tres botones:
"Pausa/Continuar", "Repetir", y
"Salir". Estos botones hacen simplemente lo que dicen:
Al hacer clic sobre el botón "Pausa", se detiene una
animación o construcción en curso, y el botón cambia su
rótulo a "Continuar". Al hacer clic sobre
"Continuar", el programa continúa. - El botón
"Repetir" reinicia el procedimiento actual desde el
inicio. - El botón "Salir" sale del procedimiento
actual. Si presionas "Salir" repetidamente, al final
saldrás del programa entero. Presionando cualquier otra tecla aparte de estas teclas reservadas, o hacer clic con el ratón en cualquier lugar de la ventana que no sean los botones, tiene un efecto de "adelanto rápido": los tiempos de espera se pasarán por alto en los modos PACE y SLOW. Tu programa puede limitar el área de construcción geométrica con la instrucción WINDOW, y puede definir áreas de salida de texto con la instrucción TEXTWINDOW. También puedes cambiar el título de la ventana con la instrucción TITLE. Sensibilidad a mayúsculas y minúsculas Las palabras claves (instrucciones) de GeoScript pueden escribirse tanto en mayúsculas o en minúsculas; así por ejemplo puedes escribir POINT, point, Point, o pOiNt, etc, como deseas. Los nombres de variables, por el otro lado, distinguen entre mayúsculas y minúsculas: la variable a no es lo mismo como la variable A. Esto es para permitir la costumbre de rotular puntos con mayúsculas y rectas con minúsculas. Muchas instrucciones tienen parámetros opcionales. Si los
omites, GeoScript les asignará automáticamente ciertos valores
predefinidos. (Algunos de estos valores predefinidos pueden
cambiarse con la instrucción DEFAULTS.)
También puedes poner un valor de -1, o la palabra clave DEFAULT,
para indicar el valor predefinido. Así por ejemplo, POINT
A, 300, 250, -1, DEFAULT, 20 inicializa un punto con el
estilo predefinido, el color predefinido, y un grosor de 20. Separadores de expresiones: Será apropiada aquí una pequeña nota acerca de la manera de
GeoScript de interpretar los programas. El intérprete trata los
espacios en blanco, las comas y los signos de "=" (y
cualquier combinación de ellos) indistintamente como
separadores. Por tanto no hace ninguna diferencia si escribes a
= LINE B, C o a LINE B C o incluso a,=LINE,=
=, B =,,C . Cadenas de texto (textos para mostrar en la pantalla) tienen que ser encerradas entre comillas dobles "", como en la mayoría de los lenguajes de programación. Comentarios: ' Este es un comentario al estilo de BASIC. // Este es un comentario al estilo de C. /* Esto es también un comentario, pero NO será interpretado como comentario multilínea. ; Este es un comentario al estilo de Assembler. a = LINE A, B !Este es un comentario que sigue a una instrucción válida. Mensajes de error: Si tu programa contiene errores, puedes recibir uno de los siguientes mensajes de error cuando intentas ejecutarlo: Error 10 = Tipos no coinciden: Primero definido como
..., ahora usado como ... 11 = Demasiados argumentos / 12 = Demasiado pocos
argumentos 13 = Error de síntaxis: no hay palabra clave en la
línea. 14 = Error de síntaxis: palabra clave como nombre de
argumento. 16 = Otro error de síntaxis. 20 = Procedimientos anidados. 21 = Error interno del intérprete: Paso 2 encontró
una instrucción/índice diferente del Paso 1. 22 = No se encontró el nombre de procedimiento usado
en CALL. 26 = Nombre de procedimiento duplicado 27 = Tipo equivocado de procedimiento después de
CONSTRUCT / ANIMATE / INTERACT. 28 = Número equivocado de parámetros en CALL. 29 = Tipos no coinciden en CALL. 30 = Demasiados parámetros para CONSTRUCTION
(>12), CLICKABLE (>14) o TRACE (>14) 31 = Expresión ilegal en este tipo de procedimiento. 32 = MENU sin ENDMENU / REPEATMENU 33 = Demasiados MENUITEMs 34 = MENUITEM / EXITMENU / ENDMENU / REPEATMENU sin
MENU - Los mensajes de error no solamente se muestran en la pantalla. Adicionalmente se escriben en un archivo "geoerror.txt" en la misma carpeta como el archivo de programa que produjo los errores. Instrucciones de inicialización: Estas instrucciones inicializan variables a
ciertos valores numéricos. Esta es la única manera de pasar
valores numéricos a tu programa, puesto que no existe ningún
tipo de variables para números puros. POINT nombre, x, y [, estilo, color, grosor] Inicializa un punto a las coordenadas x,y. Los
otros parámetros son opcionales. (Vea aquí acerca de estilos y
colores.) LINE nombre, x1, y1, x2, y2 [, patrón, color, grosor] Inicializa una recta al origen x1, y1
y su vector apuntando hacia x2, y2. Los otros
parámetros son opcionales. LINEPOLAR nombre, x1, y1, ángulo [, patrón, color, grosor] Inicializa una recta al origen x1, y1
y su vector apuntando en la dirección de ángulo (en
grados). CIRCLE nombre, x, y, radio [, color, grosor, inicio, fin] Inicializa un círculo al centro x1, y1 y con el radio radio. Instrucciones de construcción: Estas instrucciones son el corazón de
GeoScript. Ellas ejecutas construcciones geométricas. punto = MIDDLE punto1, punto2 [, estilo, color, grosor] Coloca punto en el medio entre punto1 y punto2. Los otros parámetros son opcionales. (Vea aquí acerca de estilos y colores.) punto = ADVANCETO punto1, punto2, distancia [, estilo, color, grosor] Avanza desde punto1 en línea recta hacia punto2 por distancia píxeles, y coloca punto allí. punto = ADVANCEON punto1, recta, distancia [, estilo, color, grosor] Avanza desde punto1 a lo largo de recta
(en la dirección de su vector) por distancia píxeles,
y coloca punto allí. recta = LINE punto1, punto2 [, patrón, color, grosor] Crea una recta, uniendo punto1 con punto2.
Su vector apuntará desde punto1 hacia punto2. recta = LINEPOLAR punto, recta2, ángulo [, patrón, color, grosor] Crea una recta que empieza en punto y
forma el ángulo ángulo con recta2. recta, punto2 = STARTLINE punto, ángulo, distancia [, patrón, color, grosor] Crea una recta que empieza en punto y
en la dirección del ángulo absoluto ángulo (0º =
hacia la derecha, 90º = hacia arriba, etc.) Termina la línea a
una distancia de distancia píxeles desde punto,
y devuelve el punto final en punto2. recta = MIDLINE punto1, punto2 [, patrón, color, grosor] Crea la mediatriz entre punto1 y punto2. Su vector girará hacia la derecha (o sea, en el sentido del reloj) desde el vector de punto1 hacia punto2. recta = BISECTOR recta1, recta2 [, patrón, color, grosor] Crea una bisectriz del ángulo entre recta1 y recta2. El origen de recta será en la intersección entre recta1 y recta2. recta1, recta2 = TANGENT punto, círculo [, patrón, color, grosor] Devuelve en recta1 y recta2 las dos tangentes a círculo que pasan por punto. Si punto está en el interior del círculo, ambas rectas resultantes serán INVALIDO. Si punto está en la circunferencia del círculo, recta2 será INVALIDO. punto = CROSS recta1, recta2 [, estilo, color, grosor] Devuelve la intersección de recta1 con recta2. Si las dos rectas son paralelas, punto será INVALIDO. punto1, punto2 = CROSS recta, círculo [, estilo, color, grosor] Devuelve las dos intersecciones de recta
con círculo. Punto1 será el primer punto y punto2
el segundo, avanzando en la dirección del vector de recta.
- Si recta y círculo no se intersectan, los
resultados serán INVALIDOs. punto1, punto2 = CROSS círculo1, círculo2 [, estilo, color, grosor] Devuelve las dos intersecciones de círculo1 con círculo2. Punto1 será el punto a la derecha y punto2 el punto a la izquierda, mirando en la dirección desde el centro de círculo1 hacia el centro de círculo2. - Si círculo1 y círculo2 no se intersectan, los resultados serán INVALIDOs. punto1, punto2 = CIRCLEND círculo [, estilo, color, grosor] Devuelve los dos puntos finales del arco
definido por las propiedades inicio y fin de círculo. círculo = CIRCLE centro, punto [, color, grosor, inicio, fin] Devuelve un círculo con el centro centro, cuya circunferencia pasa por punto. círculo = CIRCLE centro, recta [, color, grosor, inicio, fin] Devuelve un círculo con el centro centro y tangencial a recta. círculo = ARC centro, punto [, ancho , color, grosor] La primera forma devuelve un arco con el centro
centro, cuya circunferencia pasa por punto, y
de un ancho angular de ancho (en grados). - Esta
instrucción tiene su uso mayormente en demostraciones detalladas
de construcciones con un compás, donde necesitas solamente la
intersección de dos arcos, de manera que puedes dibujar con
precisión los dos arcos necesarios y no necesitas dibujar los
círculos enteros. (Vea el programa ejemplo
"Triangulos.geo".) nombre1 = COPY nombre2 Produce una copia exacta de un elemento
existente. Nombre1 y nombre2 tienen que ser del
mismo tipo. MOVECIRCLE círculo, point [, color, grosor] Cambia el centro de círculo a punto, mientras su radio se preserva. REVERT recta Invierte el vector de recta a la
dirección opuesta, mientras su aparencia queda igual. ORDERLINES recta1, recta2 Devuelve recta1 y recta2 en tal orden que el ángulo entre sus vectores, girando en sentido contrario al reloj desde recta1 hacia recta2, es menor (o igual) que 180º. Si este ángulo es inicialmente mayor a 180º, se intercambian recta1 y recta2. Instrucciones de marcar elementos: MARKPOINT punto [, tamaño, posición] Marca punto en la pantalla con su
nombre. MARKLINE recta [, punto1, punto2, tamaño, posición] Marca recta en la pantalla con su
nombre, en el medio entre punto1 y punto2. MARKANGLE recta1, recta2, "texto" [, tamaño, posición, radio] Marca en la pantalla el ángulo entre recta1
y recta2 con texto, en letras griegas. MARKANGLE punto1, punto2, punto3, "texto" [, tamaño, radio] Marca en la pantalla el ángulo punto1-punto2-punto3
con texto, en letras griegas. MARKNUMBERLINE recta [, punto1, punto2, factor, tamaño, posición] Marca recta en la pantalla con su
nombre y longitud, entre punto1 y punto2. MARKNUMBERANGLE recta1, recta2, "text" [, tamaño, posición, radio] Marca en la pantalla el ángulo entre recta1
y recta2 con texto, en letras griegas, e indica
su tamaño en grados. MARKNUMBERANGLE punto1, punto2, punto3, "text" [, tamaño, radio] Marca en la pantalla el ángulo punto1-punto2-punto3
con texto, en letras griegas, e indica su tamaño en
grados. FILLTRIANGLE punto1, punto2, punto3, color, opacidad Rellena el triángulo punto1-punto2-punto3
con color. FILLCIRCLE círculo, color, opacidad Rellena círculo con color. Procedimientos e instrucciones del flujo del programa: Un programa de GeoScript consiste en el módulo
principal (donde comienza la ejecución del programa), seguido
por cualquier número de procedimientos o subrutinas. CONSTRUCTION nombre [, parámetros] Esta clase de procedimiento efectúa
construcciones geométricas. Puede contener instrucciones de
inicialización, de construcción, y de marcar elementos; y
también instrucciones de texto, WAIT, SPEED y FRAMESPEED. Construcciones predefinidas Algunas de las instrucciones de construccion de GeoScript son en realidad enteras construcciones predefinidas. Por ejemplo la instrucción BISECTOR, cuando es llamada en modo PACE o SLOW (vea abajo), dibuja primero un arco en el ángulo que debe dividirse, después dibuja dos arcos desde los puntos finales del primero arco, y finalmente une la intersección de estos dos arcos con el origen del ángulo. De manera similar, cuando llamas TANGENT en modo PACE o SLOW, unirá primero el punto con el centro del círculo, marcará el medio entre estos dos puntos y dibujará un círculo sobre ellos (o los arcos significativos de él), para conseguir los puntos donde las tangentes tocan el círculo; y finalmente unirá el punto de inicio con estas intersecciones de los dos círculos. ANIMATION nombre Una ANIMATION puede repetir construcciones
geométricas para diferentes valores iniciales, moviendo los
puntos iniciales gradualmente y trazando los puntos resultantes. INTERACTION nombre Una INTERACTION permite al usuario arrastrar
ciertos puntos en la pantalla (usando el ratón), para así
cambiar los resultados de una construcción. Una INTERACTION
termina solamente cuando el usuario hace clic en el botón
"Salir", o presiona la tecla [Esc]. REPEAT [veces] Cada procedimiento termina con REPEAT. El
parámetro opcional veces indica cuántas veces se debe
repetir el procedimiento antes de regresar. (Para una
INTERACTION, este parámetro no tiene significado.) Entonces,
mientras el número de repeticiones no esté completado, la
ejecución del programa continúa nuevamente al inicio del
procedimiento. CALL / CONSTRUCT / ANIMATE / INTERACT nombre [, modo] [, parámetros] Esta instrucción ejecuta un procedimiento. Las
cuatro palabras claves CALL, CONSTRUCT, ANIMATE y INTERACT son
intercambiables. La única diferencia es que con CALL se puede
llamar cualquier tipo de procedimiento, mientras con las otras
tres el intérprete GeoScript comprueba si el procedimiento
llamado es del tipo correcto. (O sea, no se puede llamar una
ANIMATION con CONSTRUCT, por ejemplo.) En los modos PACE y SLOW, el usuario puede
saltar sobre los tiempos de espera y las animaciones de
herramientas, presionando cualquier tecla aparte de las
reservadas ([Enter], [Esc], [RePág] y "R"), o haciendo
clic con el ratón en cualquier parte de la ventana excepto en
los botones. Si se omite modo, los procedimientos ANIMATION e INTERACTION serán llamados en modo FAST. Los procedimientos CONSTRUCTION serán llamados con el modo del procedimiento que lo llama; si son llamados desde el módulo principal, en modo PACE. Una INTERACTION en modo FAST mostrará inmediatamente los resultados de las construcciones, mientras el usuario todavía arrastra un punto (dando así la impresión de arrastrar la figura entera que se construye) - por lo menos tan rápido como el rendimiento de tu sistema permite actualizar los gráficos. En los modos PACE y SLOW, una INTERACTION esperará hasta que el usuario suelte el botón del ratón después de arrastrar un punto, antes que empiece a mostrar la construcción. MENU [textoResaltado, fondoResaltado] Comienza un bloque de MENU que contiene varias
opciones de menú. Esta instrucción se permite solamente en el
módulo principal. MENU [textoResaltado, fondoResaltado] MENUITEM "texto1" ... (instrucciones) ... [EXITMENU] MENUITEM "texto2" ... (instrucciones) ... [EXITMENU] MENUITEM "texto3" ... (etc.) ... ENDMENU / REPEATMENU Esto mostrará una lista de menú con las entradas
"texto1", "texto2", "texto3", etc.
Si el usuario selecciona "texto1", se ejecutarán las
instrucciones entre MENUITEM "text1" y MENUITEM
"text2", etc. (Instrucciones entre MENU y el primer
MENUITEM serán ignoradas.) Nota que la lista de menú no se puede desplazar verticalmente. Esto significa que si especificas más opciones de menú de las que pueden entrar verticalmente en la ventana, las últimas no aparecerán en la pantalla y podrán causar errores. STEP punto, dx, dy La instrucción STEP se permite solamente en procedimientos ANIMATION. Especifica la distancia que un punto se moverá entre una repetición de la ANIMATION a la siguiente. STEP círculo, dx, dy, dr Lo mismo como arriba, pero para un círculo. Dx y dy son el movimiento del centro del círculo. Adicionalmente, el círculo puede cambiar su radio; este valor se indica en dr. STEP punto/círculo ALONG recta/círculo, d [, dr] Lo mismo como arriba, pero hace que el punto resp. el círculo se mueva a lo largo de una recta o de un círculo. d es la distancia del movimiento de una repetición a la siguiente. dr (para un círculo) indica cuánto cambia el radio del círculo. TRACE punto1 [, punto2, ...] La instrucción TRACE se permite solamente en
procedimientos ANIMATION. Especifica cuáles puntos dejarán un trazo por
detrás, mostrando su movimiento durante la ANIMATION entera. CLICKABLE punto1 [, punto2, ...] La instrucción CLICKABLE se permite solamente
en procedimientos INTERACTION. Especifica en cuáles puntos el usuario puede hacer
clic para arrastrarlos. CLICKABLE punto ALONG recta / círculo Lo mismo como arriba, pero el movimiento del
punto será restringido a moverse a lo largo de una recta resp.
de un círculo. WAIT [milisegundos] En modo PACE o SLOW, esta instrucción detiene la ejecución
del programa por el número indicado de milisegundos, o hasta que
el usuario apriete una tecla o un botón del ratón. WAITALWAYS [milisegundos] Esta instrucción detiene la ejecución del
programa (sin importar el modo actual) por el número indicado de
milisegundos, o hasta que el usuario apriete una tecla o un
botón del ratón. Termina la ejecución del programa inmediatamente. Esta instrucción pertenece normalmente al módulo principal; pero GeoScript permite también terminar el programa desde adentro de un procedimiento. SCREEN ancho, alto [, profundidad, color] Inicializa el tamaño y la profundidad de color
de la ventana de la aplicación. WINDOW ancho, alto Determina el tamaño de la salida de gráficos
en la ventana. Los gráficos serán restringidos al ancho
y alto especificados. TITLE "texto" Especifica el título de la ventana de la
aplicación. El título predeterminado es el nombre del archivo
del programa. TEXTWINDOW x, y, ancho, alto Define la ubicación y el tamaño del marco
para la(s) instrucción(es) siguientes de TEXT. La salida de
texto será restringida a este marco. TEXT "texto" [, colorTexto, colorFondo, tamaño] Muestra texto en el marco especificado
anteriormente con TEXTWINDOW. Nota: En realidad hay muy pocos diferentes tamaños de letra disponibles, porque GeoScript no utiliza las rutinas de fuentes de Windows. El tamaño de letra será redondeado al más cercano de estos que están disponibles: 12, 16, 24, 32, 40 ó 64. CLS [color] Limpia la pantalla: borra la ventana entera. - El parámetro opcional color especifica un color para rellenar la ventana. SPEED milisegundos Define el tiempo de espera (en milisegundos) después de mostrar un nuevo elemento o una herramienta en los modos PACE resp. SLOW. El valor predeterminado es 2000 (dos segundos). FRAMESPEED milisegundos Define la suavidad de la animación, como tiempo de espera (en milisegundos) entre actualizaciones sucesivas de los gráficos durante una animación. (Es relevante solamente para las animaciones de herramientas en el modo SLOW, y para el tiempo de espera entre repeticiones de una ANIMATION en modo FAST.) El valor predeterminado es 50 milisegundos (20 imágenes por segundo). Podrías querer aumentar este valor en una máquina lenta si el rendimiento es insuficiente; o disminuirlo en una máquina rápida para una animación más suave. DEFAULTS colorFondo [, colorDibujo, colorTexto, colorAuxiliar, grosorLinea, patrón, grosorPunto, estilo, posicionAngulo, anchoArco] Si los valores predefinidos de GeoScript acerca de los colores
etc. te aburren, puedes cambiarlos con esta instrucción.
Establece los valores predefinidos para las propiedades gráficas
que se aplicarán en cada instrucción donde omites los
parámetros opcionales correspondientes. TOOLDEFAULTS tamañoLápiz [, tamañoEscuadra, anchoRegla, colorLápiz, colorCompás, colorEscuadra, colorTransportador, colorRegla] Esta instrucción cambia los valores predefinidos para la
apariencia de las herramientas en modo SLOW. Límites de tamaño de GeoScript: Existen ciertos límites en cuanto al tamaño de un programa
de GeoScript; pero dudo de que escribas alguna vez un programa
tan gigante que estos límites te incomodarían. Estas son: |