From: vera at rex.wamani.apc.org
Date: Fri, 29 Jan 1999 01:30:14
Espero que este pequeño tutorial anime a otros listeros a empezar a enviar sus aportes.
Recordemos que siempre hay alguien empezando, y si no es así, siempre hay alguien que quisiera saber cómo empezar con otros.
Lo primero es tener un Logo. Si no lo tenes, podes bajar una versión de aquí:
FMSLogo multilenguaje (incluido Español)
Después de aceptar las pantallas del soft, nos encontramos con la pantalla principal de Logo, que tiene en su centro a la tortuga, un triángulo, arriba una barra de menú típica del entorno Windows, y abajo un espacio para escribir e interactuar con Logo, llamado normalmente centro de mandos (Area de Trabajo).
Así que, aunque tenemos menúes al estilo Windows, permanece la posibilidad de "hablar en Logo" escribiendo los comandos o primitivas en el centro de mandos.
Las primitivas se pueden consultar, agrupadas por categorías, solicitando ayuda con F1.
Cuando trabajamos en modo directo, escribimos los mandos directamente en el centro de mandos o zona de texto, y al pulsar Enter el mando se ejecuta.
Yo empiezo contando la historia de la tortuga, el por qué de su forma y su nombre; luego invito a los alumnos a imaginar que dirigimos desde lo alto el movimiento de una tortuga ciega pero astuta, a la que debemos rescatar o hacer entrar a cierto lugar. Les pregunto qué movimientos puede hacer una tortuga sobre el piso e inmediatamente los aliento a probar esas palabras en el centro de mandos del Logo:
AVANZA, RETROCEDE, GIRADERECHA, GIRAIZQUIERDA...surgen espontáneamente. Si dejamos que las escriban y pulsen Enter, aparecerán mensajes indicando que falta algo...la cantidad.
Conviene dejar que los chicos (y los grandes) exploren esta alternativa por sí mismos, pero dando breves sugerencias para orientar la aparición de nuevas órdenes necesarias.
Por ejemplo: nosotros, si sabemos al menos algo sobre Logo, ya tenemos claro que al decirle a la tortu GD 45 obtendremos un giro sobre su eje que la oriente 45 grados más hacia SU derecha GD LO QUE ESTABA HACE UN INSTANTE.
Esto no es evidente siempre, de hecho muchos tratan de lograr que la tortuga "camine hacia su derecha"
En definitiva, no importa si quien usa el Logo "sabe" o "no sabe" que esta tratando con grados sexagesimales. Sí importa, en cambio, que advierta que son magnitudes diferentes al caminar que al girar.
Luego, agregamos posibilidades:
BL ( Baja Lápiz ) para cuando quiero que deje su rastro (supongamos que luego la tortuga se hace famosa, podré vender sus diseños como obras de arte... ;) También SL ( Sube Lápiz ) para ir de un lado a otro y no dejar la estela. Estas dos no llevan número, ya que solo designan un estado. Y para darle un toque de arte: PONCOLORLAPIZ (esta sí lleva número) y PONGROSOR. Las dos se aplican al trazo de la tortuga. También se puede cambiar el color del fondo con PONCOLORPAPEL y un número, lo mismo para el color usado para rellenar áreas PONCOLORRELLENO.
Y ahora, si tienen un niño a mano, prueben estos juegos:
Yo les hacia anotar a los chicos los puntos, de manera que después de varias vueltas consagrábamos un "ganador de la anticipación"
Este ejercicio sirve para aprender a familiarizarse con las medidas de la pantalla, de los "pasos", etc, y para aprender a situarse en forma relativa al quedar la tortuga a veces "de cabeza"
Se puede hacer adhiriendo a la pantalla un papel tipo filmina dibujado, o un papel opaco que simule una isla, un camino, una escalera...
Este se juega con pluma (puede ser un color para cada jugador) y el objetivo es tratar de recorrer sin "perder" la tortuga debajo.
Para jugarlo por tiempo, y sin hacer trampa: antes de empezar un jugador, escribe HAZ "COMIENZO HORAMILI para que el cronómetro del Logo empiece a contar.
Cuando termina o llega a donde se había propuesto, escribe MUESTRA HORAMILI - :COMIENZO y da Enter. El Logo le informará el tiempo transcurrido en milisegundos.
Si en lugar de pegar papeles sobre la pantalla, se quiere jugar con un escenario digital, solo hay que dibujarlo en un graficador (dibujar el laberinto, la escalinata, o una escena en la que haya que "encerrar" algo o "proteger" de un determinado peligro cierta parte del dibujo) guardarlo con extensión BMP, y cargarlo antes de jugar usando del menú Bitmap la opción Load de la barra de menú o con el comando CARGARDIB seguido del nombre del archivo.
Recordemos que estos ejercicios son para conocer al Logo, pero al mismo tiempo para ir pensando en algunas cosas que van apareciendo a medida que uno trabaja...
Saludos
sigue mañana...
Hola Logofans
A ver que les parece este capítulo...
En el punto anterior, estuvimos trabajando en el modo más rápido del Logo, que es el llamado "modo directo": escribo la orden, pulso el ENTER, la orden se cumple.
Podemos usar la metáfora de llamar a este modo, a esta forma de visualización, la "pantalla de obedecer " (tomado de un libro de Liliana Saidón)
En este modo podemos trabajar un buen tiempo, buscando y creando ejercicios que le den sentido al trabajo. Sin embargo, en muy poco tiempo, aparece la necesidad de "guardar" lo que se va logrando. Al principio se pueden guardar tan solo los resultados en pantalla (los dibujos).
Podemos usar del menú Bitmap la opción Guardar. Y luego cargar la imágen en cualquier graficador o incluso en otra aplicación (por ej. en el procesador de textos) tendremos una copia del dibujo logrado.
Esto puede ser útil en un principio, pero luego aparece la necesidad de guardar la secuencia de órdenes, de abreviar, de usar de nuevo una parte... en fin... pasemos al segundo modo de trabajo, al que llamaremos "modo diferido" o tambien, para los amigos "pantalla de aprender".
Para anotar un procedimiento cualquiera (por ejemplo, las órdenes que sirven para dibujar una mesa) es necesario ir a anotar esas órdenes en un sitio especial: el Editor. (Equivale al revés de la página del LogoWriter).
Los programas tienen una estructura, que varía levemente según las versiones, pero basicamente es:
La palabra PARA seguida del nombre del procedimiento (una sola palabra, varios Logos admiten guiones bajos y otros símbolos dentro de esta palabra o cadena de caracteres)
Las primitivas (comandos u órdenes)
La palabra FIN
Sabemos que cuando alguien escribe un procedimiento en Logo, está "enseñándole" al programa a hacer algo, en un lenguaje que el programa entiende.
Aquí, para tomar un caso concreto, vamos a programar las distintas letras del teclado, para que al presionarlas el Logo "lea" el programa con el nombre de esa tecla, y ejecute las acciones programadas.
Por ejemplo, escribamos en el EDTODO ( Edita Todo ) y luego de un ENTER...
PARA A
AVANZA 30
FIN
PARA D
GIRADERECHA 30
FIN
Ahora le indicamos al Logo que queremos que "habilite" nuestros nuevos programas para que podamos usarlos. Pulsamos sobre el menú Archivo y seleccionamos Guardar and Exit y vemos que Logo ha reconocido (aprende rápido) los procedimientos que creamos.
Para usarlos solo escribimos A, por ejempo, y damos ENTER. La tortuga entiende que A es igual a AVANZA 30, de manera que lo cumple y listo. También podes intentar algo como esto:
A A A A D A A A A D A A A A C A A A A
¿Funciona? Sí, pero...es un poco tedioso. Mejor reunimos todas las órdenes en un solo programa. Vamos a hacerlo recursivo, es decir, que vuelva a empezar desde un punto...¿para qué? Veamos:
PARA ANDAR
HAZ "TOCADA LEECARC
SI :TOCADA = "A [AVANZA 10]
SI :TOCADA = "D [GIRADERECHA 10]
SI :TOCADA = "R [RETROCEDE 10]
SI :TOCADA = "C [PONCOLORLAPIZ AZAR 16]
ANDAR
FIN
HAZ - es una primitiva con dos entradas, que asigna a la primera palabra o lista el valor de la segunda entrada. HAZ "comida "milanesa hace que lo que haya dentro de la variable "comida sea el valor "milanesa
LEECARC - sirve para que el Logo lea un carácter pulsado por el usuario y lo informe. En este caso el carácter tomado con LEECARC se almacena en la variable :TOCADA
AZAR - devuelve un valor al azar entre 0 y el número especificado.
ATENCION!!
AQUI, COMO VEN, HAY UN SALTO ENORME! Antes de pasar a las primitivas de control de variables, conviene trabajar con variables simples en ejemplos de geometria de tortuga, del tipo CUADRADO :LADO .
Por qué no lo hice así? Porque hay muchos ejemplos de ello en cada libro de Logo que uno tenga a mano. El ejercicio es bueno para probar que tan potente es la idea de la programación. No importa si no se entiende cabalmente...
Luego lo retomamos, en otras prácticas.
UF! Recursión y azar y variables, todo en un mismo minuto!!
El próximo capítulo van unos ejercicios para explorar un poquito la recursión.
Pero lo que REALMENTE me gustaría sería que alguien explique con algunos ejemplos el tema de la recursión simple en actividades de geometría de tortuga.
Saludos...
Polígonos y variables
Como ya hemos visto, la tortuga del LOGO puede dibujar una poligonal o un polígono cualquiera si le vamos indicando lados (AVANZA / AV) y ángulos (GIRADERECHA / GD o GIRAIZQUIERDA / GI).
Dentro de los polígonos, es interesante observar qué pasa con los regulares y el LOGO. Para obtener un cuadrado, vimos que se repite una secuencia de ocho órdenes, que en definitiva son cuatro (dos lados y dos ángulos)
PARA CUADRADO
AV 40 GD 90
AV 40 GD 90
AV 40 GD 90
AV 40 GD 90
FIN
Se puede sintetizar así:
PARA CUADRADO
REPITE 4 [AV 40 GD 90]
FIN
Ahora pensemos en los demás polígonos regulares. Si se llaman regulares, por algo será...
Vamos a ir probando en la compu, como harían los chicos, hasta que surja alguna buena idea para economizar tiempo y energía.
Nombre del polígono | Cant. De lados | Fórmula para dibujarlo |
triángulo |
|
|
cuadrado |
|
|
pentágono |
|
|
hexágono |
|
|
heptágono |
|
|
octógono |
|
|
eneágono |
|
|
decágono (con perdón) |
|
|
etc. |
|
|
¿Salió ya la idea?
Seguro! Si miramos la relación entre la cantidad de lados y el valor del ángulo, descubrimos a simple vista una inversamente proporcional, grande como una casa. Y también una constante.¿Cuál? ¿Y porqué?
Anótenla:
Ahora bien... si seguimos agregando "lados" nos vamos aproximando al círculo, el famoso "polígono de infinitos lados" (qué difícil de entender esto, che!) que acá, acá en el mundo del LOGO puede ser de infinitos lados, pero también puede lograrse (o imitarse, para algún purista de la matemática) con polígonos de 50, 60, 100 o 360 lados.
Pero qué pasa si ponemos REPITE 360 [AV 40 GD 1] Eh? (Pruébenlo!)
Ahá, pasa "eso". Y por qué?
Lo que necesitamos ahora es: un programa general, que sirva para dibujar cualquier polígono regular (ya que la estructura del REPITE... es la misma) y que ese programa admita variaciones de tamaño.
Pongan las neuronas en remojo...
Las variables representan entidades que pueden asumir valores diversos y por lo tanto provocar diversos efectos.
Un gusano variable:
Gusano 2 | Gusano 4 | Gusano 8 |
"OO | "OOOO | "OOOOOOOO |
Un cuadrado variable:
Cuadrado 40 | |
Cuadrado 80 |
Ustedes, cuando empezaron a ver como "se sacaba" el número adecuado para el ángulo en cada polígono empezaron a usar matemática. Nadie se los dijo, la usaron como un recurso, como una herramienta para resolver un problema concreto. Bueno, también el LOGO usa matemática.
Así que podemos reemplazar un número por una operación, debidamente escrita para que el lenguaje la reconozca. Las variables se señalan con dos puntos adelante, que se deben interpretar como "lo que hay en".
Ejemplo:
si le digo al LOGO GD :angulo le estoy pidiendo que gire a la derecha "lo que hay en" la variable llamada :angulo. Y hay más de una forma de nombrar una variable.
Primero veremos la más común, y luego... chachan, chachaaan! Tal vez lleguemos a nociones avanzadas!
Aclaración importante para seños y gente de primaria:
Es más fácil para los chicos - y para los grandes! - reconocer como variable a una estructura de cantidades discontinuas (como la del gusano) que continuas (como los lados del cuadrado).
Por eso conviene introducir el concepto de variable aplicándolo a estructuras discontinuas , como las letras de una palabra, los botones de una camisa, los renglones de una tarjeta, etc, que a magnitudes continuas.
Pero, como nosotros, no solo somos mayores de 20, sino que además somos muy inteligentes...seremos capaces de "variabilizar" los lados de nuestros polígonos y de crear el procedimiento general, al que, en breve lapso, anotaremos aquí:
PARA POLIGONO |
(Vieron que se podía?)
Tomado sin miramientos del bello ejemplo de Papert en su libro "Desafío a la mente" Perdón, Seymour. Y gracias.
Hay muchas maneras de "resolver" una situación programando en LOGO. Al principio, todos hacemos programas lineales, una cosa atrás de la otra. Pero pronto descubrimos que podemos aprovechar las estructuras repetitivas, usar variables, economizar esfuerzos.
Es decir, programar pequeños módulos o subprocedimientos que luego pueden usarse como "piezas a ensamblar", como parte de un procedimiento más general, o superprocedimiento.
Por ejemplo, para hacer este jardín de flores: (acá va un precioso dibujo de un jardín de flores...) podríamos seguir estos pasos:
1. Preparar un programa que dibuje un cuarto de circunferencia, por ejemplo:
PARA CUARTODECIRC
REPITE 9 [AV 1 GD 10]
FIN
2. Usando ahora el módulo CUARTODECIRC, probemos a formar un pétalo... A ver... PARA PETALO (sigan!)
3. Una flor se podría obtener repitiendo varios pétalos y un giro ¿ no? Vamos... PARA FLOR
4. Pero, poniéndonos preciosistas, podríamos querer hacer una PLANTA completa, es decir, una FLOR con TALLO y, digamos, una HOJITA de adorno...
Ahora qué les parece si hacemos que el tamaño de la plantita sea variable, para tener distintas medidas de flores? Lo logramos agregando una variable en el AV del primer módulo. O sea:
PARA CUARTODECIRC :TAMAÑO
REPITE 9 [AV :TAMAÑO GD 10]
FIN
Agreguen la variable de tamaño en los demás procedimientos y prueben las plantas.
Para lograr el jardín "automáticamente" podríamos incluir un subprocedimiento "SEMBRAR", por ejemplo, que después de dibujar una planta, colocaría, a la tortuga lista para la siguiente. Algo así:
PARA SEMBRAR
SL GD 90 AV 40 GI 90 BL
FIN
Claro que SEMBRAR puede ser, también, variable...
Y que tal si creamos un superprocedimiento que incluya a los demás "hijitos", digamos, llamado JARDIN, que se encargue de realizar todas las flores?
Vamos, vamos, no resoplen...Piensen que es por el propio bien de sus neuronas... vamos...
Ah! Y una yapa : podemos usar los módulos para cualquier otra aplicación que se nos ocurra.
Miren lo que me salió a mí usando el cuarto de círculo:
Hola Logoamigos
Les envio la ultima entrega - por ahora - de la saga "Logo casi desde cero" Si alguien la leyó,si a alguien le sirvió,me gustaría mucho que hiciera un comentario en la lista.
Cuarta y ultima entrega, IN TITULADA...ejem, ejem...
Variables locales y globales. Recursión simple.
LOCALES - son las que conservan su valor mientras está activo el programa y se asignan directamente al ejecutar el programa mismo.
GLOBALES - son las que permanecen hasta que son borradas o reemplazadas, independientemente de que estén en uso. Se asignan con el comando HAZ (DA, NOMBRA, HACER o ASIGNA en otras versiones)
Por ej:
HAZ "NOMBRES [MARIA CECILIA]
HAZ | "NOMBRES | [MARIA CECILIA] |
Comando | Nombre de la variable | Contenido de la variable |
Ahora, si pido, ESCRIBE :NOMBRES, obtengo:
Y si pido ESCRIBE ULTIMO :NOMBRES, obtengo:
Prueben:
HAZ "VALOR 40
GI :VALOR ( Qué sucede?)
REPITE :VALOR / 10 [AV 50 GD 90]
ESCRIBE :VALOR * 2
PONCOLORPAPEL PRIMERO :VALOR
ESCRIBE PRIMERO :VALOR
Recuerden que:
Las variables globales generalmente se usan dentro de programas interactivos, pero su contenido, una vez asignado, permanece en memoria hasta que es borrado. Esto es: si en un programa se le asigna a la variable "tiempo, por ej, el contenido "lluvioso, cada vez que se apele a "lo que hay en la variable tiempo" se obtendrá lluvioso, hasta que se vuelva a asignar otro valor o se borren los contenidos de todas las variables globales... o se apague la compu.
Hay procesos que se desencadenan cíclicamente, algunos "ad infinitum", otros durante lapsos estipulados. Los procedimientos recursivos tiene esa condición: vuelven a empezar una y otra vez. Son programas en los que existe una línea de llamada para que todo el ciclo recomience, colocada antes de la línea de FIN. (a esto en LOGO se lo llama recursión simple)
Por ej:
PARA ZIGZAG
AV 30 GD 90
AV 30 GI 90
ZIGZAG
FIN
Esto se detiene con el botón Alto
Vayan creando estos programas en el editor, los prueban y anotan cualquier observación que crean pertinente.
PARA VUELTA
VUELTA
AV 5 GD 5
VUELTA
FIN
Area de Trabajo
VUELTA
Observaciones:
PARA VUELTA :X
AV :X GD 5
VUELTA :X
FIN
Area de Trabajo
Observaciones:
PARA VUELTA :X :Y
AV :X GD :Y
VUELTA :X :Y
FIN
Area de Trabajo
Observaciones:
¿Y qué pasa al poner cero? ¿Por qué? ¿Y con el 1? Prueben!
Ahora haremos que cada vez que se ejecute el programa aumente en 1 la cantidad de pasos que da la tortuga cada vez, o sea, que aumente la variable :X.
Prueben de nuevo, empezando con números chicos para "ver" el aumento de tamaño
PARA VUELTA :X :Y
AV :X GD :Y
VUELTA :X + 1 :Y
FIN
¿...y por qué ahora no cierra en un polígono ????
(Pueden agregarle un ESPERA 10 antes de la llamada a recursión, así verán mejor el proceso.)
Prueben con algunos ángulos cercanos a los múltiplos de 360, por ej: 121, 91, 46, etc...
Para que la recursión se detenga, es necesario agregar una condición de parada. Por ejemplo, que deje de crecer al llegar a determinada longitud de :X, o después de una cierta cantidad de vueltas, como las carreras.
PARA VUELTA :X :Y
AV :X GD :Y
SI :X > 200 [ALTO]
VUELTA :X + 1 :Y
FIN
Si el programa, al contrario, va "achicando" en tamaño, usaremos la condición "sea menor que", porsupus.
Prueben, miren, anoten, piensen, discutan (todo menos hacer pucheros y maldecir a Pitágoras)
Qué pasa con el resultado gráfico si:
Atentti!
Cuando le pongo como variación que vaya restando uno (-1) recordar darle un número que efectivamente "soporte" el achicamiento.
Ejemplo: si le voy a restar un paso cada vuelta y voy a parar cuando llegue, digamos, a cero, no voy a probar como funciona con un VUELTA 5 5 porque va a hacer cinco pasos, luego 4 , 3 , 2 ,1...nada! y no voy a notar prácticamente nada!
Sugerencia: preparar dos programas, uno que se llame, por ej. AGRANDAR :X :Y y otro, ACHICAR :X :Y
A original no me gana nadie...
Bueno, he aqui mi humilde esfuerzo...A ver si algun/a lister@ se pone las pilas y lo prueba con pibes... o con grandes! Y me cuenta que tal
Salut a tots!
Este es un documento libre.
Esta obra está bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.
Manuales, Tutoriales y Material adicional para MSWLogo