Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. INTRODUCCIÓN……………………………………………………………………………………...… 3
2. LA INTERFAZ DE MSWLOGO………………………………………………………………………… 3
3. EL MODO DIRECTO……………………………………………………………………………………. 4
4. EL MODO PROCEDIMENTAL……………………………………………………………………...…. 5
5. NOTACIÓN BÁSICA Y USO DE ALGUNOS SIGNOS EN MSWLOGO....................................... 6
6. LOS GRÁFICOS DE LA TORTUGA……………………………………………………………...….. 6
PRINCIPALES PRIMITIVAS RELATIVAS A LOS GRÁFICOS DE LA TORTUGA
AVANZA 7 RETROCEDE 7 GIRAIZQUIERDA 7
GIRADERECHA 7 BORRAPANTALLA 7 BAJALAPIZ 7
SUBELAPIZ 7 PONLAPIZ 7 GOMA 7
PONCOLORLAPIZ 8 PONGROSOR 8 MUESTRATORTUGA 8
OCULTATORTUGA 8 PONPOS 8 PONXY 8
PONX 8 PONY 8 PONRUMBO 8
POS 8 COORX 8 COORY 8
CIRCULO 8 RELLENA 8 PONCOLORRELLENO 9
PIXEL 9
PARA 11 FIN 11
9. MANEJO DE DATOS................................................................................................................. 11
SI 18 SISINO 18
Y 20 O 20 NO 20
La caja de lista
2. LA INTERFAZ DE MSWLOGO.
Está situada encima de la caja de entrada. En
La interfaz de MSWLogo consta de dos venta- ella aparecen todas las instrucciones que se eje-
nas: la ventana Pantalla de MSWLogo, donde cutan en la caja de entrada y las respuestas que
se dibujan los gráficos, y la ventana Trabajo, MSWLogo genera al ejecutar determinadas ins-
situada en la parte inferior, que será donde nos trucciones.
comunicaremos con el programa. Con el ratón
Podemos volver a ejecutar cualquier instrucción
puede cambiarse el tamaño de estas ventanas.
de la caja de lista situando el cursor en la línea y
Para activar una ventana basta pinchar con el
pulsando INTRO, o bien haciendo doble clic en
ratón sobre ella.
la línea.
Dentro de la ventana Trabajo hay varias partes:
En la caja de lista también se puede usar Con-
La caja de entrada trol+C y Control+V, pero no Control+X.
Ventana Trabajo
Caja de lista
Caja de entrada
Ten en cuenta también que podemos escribir nos aparecen los comandos para y fin que, co-
varias órdenes en la misma línea; práctica, por mo veremos después, inician y terminan, respec-
ejemplo, con: tivamente, todos los procedimientos.
AV 100 GD 90 AV 30 GD 90 AV 100 GI 90 En esta ventana de diálogo nos aparecen todos
los nombres de los procedimientos que tenga-
Puedes ejecutar cuantas veces quieras la misma
mos definidos. Si queremos editar alguno de
orden haciendo doble clic sobre la instrucción en
ellos para modificarlo, hacemos clic sobre su
la caja de lista. Prueba a ejecutar cuatro veces la
nombre y luego hacemos clic en OK, o bien
línea anterior y verás como dibujas una cruz.
hacemos doble clic sobre el nombre.
Pero aún con las abreviaturas parece que hay
Si queremos editar todos los procedimientos
que repetir mucho código. No te preocupes,
hacemos clic en el botón Todo.
MSWLogo dispone de primitivas que nos ahorra-
rán muchas veces esta tediosa tarea, como la Existen dos primitivas asociadas a cualquier pro-
primitiva REPITE. cedimiento, PARA y FIN. Todos los procedimien-
tos comienzan por la primitiva PARA seguida del
Merece la pena dedicarle un momento a la primi-
nombre del procedimiento y terminan con la pri-
tiva REPITE debido a su gran utilidad. Esta pri-
mitiva FIN.
mitiva no tiene abreviatura; su sintaxis es:
Veamos un ejemplo. Entra en el Editor de
REPITE n [acciones]
MSWLogo y escribe el siguiente procedimiento:
Borra la pantalla con BP y prueba lo siguiente
PARA CUADRADO
REPITE 4 [ AV 100 GD 90]
REPITE 4 [ AV 60 GD 90]
En efecto, obtenemos el mismo cuadrado que ya
FIN
hemos hecho varias veces, pero esta vez hemos
escrito muy poco texto. Salimos del editor a través de su menú haciendo
clic en:
Haz estas otras pruebas, borrando la pantalla
cuando lo necesites.
Fichero > Guardar y salir
REPITE 6 [AV 40 GD 60]
Ya tenemos definido el procedimiento CUA-
REPITE 7 [AV 30 GD 360 / 7 ] DRADO y podemos ejecutarlo desde la caja de
entrada.
Nota: Cambia el 7 por otros números y pulsa
[INTRO]. Todos los procedimientos que definamos pueden
ejecutarse mientras no se salga de MSWLogo.
Sin embargo, si en este momento salimos del
4. EL MODO PROCEDIMENTAL. programa, se perderán.
Programar en modo procedimental consiste en
Para guardar todos los procedimientos definidos
enseñar procedimientos al ordenador que, una
hacemos clic en Fichero > Guardar como en la
vez asimilados, interpreta como si fueran nuevas
barra de menú de MSWLogo (a partir de la pri-
primitivas.
mera grabación, puedo hacer Fichero > Guar-
Para crear un procedimiento entraremos en el dar) y le damos un nombre al archivo (los nom-
editor de MSWLogo haciendo clic con el ratón en bres de archivo deben tener como máximo 8
la barra de menú de la Pantalla de MSWLogo: letras más la extensión “.log”).
Fichero > Editar.... Una vez tenemos definidos unos procedimientos,
éstos pueden ser llamados por otros procedi-
Nos aparece la ventana de diálogo Editar pro-
mientos como si fuera una primitiva más.
cedimiento. Escribimos el nombre del procedi-
miento que queremos crear y hacemos clic en el Esta característica permite realizar programas de
botón OK (o pulsamos la tecla INTRO), con lo forma modular, es decir, descomponiéndolos en
que entramos en la pantalla del editor, donde ya partes más simples que pueden resolverse por
separado. Esta modularización puede hacerse a Los números, aunque también se pueden consi-
varios niveles ya que cada módulo puede des- derar palabras, no tienen por qué ir precedidos
componerse a su vez en partes más sencillas. de comillas (aunque pueden llevarlas).
Por ejemplo, una vez que tenemos definido el Ejemplo:
procedimiento cuadrado de antes, podemos
Escribe 27
definir otro que lo use, como, por ejemplo, el
27
siguiente, que dibujará tres cuadrados sucesivos.
(Escribe 34 7 “56 20)
PARA CUADROS 34 7 56 20
REPITE 3 [CUADRADO AV 70] Una línea puede continuar en la línea siguiente
si su último carácter es ~ (que se consigue te-
FIN
cleando 126 con el teclado numérico mientras se
Cuando queramos volver a utilizar los proce- mantiene pulsada la tecla Alt).
dimientos que hemos definido en otra sesión
Ejemplo:
de MSWLogo, cargaremos el archivo donde los
hemos guardado a través de la barra de menús: (Escribe “hola “Juan, “me “alegra ~
“volver “a “verte)
Fichero > Cargar ...
hola Juan, me alegra volver a verte
Aparece una ventana donde podemos elegir la
carpeta donde está y el archivo. Un punto y coma (;) inicia un comentario en una
línea de instrucciones. MSWLogo ignora todos
los caracteres que siguen al punto y coma hasta
5. NOTACIÓN BÁSICA Y USO DE AL- el final de la línea. Un carácter ~ como último
GUNOS SIGNOS EN MSWLOGO.
carácter de la línea indica una continuación de la
Llamamos palabras en MSWLogo a los conjun- línea, pero no del comentario.
tos de caracteres entre los cuales no hay signos
delimitadores. Ejemplo:
Llamamos delimitadores a los signos que sepa- Para saludo
ran las palabras. Pueden ser espacios en blanco, ;en la siguiente línea saludamos
corchetes y paréntesis. Las comillas y comas no (es “hola “amigo) ;es un saludo breve
son delimitadores. ;en la siguiente línea nos despedimos
es “adiós
Cuando se introduzca una palabra como entrada
fin
(argumento) a una primitiva o procedimiento irá
precedida de unas comillas (“). saludo
hola amigo
Ejemplo:
adiós
Escribe “Hola
Hola
6. LOS GRÁFICOS DE LA TORTUGA
Ejemplo:
Los “gráficos de la tortuga”, tienen las misión de
(Escribe “Hola “Juan, “¿Cómo “estás?) facilitar la comprensión de la programación
Hola Juan, ¿Cómo estás?
El centro de la ventana de gráficos es la posición
Una lista es un conjunto de palabras encerrado [0 0] de la tortuga. Las posiciones X positivas
entre corchetes. Dentro de las listas las palabras están hacia la derecha y las posiciones Y positi-
no van precedidas de comillas. vas hacia arriba. Tanto X como Y pueden variar
entre – 500 y 500. Si se sobrepasan estos valo-
Ejemplo: res se pasa al lado opuesto de la ventana (como
Escribe [Hola Juan, ¿Cómo estás?] si fuera una esfera). El rumbo (ángulo) se mide
Hola Juan, ¿Cómo estás? en grados sexagesimales (360º es una vuelta
completa) en el sentido de las agujas del reloj a Mueve la tortuga hacia delante en la dirección de
partir del eje Y positivo. su rumbo la distancia especificada.
La tortuga en MSWLogo se representa por un
RETROCEDE distancia
triángulo isósceles, siendo la posición exacta de
la tortuga la que viene dada por el punto medio La orden RETROCEDE se puede abreviar por
de la base del triángulo (el lado mayor). La punta RE. distancia es un número que indica los pasos
del triángulo indica el rumbo de la tortuga. que debe retroceder la tortuga.
La tortuga lleva un lápiz para poder dibujar, pero Mueve la tortuga hacia atrás, es decir, en la di-
este lápiz puede estar alzado (con lo que si la rección opuesta a su rumbo la distancia especifi-
tortuga se mueve no dibuja) o bajado (al mover- cada.
se la tortuga va dibujando). Además, cuando el
lápiz está bajado, puede dibujar o borrar: GIRAIZQUIERDA ángulo
Para que una línea pueda ser detectada como que la variable se haya definido como local (in-
límite debe estar dibujada con el mismo color de mediatamente veremos los conceptos de varia-
lápiz que el actual. ble local y global).
Ejemplo:
PONCOLORRELLENO color
haz “saludo “Hola
Se puede abreviar por POCCR. Pone el color
escribe :saludo
para rellenos según indica el argumento color,
Hola
que puede ser una lista de tres números o un
índice de color. Con la orden haz hemos creado una variable
llamada saludo cuyo contenido es la palabra
PIXEL Hola. Después hemos ordenado escribir el con-
Devuelve una lista de tres números que repre- tenido de la variable saludo.
sentan la intensidad de los colores rojo, verde y
azul (en un rango 0-255) del píxel sobre el que VALOR nombrevar
se encuentra la tortuga.
La primitiva VALOR se puede abreviar por :.
Devuelve el valor de una variable cuyo nombre
7. EL USO DE LAS VARIABLES.
viene dado por el argumento nombrevar.
Las variables pueden ser simples o múltiples.
Ejemplo:
La más sencilla, la variable simple, puede ser
Haz “saludo [Hola, cómo estás]
comparada con una caja a la que se le pone una
escribe valor “saludo
etiqueta (que es el nombre) y en cuyo interior
Hola, cómo estás
guarda un contenido.
escribe :saludo
Una variable, por ejemplo, puede llamarse X y Hola, cómo estás
contener el número 34; otra puede llamarse Y y
contener la palabra chocolate. Observa que cuando nos referimos al nombre de
la variable precedemos éste de unas comillas (“)
El nombre que se da a la variable debe ser un
mientras que cuando nos referimos a su conte-
conjunto de uno o más caracteres sin espacios
nido precedemos el nombre de dos puntos (:).
en blanco y debe ir precedido por comillas. El
contenido de la variable puede ser un número, el Ejecuta las siguientes órdenes:
resultado de una operación, una palabra (que irá Haz “edad 25
precedida de unas comillas), una lista (que irá
Escribe :edad + 9
entre corchetes) o datos introducidos desde te-
clado. Observarás que MSWLogo escribe 34 que es
igual a la suma del contenido de la variable edad
Las principales primitivas para trabajar con va-
(25) más 9.
riables son HAZ y VALOR:
Veamos un ejemplo; ejecuta las siguientes órde- MSWLogo responde que L no tiene valor.
nes:
Un procedimiento puede tener varias entradas.
Haz “mimatriz {gato lápiz 25 niño} Edita, por ejemplo, el siguiente procedimiento
para realizar un rectángulo
Escribe elemento 2 :mimatriz
PARA RECTANGULO :B :H
Observarás que aparece en pantalla la palabra
lápiz. REPITE 2 [AV :H GD 90 AV :B GD 90]
FIN
A continuación ejecuta las órdenes:
A continuación ejecuta la orden:
Ponelemento 4 :mimatriz “hombre
Rectangulo 100 80
Escribe :mimatriz
Observarás que dibuja un rectángulo de base
Aparecerá en pantalla {gato lápiz 25 hombre}
100 unidades y altura 80 unidades. O sea, 100
ocupa el lugar de B y 80 el lugar de H.
7.1. Las variables locales en los pro-
cedimientos Dentro de un procedimiento también se pueden
definir variables locales con la primitiva LOCAL..
Antes definimos el procedimiento cuadrado que
nos permitía dibujar un cuadrado de tamaño fijo.
LOCAL nombrevar
Pero esto no es muy eficaz porque para dibujar
cuadrados de diferente tamaño tendríamos que Esta primitiva puede adoptar diversas formas:
crear otro procedimiento. Las variables locales
LOCAL nombrevar
permiten resolver este problema. Edita el si-
guiente procedimiento: LOCAL listanombrevar
Tanto EXP como X son variables locales. Ejecu- Obsérvese que el nombre del procedimiento no
ta el procedimiento y a continuación ordena que debe estar precedido por “ y que los nombres de
se escriban sus valores y verás que no tienen los argumentos van precedidos por : .
valor.
Al invocar el procedimiento hay que darle tantos
valores como entradas tenga.
7.2. Las variables globales
Ejemplo:
Las variables globales, a diferencia de las loca-
les, pueden existir en el área de trabajo durante para saludo :nombre :apellido
todo el tiempo en que LOGO está activo, lo cual es (frase “Hola :nombre :apellido [, cómo estás])
permite usarlas en cualquier procedimiento. fin
saludo “Pedro “García
Ejemplo: Hola Pedro García , cómo estás
Para ejemplovariables saludo “Pedro
(Local “uno “dos) No hay suficientes datos para saludo
haz “uno “primero,
haz “dos “segundo Nota: En la segunda ejecución del procedimiento
haz “tres “tercero saludo sólo le hemos dado un valor, cuando tie-
escribe (frase [El orden es] :uno :dos [y] :tres) ne dos entradas; por eso da error.
fin
FIN
ejemplovariables
Esta palabra especial pone término a un proce-
El orden es primero, segundo y tercero
dimiento. Es la última línea y no lleva ningún
escribe :uno
argumento.
uno No tiene valor
escribe :tres
tercero 9. MANEJO DE DATOS
Las variables uno y dos son locales pero la va- En primer lugar distingamos los distintos tipos de
riable tres es global, ya que no se ha definido datos que manejamos en LOGO:
como local. • Carácter: es una única letra, número o pul-
Nota: la orden (Local “uno “dos) se podría susti- sación de teclado.
tuir por Local [uno dos] • Palabra: es un conjunto de caracteres que
no tiene espacios entre sí.
8. DEFINICIÓN DE PROCEDIMIENTOS • Lista: es un conjunto de palabras separadas
CON PARA Y FIN por espacios. Van encerradas entre corche-
tes.
PARA nombreproc :entrada1 :entrada2 .....
• Matriz: es un conjunto de listas separadas
La primitiva PARA le dice a MSWLogo que acep- por espacios entre sí. Van encerradas entre
te una definición de procedimiento. El procedi- llaves.
miento se llamará nombreproc y no debe existir
otro procedimiento con el mismo nombre (pues
será sustituido por el nuevo). Las entradas o LISTA objeto1 objeto2
argumentos se llamarán entrada1, entrada2, etc. Cuando tiene más de dos argumentos debe ir
Un procedimiento puede tener varias entradas o entre paréntesis:
ninguna. Los nombres de procedimientos y de
(LISTA objeto1 objeto2 objeto3 .....)
entradas se pueden escribir indistintamente en
mayúsculas o minúsculas. Devuelve una lista cuyos miembros son sus ar-
gumentos, que pueden ser cualquier tipo de da-
tos de LOGO (carácter, palabra, lista) o variables
que contengan estos datos.
Si la entrada es una lista no escribe los corche- Esta orden captura los eventos del teclado (pul-
tes; sí se escriben los corchetes de las sublistas saciones) y cuando ello se produce ejecuta la o
(listas dentro de listas). las listas de instrucciones de su argumento.
Ejemplos: Si se quiere obtener el carácter pulsado se llama
a LEECAR.
es “hola
hola Para que funcione, la ventana “Pantalla de
(es “hola, “¿cómo “estás?) MSWLogo debe tener el foco (no la ventana Tra-
hola, ¿cómo estás? bajo). Esto puede hacerse haciendo clic en ella
(es “muy [bien ¿y tú?]) con el ratón o, cuando se necesita controlar por
muy bien ¿y tú? software, con la primitiva PONFOCO.
haz “saludo “hola
En su primera forma ejecuta la lista de instruc-
es :saludo
ciones tecla_pulsada al pulsar una tecla. Si se
hola
mantiene pulsada la tecla vuelve a ejecutar las
instrucciones una y otra vez.
LEELISTA
En su segunda forma ejecuta la lista de instruc-
Esta primitiva se puede abreviar por LL.
ciones tecla_bajada al pulsar la tecla y ejecuta la
Lee una línea desde el teclado y devuelve la lista de instrucciones tecla_subida al soltar la
línea como una lista. La entrada se introduce en tecla. En este caso, si se mantiene la tecla pul-
una ventana de diálogo llamada Modo LISTA. sada ejecuta las instrucciones de la lista te-
cla_bajada una sola vez.
LEEPALABRA
Ejemplo:
Esta primitiva se puede abreviar por LP.
(ponteclado [es “hola] [es “adiós])
Lee una línea desde el teclado y la devuelve ponfoco [Pantalla de MSWLogo]
como una palabra (aunque la línea tenga espa- ;<pulso cualquier tecla y mantengo>
cios, corchetes, etc). La entrada se introduce en hola
una ventana de diálogo llamada Modo Entrada. ;<suelto la tecla>
adiós
BORRATEXTO
quitateclado
Esta primitiva se puede abreviar por BT.
Borra el texto (órdenes y respuestas del sistema) QUITATECLADO
de la caja de lista de la ventana Trabajo. Esta orden desactiva la captura de los eventos
del teclado.
LEECAR
Esta primitiva se puede abreviar por LC. PONRATON bot_izq_abajo bot_izq_arriba
Devuelve el valor ASCII correspondiente a la bot_der_abajo bot_der_arriba mover
última tecla pulsada. Esta orden captura los eventos del ratón (clics) y
Ejemplo: cuando ello se produce ejecuta la o las listas de
instrucciones de su argumento.
Ponteclado [es leecar]
;haz clic en la ventana de gráficos y pulsa teclas Si se quiere obtener la posición del ratón se usa
POSRATON.
PONTECLADO tecla_pulsada Para que funcione, la ventana “Pantalla de
MSWLogo debe tener el foco (no la ventana Tra-
Esta primitiva adopta otra forma:
bajo). Esto puede hacerse haciendo clic en ella
(PONTECLADO tecla_bajada tecla_liberada) con el ratón o, cuando se necesita controlar por
software, con la primitiva PONFOCO.
Los argumentos son listas de instrucciones: ño, etc.). Otras funciones de Windows permiten
usar botones, barras de desplazamiento, etc.
bot_izq_abajo es la lista de instrucciones que se
ejecuta cuando se presiona el botón izquierdo.
MENSAJE bandera cuerpo
bot_izq_arriba es la lista de instrucciones que
se ejecuta cuando se libera el botón izquierdo. Detiene el proceso en curso y despliega una
ventana con el mensaje cuerpo. En la barra de
bot_der_abajo es la lista de instrucciones que
título aparece la etiqueta bandera. El proceso
se ejecuta cuando se presiona el botón derecho.
continua cuando el usuario hace clic sobre el
bot_der_arriba es la lista de instrucciones que botón ACEPTAR o CANCELAR.
se ejecuta cuando se libera el botón derecho.
bandera : Es una lista que se usa como etiqueta
mover es la lista de instrucciones que se ejecuta
de la ventana.
cuando se mueve el puntero del ratón.
cuerpo : Es una lista con el texto del mensaje.
Algunas de las listas pueden ser vacías. La ventana se adapta al tamaño del mensaje, el
cual está limitado a 235 caracteres.
QUITARRATON Ejemplo:
Desactiva la captura de los eventos de ratón. mensaje [Título] [Contenido del mensaje]
El argumento listainstrucción es una lista de ins- Obsérvese que la condición es el 1er argumento.
trucciones (entre corchetes). Ejemplo:
El orden en el que DESDE efectúa las diversas haz "i 0
acciones es el siguiente: hasta [:i>3] [haz "i :i+1 escribe :i]
1. Asigna el valor inicial a la variable de control. 1
2
2. Compara el valor de la variable con el valor
3
límite; si la variable es mayor que el valor lí-
4
mite, la ejecución continúa en la línea si-
guiente y si no lo es se ejecutan las instruc-
ciones de la lista y se incrementa la variable HAZ.MIENTRAS listainstrucción pruebalista
de control en el valor del incremento. Este procedimiento ejecuta la lista de instruccio-
3. Vuelve a comparar la variable de control con nes dada en el argumento listainstrucción mien-
el valor límite y así sucesivamente hasta que tras se cumpla la condición pruebalista (condi-
el valor de la variable supera al valor límite. ción dentro de una lista). Primero ejecuta las