1
El entorno de WinLogo
Una vez arrancado el programa, nos encotraremos con una presentacin como la que se muestra:
La ventana de la aplicacin aparece dividida en otras tres cuyo nombre puedes localizar en la barra de titulo de cada una de ellas, estas son
Grficos, Trabajo y Textos.
Ventana de trabajo: en ella escribiremos las primitivas que realizarn diferentes operaciones
Ventana de grficos: en el centro de la misma aparece una tortuga que se desplazar dejando un rastro en funcin de las primitivas que
hayamos escrito en la ventana de trabajo.
Ventana de textos: esta ventana la utiliza el programa para mostrar diferentes tipos de informacin (no conoce alguna primitiva que le
escribamos, no sabe como hacer algo, o el resultado de algunas primitivas cuando estas dan valores de tipo texto o numrico).
Movimiento. Primeras primitivas.
Las cosas que sabe hacer WinLogo se llaman primitivas o procedimientos primitivos (despus veremos otros procedimientos que no
vienen de origen con el programa y son la forma de ensearle ms cosas). Para ejecutarlas deberemos escribirlar en la ventana de trabajo y al
pulsar la tecla Intro el programa realizar la accin asociada a dicha primitiva.
Veamos un ejemplo, escribe en la ventana de trabajo
AVANZA 60
GI RADERECHA 90
AVANZA 60
GI RADERECHA 90
AVANZA 60
GI RADERECHA 90
AVANZA 60
GI RADERECHA 90
Habrs observado como la primitiva AVANZA hace avanzar a la tortuga 60 unidades al tiempo que va dibujando una lnea, mientras que la
primitiva GIRADERECHA le hace girar sobre si misma y a la derecha tantos grados como indica el nmero que lleva a continucacin.
Busca en la ayuda informacin sobre estas dos primitivas para irte familiarizando con el modo en que se describen stas en el programa.
Las dos primitivas anteriores pueden escribirse tambin como AV (AVANZA) y GD (GIRADERECHA).
Esribe ahora otra primitiva en la ventana de trabajo
BP
2
Como has podido comprobar se borra cualquier dibujo que haya sobre la ventana de grficos y la tortuga vuelve a su posicin inicial. La
primitiva BP es la forma abreviada de BORRAPANTALLA.
Busca informacin en la ayuda sobre las primitivas RETROCEDE (RE) Y GIRAIZQUIERDA (GI) e intenta dibujar una silla, una F, un
ngulo recto, polgonos regulares de 3, 5, 6, 7, 8, 9 y 10 lados (el ngulo que habr de girar la tortuga para dibujar un polgono de n lados es
igual a 360/n). Procura que la tortuga siempre quede en la posicin y en la direccin que tena al principio.
SILLA
LETRA F
NGULO RECTO
TRINGULO
PENTGONO
HEXGONO
HEPTGONO
OCTGONO
ENEGONO DECGONO
Iteracin.
Al escribir las primitivas para dibujar los polgonos regulares habrs comprobado que hay secuencias que se repiten. Para estos casos
WinLogo me ofrece la primitiva REPITE. Busca informacin en la ayuda para conocer como funciona.
Intenta dibujar con ayuda de la primitiva repite un cuadrado. Si no lo consigues prueba lo siguiente
REPI TE 4 [ AV 60 GD 90]
Intenta dibujar con ayuda de la primitiva REPITE el resto de polgonos regulares.
TRINGULO
PENTAGONO
HEXAGONO
HEPTAGONO
OCTOGONO
ENEAGONO
DECAGONO
Escribe las ordenes necesarias para dibujar un polgono regular de 360 lados avanzando una unidad para cada lado, ten en cuenta lo dicho
anteriormente respecto del ngulo que ha de girar la tortuga para dibujar un polgono de n lados. Se parece a una circunferencia?.
Escribe lo siguiente:
REPI TE 90 [ AV 1 GD 1]
Se parece a un arco de circunferencia? Cuntos grados abarca?.
3
Estados del lpiz.
Busca informacin sobre las primitivas SUBELAPIZ (SL) Y BAJ ALAPIZ (BL) e intenta dibujar dos lneas paralelas, tres tringulos
equilateros en la misma pantalla, un triangulo equiltero un cuadrado y una circunferencia en la misma pantalla, una circunferencia con una
recta tangente y otra secante.
DOS LINEAS PARALELAS
TRIANGULO CUADRADO CIRCUNFER.
CIRCUNFERENCIA TG. SECANTE
Color.
Busca informacin sobre las primitivas COLORLAPIZ (CL) Y PONCOLORLAPIZ (PONCL) y escribe las ordenes necesarias para dibujar
un tringulo equilatero de forma que cada uno de sus lados tenga un color diferente.
Dibuja un tringulo y sus tres mediatrices, stas ltimas en distinto color que el tringulo.
Busca informacin sobre la primitiva RELLENA y escribe las ordenes para dibujar un triangulo un cuadrado y un pentgono rellenos de un
color diferente cada uno.
Escribe las ordenes necesarias para dibujar la bandera de Castilla la Mancha, haz lo mismo con la bandera de Espaa.
Castilla Mancha
Espaa
A la forma de trabajar hasta aqu se le suele llamar ejecutar ordenes en MODO DIRECTO.
Procedimientos fijos.
Hasta ahora ejecutabamos procedimientos primitivos o primitivas (acciones que ya sabe hacer WinLogo). Ahora le vamos a ensear a
hacer cosas que no sabe mediante procedimientos.
Definicin de Procedimientos
Cuando se define un procedimiento a travs de la primitiva PARA, WinLogo entra en modo definicin de procedimiento, y permanece as
hasta que se pulse INTRO en el Fin del procedimiento.
Adems, la lnea de estado presenta tambin el nombre del procedimiento que est definiendo. Cada vez que desplace el cursor por encima
de un procedimiento definido, podr ver que su nombre aparecer dentro del recuadro.
Nuestros procedimientos comenzarn con la primitiva PARA y separado de esta mediante un espacio escribiremos el nombre del
procedimiento. Este nombre no podr coincidir con el de una primitiva ni contener smbolos propios del lenguaje (+, =, etc).
4
En la siguiente lnea comenzaremos a escribir las diferentes ordenes que queremos que ejecute el procedimiento y terminaremos el
procedimento con la primitiva FIN. Al pulsar Intro sobre esta ltima lnea me aparecer en la ventana de textos Acabas de definir ...
(Nombre que le hemos dado al procedimiento).
En caso de realizar cualquier modificacin sobre un procedimiento debo ir a la linea que tiene la primitiva fin y pulsar Intro para que el
ordenador reconozca los cambios realizados.
Por ejemplo, si queremos definir un procedimiento que dibuje tringulos equilateros podriamos hacer lo siguiente
PARA TRI ANGULO
REPI TE 3 [ AVANZA 40 GI RADERECHA 120]
FI N
Al escribir el nombre del procedimiento en la ventana de trabajo
TRI ANGULO
El programa me dibujar un tringulo.
Busca ms informacin sobre estas 2 primitivas (PARA y FIN) en la ayuda de WinLogo.
Define procedimientos que dibujen los diferentes polgonos regulares de 4 a 10 lados y la circunferencia.
Cuadrado
Pentgono
Hexgono
Heptgono
Octgono
Enegono
Decgono
Circunferencia
Busca informacin sobre los polgonos estrellados e intenta definir procedimientos que dibujen polgonos estrellados.
Procedimientos variables.
De 1 entrada.
Hasta ahora el procedimiento defina el tamao de las figuras que venimos haciendo. Si quera modificar el tamao debia editar el
procedimiento y realizar las modificaciones pertinentes.
Lo que vamos a hacer ahora es crear procedimientos que llevan implicitos, en la lnea de llamada a los mismos, ciertos valores para
utilizarlos en la ejecucin del mismo.
Veamos un ejemplo
PARA HEXAGONO : LADO
REPI TE 6 [ AV : LADO GD 60]
FI N
Cuando escriba
HEXAGONO 60
HEXAGONO 70
HEXAGONO 80
WinLogo dibujar hexagonos de lado 60, 70 y 80 respectivamente.
Escribe procedimientos con una varible para el lado del resto de los polgonos regulares.
Ejecuta el siguiente procedimiento
PARA CI RCUNFERENCI A : RADI O
REPI TE 360 [ AV 2*PI *: RADI O/ 360 GD 360/ 360]
FI N
Qu hace?
5
Escribe el procedimiento de nombre POLIGONO_REGULAR :LADOS que me dibuje cualquier polgono regular dandole el nmero de
lados que ha de tener.
De varias entradas.
Vista la flexibilidad que me ofrece podriamos pensar en introducirle junto con el nombre del procedimiento ms de un valor. La forma de
hacerlo es similar.
Prueba lo siguiente
PARA RECTANGULO : LADO1 : LADO2
REPI TE 2[ AV : LADO1 GD 90 AV : LADO2 GD 90]
FI N
Crea un procedimiento de nombre POLIGONO :LADO :ANGULO que dibuje polgonos dado el lado y el ngulo de giro.
Crea un procedimiento de nombre POLIGONO :LADO :LADOS que dibuje polgonos en funcin del lado y del nmero de lados.
Prueba lo siguiente
PARA ROMBO : LADO1 : LADO2 : ANGULO
REPI TE 2[ AV : LADO1 GD : ANGULO AV : LADO2 GD 180- : ANGULO]
FI N
Creacin de variables y operaciones con variables.
Busca informacin sobre la primitiva HAZ.
Prueba lo siguiente:
PARA ESPI RALCUADRADA : LADO
REPI TE 60[ AV : LADO GD 90 HAZ LADO : LADO+1]
FI N
ESPI RALCUADRADA 5
Como habrs observado, el valor introducido para la variable :LADO es un valor de inicio que vamos incrementando a lo largo de la
ejecucin del procedimiento.
Escribe el procedimiento de nombre ESPIRALCIRCULAR :LADO que dibuje espirales circulares.
Procedimientos que llaman a otros procedimientos.
Lo bueno de los procedimientos no es solo que nos permiten ejecutarlos escribiendo solamente el nombre, adems puedo llamarlos desde
otros procedimientos haciendo ms sencilla y rpida la programacin. Veamos un ejemplo
PARA CUADRADO : LADO
REPI TE 4[ AV : LADO GD 90]
FI N
PARA DI BUJ O
REPI TE 6 [ AV 20 GD 60 CUADRADO 75]
FI N
Como habrs observado, el procedimiento dibujo llama al procedimiento cuadrado.
Haz pruebas variando el polgono dibujado, el nmero de veces que se repite y la posicin que toma antes de dibujar el polgono.
6
Recursin.
Hasta ahora controlabamos el nmero de ciclos que se ejecutaba una serie de ordenes mediante la primitiva REPITE, pero a veces
necesitamos que el programa est ejecutandolas de forma permanente. En estas situaciones podemos hacer que el procedimiento se llame a si
mismo. A esto se le llama recursin.
Veamoslo con un ejemplo que ya debes conocer
PARA POLI : LADO : ANGULO
AVANZA : LADO
GI RADERECHA : ANGULO
POLI : LADO : ANGULO
FI N
POLI 60 80
Como estars comprobando el programa ha entrado en un ciclo infinito y est tan ocupado que no te hace caso, cuando quieras retomar el
control del programa pulsa ESC y se detendr la ejecucin del programa.
Una forma ms elegante de hacer eso es insertar la siguiente lnea
SI TECLA? [ ALTO]
en cualquier sitio dentro del ciclo de recursividad.
Modularizacin.
Conforme vamos aprendiendo ms cosas sobre la programacin con WinLogo vamos exigiendonos ms y nos planteamos problemas ms
complejos. Cuando esto ocurre resulta necesario ver si podemos descomponer el problema complejo en una serie de problemas sencillos o
mdulos.
Un ejemplo quizas nos ayude a entender esto. Si deseamos realizar la figura que se muestra (un ejemplo que aun est a nuestro alcance) la
podemos descomponer en procedimientos que me dibujen figuras ms sencillas y realizar despus un procedimiento que integre los pequeos
mdulos en que hemos descompuesto nuestro problema.
El programa podra consistir en una serie de procedimientos como los que se muestran a continucacin
PARA FI GURA
REPI TE 4 [ BANDERA]
FI N
PARA BANDERA
CUADRADO 20 MASTI L
FI N
PARA MASTI L
GI 90 AV 50
FI N
7
PARA CUADRADO : LADO
REPI TE 4[ AV : LADO GD 90]
FI N
FI GURA
Si deseasemos dibujar un tablero de ajedrez podriamos descomponer el dibujo en otros ms sencillos. Podriamos empezar definiendo
procedimientos que me dibujasen un cuadrado blanco y otro negro. Continuariamos definiendo un procedimiento que me dibujase un
cuadrado blanco junto a uno negro, a continuacin definiriamos el procedimiento que completase una fila y seguiriamos hasta completar el
tablero. No es fcil pero si no empiezas no terminas. Te atreves?
8
Estructuras de control.
Condicionales.
Utilizamos con anterioridad
SI TECLA? [ ALTO]
La primitiva SI es de la forma
Si pr ed [ r denes]
Si pr ed [ r denes] [ r denes2]
Ejecuta la lista de instrucciones indicada en rdenes en caso de que pred sea CIERTO. Si se indica una segunda lista, rdenes2, ejecutar la
misma en caso de que pred sea FALSO. Si se omite la lista rdenes2, se debe pulsar INTRO despus de la lista rdenes, de lo contrario se
producir un mensaje de error.
Para aclarar ideas probemos estos 2 procedimientos
PARA EDAD : EDAD
SI : EDAD<18 [ ESCRI BE [ MENOR DE EDAD] ] [ ESCRI BE " MAYOR]
FI N
EDAD 17
PARA NUMERO : NUMERO
SI : NUMERO<0 [ ESCRI BE " NEGATI VO]
FI N
NUMERO 17
Busca en la ayuda informacin sobre la primitiva AZAR e intenta averiguar que hara el siguiente procedimiento
PARA MONEDA
SI 1=AZAR 2[ ESCRI BE " CARA] [ ES " CRUZ]
FI N
MONEDA
Detencin de un procedimiento.
La primitiva ALTO, que utilizamos con anterioridad, detiene la ejecucin del procedimiento en curso, devolviendo el control al
procedimiento que lo ha llamado. Comprobemoslo en el siguiente ejemplo
PARA CONTADOR_HASTA : NUMERO
HAZ " CUENTA 0
I NCREMENTO
FI N
PARA I NCREMENTO
ES : CUENTA
SI : CUENTA=: NUMERO [ ALTO]
HAZ " CUENTA : CUENTA+1
I NCREMENTO
FI N
CONTADOR_HASTA 10
Intenta escribir el procedimiento de nombre CUENTA_ATRS :NUMERO que escriba valores desde :NUMERO hasta 0.