Está en la página 1de 21

MSWLogo: Manual abreviado

MANUAL ABREVIADO PARA EL APRENDIZAJE DE MSWLOGO BÁSICO

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

7. EL USO DE LAS VARIABLES...................................................................................................... 9

HAZ 9 VALOR 9 LOCAL 10

8. DEFINICIÓN DE PROCEDIMIENTOS CON PARA Y FIN .......................................................... 11

PARA 11 FIN 11

9. MANEJO DE DATOS................................................................................................................. 11

LISTA 11 FRASE 12 PRIMERO 12


ULTIMO 12 MATRIZ 12 LISTAAMATRIZ 12
ELEMENTO 12 PONELEMENTO 13 CUENTA 13
CARACTER 13 IGUALES? 13

10. OPERACIONES ARITMÉTICAS................................................................................................ 13

SUMA 13 DIFERENCIA 13 PRODUCTO 13


DIVISION 13 RESTO 14 ENTERO 14
REDONDEA 14 RAIZCUADRADA 14 POTENCIA 14
MENOR? 14 MAYOR? 14 AZAR 14
SACAALAZAR 14

Tecnología 4. IES Bellavista. 1


MSWLogo: Manual abreviado

11. COMUNICACIÓN DEL PROGRAMA CON EL USUARIO......................................................... 14

ESCRIBE 14 LEELISTA 15 LEEPALABRA 15


BORRATEXTO 15 LEECAR 15 PONTECLADO 15
QUITATECLADO 15 PONRATON 15 QUITARRATON 16
POSRATON 16 PONFOCO 16

11.1. FUNCIONES BÁSICAS DE WINDOWS: VENTANAS PREDEFINIDAS......................... 16

MENSAJE 16 SELECCIONBOX 16 SINOBOX 17


PREGUNTABOX 17

12. ÓRDENES DE CONTROL ........................................................................................................ 17

VERDADERO 17 FALSO 17 DEVUELVE 17


ALTO 17 ESPERA 18

12.1. LAS SENTENCIAS CONDICIONALES............................................................................. 18

SI 18 SISINO 18

12.2. LOS BUCLES.................................................................................................................... 18

REPITE 19 DESDE 19 HAZ.HASTA 19


HASTA 19 HAZ.MIENTRAS 19 MIENTRAS 20

13. OPERACIONES LÓGICAS........................................................................................................ 20

Y 20 O 20 NO 20

14. LA RECURSIVIDAD .................................................................................................................. 20

15. MANEJO DE LA MEMORIA....................................................................................................... 21

EDITATODO 21 EDNS 21 BON 21

Tecnología 4. IES Bellavista. 2


MSWLogo: Manual abreviado

MANUAL ABREVIADO DE MSWLOGO BÁSICO.

1. INTRODUCCIÓN. texto de instrucciones anteriores, para lo cual


situamos el cursor sobre la instrucción en la caja
LOGO es un lenguaje de programación tan po-
de lista (ver a continuación) y dicha instrucción
deroso como cualquier otro, pero con la ventaja
aparece en la caja de entrada, en la cual pode-
para el aprendiz de que posee unas instruccio-
mos modificarla y volver a ejecutarla.
nes que permiten que un cursor dibuje en la pan-
talla. El cursor es conocido como “la tortuga”, En la caja de entrada se puede copiar con Con-
pero en la versión MSWLogo que vamos a usar trol+C, pegar con Control+V y cortar con Con-
nosotros tiene forma de triángulo. trol+X.

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.

Es un único renglón situado a la izquierda del El botón Ejecutar


botón ejecutar. En la caja de entrada podemos
Al hacer clic sobre él se ejecutan las órdenes
escribir instrucciones, las cuales se ejecutarán al
que haya escritas en la caja de entrada. Hace el
pulsar INTRO o bien haciendo clis en el botón
mismo efecto que pulsar la tecla INTRO.
Ejecutar. También podemos modificar en ella el

Ventana Pantalla de MSWLogo

Ventana Trabajo

Caja de lista

Caja de entrada

Tecnología 4. IES Bellavista. 3


MSWLogo: Manual abreviado

El botón Alto Ejecuta las siguientes instrucciones:


Detiene inmediatamente la ejecución de lo que BAILAR
esté haciendo y se dispone a esperar una nueva AVANZA
orden. 20
PONGROSOR 4
El botón Reiniciar
Observarás que MSWLogo avisa del problema:
Hacer clic sobre él es semejante a ejecutar la
de que no sabe hacer lo que se le está
orden BORRAPANTALLA (BP), es decir, borra la
pidiendo.
pantalla y sitúa a la tortuga en el centro de la
de que le faltan datos o de que no sabe qué
misma (posición (0,0)) con rumbo 0 (mirando
quieres que haga con los datos.
hacia arriba).
de que la entrada de datos no es como la
espera, etc.
3. EL MODO DIRECTO. Muchas primitivas de MSWLogo tienen abrevia-
Las palabras clave que se usan para comunicar- turas para reducir el tiempo de escritura. Prueba
se con el entorno de MSWLogo se llaman PRI- con el siguiente ejemplo:
MITIVAS. Las primitivas pueden escribirse y eje-
BP
cutarse directamente en la caja de entrada. Este
AV 100
modo de trabajar se denomina “modo directo”.
GD 90
(nota: puedes escribir las primitivas de MSWLo-
AV 100
go en mayúsculas o minúsculas).
GD 90
Con los ejemplos siguientes quedará más claro AV 100
el funcionamiento del modo directo: GD 90
AV 100
Introduce y ejecuta sucesivamente en la caja de
GD 90
entrada las siguientes primitivas:
Observarás que has borrado la pantalla (BP es
AVANZA 100 la abreviatura de la primitiva BORRAPANTALLA)
GIRADERECHA 90 y has vuelto a dibujar el mismo cuadrado de an-
AVANZA 100 tes, pero escribiendo menos texto.
GIRADERECHA 90
Vamos a conocer las abreviaturas de algunas
AVANZA 100
primitivas:
GIRADERECHA 90
AVANZA 100
GIRADERECHA 90 PRIMITIVA ABREVIATURA
Observarás que la tortuga ha dibujado un cua- AVANZA n AV n
drado en la pantalla de gráficos. RETROCEDE n RE n
Prueba ahora los siguientes ejemplos: BORRAPANTALLA BP
BORRATEXTO BT
ESCRIBE “Hola GIRADERECHA n GD n
ESCRIBE [Hola amigo ¿cómo estás?] GIRAIZQUIERDA n GI n
Observarás que las palabras o frases escritas SUBELAPIZ SL
aparecen en la caja de lista, mezcladas con las BAJALAPIZ BJ
instrucciones. OCULTATORTUGA OT
Veamos ahora qué ocurre cuando a MSWLogo MUESTRATORTUGA MT
se le manda ejecutar una instrucción que no co- ESCRIBE “palabra ES “palabra
noce o en la que faltan datos, etc.

Tecnología 4. IES Bellavista. 4


MSWLogo: Manual abreviado

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

Tecnología 4. IES Bellavista. 5


MSWLogo: Manual abreviado

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

Tecnología 4. IES Bellavista. 6


MSWLogo: Manual abreviado

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

Modo PONLAPIZ: dibuja al moverse la tortuga. La orden GIRAIZQUIERDA se puede abreviar


por GI. ángulo es un número que indica los gra-
Modo GOMA: borra por donde pasa la tortuga. dos que girará el rumbo de la tortuga en sentido
Los colores vienen definidos en LOGO por una contrario a las agujas del reloj. Cada unidad es
lista con tres números en el rango 0-255. Cada 1/360 de la circunferencia.
uno de estos números especifican la intensidad
de los colores rojo, verde y azul. Para más facili- GIRADERECHA ángulo
dad podemos referirnos a los colores más habi- La orden GIRADERECHA se puede abreviar por
tuales por unos “índices de color”: GD. ángulo es un número que indica los grados
que girará el rumbo de la tortuga en el sentido de
Índice Color Lista las agujas del reloj. Cada unidad es 1/360 de la
0 negro [ 0 0 0] circunferencia.
1 azul [ 0 0 255]
BORRAPANTALLA
2 verde claro [ 0 255 0]
3 azul claro [ 0 255 255] Puede abreviarse por BP. Borra los gráficos de
4 rojo [255 0 0] la ventana y envía la tortuga al centro de la pan-
5 magenta [255 0 255] talla y con rumbo 0.
6 amarillo [255 255 0]
BAJALAPIZ
7 blanco [255 255 255]
8 marrón oscuro [155 96 59] Se puede abreviar por BL. Pone el lápiz en posi-
9 marrón claro [197 136 18] ción “bajado”.
10 verde oscuro [100 162 64]
11 azul turquesa [120 187 187] SUBELAPIZ
12 naranja [255 149 119] Se puede abreviar por SL. Pone el lápiz en posi-
13 violeta [144 113 208] ción “subido”.
14 naranja claro [255 163 0]
15 gris (intermedio) [183 183 183] PONLAPIZ
Se puede abreviar por PLA. Baja el lápiz y lo
PRINCIPALES PRIMITIVAS RELATIVAS A pone en modo PONLAPIZ.
LOS GRÁFICOS DE LA TORTUGA
GOMA
AVANZA distancia Baja el lápiz y lo pone en modo GOMA.
La orden AVANZA se puede abreviar por AV.
distancia es un número que indica los pasos que
debe avanzar la tortuga.

Tecnología 4. IES Bellavista. 7


MSWLogo: Manual abreviado

PONCOLORLAPIZ color Ejemplo 2: (utiliza variables)


haz "x 50
Se puede abreviar por PONCL. Pone el color del
haz "y 100
lápiz según especifica el argumento color, que
ponxy :x :y
puede ser una lista de tres números o un índice
de color.
Nota: ponpos [:x :y] sería incorrecto.
PONGROSOR tamaño
PONX xcoor
Se puede abreviar por PONG. Pone el grosor del
Mueve la tortuga al punto dado por la coordena-
lápiz de la anchura dada por el argumento tama-
da X especificada por el número xcoor y la mis-
ño. Este argumento es una lista de dos números
ma coordenada Y actual. Es decir, se mueve en
enteros que corresponden con la altura y la an-
dirección horizontal.
chura, pero como MSWLogo sólo usa la anchu-
ra, sólo el segundo número es relevante (lo que PONY ycoor
se hace es que se suelen poner los dos iguales).
Mueve la tortuga al punto dado por la coordena-
Ejemplo: da Y especificada por el número ycoor y la mis-
Pongrosor [5 5] ma coordenada X actual. Es decir, se mueve en
dirección vertical.
MUESTRATORTUGA
PONRUMBO ángulo
Se puede abreviar por MT. Hace visible la tortu-
ga activa. La orden PONRUMBO se puede abreviar por
PONR.
OCULTATORTUGA Cambia el rumbo absoluto de la tortuga al espe-
Se puede abreviar por OT. Hace invisible la tor- cificado por ángulo.
tuga activa.
POS
PONPOS posición Devuelve una lista de dos números que son las
Mueve la tortuga a las coordenadas absolutas X, coordenadas X e Y de la posición actual de la
Y dadas por posición. tortuga.

posición es una lista (debe ir entre corchetes) de COORX


dos números, que representan las coordenadas
Devuelve un número que es la coordenada X de
X e Y del punto donde queremos situar la tortu-
la posición actual de la tortuga.
ga. El rumbo se mantiene.
Ejemplo: (dibuja un cuadrado) COORY
bp Devuelve un número que es la coordenada Y de
ponpos [0 100] la posición actual de la tortuga.
ponpos [100 100]
ponpos [100 0] CIRCULO radio
ponpos [0 0]
Dibuja un círculo (si está el lápiz bajado) dado
PONXY xcoor ycoor por el radio especificado y cuyo centro es la po-
sición actual de la tortuga. La tortuga no se mue-
Mueve la tortuga a las coordenadas absolutas X, ve.
Y dadas por los número xcoor e ycoor.
La diferencia con PONPOS es que su argumento RELLENA
son dos números en vez de una lista. Rellena de color una región de la ventana de
Ejemplo 1: gráficos en la que se encuentra la tortuga y que
está limitada por líneas previamente dibujadas.
ponxy 50 100

Tecnología 4. IES Bellavista. 8


MSWLogo: Manual abreviado

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:

HAZ nombrevar contenido


A una variable múltiple se le llama matriz y pue-
Asigna el valor indicado por el argumento conte- de compararse también con una caja a la que se
nido a la variable llamada nombrevar, que debe le pone una etiqueta (nombre) pero con varios
ser una palabra precedida por unas comillas. Si compartimentos en su interior, en cada uno de
la variable ya existe modifica su valor y si no los cuales guarda un contenido.
existe la crea. El argumento contenido puede ser
La caja tiene un único nombre, pero cada com-
un número, una palabra (precedida por comillas)
partimento tiene un índice (el compartimento 1,
o una lista (entre corchetes).
el 2, etc), lo que permite acceder individualmente
La variable creada es global, salvo que esta or- a cada uno de ellos, bien para ver su contenido o
den se ejecute dentro de un procedimiento en el para modificarlo.

Tecnología 4. IES Bellavista. 9


MSWLogo: Manual abreviado

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

PARA CUADRADOVAR :L (LOCAL nombrevar1 nombrevar2 ...)


BP O sea, que podemos definir como local una sola
REPITE 4 [AV :L GD 90 ] variable o varias al mismo tiempo.
FIN Con esta función se crea una o varias variables
Ejecuta las siguientes órdenes: locales con los nombres dados por nombrevar,
nombrevar1, etc (precedidos de comillas) o in-
Cuadradovar 100
cluidos en la lista listanombrevar (nombres de las
Cuadradovar 150 variables sin comillas pero encerrados todos
Haz “lado 30 entre corchetes).
Cuadradovar :lado Estas variables sólo existen en el procedimiento
Observarás que en cada caso se dibujan cua- en el que se definen. Fuera de dicho procedi-
drados de distintos lados en función del valor miento no tienen valor.
que introduzcamos después del nombre del pro-
cedimiento (que pueden ser en este caso núme-
ros o contenidos de variables que contengan Ejemplo: el siguiente procedimiento calcula po-
números). tencias de 2 (2 elevado a un exponente):

Los valores que introducimos pasan a ocupar el PARA POTEN2 :EXP


valor de la variable L. LOCAL “X

A L se le llama variable local, porque sólo existe HAZ “X 1


dentro del procedimiento en el que se crea. Una REPITE :EXP [HAZ “X :X * 2]
vez terminado el procedimiento desaparece. En DEVUELVE :X
efecto, si se ejecuta la orden: FIN
Escribe :L

Tecnología 4. IES Bellavista. 10


MSWLogo: Manual abreviado

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.

Tecnología 4. IES Bellavista. 11


MSWLogo: Manual abreviado

Ejemplo: MATRIZ tamaño


haz "rojo 100 Devuelve una matriz con tantos elementos como
haz "verde 100 indique el argumento tamaño. Cada elemento es
haz "azul 100 inicialmente una lista vacía. El primer elemento
muestra (lista :rojo :verde :azul) de la matriz es el elemento número 1.
[100 100 100]
Recordemos que una matriz es una variable múl-
tiple que puede guardar varios contenidos simul-
Ejemplo:
táneamente, pudiéndose acceder individualmen-
haz “x 100 haz “y 50 te a cada uno de ellos a través de un índice, bien
ponpos (lista :x :y) para leerlos o para modificarlos.
;<la tortuga se moverá a la posición [100,50]>
Los elementos de la matriz pueden seleccionar-
se con la primitiva ELEMENTO y cambiarse con
FRASE objeto1 objeto2
PONELEMENTO. Las matrices se escriben en
Cuando tiene más de dos argumentos debe ir pantalla con ESCRIBE.
entre paréntesis:
Ejemplo 1:
(FRASE objeto1 objeto2 objeto3 .....)
haz “mimatriz matriz 3
Hace lo mismo que LISTA, la diferencia es que si
Esta instrucción crea una matriz llamada mima-
alguno de sus argumentos es una lista le elimina
triz de tres elementos. Los valores iniciales de
los corchetes
cada uno de los elementos son listas vacías.
Ejemplo:
También puede crearse una matriz y al mismo
haz “número 4 haz “cubo 64 tiempo darle valores, escribiendo éstos dentro de
es (lista [El cubo de] :número [es] :cubo) llaves.
[El cubo de] 4 [es] 64
Ejemplo 2:
es (frase [El cubo de] :número [es] :cubo)
El cubo de 4 es 64 haz “mimatriz {10 15 20}

PRIMERO objeto LISTAAMATRIZ lista


Esta primitiva se puede abreviar por PRI. Convierte la lista (o variable que contiene una
lista) lista en una matriz.
Si el argumento es una palabra, devuelve el pri-
mer carácter de la palabra. Si el argumento es Ejemplo:
una lista, devuelve el primer miembro de la lista.
Escribe listaamatriz [1 2 3]
Ejemplo: {1 2 3}
escribe primero [1 2 3]
ELEMENTO índice objeto
1
escribe primero "Hola Si el argumento objeto es una palabra, devuelve
H el carácter número índice de la palabra; si es
una lista, devuelve el miembro número índice de
ULTIMO objeto la lista. Si es una matriz devuelve el elemento
número índice de la matriz. El índice comienza
Esta primitiva se puede abreviar por UL.
en 1.
Funciona igual que PRIMERO salvo que devuel-
Ejemplo:
ve el último carácter (si el argumento es una pa-
labra) o palabra (si el argumento es una lista). muestra elemento 2 [a b c]
b
muestra elemento 3 "ABC
C

Tecnología 4. IES Bellavista. 12


MSWLogo: Manual abreviado

PONELEMENTO índice nombrematriz objeto La segunda forma (entre paréntesis) se usa


cuando son más de dos sumandos.
Cambia el contenido del elemento número índice
de la matriz nombrematriz por el contenido obje- Devuelve la suma de los valores numéricos de
to. El argumento objeto puede ser un número, los argumentos, que pueden ser números o va-
una palabra o una lista. riables cuyo contenido sean números.
Ejemplo:
DIFERENCIA valor1 valor2
haz “mimatriz {mesa silla}
Adopta también la forma:
ponelemento 2 :mimatriz “armario
es :mimatriz valor1 – valor2
{mesa armario}
Devuelve la diferencia entre las entradas. En su
CUENTA objeto segunda forma hay que tener cuidado al colocar
espacios, ya que si se deja un espacio entre el
Si el argumento objeto es una palabra, devuelve primer número y el signo – y no se deja espacio
el número de caracteres que la componen. Si entre dicho signo y el segundo número, lo que
objeto es una lista o una matriz, devuelve el nú- entiende MSWLogo es que estamos introducien-
mero de miembros que la componen. do dos números, siendo el segundo de ellos ne-
Ejemplo 1: gativo, en lugar de una operación.

muestra cuenta [1 2 3] Observa los siguientes ejemplos:


3 escribe 7 – 5
muestra cuenta "ab
2
2
escribe 7–5
CARÁCTER número 2
escribe 7 –5 ; hay un espacio entre 7 y el –
Esta primitiva se puede abreviar por CAR. 7
Devuelve el carácter cuyo código ASCII coincide No me has dicho qué hacer con –5
con el número que se le da como argumento. escribe 7– 5
2
IGUALES? objeto1 objeto2
PRODUCTO valor1 valor2
Otra forma que adopta esta primitiva es:
Otras formas de esta primitiva son:
objeto1 = objeto2
valor1 * valor2
Devuelve VERDADERO si los argumentos obje-
to1 y objeto2 son iguales y FALSO si no lo son. (PRODUCTO valor1 valor2 valor3 .....)
La segunda forma (entre paréntesis) se usa
10. OPERACIONES ARITMÉTICAS cuando son más de dos factores.
Son muchas y simples de entender. Todas las Ejemplo:
operaciones convencionales y además: potencia,
haz “a 5 haz “b 6
exponencial, raíz cuadrada, logaritmos y todas
escribe producto :a * :b
las trigonométricas. Sólo veremos algunas:
30
SUMA valor1 valor2
DIVISION valor1 valor2
Otras formas de esta primitiva son:
Otras formas de esta primitiva son:
valor1 + valor2
valor1 / valor2
(SUMA valor1 valor2 valor3 .....)
Devuelve el resultado de la división del valor1
entre el valor2.

Tecnología 4. IES Bellavista. 13


MSWLogo: Manual abreviado

RESTO valor1 valor2 AZAR valorlímite


Devuelve el resto de la división entre valor1 y Devuelve un número entero positivo (se incluye
valor2; para ello, ambos valores deben ser ente- el 0) aleatorio menor que la entrada valorlímite,
ros y el resultado es un número entero. que debe ser un número entero positivo o el
nombre de una variable que lo contenga.
ENTERO valor Ejemplo:
Devuelve la parte entera del número que se le da repite 5 [muestra azar 10]
como argumento valor (valor puede ser un nú-
Ejemplo:
mero o el nombre de una variable que contenga
un número o una operación aritmética). haz “valim 25
escribe azar :valim
Ejemplo:
haz “a 23.67 haz “b 8.42
SACAALAZAR objeto
escribe entero :a + :b
32 Devuelve un elemento elegido al azar del objeto
de entrada. Si el argumento objeto es una pala-
REDONDEA valor bra, devuelve al azar uno de sus caracteres; si
es un número, devuelve uno de sus dígitos, si es
Devuelve el entero más cercano al valor numéri-
una lista o una matriz, devuelve uno de sus ele-
co de su argumento.
mentos. Si es una variable, devuelve al azar uno
RAIZCUADRADA valor de los elementos de su contenido.

Se puede abreviar por RC. Devuelve la raíz cua- Ejemplo:


drada del valor numérico de su argumento. sacaalazar “dibujo
b
POTENCIA valor1 valor2 sacaalazar [1 2 3 4]
2
Devuelve valor1 elevado a valor2. Si valor1 es
negativo, valor2 debe ser un número entero.
11. COMUNICACIÓN DEL PROGRAMA
CON EL USUARIO.
MENOR? valor1 valor2
Hasta ahora sólo hemos usado la primitiva ES-
Otra forma que adopta esta primitiva es:
CRIBE para que nuestros procedimientos comu-
valor1 < valor2 niquen algo al usuario. Veremos que existen
además otras primitivas que permiten captar
Devuelve VERDADERO si el valor numérico del
información del usuario, que éste puede suminis-
primer argumento (valor1) es menor que el del
trar por el teclado o por el ratón.
segundo argumento (valor2). Devuelve FALSO
en caso contrario.
ESCRIBE objeto
MAYOR? valor1 valor2 Esta primitiva puede abreviarse por ES.
Otra forma que adopta esta primitiva es: Adopta otra forma (entre paréntesis) cuando se
quieren escribir varios objetos:
valor1 > valor2
(ESCRIBE objeto1 objeto2 .....)
Devuelve VERDADERO si el valor numérico del
primer argumento (valor1) es mayor que el del Esta primitiva escribe su argumento o argumen-
segundo argumento (valor2). Devuelve FALSO tos en una sola línea, separados por espacios y
en caso contrario. al final produce un retorno de carro.

Tecnología 4. IES Bellavista. 14


MSWLogo: Manual abreviado

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.

Tecnología 4. IES Bellavista. 15


MSWLogo: Manual abreviado

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]

POSRATON SELECCIONBOX bandera listaopciones


Devuelve la posición del puntero del ratón tras el Detiene el proceso y despliega una ventana de
último evento (previamente se usó PONRATON). mensaje en la que en la barra de título aparece
La posición del puntero la devuelve como una la lista bandera y con las opciones de la lista
lista de dos miembros con las posiciones X e Y listaopciones. El proceso anterior continua
que definen dicha posición. cuando el usuario hace clic sobre el botón OK o
CANCELAR.
Ejemplo:
Una vez que se hace clic sobre el botón OK,
subelapiz devuelve el índice correspondiente al elemento
ponraton [ponpos posraton bajalapiz] ~ seleccionado (1 para la opción 1, 2 para la op-
[subelapiz] [ ] [ ] [ponpos posraton] ción 2, etc). Si se hace clic sobre el botón CAN-
;opera con el ratón por la pantalla de Logo CELAR para la ejecución del programa y no de-
quitarraton vuelve nada (Nota: no devuelve 0 como dice en
la ayuda).

PONFOCO títuloventana bandera : Es una lista que se usa como etiqueta


de la ventana.
Esta primitiva permite que MSWLogo controle la
ventana que tiene el foco (activa). Cada ventana listaopciones : Es una lista con opciones.
se especifica por su título. Ejemplo:
Los dos posibles usos de esta primitiva son: es seleccionbox [Escoja Color] [Rojo Verde Azul]
Ponfoco [Pantalla de MSWLogo] ; <seleccione Verde y pulse OK>
2
Ponfoco [Trabajo] es seleccionbox [Colores] [[Rojo Verde Azul]
[Uno de los tres] Ninguno]
11.1. FUNCIONES BÁSICAS DE WIN- ; <seleccione Rojo Verde Azul y pulse OK>
DOWS: VENTANAS PREDEFINIDAS 1
Con las funciones de Windows el programador haz “x “Rojo haz “y “Verde haz “z “Azul
puede crear una Interfaz Gráfica de Usuario me- es seleccionbox [Elija] (lista :x :y :z)
diante ventanas. Aquí veremos sólo las ventanas ; <seleccione Azul y pulse OK>
predefinidas (no controlamos su posición, tama- 3

Tecnología 4. IES Bellavista. 16


MSWLogo: Manual abreviado

SINOBOX bandera cuerpo 12. ÓRDENES DE CONTROL

Detiene el proceso y despliega una ventana con VERDADERO


el mensaje cuerpo. En la barra de título aparece
Es una palabra especial que indica el resultado
la etiqueta bandera. El proceso anterior continua
positivo de una condición.
cuando el usuario hace clic sobre uno de los
botones SI o NO. Si se hace clic en CANCELAR Ejemplo:
se para la ejecución del programa. escribe 1 = 1
Una vez que se hace clic sobre un botón, de- verdadero
vuelve un valor booleano, que es Verdadero (si si “verdadero [es [Hola, cómo estás]]
se hace clic sobre SI) o Falso (si se hace clic Hola, cómo estás
sobre NO).
FALSO
bandera : Es una lista que se usa como etiqueta
de la ventana. Es una palabra especial que indica el resultado
cuerpo : Es una lista con el texto del mensaje. negativo de una condición.
La ventana se adapta al tamaño del mensaje, el escribe 1 = 0
cual está limitado a 235 caracteres. falso
Ejemplo: sisino “falso [es [Hola, cómo estás]][es [Adiós]]
Adiós
escribe sinobox [Pregunta] [¿Te gusta Logo?]
; <Haga clic sobre el botón SI> DEVUELVE valor
verdadero
Esta primitiva se puede abreviar por DEV.
Termina la ejecución del procedimiento en el que
PREGUNTABOX bandera cuerpo
aparece y devuelve un valor. Este valor puede
Detiene el proceso y despliega una ventana con ser un número, una palabra, una lista, etc.
el mensaje cuerpo. En la barra de título aparece
Ejemplo:
la etiqueta bandera. El proceso anterior continua
cuando el usuario hace clic sobre el botón OK o para ejemplodev :num1 :num2
pulsa INTRO. Si se hace clic sobre el botón devuelve (:num1 + :num2)
CANCELAR se para la ejecución del programa. es "hola
fin
Una vez que se haga clic sobre el botón OK o se
escribe ejemplodev 5 7
pulse INTRO, devuelve una lista con la respues-
12
ta del usuario.
Nota: obsérvese que no se escribe hola, ya que
bandera : Es una lista que se usa como etiqueta
el procedimiento se interrumpe al llegar a DE-
de la ventana.
VUELVE.
cuerpo : Es una lista con el texto del mensaje.
Su extensión está limitada por el tamaño están- ALTO
dar de la ventana.
Termina la ejecución del procedimiento en el que
Ejemplo: aparece. Devuelve el control al contexto en el
escribe preguntabox [Pregunta] [¿Tienes sed?] que se llamó el procedimiento. El procedimiento
; <Escriba Sí, tengo sed y haga clic sobre OK> no devuelve ningún valor.
Sí, tengo sed Ejemplo:
para myprog :arg
escribe [Antes de Alto]
si 1=:arg [alto]
escribe [Después de Alto]

Tecnología 4. IES Bellavista. 17


MSWLogo: Manual abreviado

fin trucción2. Obsérvese que hay que usar los pa-


myprog 1 réntesis para que funcione bien. Si se omiten,
Antes de Alto MSWLogo la trata como si fuera SISINO, en-
myprog 2 viando un mensaje de advertencia.
Antes de Alto
Ejemplo:
Después de Alto
haz “a 1
si :a =1 [es “Hola]
ESPERA tiempo
Hola
Retrasa la ejecución durante un tiempo (expre- (si :a = 1 [es “Hola][es “Adiós])
sado en segundos) igual al número introducido Hola
en el argumento tiempo dividido por 60. Es decir, haz “a 2
para retrasar 1 segundo introduciremos como (si :a = 1 [es “Hola][es “Adiós])
argumento 60. Adiós
Ejemplo:
Tanto en una como en otra forma, la primitiva SI
para pruebatiempo puede devolver un valor.
es [ahora empiezo]
Ejemplo:
espera 300
es [ya acabé] para max :a :b
fin devuelve (si :a > :b [:a][:b])
pruebatiempo fin
ahora empiezo escribe max 1 2
;<al cabo de 5 segundos escribirá:> 2
ya acabé
SISINO prueba listainstrucc1 listainstrucc2
12.1. LAS SENTENCIAS CONDICIONALES Esta primitiva condicional funciona exactamente
Las sentencias condicionales son la base del igual que la segunda forma de la primitiva SI que
“pensamiento” de los programas. Permiten al acabamos de describir, con la única diferencia
programa “elegir” ejecutar unas instrucciones u de que no lleva paréntesis.
otras o ninguna en función de que se cumplan o
no unas condiciones. 12.2. LOS BUCLES
Otra potente herramienta de LOGO son los bu-
SI prueba listainstrucción
cles, es decir, porciones de programa que se
Esta primitiva presenta una segunda forma: ejecutan una y otra vez durante un determinado
número de veces o mientras se cumpla o hasta
(SI prueba listainstrucción1 listainstrucción2)
que se cumpla una condición.
Funcionamiento de la primera forma: Ejemplo:
Si la condición, dada por el argumento prueba, HAZ.HASTA [HAZ “VAR AZAR 50
tiene el valor VERDADERO, entonces se ejecuta
ESCRIBE :VAR] [:VAR = 25]
la lista de instrucciones contenidas en el argu-
mento listainstrucción. Si el valor de prueba es Se ejecutan una y otra vez las instrucciones de
FALSO, entonces no se ejecuta nada. sacar un número aleatorio entre 0 y 50 y escribir-
lo hasta que se cumpla la condición de que salga
Funcionamiento de la segunda forma:
el 25.
Funciona igual que una primitiva que veremos a
continuación llamada SISINO. Si el valor de
prueba es VERDADERO se ejecuta listainstruc-
ción1 y si tiene valor FALSO se ejecuta listains-

Tecnología 4. IES Bellavista. 18


MSWLogo: Manual abreviado

REPITE número listainstrucción Ejemplo:


Repite una lista de instrucciones (dada en el ar- desde [i 2 4 1] [es :i]
gumento listainstrucción) tantas veces como in- 2
dique el argumento número. Si como argumento 3
número ponemos la palabra siempre, la lista de 4
instrucciones se repite indefinidamente.
HAZ.HASTA listainstrucción pruebalista
DESDE listacontrol listainstrucción
Este procedimiento ejecuta la lista de instruccio-
El procedimiento DESDE ejecuta repetidamente nes dada en el argumento listainstrucción hasta
una lista de instrucciones al tiempo que incre- que la condición pruebalista (condición dentro de
menta una variable local. Cuando esta variable una lista) tenga el valor VERDADERO. Primero
supera un valor límite deja de ejecutar dichas ejecuta y después verifica si se cumple la condi-
instrucciones y se ejecuta la línea siguiente. ción; esto implica que la lista de instrucciones se
ejecuta al menos una vez.
El argumento listacontrol es una lista (entre cor-
chetes) con tres o cuatro miembros: Obsérvese que la condición es el 2º argumento.
El 1º es una palabra que es el nombre de una Ejemplo:
variable local
haz "i 0
El 2º contiene el valor inicial de la variable
haz.hasta [haz "i :i+1 escribe :i] [:i>3]
(puede ser un número o una variable cuyo
1
contenido sea un número).
2
El 3º contiene el valor límite de la variable 3
(puede ser un número o una variable cuyo 4
contenido sea un número).
El 4º contiene el incremento que sufre la va- HASTA pruebalista listainstrucción
riable en cada pasada. Este 4º miembro es Este procedimiento ejecuta la lista de instruccio-
opcional. Si se omite, MSWLogo toma por de- nes dada en el argumento listainstrucción hasta
fecto el valor 1 (si el 2º miembro es menor que la condición pruebalista (condición dentro de
que el 3º) ó –1 (si el 2º miembro es mayor que una lista) tenga el valor VERDADERO. Primero
el 3º). verifica si se cumple la condición y después eje-
Si los miembros 2º y 3º son iguales la lista de cuta. Puede que la lista de instrucciones no se
instrucciones se ejecuta una sola vez. ejecute ninguna vez.

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

Tecnología 4. IES Bellavista. 19


MSWLogo: Manual abreviado

instrucciones y después verifica si se cumple la O expresión1 expresión2


condición. Por ello, el bloque de instrucciones se
Cuando son más de dos los argumentos adopta
ejecuta al menos una vez.
la forma:
Obsérvese que la condición es el 2º argumento.
(O expresión1 expresión2 expresión3 .....)
Ejemplo:
Devuelve VERDADERO si al menos una de las
haz "i 0 entradas (que son expresiones que pueden valer
haz.mientras [haz "i :i+1 escribe :i] [:i<3] VERDADERO o FALSO) tiene valor VERDADE-
1 RO. Si esto no se cumple devuelve FALSO.
2
Ejemplo:
3
haz “var 8
escribe o 3 < 5 :var < 2
MIENTRAS pruebalista listainstrucción
verdadero
Este procedimiento ejecuta la lista de instruccio- escribe o 3 > 5 :var < 2
nes dada en el argumento listainstrucción mien- falso
tras se cumpla la condición pruebalista (condi-
ción dentro de una lista). Primero verifica si se
NO expresión
cumple la condición y si se cumple ejecuta las
instrucciones. Por ello, puede que el bloque de Devuelve VERDADERO si la entrada tiene el
instrucciones no se ejecute ninguna vez. valor FALSO, y viceversa.

Obsérvese que la condición es el 1er argumento. Ejemplo:

Ejemplo: para acierta :var


(si no :var = 5 [escribe [el número es distinto]] ~
haz "i 0
[escribe “acertaste])
mientras [:i<3] [haz "i :i+1 escribe :i]
fin
1
acierta 8
2
el número es distinto
3
acierta 5
acertaste

13. OPERACIONES LÓGICAS


14. LA RECURSIVIDAD
Y expresión1 expresión2 Se llama recursividad a la posibilidad que ofrece
Cuando son más de dos los argumentos adopta un programa diseñado en Logo de llamarse a sí
la forma: mismo en un bucle sin fin. Un sencillo ejemplo lo
(Y expresión1 expresión2 expresión3 .....) constituye el siguiente programa, que dibuja una
circunferencia de modo recursivo:
Devuelve VERDADERO si las entradas (que son
expresiones que pueden valer VERDADERO o para cirec
FALSO) tienen todas valor VERDADERO. Si av 1
esto no se cumple devuelve FALSO. gd 1
cirec
Ejemplo: fin
haz “var 8 Si ejecutamos el procedimiento observamos que
escribe y 3 < 5 :var > 6 se ejecuta por tiempo indefinido y en principio no
verdadero tenemos forma de salir de él sin hacer clic en el
botón ALTO.

Tecnología 4. IES Bellavista. 20


MSWLogo: Manual abreviado

Una forma de resolver el problema sería hacer ¡¡¡Cuidado con la recursividad!!!


que el procedimiento deje de ejecutarse cuando
Salvo que se domine muy bien, hay que utilizar la
se cumpliera alguna condición, por ejemplo que
recursividad con cuidado, pues pueden darse
se pulsara una determinada tecla. Para ello de-
resultados inesperados, sobre todo cuando el
bemos valernos de la orden Ponteclado, que
procedimiento se llama a sí mismo cuando por
captura los eventos del teclado (para ello el foco
debajo de esta llamada aún quedan más instruc-
debe estar situado en la Pantalla de MSWLogo,
ciones.
es decir, que ésta sea la ventana activa) y de
alguna sentencia condicional como, por ejemplo, Cuando la llamada a sí mismo del procedimiento
SI. recursivo es la última instrucción del mismo no
se suelen presentar problemas.
Modifiquemos el procedimiento anterior de la
siguiente forma
para cirec 15. MANEJO DE LA MEMORIA
ponteclado [haz "stop car leecar] En el espacio de trabajo de MSWLogo es donde
ponfoco [pantalla de MSWlogo] se van guardando todas las variables y procedi-
si :stop = 1 [haz "stop 0 alto] mientos que vamos creando. O sea, es la memo-
av 1 ria del programa. Veamos algunas primitivas
gd 1 relacionadas con la consulta y eliminación de
cirec variables y procedimientos en la memoria.
fin
Nota: las instrucciones ponteclado y ponfoco no EDITATODO
tienen por qué estar dentro de procedimiento,
Este procedimiento edita todos los procedimien-
bastaría con ejecutarlas antes de ejecutar cirec.
tos y variables de la memoria.
Ahora al ejecutar cirec vemos cómo podemos
salir del procedimiento pulsando la tecla 1. Ob- EDNS
sérvese que stop es una variable global. Si eje-
cutamos el procedimiento nos dirá que STOP no Edita todas las variables de la memoria.
tiene valor. Hemos de asegurarnos de darle al-
gún valor a stop antes de ejecutar el procedi- BON nombrevar
miento.
Puede adoptar también la forma:
Hemos utilizado las primitivas ya conocidas:
BON listanombrevar
Ponteclado que captura los eventos del te-
clado y ejecuta la lista de instrucciones que le Borra de la memoria la variable cuyo nombre
sigue. Para que funcione la Pantalla de (precedido de comillas) se da en el argumento
MSWLogo debe tener el foco (activa) no la de nombrevar o las variables cuyos nombres (ence-
Trabajo. rrados entre corchetes sin comillas) se dan en la
lista listanombrevar.
Ponfoco, que deja que LOGO controle la
ventana que tiene el foco.
Car (abreviatura de CARACTER) devuelve el
carácter que corresponde a un código ascii.
Leecar, que devuelve el código ascii de la
última tecla pulsada.
Si que es una primitiva condicional. Si se
cumple la prueba que le sigue ejecuta la lista
de instrucciones que sigue a la prueba.
Alto, que termina la ejecución del procedi-
miento en el que aparece.

Tecnología 4. IES Bellavista. 21

También podría gustarte