Tutorial Winlogo
Tutorial Winlogo
Tutorial Winlogo
Resumen de los aspectos ms significativos relacionados con Logo, tomados del curso "Del clavo
al ordenador" impartido de forma interactiva en el servidor del Plan de Nuevas Tecnologas de
la Informacin y la Comunicacin (http://www.pntic.mec.es). Este curso est coordinado por
Carmen Candioti.
Variable
Cuando se inicia el programa se presentan las ventanas o reas de trabajo ms
importantes, que son: la ventana de Grficos (mundo de las tortugas), la ventana
Para mover una ventana hay que situar el puntero del ratn sobre el ttulo de la
ventana y mantener pulsado el botn izquierdo del ratn mientras la ventana se
desplaza hasta la posicin deseada. Una vez que la ventana ha llegado hasta el
lugar deseado basta soltar el botn.
Para modificar el tamao de una ventana lo primero que hay que hacer es activarla
y despus situar el puntero del ratn sobre uno de sus lados hasta que aparece una
doble flecha; pulsado el botn del ratn el borde de la ventana puede ser
arrastrado hasta que ste alcance el tamao deseado.
Si se desea restaurar automticamente una ventana al nmero y disposicin
iniciales, basta elegir en la barra de Men la opcin Ventanas y seleccionar, dentro
de ella, el comando "Restaurar Entorno".
2. EL MODO DIRECTO
Las palabras clave que se usan para comunicarse con el entorno se llaman
PRIMITIVAS. Las primitivas pueden escribirse en la ventana de TRABAJO. Cuando el
objetivo de la primitiva sea dibujar, sus resultados se muestran en el rea de
GRFICOS y, por el contrario, aparecen en el rea de TEXTOS cuando la primitiva
tiene por objeto escribir.
Con el ejemplo siguiente quedar ms claro el funcionamiento del modo directo:
Lo primero que debe hacerse es activar el rea de TRABAJO; para ello se sita el
puntero del ratn sobre algn punto de la ventana de TRABAJO y despus se
hace"clic" en ella con el ratn. Instantneamente el ttulo de esa ventana
aparecer resaltado, lo cual indica que esa zona es activa.
Si se escribe: AVANZA 40 y se pulsa [INTRO]
GIRADERECHA 90
AV 40 GD 90
BP AV 60
GIRAIZQUIERDA 45
RETROCEDE 60
GI 90 RE 56
ESCRIBE "CASA
ESCRIBE [LA CASA ES GRANDE]
BP
- ATENCIN: EN EL PROCEDIMIENTO ANTERIOR SE HAN USADO ALGUNAS
ABREVIATURAS: POR EJEMPLO BP PARA BORRAPANTALLA, GI PARA
GIRAIZQUIERDA, RE PARA RETROCEDE, ETC.
ACTIVIDAD RECOMENDADA
Dibuja un cuadrado y un tringulo haciendo uso de las primitivas que has visto
hasta ahora. Prueba tambin a hacer una circunferencia.
Con el ejercicio anterior se pretenda que practicases con un conjunto de
primitivas y sus abreviaturas. Escribe ahora las lneas de la lista siguiente y observa
los mensajes que aparecen en la ventana de Textos:
AVANZA
RETROCEDE
GIRAIZQUIERDA
Analiza los mensajes escritos en el zona de textos; el error se produce porque las
primitivas requeran un parmetro para su correcta definicin; recuerda que
existen otras primitivas para la que no es necesario definir ningn parmetro.
Escribe las rdenes anteriores completndolas con un parmetro correcto.
Primitivas que has estudiado hasta el momento:
AVANZA x (AV x)
la tortuga se desplaza x unidades hacia adelante
RETROCEDE x (RE x)
la tortuga se desplaza x unidades hacia atrs
GIRADERECHA x (GD x) la tortuga gira a la derecha x grados
GIRAIZQUIERDA x (GI x) la tortuga gira a la izquierda x grados
escribe en la ventana de textos la palabra situada detrs
ESCRIBE "X (ES "X)
de las comillas
ESCRIBE [XX XX] (ES [XX escribe en la ventana de textos la frase situada entre los
XX])
corchetes
BORRAPANTALLA (BP) se borra la pantalla de grficos
Tambin se pueden escribir dos o ms rdenes en una misma lnea. Por ejemplo:
BORRAPANTALLA AVANZA 40 GIRADERECHA 90 AVANZA 60
Despus de escribir la lnea anterior en la ventana de trabajo y pulsar [INTRO], se
ejecutarn las cuatro instrucciones.
BP SL GI 90 AV 200 GD 90 BL
REPITE 10[AV 5 GD 90 AV 20 GD 90 AV 5 GI 90 AV 20 GI 90]
Observa que la ltima orden del corchete GI 90 deja a la tortuga en la orientacin
inicial de modo que, al ejecutarse el mdulo siguiente, la tortuga est situada en
la misma direccin.
PROPUESTA: Realiza ms cenefas como la que aparece en la figura siguiente:
3. MODO PROCEDIMENTAL
El lenguaje Logo permite trabajar en modo procedimental, caracterstica que
comparte con otros lenguajes de ordenador. Programar en modo procedimental
consiste en ensear procedimientos al ordenador que, una vez asimilados,
interpreta como si fueran nuevas primitivas.
Los procedimientos pueden escribirse en las ventanas de trabajo y edicin, aunque
es preferible hacerlo en la de edicin. Para ello, se pulsa el icono de Edicin (es el
que tiene un lpiz escribiendo) que aparece en la barra de men que se
superpone a la ventana de edicin. Los procedimientos se escriben en la ventana
de edicin.
Existen dos PRIMITIVAS asociadas a cualquier procedimiento, PARA y FIN. Todos los
procedimientos comienzan por la primitiva PARA y terminan con la primitiva FIN.
Escribe el siguiente procedimiento:
PARA CUADRADO
REPITE 4 [ AV 60 GD 90]
FIN
Hay que tener en cuenta que en la primera lnea, slo puede escribirse la palabra
que se est definiendo separada de PARA por un espacio y en la ltima lnea slo
puede escribirse la palabra FIN. Siempre debe pulsarse [INTRO] para validar un
procedimiento.
El procedimiento anterior se llama CUADRADO. Para ejecutar posteriormente este
procedimiento, es necesario que el ordenador lo memorice; para ello, basta pulsar
el icono de INTERPRETE (es el que tiene un muequito corriendo). En la ventana
de Texto aparecer, si el procedimiento es correcto, el siguiente mensaje: ACABAS
DE DEFINIR CUADRADO. Con esta accin, el ordenador ha memorizado el
procedimiento, por lo que puede ser utilizado en el futuro. Cierra la ventana de
Edicin situando el cursor en el cuadrado superior izquierdo y pulsa dos veces el
ratn. Activa la ventana de trabajo. Si escribes CUADRADO y pulsas [INTRO], en la
ventana de grficos se ejecutarn las rdenes asociadas a ese procedimiento (en
este caso aparece cuadrado de 60 unidades de lado).
Los procedimientos recin definidos pueden ejecutarse mientras no se salga de
Logo. Una vez apagado el sistema, Logo slo recuerda sus primitivas.
Cmo archivar los procedimientos que se encuentran en el Editor
CON EL PROGRAMA QUE UTILIZAMOS, LO MEJOR PARA GUARDAR UN
PROCEDIMIENTO ES PASARLO A UN FICHERO (COMO WORD) Y DE AH A UN DISQUETE
O LPIZ DE MEMORIA.
Si has comprendido los contenidos presentados hasta ahora y has realizado las
prcticas sin dificultad, contina con el estudio de LOGO.
REPITE
CENTRO
5. PROGRAMACIN MODULAR
La estructura de Logo, basada como ya se ha visto, en los procedimientos
definidos, permite realizar programas de forma modular, es decir,
descomponindolos en partes que pueden resolverse por separado y que son ms
simples que el programa inicial. Esta modularizacin puede hacerse a varios
niveles, ya que cada mdulo puede descomponerse, tambin, en partes ms
sencillas. Este proceso permite dar respuesta a los planteamientos de la
programacin estructurada. Logo es un lenguaje que estimula la realizacin de
programas claros, en los que cada procedimiento realiza una misin concreta.
Modularidad
La posibilidad que ofrece Logo de dividir un programa complejo en otros ms
pequeos y fciles de disear que pueden dividirse en otros, que se integran en el
programa inicial para dar respuesta al problema planteado, se llama modularidad.
Otra definicin de modularidad es la siguiente: modularidad es una caracterstica
de Logo que permite que un programa llame a otros ms sencillos y que estos,
tambin, puedan llamar a otros.
Uno de los problemas que plantea la modularidad en programas geomtricos es la
necesidad de tener controlada la posicin y orientacin de la tortuga entre
mdulo y mdulo. A continuacin, se ofrecen dos formas de resolver este
problema.
1) Modularidad con referencia al centro
Se propone, como un ejemplo, un programa cuya misin es dibujar un robot. Para
aplicar el concepto de modularidad, se va a dibujar un robot por partes
MT
FIN
(OT significa oculta tortuga)
Al final de cada mdulo, la tortuga dibuja el parachoques y despus realiza un giro
de noventa grados hacia la izquierda para disponerse a dibujar el siguiente
rectngulo.
6. USO DE VARIABLES
Las variables pueden ser comparadas con cajas a las que se les pone una etiqueta
(nombre) y en cuyo interior existe un contenido.
Una variable, por ejemplo, puede llamarse HOLA y contener el nmero 34; otra
puede llamarse BARCO y contener la palabra chocolate. De este modo, al ejecutar
la orden de escribir el contenido de HOLA, el ordenador escribe 34, de la misma
manera que si se le mandase escribir el contenido de BARCO escribira chocolate.
** Las variables en el modo directo
Sitate en la ventana de trabajo.
Escribe: HAZ "BARCO "chocolate Pulsa [INTRO].
Mediante la instruccin anterior se ha creado la variable BARCO y se le ha asignado
como contenido la palabra chocolate.
Escribe: ESCRIBE :BARCO Pulsa [INTRO].
RECUERDA
El nombre del procedimiento que se coloca en la primera lnea despus de PARA
conlleva la creacin de la variable :L.
Dentro del corchete, el argumento de la primitiva AVANZA no es una cantidad fija,
sino que vara en funcin del contenido de la variable :L por lo que, dependiendo
de dicho contenido, el programa dibuja el cuadrado correspondiente.
Copia el procedimiento CUAVARILADO :L y no olvides pulsar [INTRO] despus de
FIN; escribe y ejecuta:
CUAVARILADO 50
CUAVARILADO 30+5
CUAVARILADO 1
CUAVARILADO
Observa que Logo enva un mensaje para que completes los datos.
Las variables locales se llaman as porque su existencia est limitada al tiempo de
ejecucin del programa. Para comprobar este hecho, escribe la frase:
ESCRIBE :N
Observa el mensaje que enva Logo: "Esa variable ya no existe."
Crea diversos procedimientos que permitan dibujar cuadrados de lado fijo y color,
grosor, o fondo variables. Llmalos:
CUAVARICOL :C
CUAVARIGRO :G
CUAVARIFON :F
REPITE 4 [ AV 50 GD 90 ]
FIN
Una vez definido el procedimiento en el Editor y despus de haberlo validado,
vuelve al rea de trabajo y ejecuta:
CUAVARIA 5 4 16
CUAVARIA 1 1 1
CUAVARIA 2 4
Observa que en el ltimo caso Logo enva un mensaje para que se completen los
datos.
Modifica el procedimiento anterior en el Editor para que incluya como cuarta
variable la longitud del lado. (no olvides salir del Editor validando los cambios con
el icono intrprete).
7. VIAJE TOTAL
Es importante notar que el ngulo de giro que recorre la tortuga es el ngulo
exterior y no el interior de los polgonos como, en un principio, podra suponerse;
de modo que el giro total que realiza la tortuga despus de dibujar un polgono es
de 360 grados. Conviene ayudar al alumnado a que descubra que la diferencia
entre un polgono y otro no estriba slo en su nmero de lados, sino en la amplitud
de sus ngulos.
BP BT
ES [ Escribe la longitud del lado de un cuadrado]
HAZ "LADO LEEPALABRA
REPITE 4 [ AV :LADO GD 90]
FIN
PARA SALUDO
ES [Cmo te llamas?]
HAZ "NOMBRE LEEPALABRA
ES FRASE [Encantado de conocerte] :NOMBRE
FIN
PARA CUBO
BP BT
ES [Este programa calcula el cubo de las cifras arbigas]
ES [De qu cifra deseas el cubo?]
HAZ "CIFRA LEECAR
PARA lectura_caracteres1
ES [Quin descubri Amrica?:]
HAZ "H LC ; se asigna a la variable H el 1er carcter escrito por teclado
ES :H
FIN
Obsrvese que, cuando el nombre de un procedimiento contiene ms de una
palabra, se usan subguiones para unirlos. En el procedimiento anterior no es
necesario pulsar [INTRO] para la aceptacin del dato.
PARA lectura_caracteres2
ES [Quin descubri Amrica?:]
HAZ "H LCS 3 ; se asigna a la variable H los tres primeros caracteres escritos por
teclado
ES :H
FIN
Tampoco es necesario pulsar [INTRO] para indicar al procedimiento que se ha
acabado de introducir los datos, puesto que est esperando tres caracteres y, una
vez recibidos, contina el flujo del programa. Si quieres introducir un nmero
menor de caracteres que los indicados, pulsa [INTRO] cuando decidas no introducir
ms.
PARA lectura_caracteres3
ES [Quin descubri Amrica?:]
HAZ "H LP ; asignamos a la variable H la primer palabra escrita por teclado
ES :H
FIN
PARA lectura_caracteres4
ES [Quin descubri Amrica?:]
HAZ "H LL ; asignamos a la variable H todo el texto escrito por teclado
ES :H
FIN
8. RECURSIVIDAD
Se llama recursividad a la posibilidad que ofrece un programa diseado en Logo de
llamarse a s mismo en un bucle sin fin. Un sencillo ejemplo lo constituye el
siguiente programa, que dibuja una circunferencia de modo recursivo:
PARA CIREC
AV 1
GD 1
CIREC
FIN
(Pero este procedimiento tiene una ejecucin infinita!)
Un primer problema por resolver en un procedimiento recursivo, es encontrar la
forma de abandonar su ejecucin infinita de procedimiento sin pulsar la tecla
[ESC]. Se puede abandonar dicha ejecucin mediante la primitiva TECLA? en una
condicin.
* Sentencias condicionales
Logo puede "valorar" el contenido de una condicin y "decidir" entre dos opciones.
Para dejar claros estos conceptos se utilizar la primitiva TECLA?, que devuelve
CIERTO o FALSO segn se haya pulsado o no una tecla.
El programa CIREC queda controlado al anteponer el condicional SI a la primitiva
TECLA?
PARA ARCO
SI TECLA? [ALTO]
AV 1
GD 1
ARCO
FIN
Este programa va dibujando un arco con avances y giros hasta que se pulse una
tecla.
Es importante insistir sobre la estructura de las sentencias condicionales, ya
que son la base del "pensamiento" de los programas en Logo.
La sentencia condicional se expresa con la primitiva SI y tiene varias sintaxis; las
dos ms usadas son:
SI condicin [accin 1] [accin 2]
Esta sentencia significa que, si se cumple la condicin, se ejecutan las acciones
contenidas en el primer corchete y, en caso contrario, las incluidas en el segundo.
En ambos casos, una vez realizadas todas las acciones incluidas en uno de los
corchetes, el programa ejecuta la lnea siguiente del programa:
SI condicin [accin]
En este caso, si se cumple la condicin, se ejecutan las acciones contenidas en el
corchete; despus el programa pasa a la lnea siguiente; si no se cumple la
condicin, el programa pasa a la lnea siguiente.
** Importancia de la recursividad en LOGO
Las estructuras recursivas se utilizan muy a menudo en los programas de robtica.
En gran cantidad de ocasiones las mquinas, adems de ejecutar acciones
habituales, estn alertas ante cualquier cambio que pueda producirse gracias a su
programacin. Dentro de su programa de funcionamiento, se incluyen programas
recursivos que se activan debido a los cambios en las condiciones de la mquina.
Conviene tener en cuenta que la recursividad es ms que un bucle, una llamada
al propio programa para que vuelva a realizar las mismas acciones en un ciclo sin
fin. Tal vez, la etiqueta de un conocido ans espaol pueda ejemplificar mejor el
fenmeno recursivo. En ella, un mono con un cierto toque "darwiniano", sostiene
una botella del mismo ans, la cual contiene a su vez otra etiqueta ms pequea
que contiene la representacin de un mono que sostiene una botella. Conviene
aclarar, por tanto, que cada vez que Logo se llama a s mismo, genera un nuevo
programa que debe ejecutarse en su totalidad. Esta ltima afirmacin, que puede
parecer una evidencia incuestionable, sirve como eficaz sistema de control de los
programas recursivos y debe tenerse siempre presente para no recargar los
programas con la "basura de las colas" que se van generando.
Control de la recursividad por medio de un contador
Ejemplo:
(ALTO sirve para parar la ejecucin del procedimiento)
PARA CONTADOR :N
SI :N<0 [ESCRIBE "GOL ALTO]
ES :N
CONTADOR :N-1
FIN
El programa contiene una variable local :N que slo sirve para escribir su contenido
cada vez que el programa se ejecuta. El programa se llama a s mismo y hace
disminuir el valor de la variable en cada paso. La sentencia condicional de la
primera lnea controla la ruptura del bucle en el momento en que se llega a un
valor negativo, se escribe la palabra GOL y se detiene el programa. Obsrvese que
la comparacin numrica entre el contenido de la variable y la constante no se ha
hecho con el signo = sino con el signo < ya que, si el incremento se hiciera con
decimales (CONTADOR :N-0,3), nunca se cumplira la condicin y el bucle sera
indefinido.
Construye otro contador que aumente el valor de la variable :N
Construye otro contador con dos variables, el nmero de inicio y el descenso.
Construye un programa recursivo que dibuje espirales utilizando un avance y
un giro, e incrementando uno otro o ambos.
Modifica el programa anterior con otras variables para cada incremento
** Las colas en la recursividad
En un prrafo anterior, se afirma que cada vez que un programa se llama a s
mismo genera un nuevo programa que debe terminarse. Es importante no cerrar el
tema de la recursividad sin presentar los "extraos efectos" que la recursividad
produce en un programa. La capacidad de Logo para evitar dichos efectos pone de
manifiesto cuando se evitan, a travs de una correcta programacin.
Observa este programa:
PARA CAPICUA :N
SI :N<1 [ALTO]
ES FRASE [CABEZA] :N
CAPICUA :N-1
ES FRASE [COLA] :N
FIN
Antes de ejecutar CAPICUA 9, te proponemos la apuesta de intentar averiguar lo
que escribir Logo cuando se ejecute CAPICUA 9. Una vez hayas formulado tu
apuesta, observa que CAPICUA 9, despus de pasar por la primera lnea de control
escribe CABEZA 9 e inmediatamente despus se convierte en CAPICUA 8 sin haber
terminado el programa, dejando pendiente para otro momento la ejecucin de la
frase COLA 9. El programa CAPICUA 8 har lo mismo dejando su ltima orden COLA
8 para otro momento, y as sucesivamente hasta que :n llegue a valer 0, momento
en que, en lugar de terminar, ejecutar todas las colas empezando por la del
ltimo programa ejecutado, CAPICUA 1 hasta llegar al primero.