Sunteți pe pagina 1din 10

PROGRAMACIN EN LENGUAJE WINLOGO

1. INGRESA A WINLOGO

Para entrar a WINLOGO haz doble clic en el cono que tienes en el Escritorio de Windows. Si no te funciona entra a travs del botn Inicio de Windows.

2.

ENTORNO DE WINLOGO

La ventana de la aplicacin aparece dividida en otras tres cuyo nombre puedes localizar en la barra de ttulo 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 cmo hacer algo, o el resultado de algunas primitivas cuando estas dan valores de tipo texto o numrico).

3.

INGRESAR INSTRUCCIONES

En el rea de trabajo puedes escribir instrucciones (se llaman primitivas) para que LOGO las ejecute. Aqu tienes una lista de primitivas para que la pruebes. PRIMITIVA AVANZA N RETROCEDE N GIRADERECHA N GIRAIZQUIERDA N CENTRO BORRAPANTALLA BAJALAPIZ SUBELAPIZ OCULTATORTUGA BP BL SL OT ABREVIATURA AV N RE N GD N GI N QU HACE La tortuga avanza hacia delante N puntos. La tortuga retrocede N puntos. La tortuga gira a la derecha N grados. La tortuga gira a la izquierda N grados. Sita a la tortuga en el centro de la pantalla. Borra la pantalla grfica. El lpiz se sita sobre el papel. Si luego se mueve la tortuga se marcar su recorrido sobre la pantalla. El lpiz se levanta del papel. Aunque la tortuga se mueva no marcar su recorrido sobre la pantalla. La tortuga desaparece de la pantalla (pero sigue dibujando). La tortuga vuelve a aparecer en la pantalla La tortuga pinta de color N (N puede valer cualquier nmero entre 1 y 256). Modifica el grosor del trazo de la tortuga (N puede valer cualquier nmero entre 1 y 10). EJEMPLO AVANZA 100 RETROCEDE 25 GD 90 GI 30 CENTRO BORRAPANTALLA BAJALAPIZ SUBELAPIZ OT MT PONCOLOR 200 PONGROSOR 5

MUESTRATORTUGA MT PONCOLOR N PONGROSOR N ESCRIBE "N PONCL N PONG N ES "N

Escribe en la pantalla de textos la palabra puesta ESCRIBE "Hola detrs de las comillas.

ESCRIBE [N N N...] REPITE N [ACCION]

ES [N N N . ]

Escribe en la pantalla de textos las palabras puestas entre corchetes. Repite N veces la accin (cualquier primitiva) o acciones puestas entre corchetes.

ES [Hola Cmo ests?] REPITE 5 [ES "Hola]

4.

ESCRIBIR PROGRAMAS UTILIZANDO PRIMITIVAS

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 GIRADERECHA AVANZA 60 GIRADERECHA AVANZA 60 GIRADERECHA AVANZA 60 GIRADERECHA

90 90 90 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
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.

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 cmo funciona. Intenta dibujar con ayuda de la primitiva repite un cuadrado. Si no lo consigues prueba lo siguiente

REPITE 4 [AV 60 GD 90]


Intenta dibujar con ayuda de la primitiva REPITE el resto de polgonos regulares.

Escribe las rdenes 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:

REPITE 90 [AV 1 GD 1]
Se parece a un arco de circunferencia? Cuntos grados abarca?

Estados del lpiz.


Busca informacin sobre las primitivas SUBELAPIZ (SL) Y BAJALAPIZ (BL) e intenta dibujar dos lneas paralelas, tres tringulos equilteros en la misma pantalla, un tringulo equiltero un cuadrado y una circunferencia en la misma pantalla, una circunferencia con una recta tangente y otra secante. Color. Busca informacin sobre las primitivas COLORLAPIZ (CL) Y PONCOLORLAPIZ (PONCL) y escribe las rdenes necesarias para dibujar un tringulo equiltero 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 rdenes para dibujar un tringulo un cuadrado y un pentgono rellenos de un color diferente cada uno. Escribe las rdenes necesarias para dibujar la bandera del Per. A la forma de trabajar hasta aqu se le suele llamar ejecutar rdenes en MODO DIRECTO.

5.

HACER PROGRAMAS

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). En la siguiente lnea comenzaremos a escribir las diferentes rdenes 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 lnea 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 equilteros podramos hacer lo siguiente

PARA TRIANGULO REPITE 3 [AVANZA 40 GIRADERECHA 120] FIN


Al escribir el nombre del procedimiento en la ventana de trabajo

TRIANGULO
El programa me dibujar un tringulo. Busca ms informacin sobre estas 2 primitivas (PARA y FIN) en la ayuda de WinLogo. 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 deba editar el procedimiento y realizar las modificaciones pertinentes. Lo que vamos a hacer ahora es crear procedimientos que llevan implcitos, en la lnea de llamada a los mismos, ciertos valores para utilizarlos en la ejecucin del mismo. Veamos un ejemplo

PARA HEXAGONO :LADO REPITE 6 [AV :LADO GD 60] FIN Cuando escriba HEXAGONO 60 HEXAGONO 70 HEXAGONO 80
WinLogo dibujar hexgonos de lado 60, 70 y 80 respectivamente. Escribe procedimientos con una variable para el lado del resto de los polgonos regulares. Ejecuta el siguiente procedimiento

PARA CIRCUNFERENCIA :RADIO REPITE 360 [AV 2*PI*:RADIO/360 GD 360/360] FIN


Qu hace? Escribe el procedimiento de nombre POLIGONO_REGULAR :LADOS que me dibuje cualquier polgono regular dndole el nmero de lados que ha de tener.

De varias entradas. Vista la flexibilidad que me ofrece podramos pensar en introducirle junto con el nombre del procedimiento ms de un valor. La forma de hacerlo es similar. Prueba lo siguiente 4

PARA RECTANGULO :LADO1 :LADO2 REPITE 2[AV :LADO1 GD 90 AV :LADO2 GD 90] FIN
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 REPITE 2[AV :LADO1 GD :ANGULO AV :LADO2 GD 180-:ANGULO] FIN
Creacin de variables y operaciones con variables. Busca informacin sobre la primitiva HAZ. Prueba lo siguiente:

PARA ESPIRALCUADRADA :LADO REPITE 60[AV :LADO GD 90 HAZ LADO :LADO+1] FIN ESPIRALCUADRADA 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 REPITE 4[AV :LADO GD 90] FIN PARA DIBUJO REPITE 6 [AV 20 GD 60 CUADRADO 75] FIN
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. Recursin. Hasta ahora controlbamos el nmero de ciclos que se ejecutaba una serie de ordenes mediante la primitiva REPITE, pero a veces necesitamos que el programa est ejecutndolas de forma permanente. En estas situaciones podemos hacer que el procedimiento se llame a si mismo. A esto se le llama recursin. Vemoslo con un ejemplo que ya debes conocer

PARA POLI :LADO :ANGULO


5

AVANZA :LADO GIRADERECHA :ANGULO POLI :LADO :ANGULO FIN 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 exigindonos 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 quizs nos ayude a entender esto. Si deseamos realizar la figura que se muestra (un ejemplo que an 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 continuacin

PARA FIGURA REPITE 4 [BANDERA] FIN PARA BANDERA CUADRADO 20 MASTIL FIN PARA MASTIL GI 90 AV 50 FIN PARA CUADRADO :LADO REPITE 4[AV :LADO GD 90] FIN FIGURA
Si desesemos dibujar un tablero de ajedrez podramos descomponer el dibujo en otros ms sencillos. Podramos empezar definiendo procedimientos que me dibujasen un cuadrado blanco y otro negro. Continuaramos definiendo un procedimiento que me dibujase un cuadrado blanco junto a uno negro, a continuacin definiramos el procedimiento que completase una fila y seguiramos hasta completar el tablero. No es fcil pero si no empiezas no terminas. Te atreves?

Estructuras de control. Condicionales. Utilizamos con anterioridad

SI TECLA? [ALTO]
La primitiva SI es de la forma

Si pred [rdenes] Si pred [rdenes] [rdenes2]


6

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 [ESCRIBE [MENOR DE EDAD]][ESCRIBE "MAYOR] FIN EDAD 17 PARA NUMERO :NUMERO SI :NUMERO<0 [ESCRIBE "NEGATIVO] FIN NUMERO 17
Busca en la ayuda informacin sobre la primitiva AZAR e intenta averiguar qu hara el siguiente procedimiento

PARA MONEDA SI 1=AZAR 2[ESCRIBE "CARA][ES "CRUZ] FIN 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. Comprobmoslo en el siguiente ejemplo

PARA CONTADOR_HASTA :NUMERO HAZ "CUENTA 0 INCREMENTO FIN PARA INCREMENTO ES :CUENTA SI :CUENTA=:NUMERO [ALTO] HAZ "CUENTA :CUENTA+1 INCREMENTO FIN CONTADOR_HASTA 10
Intenta escribir el procedimiento de nombre CUENTA_ATRS :NUMERO que escriba valores desde :NUMERO hasta 0.

6.

EJEMPLOS DE PROCEDIMIENTOS

Los programas en logo se construyen utilizando procedimientos, que son una secuencia de primitivas (rdenes bsicas que le damos al ordenador). Los procedimientos en logo comienzan por PARA y terminan con FIN y en medio de estas dos palabras escribimos las rdenes que queremos que tenga el programa. Para construir un procedimiento seguiremos los siguientes pasos: 1.- Pulsamos el botn Edicin de la barra de botones de arriba. 2.- Escribimos el programa en la ventana de edicin que aparece. 3.- Pulsamos el botn Interpretar para que logo interprete el programa. 4.- Ejecutamos el programa escribiendo su nombre en la ventana de Trabajo.

Escribe los siguientes programas y ejecute: Ejemplo 1. Figura geomtrica cometa:

PARA cometa :d :a :l Borrapantalla SL av :d gd :a bl Av :l centro Ponrumbo 0 SL av :d gi :a bl Av :l centro Ponrumbo 0 FIN


Escribe en la ventana trabajo: Cometa 70 60 40 Ejemplo 2. Procedimiento recursivo:

para cir borrapantalla av 1 gd 1 cir fin


Ejemplo 3. Dibuja pentgono.

PARA Pentagono Borrapantalla Escribe [Cunto quieres que mida el lado del Pentgono?] Haz "lado LeePalabra Repite 5 [AV :lado GD 360/5] FIN
Ejemplo 4. Escribe hola, ms tu nombre

PARA saludo Escribe [Cmo te llamas?] Haz "nombre leepalabra (escribe "hola :nombre) FIN
Ejemplo 5. Dibuja rectngulo con una altura y ancho dado

PARA Rectangulo Borrapantalla LimpiaVentana TEXTOS Escribe [Dime la altura del rectngulo] Haz "altura LeePalabra
8

Escribe [Dime el ancho del rectngulo] Haz "ancho LeePalabra av :altura gd 90 av :ancho gd 90 av :altura gd 90 av :ancho FIN
Ejemplo 6. Calculadora

PARA Calculadora Borrapantalla LimpiaVentana TEXTOS Escribe [Dime un nmero] Haz "a LeePalabra Escribe [Dime otro nmero] Haz "b LeePalabra Haz suma (:a + :b) (Escribe La suma de :a ms :b es :suma) Haz resta (:a - :b) (Escribe La resta de :a menos :b es :resta) Haz mult (:a * :b) (Escribe La multiplicacin de :a por :b es :mult) Haz div (:a / :b) (Escribe La divisin de :a entre :b es :div) FIN
Ejemplo 7. Decide por una alternativa

PARA averigua escribe [Cual crees que es el secreto?] haz "intento leepalabra si :intento=fuego [escribe [has acertado]] [escribe [has fallado]] si :intento=fuego [alto] [averigua] FIN
Ejemplo 8. Nota media

PARA notamedia escribe [Dime la nota del primer examen] haz "a leepalabra escribe [Dime la nota del segundo examen] haz "b leepalabra escribe [Dime la nota del tercer examen] haz "c leepalabra escribe [Dime la nota del cuarto examen] haz "d leepalabra escribe [Dime la nota del quinto examen] haz "e leepalabra haz "media (:a+:b+:c+:d+:e)/5
9

(escribe "Tu "notamedia "es :media) si :media<5 [escribe [Has suspendido]] [escribe [Has aprobado]] FIN
Ejemplo 9. Al azar

PARA moneda escribe [Qu eliges: cara o cruz?] haz "eleccion leepalabra haz "sorteo azar 10 si :sorteo>4 [haz "resultado "cara] [haz "resultado "cruz] si :resultado=:eleccion [escribe [Has ganado]] [escribe [Has perdido]] FIN
Ejemplo 10. Solucin a ecuacin

PARA ecuacion escribe [dime el coeficiente a] haz "a leepalabra escribe [dime el coeficiente b] haz "b leepalabra escribe [dime el coeficiente c] haz "c leepalabra haz "radicando :b*:b-4*:a*:c si :radicando<0 [escribe [No hay solucin real]] [haz "numerador1 -:b+RC :radicando haz "numerador2 -:b-RC :radicando haz "denominador 2*:a haz "x1 :numerador1/:denominador haz "x2 :numerador2/:denominador (escribe "La "primera "solucin "es :x1) (escribe "La "segunda "solucin "es :x2)] FIN

10