Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2. LA INTERFAZ DE MSWLOGO
3. EL MODO DIRECTO.
4. EL MODO PROCEDIMENTAL....
RETROCEDE
GIRAIZQUIERDA
GIRADERECHA
BORRAPANTALLA
BAJALAPIZ
SUBELAPIZ
PONLAPIZ
GOMA
PONCOLORLAPIZ
PONGROSOR
MUESTRATORTUGA
OCULTATORTUGA
PONPOS
PONXY
PONX
PONY
PONRUMBO
POS
COORX
COORY
CIRCULO
RELLENA
PONCOLORRELLENO
PIXEL
VALOR
LOCAL
10
11
FIN
11
11
9. MANEJO DE DATOS.................................................................................................................
LISTA
11
FRASE
12
PRIMERO
12
ULTIMO
12
MATRIZ
12
LISTAAMATRIZ
12
ELEMENTO
12
PONELEMENTO
13
CUENTA
13
CARACTER
13
IGUALES?
13
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
11
13
14
LEELISTA
15
LEEPALABRA
15
BORRATEXTO
15
LEECAR
15
PONTECLADO
15
QUITATECLADO
15
PONRATON
15
QUITARRATON
16
POSRATON
16
PONFOCO
16
16
PREGUNTABOX
17
SELECCIONBOX
16
SINOBOX
17
FALSO
17
ALTO
17
ESPERA
18
DEVUELVE
18
SISINO
REPITE
19
DESDE
19
HAZ.HASTA
19
HASTA
19
HAZ.MIENTRAS
19
MIENTRAS
20
18
18
17
17
16
17
14
20
NO
18
20
20
21
EDNS
21
BON
21
La caja de lista
2. LA INTERFAZ DE MSWLOGO.
La interfaz de MSWLogo consta de dos ventanas: la ventana Pantalla de MSWLogo, donde
se dibujan los grficos, y la ventana Trabajo,
situada en la parte inferior, que ser donde nos
comunicaremos con el programa. Con el ratn
puede cambiarse el tamao de estas ventanas.
Para activar una ventana basta pinchar con el
ratn sobre ella.
Dentro de la ventana Trabajo hay varias partes:
La caja de entrada
Es un nico rengln situado a la izquierda del
botn ejecutar. En la caja de entrada podemos
escribir instrucciones, las cuales se ejecutarn al
pulsar INTRO o bien haciendo clis en el botn
Ejecutar. Tambin podemos modificar en ella el
El botn Ejecutar
Al hacer clic sobre l se ejecutan las rdenes
que haya escritas en la caja de entrada. Hace el
mismo efecto que pulsar la tecla INTRO.
Ventana Trabajo
Caja de lista
Caja de entrada
El botn Alto
BAILAR
El botn Reiniciar
PONGROSOR 4
3. EL MODO DIRECTO.
Las palabras clave que se usan para comunicarse con el entorno de MSWLogo se llaman PRIMITIVAS. Las primitivas pueden escribirse y ejecutarse directamente en la caja de entrada. Este
modo de trabajar se denomina modo directo.
(nota: puedes escribir las primitivas de MSWLogo en maysculas o minsculas).
Con los ejemplos siguientes quedar ms claro
el funcionamiento del modo directo:
Introduce y ejecuta sucesivamente en la caja de
entrada las siguientes primitivas:
AVANZA 100
GIRADERECHA
AVANZA 100
GIRADERECHA
AVANZA 100
GIRADERECHA
AVANZA 100
GIRADERECHA
90
90
90
90
AVANZA
20
Observars que MSWLogo avisa del problema:
de que no sabe hacer lo que se le est
pidiendo.
de que le faltan datos o de que no sabe qu
quieres que haga con los datos.
de que la entrada de datos no es como la
espera, etc.
Muchas primitivas de MSWLogo tienen abreviaturas para reducir el tiempo de escritura. Prueba
con el siguiente ejemplo:
BP
AV 100
GD 90
AV 100
GD 90
AV 100
GD 90
AV 100
GD 90
Observars que has borrado la pantalla (BP es
la abreviatura de la primitiva BORRAPANTALLA)
y has vuelto a dibujar el mismo cuadrado de antes, pero escribiendo menos texto.
Vamos a conocer las abreviaturas de algunas
primitivas:
PRIMITIVA
ABREVIATURA
AVANZA n
AV n
RETROCEDE n
RE n
BORRAPANTALLA
BP
BORRATEXTO
BT
ESCRIBE Hola
ESCRIBE [Hola amigo cmo ests?]
GIRADERECHA n
GD n
GIRAIZQUIERDA n
GI n
SUBELAPIZ
SL
BAJALAPIZ
BJ
OCULTATORTUGA
OT
MUESTRATORTUGA
MT
ESCRIBE palabra
ES palabra
nos aparecen los comandos para y fin que, como veremos despus, inician y terminan, respectivamente, todos los procedimientos.
AV 100 GD 90 AV 30 GD 90 AV 100 GI 90
4. EL MODO PROCEDIMENTAL.
Programar en modo procedimental consiste en
ensear procedimientos al ordenador que, una
vez asimilados, interpreta como si fueran nuevas
primitivas.
Para crear un procedimiento entraremos en el
editor de MSWLogo haciendo clic con el ratn en
la barra de men de la Pantalla de MSWLogo:
Fichero > Editar....
Nos aparece la ventana de dilogo Editar procedimiento. Escribimos el nombre del procedimiento que queremos crear y hacemos clic en el
botn OK (o pulsamos la tecla INTRO), con lo
que entramos en la pantalla del editor, donde ya
Tecnologa 4. IES Bellavista.
Los nmeros, aunque tambin se pueden considerar palabras, no tienen por qu ir precedidos
de comillas (aunque pueden llevarlas).
Ejemplo:
PARA CUADROS
REPITE 3 [CUADRADO AV 70]
FIN
Cuando queramos volver a utilizar los procedimientos que hemos definido en otra sesin
de MSWLogo, cargaremos el archivo donde los
hemos guardado a travs de la barra de mens:
Fichero > Cargar ...
Aparece una ventana donde podemos elegir la
carpeta donde est y el archivo.
Escribe 27
27
(Escribe 34 7 56 20)
34 7 56 20
Una lnea puede continuar en la lnea siguiente
si su ltimo carcter es ~ (que se consigue tecleando 126 con el teclado numrico mientras se
mantiene pulsada la tecla Alt).
Ejemplo:
(Escribe hola Juan, me alegra ~
volver a verte)
hola Juan, me alegra volver a verte
Un punto y coma (;) inicia un comentario en una
lnea de instrucciones. MSWLogo ignora todos
los caracteres que siguen al punto y coma hasta
el final de la lnea. Un carcter ~ como ltimo
carcter de la lnea indica una continuacin de la
lnea, pero no del comentario.
Ejemplo:
Para saludo
;en la siguiente lnea saludamos
(es hola amigo) ;es un saludo breve
;en la siguiente lnea nos despedimos
es adis
fin
saludo
hola amigo
adis
Mueve la tortuga hacia atrs, es decir, en la direccin opuesta a su rumbo la distancia especificada.
Color
negro
azul
verde claro
azul claro
rojo
magenta
amarillo
blanco
marrn oscuro
marrn claro
verde oscuro
azul turquesa
naranja
violeta
naranja claro
gris (intermedio)
Lista
[ 0 0 0]
[ 0 0 255]
[ 0 255 0]
[ 0 255 255]
[255 0 0]
[255 0 255]
[255 255 0]
[255 255 255]
[155 96 59]
[197 136 18]
[100 162 64]
[120 187 187]
[255 149 119]
[144 113 208]
[255 163 0]
[183 183 183]
GIRAIZQUIERDA ngulo
GIRADERECHA ngulo
La orden GIRADERECHA se puede abreviar por
GD. ngulo es un nmero que indica los grados
que girar el rumbo de la tortuga en el sentido de
las agujas del reloj. Cada unidad es 1/360 de la
circunferencia.
BORRAPANTALLA
Puede abreviarse por BP. Borra los grficos de
la ventana y enva la tortuga al centro de la pantalla y con rumbo 0.
BAJALAPIZ
Se puede abreviar por BL. Pone el lpiz en posicin bajado.
SUBELAPIZ
Se puede abreviar por SL. Pone el lpiz en posicin subido.
PONLAPIZ
Se puede abreviar por PLA. Baja el lpiz y lo
pone en modo PONLAPIZ.
GOMA
AVANZA distancia
PONCOLORLAPIZ color
Se puede abreviar por PONCL. Pone el color del
lpiz segn especifica el argumento color, que
puede ser una lista de tres nmeros o un ndice
de color.
PONGROSOR tamao
Se puede abreviar por PONG. Pone el grosor del
lpiz de la anchura dada por el argumento tamao. Este argumento es una lista de dos nmeros
enteros que corresponden con la altura y la anchura, pero como MSWLogo slo usa la anchura, slo el segundo nmero es relevante (lo que
se hace es que se suelen poner los dos iguales).
Ejemplo:
Pongrosor [5 5]
MUESTRATORTUGA
Se puede abreviar por MT. Hace visible la tortuga activa.
OCULTATORTUGA
Se puede abreviar por OT. Hace invisible la tortuga activa.
PONPOS posicin
Mueve la tortuga a las coordenadas absolutas X,
Y dadas por posicin.
COORX
COORY
que la variable se haya definido como local (inmediatamente veremos los conceptos de variable local y global).
Ejemplo:
haz saludo Hola
escribe :saludo
Hola
Con la orden haz hemos creado una variable
llamada saludo cuyo contenido es la palabra
Hola. Despus hemos ordenado escribir el contenido de la variable saludo.
VALOR nombrevar
La primitiva VALOR se puede abreviar por :.
Devuelve el valor de una variable cuyo nombre
viene dado por el argumento nombrevar.
Ejemplo:
Haz saludo [Hola, cmo ests]
escribe valor saludo
Hola, cmo ests
escribe :saludo
Hola, cmo ests
Observa que cuando nos referimos al nombre de
la variable precedemos ste de unas comillas ()
mientras que cuando nos referimos a su contenido precedemos el nombre de dos puntos (:).
Ejecuta las siguientes rdenes:
Haz edad 25
Escribe :edad + 9
Observars que MSWLogo escribe 34 que es
igual a la suma del contenido de la variable edad
(25) ms 9.
A una variable mltiple se le llama matriz y puede compararse tambin con una caja a la que se
le pone una etiqueta (nombre) pero con varios
compartimentos en su interior, en cada uno de
los cuales guarda un contenido.
La caja tiene un nico nombre, pero cada compartimento tiene un ndice (el compartimento 1,
el 2, etc), lo que permite acceder individualmente
a cada uno de ellos, bien para ver su contenido o
para modificarlo.
Escribe :mimatriz
Aparecer en pantalla {gato lpiz 25 hombre}
PARA CUADRADOVAR :L
BP
REPITE 4 [AV :L GD 90 ]
FIN
HAZ X 1
LOCAL X
REPITE :EXP [HAZ X :X * 2]
DEVUELVE :X
FIN
Escribe :L
10
Tanto EXP como X son variables locales. Ejecuta el procedimiento y a continuacin ordena que
se escriban sus valores y vers que no tienen
valor.
8. DEFINICIN DE PROCEDIMIENTOS
CON PARA Y FIN
PARA nombreproc :entrada1 :entrada2 .....
La primitiva PARA le dice a MSWLogo que acepte una definicin de procedimiento. El procedimiento se llamar nombreproc y no debe existir
otro procedimiento con el mismo nombre (pues
ser sustituido por el nuevo). Las entradas o
argumentos se llamarn entrada1, entrada2, etc.
Un procedimiento puede tener varias entradas o
ninguna. Los nombres de procedimientos y de
entradas se pueden escribir indistintamente en
maysculas o minsculas.
9. MANEJO DE DATOS
En primer lugar distingamos los distintos tipos de
datos que manejamos en LOGO:
Carcter: es una nica letra, nmero o pulsacin de teclado.
Palabra: es un conjunto de caracteres que
no tiene espacios entre s.
Lista: es un conjunto de palabras separadas
por espacios. Van encerradas entre corchetes.
Matriz: es un conjunto de listas separadas
por espacios entre s. Van encerradas entre
llaves.
LISTA objeto1 objeto2
Cuando tiene ms de dos argumentos debe ir
entre parntesis:
(LISTA objeto1 objeto2 objeto3 .....)
Devuelve una lista cuyos miembros son sus argumentos, que pueden ser cualquier tipo de datos de LOGO (carcter, palabra, lista) o variables
que contengan estos datos.
11
Ejemplo:
MATRIZ tamao
Ejemplo:
haz x 100 haz y 50
ponpos (lista :x :y)
;<la tortuga se mover a la posicin [100,50]>
FRASE objeto1 objeto2
Cuando tiene ms de dos argumentos debe ir
entre parntesis:
(FRASE objeto1 objeto2 objeto3 .....)
Hace lo mismo que LISTA, la diferencia es que si
alguno de sus argumentos es una lista le elimina
los corchetes
Ejemplo:
haz nmero 4 haz cubo 64
es (lista [El cubo de] :nmero [es] :cubo)
[El cubo de] 4 [es] 64
es (frase [El cubo de] :nmero [es] :cubo)
El cubo de 4 es 64
Recordemos que una matriz es una variable mltiple que puede guardar varios contenidos simultneamente, pudindose acceder individualmente a cada uno de ellos a travs de un ndice, bien
para leerlos o para modificarlos.
Los elementos de la matriz pueden seleccionarse con la primitiva ELEMENTO y cambiarse con
PONELEMENTO. Las matrices se escriben en
pantalla con ESCRIBE.
Ejemplo 1:
haz mimatriz matriz 3
Esta instruccin crea una matriz llamada mimatriz de tres elementos. Los valores iniciales de
cada uno de los elementos son listas vacas.
Tambin puede crearse una matriz y al mismo
tiempo darle valores, escribiendo stos dentro de
llaves.
Ejemplo 2:
haz mimatriz {10 15 20}
PRIMERO objeto
LISTAAMATRIZ lista
Ejemplo:
Escribe listaamatriz [1 2 3]
{1 2 3}
ELEMENTO ndice objeto
Si el argumento objeto es una palabra, devuelve
el carcter nmero ndice de la palabra; si es
una lista, devuelve el miembro nmero ndice de
la lista. Si es una matriz devuelve el elemento
nmero ndice de la matriz. El ndice comienza
en 1.
Ejemplo:
muestra elemento 2 [a b c]
b
muestra elemento 3 "ABC
C
12
13
AZAR valorlmite
ENTERO valor
Ejemplo:
Ejemplo:
haz a 23.67 haz b 8.42
escribe entero :a + :b
32
REDONDEA valor
Devuelve el entero ms cercano al valor numrico de su argumento.
RAIZCUADRADA valor
Se puede abreviar por RC. Devuelve la raz cuadrada del valor numrico de su argumento.
POTENCIA valor1 valor2
Devuelve valor1 elevado a valor2. Si valor1 es
negativo, valor2 debe ser un nmero entero.
MENOR? valor1 valor2
Otra forma que adopta esta primitiva es:
valor1 < valor2
Devuelve VERDADERO si el valor numrico del
primer argumento (valor1) es menor que el del
segundo argumento (valor2). Devuelve FALSO
en caso contrario.
Ejemplo:
haz valim 25
escribe azar :valim
SACAALAZAR objeto
Devuelve un elemento elegido al azar del objeto
de entrada. Si el argumento objeto es una palabra, devuelve al azar uno de sus caracteres; si
es un nmero, devuelve uno de sus dgitos, si es
una lista o una matriz, devuelve uno de sus elementos. Si es una variable, devuelve al azar uno
de los elementos de su contenido.
Ejemplo:
sacaalazar dibujo
b
sacaalazar [1 2 3 4]
2
14
Si la entrada es una lista no escribe los corchetes; s se escriben los corchetes de las sublistas
(listas dentro de listas).
Esta orden captura los eventos del teclado (pulsaciones) y cuando ello se produce ejecuta la o
las listas de instrucciones de su argumento.
Ejemplos:
es hola
hola
(es hola, cmo ests?)
hola, cmo ests?
(es muy [bien y t?])
muy bien y t?
haz saludo hola
es :saludo
hola
LEELISTA
Esta primitiva se puede abreviar por LL.
Lee una lnea desde el teclado y devuelve la
lnea como una lista. La entrada se introduce en
una ventana de dilogo llamada Modo LISTA.
LEEPALABRA
Esta primitiva se puede abreviar por LP.
Lee una lnea desde el teclado y la devuelve
como una palabra (aunque la lnea tenga espacios, corchetes, etc). La entrada se introduce en
una ventana de dilogo llamada Modo Entrada.
BORRATEXTO
QUITATECLADO
Esta orden desactiva la captura de los eventos
del teclado.
PONRATON bot_izq_abajo bot_izq_arriba
bot_der_abajo bot_der_arriba mover
Esta orden captura los eventos del ratn (clics) y
cuando ello se produce ejecuta la o las listas de
instrucciones de su argumento.
Si se quiere obtener la posicin del ratn se usa
POSRATON.
Para que funcione, la ventana Pantalla de
MSWLogo debe tener el foco (no la ventana Trabajo). Esto puede hacerse haciendo clic en ella
con el ratn o, cuando se necesita controlar por
software, con la primitiva PONFOCO.
15
QUITARRATON
Ejemplo:
POSRATON
PONFOCO ttuloventana
VERDADERO
Una vez que se hace clic sobre un botn, devuelve un valor booleano, que es Verdadero (si
se hace clic sobre SI) o Falso (si se hace clic
sobre NO).
bandera : Es una lista que se usa como etiqueta
de la ventana.
cuerpo : Es una lista con el texto del mensaje.
La ventana se adapta al tamao del mensaje, el
cual est limitado a 235 caracteres.
Ejemplo:
escribe sinobox [Pregunta] [Te gusta Logo?]
; <Haga clic sobre el botn SI>
verdadero
17
fin
myprog 1
Antes de Alto
myprog 2
Antes de Alto
Despus de Alto
ESPERA tiempo
Retrasa la ejecucin durante un tiempo (expresado en segundos) igual al nmero introducido
en el argumento tiempo dividido por 60. Es decir,
para retrasar 1 segundo introduciremos como
argumento 60.
Ejemplo:
para pruebatiempo
es [ahora empiezo]
espera 300
es [ya acab]
fin
pruebatiempo
ahora empiezo
;<al cabo de 5 segundos escribir:>
ya acab
truccin2. Obsrvese que hay que usar los parntesis para que funcione bien. Si se omiten,
MSWLogo la trata como si fuera SISINO, enviando un mensaje de advertencia.
Ejemplo:
haz a 1
si :a =1 [es Hola]
Hola
(si :a = 1 [es Hola][es Adis])
Hola
haz a 2
(si :a = 1 [es Hola][es Adis])
Adis
Tanto en una como en otra forma, la primitiva SI
puede devolver un valor.
Ejemplo:
para max :a :b
devuelve (si :a > :b [:a][:b])
fin
escribe max 1 2
2
SISINO prueba listainstrucc1 listainstrucc2
Ejemplo:
18
Ejemplo:
Repite una lista de instrucciones (dada en el argumento listainstruccin) tantas veces como indique el argumento nmero. Si como argumento
nmero ponemos la palabra siempre, la lista de
instrucciones se repite indefinidamente.
19
O expresin1 expresin2
Cuando son ms de dos los argumentos adopta
la forma:
(O expresin1 expresin2 expresin3 .....)
Devuelve VERDADERO si al menos una de las
entradas (que son expresiones que pueden valer
VERDADERO o FALSO) tiene valor VERDADERO. Si esto no se cumple devuelve FALSO.
Ejemplo:
haz var 8
escribe o 3 < 5 :var < 2
verdadero
escribe o 3 > 5 :var < 2
falso
NO expresin
Devuelve VERDADERO si la entrada tiene el
valor FALSO, y viceversa.
Ejemplo:
Ejemplo:
haz "i 0
mientras [:i<3] [haz "i :i+1 escribe :i]
1
2
3
20
para cirec
ponteclado [haz "stop car leecar]
ponfoco [pantalla de MSWlogo]
si :stop = 1 [haz "stop 0 alto]
av 1
gd 1
cirec
fin
EDITATODO
21