Tutorial Winlogo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 32

DEL CLAVO AL ORDENADOR CON LOGO

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.

ALGUNAS COSAS ESTN MODIFICADAS POR MIGUEL . ABALLE PARA EL CURSO DE


ED. MATEMTICA Y NUEVAS TECNOLOGAS

Parte I. FUNDAMENTOS DE LOGO


El lenguaje Logo se presenta en distintos formatos, que depende del fabricante del
entorno; los ms utilizados son ACTILOGO y WIN-LOGO fundamentalmente; el winlogo puede usarse en entorno del DOS y tambin en el de WINDOWS. Como
ltimamente la mayora de los programas se desarrollan para el entorno Windows y
el manejo de este sistema operativo es muy asequible para cualquier usuario, en el
este curso se ha optado por hacer uso de WIN-LOGO para Windows.
Para poder ejecutar el WIN-LOGO son necesarios, adems de los materiales
genricos que requiere el entorno Windows sobre el que este lenguaje trabaja, los
siguientes elementos: un ordenador compatible con IBM 386 o superior, dos Mb de
memoria extendida y dos Mb de disco duro libres; opcionalmente sern necesarias
una impresora y una tarjeta de sonido.

1. WINLOGO USA VENTANAS


WinLogo posee varias ventanas o reas de trabajo que pueden ser utilizadas para
determinadas tareas. Estas ventanas son:
Grficos: En la ilustracin, la grande de arriba
Textos: En la ilustracin, la de abajo a la dcha.
Trabajo: En la ilustracin, la de abajo a la izda.
Otras.Formas, Edicin y Trazado

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

de Textos (zona en la que Logo escribe sus mensajes) y ventana correspondiente al


rea de Trabajo (zona en la que el usuario escribe sus mensajes).
Cmo trabajar con ventanas
Las ventanas no estn siempre en la misma posicin: se pueden mover, cambiar de
tamao, superponer o cerrar.
Solamente se puede actuar sobre las ventanas activas. Para determinar cundo una
ventana se encuentra activa es suficiente comprobar que su barra superior se
encuentra resaltada.
Para activar una ventana basta colocar el puntero del ratn sobre ella y pulsar su
botn izquierdo; el camino indicado sirve solamente si la ventana est presente en
pantalla; en caso contrario, es decir cuando la ventana no est en pantalla, basta
elegir la opcin Ventanas de la barra de mens y seleccionar el nombre de la
ventana que se quiere activar; la ventana as activada se superpondr a las
ventanas que aparecan antes en la pantalla. Para desactivar una ventana basta
con activar una nueva.
Para cerrar una determinada ventana en primer lugar sta debe aparecer como
activa; despus, la ventana puede cerrarse utilizando alguno de los procedimientos
siguientes:
a. Pulsando [Ctrl]+[F4].
b. Haciendo doble "clic" en el recuadro superior izquierdo (botn de control) de
la ventana activa.
c. Haciendo un "clic" en el botn de control de la ventana y eligiendo la opcin
Cerrar.

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]

La tortuga dibujar una recta de cuarenta unidades de longitud en la ventana


GRFICOS, ya que el resultado de la primitiva AVANZA es un dibujo.
Prueba con otra primitiva, escribe ESCRIBE "HOLA y despus pulsa [INTRO]. En la
ventana de TEXTOS aparecer escrita la palabra HOLA. Las rdenes de escritura se
ejecutan en la zona de TEXTOS.
RECUERDA:
Las rdenes se escriben en la ventana de Trabajo. Logo muestra sus mensajes y
textos en la ventana de Textos, sus grficos los representa en la ventana de
Grficos.
Si se comete un error al escribir una primitiva como por ejemplo ordenar a la
primitiva una accin incompleta, Logo enva su mensaje de error a travs de la
ventana de TEXTOS. Para comprobarlo se teclea: ESSCRIBE "HOLA; la palabra
escribe se ha escrito con dos eses; el ordenador en este caso emitir un mensaje
de error en la ventana de TEXTOS. El mensaje de error que va a parecer es: no se
cmo hacer ESSCRIBE.
Realiza las pruebas siguientes: escribe los textos tal y como aparecen a
continuacin y pulsa [INTRO] despus de cada lnea.
AVANZA 80
AV 80
BORRAPANTALLA
AV 40

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.

Edicin en modo directo


Tambin se puede repetir una orden directa pulsando [INTRO] despus de haber
colocado el cursor en la lnea en la que la orden se haba ejecutado.
ACTIVIDAD GUIADA
Escribe la siguiente orden y pulsa [INTRO]: GD 45
El cursor baja una lnea y el programa espera a que escribas otra orden. Sube el
cursor a la lnea anterior y vuelve a pulsar [INTRO]. Repite la accin varias veces,
vers cmo se ejecuta como si la hubieras escrito de nuevo.
Como se ha explicado anteriormente, en una lnea se pueden escribir varias
rdenes seguidas. Logo las ejecuta una tras otra.
Borra la pantalla de Grficos con la orden BP y, en una lnea en blanco escribe las
dos rdenes siguientes y pulsa [INTRO]: AV 60 GD 90
Sube el cursor a la lnea anterior y pulsa [INTRO]. Repite la operacin dos veces
ms. Cuando concluyas el ejercicio observa que Logo ha dibujado un cuadrado.
Esta posibilidad permite corregir un error sin necesidad de reescribir toda la lnea
de rdenes en la que apareca dicho error.
Escribe y ejecuta: HESCRIBE "ERROR
Logo enva un mensaje a la ventana de textos el siguiente mensaje:
no s como hacer para HESCRIBE

Sube el cursor a la lnea errnea, suprime la H y pulsa [INTRO]. Observa que en la


ventana de textos Logo escribe la palabra que le habas ordenado.
Una primitiva interesante: REPITE
Merece la pena dedicarle un apartado especfico a la primitiva REPITE debido a su
gran utilidad en la creacin de grficos y en el micromundo de control. Esta
primitiva no tiene abreviatura; su sintaxis es:
REPITE n[acciones]
ACTIVIDAD GUIADA
Realiza los siguientes ejercicios y pulsa [INTRO] al final de cada lnea:
REPITE 4[AV 50 GD 90]
BP
REPITE 6 [AV 40 GD 60]
BP
REPITE 7 [AV 30 GD 360 / 7 ]
Cambia el siete por nueve y pulsa [INTRO].
Escribe el siguiente conjunto de rdenes: (SL significa SUBELAPIZ y BL es
BAJALAPIZ)

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.

4. ALGUNAS PRIMITIVAS MS DEL LENGUAJE LOGO


SUBELAPIZ (SL)
BAJALAPIZ (BL)

REPITE
CENTRO

Eleva el lpiz de la tortuga activa para que no deje trazo


al moverse.
Activa el lpiz de la tortuga y dibuja un trazo a lo largo
de su trayectoria.
Repite el nmero de veces indicado la accin situada
entre corchetes.
Sita las tortugas activas en el centro del grfico. En su
desplazamiento al centro, las tortugas dejan rastro o no,
dependiendo de si su posicin es bajalapiz o subelapiz.

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

correspondientes a cada uno de sus miembros (cabeza, cuello, cuerpo, brazos,


patas y pies).
(Atencin: En el siguiente ejemplo se est dando por supuesto que estn
definidos previamente los procedimientos CABEZA, CUELLO, etc.)
PARA ROBOT
BP BL PONG 2 PONF 3
CABEZA CEN
CUELLO CEN
BRI CEN
CUERPO CEN
BRD CEN
PATAIZ CEN
PIEIZ CEN
PATAD CEN
PIED CEN
FIN

La referencia al centro (CEN) es la caracterstica que ms destaca en el ejemplo


anterior por el hecho de que, despus de dibujar cada miembro del robot, la
tortuga vuelve al centro de la pantalla para dibujar la siguiente pieza. Este
movimiento que se repite al final de cada mdulo se realiza por medio del
programa CEN.
PARA CEN
SL PONRUMBO 0 CENTRO
FIN
Por otro lado, los mdulos encargados de dibujar los miembros trazan rectngulos,
por lo que se ha creado un mdulo variable, REC que se adapta al tamao de
rectngulo que interese en cada momento, de forma que cada dibujo comienza y
termina en el ngulo inferior izquierdo.
(En el procedimiento siguiente :L y :A son lo que se llaman variables del
mismo. En este caso son dos; para aplicar el procedimiento siempre habr que
poner dos datos, por lo tanto).
PARA REC :L :A
BL
REPITE 2 [ AV :L GD 90 AV :A GD 90]
FIN
Los mdulos que dibujan los miembros, CABEZA, CUELLO y el resto, comienzan su

ejecucin subiendo el lpiz y colocando la tortuga en la posicin correspondiente


al vrtice inferior izquierdo del rectngulo que se dibuje en cada caso. El uso de
papel cuadriculado supone una gran ayuda en esta labor.
2) Modularidad con referencia al mdulo anterior
El problema que se plantea es el de conocer en todo momento la posicin de la
tortuga cuando termina un mdulo, ya que es necesario situar la tortuga en un
punto determinado para comenzar el mdulo siguiente. Como ejemplo de diseo,
se toma un tren dividido en cada una de las unidades que integran el convoy.
(Habra que consultar el manual de LOGO para conocer las primitivas PONG, PONF
y PONCL con exactitud o investigar un poco).
PARA TREN
BP PONG 1 PONF 1 PONCL 4 OT
SL AV 10 GI 90 AV 150 GD 90
MAQUINA
VACARBON
VAGON1
VAGON2
VAGONCOLA
VIA

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

En la ventana de textos, aparece escrito el contenido de la variable BARCO, en


este caso chocolate. Conviene destacar que para conocer el contenido de una
variable, es necesario escribir la instruccin ESCRIBE :nombrevar, donde nombrevar
es el nombre de la variable:
Prueba el siguiente ejemplo:
HAZ "h 66
ESCRIBE :h + 9
En este caso en la ventana de textos aparecer el nmero 75, que es el resultado
de sumar 66, contenido de la variable h, al nmero 9.
** Las variables locales en los procedimientos
Retrocedamos al procedimiento CUADRADO
PARA CUADRADO
BP BL PONCL 5 PONG 4 PONF 16
REPITE 4 [AV 50 GD 90 ]
FIN
Como se ha visto, este procedimiento permite realizar un cuadrado concreto y
nico de 50 unidades de lado, de modo que si se quisiera realizar otro cuadrado
ms grande o de otro color, debera disearse un procedimiento distinto. Las
variables locales permiten solucionar este problema.

Observa el procedimiento que a continuacin se analiza:


PARA CUAVARILADO :L
BP BL PONCL 5 PONG 4 PONF 16
REPITE 4 [AV :L GD 90 ]
FIN

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

Ejecuta dichos procedimientos utilizando distintos parmetros.


Logo puede gestionar en cada procedimiento tantas variables como se definan en
la primera lnea. Fjate en el siguiente ejemplo:
PARA CUAVARIA :C :G :F
BP BL
PONCL :C
PONG :G
PONF :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.

Se va a definir un procedimiento que permite realizar un polgono con un nmero


variable de lados:
PARA POLIN :N
BP BL
PONCL 1 PONG 2 PONF 3
REPITE :N [AV 50 GD 360 / :N ]
FIN
Ejecuta el programa desde el rea de trabajo con los siguientes parmetros:
POLIN 6
POLIN 3
POLIN 2
POLIN 50
Crea procedimientos en los que varen otros parmetros como la longitud de los
lados.
Realiza las modificaciones necesarias en el Editor para que este programa dibuje
los polgonos apoyados siempre con el lado inferior en posicin horizontal.
Disea un programa que realice circunferencias de tamao variable.

** Las variables globales en los procedimientos


Las variables globales, a diferencia de las locales, pueden existir durante todo el
tiempo en que Logo est activo; puede decirse que "permanecen suspendidas en el
rea de trabajo", lo cual permite usarlas en cualquier procedimiento que se cree.
Esta caracterstica implica una ocupacin de la memoria y la vigilancia del
programador para que no haya dos variables definidas con el mismo nombre.
Las variables globales se crean con la primitiva HAZ usada con la siguiente sintaxis:
HAZ "NOMBRE contenido
El nombre que se da a la variable debe ser un conjunto de caracteres sin espacios
en blanco y debe ir precedido por comillas. El contenido de la variable puede ser:
Un nmero
El resultado de una operacin
Una palabra que ir precedida de comillas
Una lista entre corchetes
Una serie de datos introducidos desde teclado durante la ejecucin del programa
por medio de ciertas primitivas.
El contenido de una variable aparece cuando se escribe precedida por el smbolo :,
:nombre.
No es posible crear una variable global ni en la primera lnea de un procedimiento,
ni en la ltima. Sirva como ejemplo el siguiente procedimiento:
PARA CUAGLO

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

HAZ "CUBO :CIFRA * :CIFRA * :CIFRA


ES (FRASE [El cubo de ] :CIFRA [ es ] :CUBO)
FIN
- Repasamos algunas primitivas ms:
HAZ "nombr obj
LEECAR (LC)
LEECARS num (LCS num)
LEELISTA (LL)
LEEPALABRA (LP)

Asigna el valor indicado en obj a la variable llamada


nombr
Lee el primer carcter de un archivo o la primera
pulsacin desde el teclado sin necesidad de pulsar
[INTRO].
Lee los num primeros caracteres pulsados desde el
teclado o ledos de un archivo
Lee una lista de caracteres introducidos desde el
teclado o ledos desde un archivo
Lee la primera palabra introducida desde el teclado o
leda desde un fichero

Diferencias entre carcter, palabra y lista:


Carcter es una sola letra, nmero o pulsacin de teclado. (Ej. : a)
Palabra es un conjunto de caracteres que no tienen espacios entre s. (Ej. : 123a)
Lista es un conjunto de palabras separadas por espacios (Ej. : La casa nmero
18)
Comprueba el comportamiento de estos procedimientos (las frases situadas
despus de ";" son comentarios, no lneas de programacin):

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.

También podría gustarte