4.1. EXPERIMENTA
0) Ten cuidado con los espacios
en blanco. Cuando los haya déjalos y cuando no los haya no los pongas.
1) Define y ejecuta un cuadrado de lado 50.
2) Modifica la definición
anterior para definir un cuadrado de
lado 80.
3) Vuelve a modificar la
definición de cuadrado para que dibuje
la figura de lado 20.
4) Copia en el Editor el
siguiente procedimiento y ejecútalo para distintos valores del lado.
?ed
"cua
para cua :lado
repite 4 [av :lado gd 90]
fin
Ejecución 1:
Ejecución
2:
?bp cua 50 ?bp cua 10
?bp cua 80 ?cua 20
?bp cua 20 ?cua 30
5) Fíjate en las
ejecuciones siguientes, entre \ \ hay un espacio en blanco.
?pt bt
?es [No deja
espacios en blanco]
?es [Si \ \ \ \ \ \ deja espacios en blanco]
?es [Abre espacios (Si)]
?es [Abre
espacios \(No\)]
6) Ejecuta las siguientes
órdenes:
?haz "M "Madrid
?haz "e 2.7182818
?haz "calle [C\) Alonso
Martínez n 167 - 3 C]
?es :M
?es :e
?es :calle
?es "e
?es valor "e
?es pi
7) Define en el Editor el
siguiente procedimiento. Ejecútalo y cuando te pida la longitud del lado, escríbela
y pulsa la tecla ![]()
?ed "cua1
para cua1
local "lado
teclea [Dame la longitud
del lado \ ]
haz :lado lp
cua :lado
fin
Arbol de los
procedimientos:
cua1 -->
cua
Ejecución:
?bp cua1
8) Copia en el Editor el
siguiente procedimiento y ejecútalo. (perímetro del cuadrado)
ed "percua
para percua :lado :unidad
(es
[Perímetro =] 4 * :lado :unidad)
fin
Ejecución:
?pt
bt percua 64.398 "cm
9) Copia en
el Editor el siguiente procedimiento y ejecútalo, cuando te pida la
longitud del lado escríbela y pulsa la tecla
; haz lo
mismo con la unidad de medida.
?ed
"percua1
para percua1
(local "lado "unidad)
teclea [Dame la longitud del lado \ ]
haz "lado lp
teclea [Dame
la unidad de medida del lado \ ]
haz
"unidad lp
percua dado
:unidad
fin
Arbol
Percua1 -> percua
Ejecución:
?pt bt percua1
10) ¿Cuál es el resultado
de ejecutar el siguiente procedimiento? (dibujo y perímetro del cuadrado)
?ed "dibpercua
para dibpercua :d :u
cua :d
percua :d :u
fin
Arbol
dibpercua cua
percua
Ejecución:
?bp dibpercua 60 "Km
11)
Introduce tú Disco de Trabajo en la unidad A y ejecuta:
?haz "arranque [bp bt dibpercua 83 "Km]
?guarda "cuadrado
?pt bt dir
4.2. OBSERVA
PROCEDIMIENTOS CON ENTRADAS
Los nombres de
los procedimientos por comodidad los abreviamos a las tres primeras letras.
Como has
podido comprobar, resulta bastante pesado tener que entrar en el Editor cada
vez que quieras definir una figura de distinto tamaño.
Para
solventar este problema existe en Logo la
posibilidad de definir procedimientos que dibujen figuras de lado variable, es decir, que tengan
lados de diferente tamaño. A éstos les denominamos procedimientos con entradas. Las entradas son variables locales, esto quiere decir, que sólo tienen valor para el
procedimiento y los subprocedimientos que las
utilizan y después dejan de existir.
A la hora de
definir la nueva figura, los pasos que avanzará la Tortuga no se los daremos
como algo constante sino bajo el símbolo dado que representa el contenido de la variable. Este símbolo
deberá figurar siempre en la primera línea del procedimiento a la derecha de para y del nombre del mismo.
Los dos puntos (:) son
la clave para que el ordenador sepa que lo que va a continuación (lado)
tienen que recibir una cantidad o
valor al ejecutarse el procedimiento.
Entre los
dos puntos (:) y la palabra (lado) no puede haber espacio en blanco.
Ejemplo:
Procedimiento
constante: Procedimiento
con entradas:
para cua para cua
dado
repite 4 [av 50 gd 90] repite 4 [av
:lado gd 90]
fin fin
Las variables
locales las podemos representar por una palabra, una letra o un conjunto de
carácteres, ejemplo:
:lado :d :d1 :d2 :x :altura
Ejecución:
Al ejecutar un
procedimiento con entradas, a la derecha del nombre hay que escribir el valor
de la entrada, sin los dos puntos. Si es un número, simplemente el número, si
es una palabra con comillas y si es una lista entre corchetes.
?bp cua 70
?bp cual 70
"cm
Existe en Logo la posibilidad de definir variables globales al margen
de los procedimientos. Para manejar las variables globales en Logo disponemos de las siguientes primitivas:
haz HAce o crea una variable global cuyo nombre es la
primera entrada, a la que asigna el valor de la segunda entrada.
El nombre de la variable se
representa precedido de comillas y el contenido
precedido de dos puntos.
valor Devuelve el contenido del nombre
local Convierte
en LOCALes las variables globales, solo se
pueden utilizar dentro de procedimientos, cuando lleva más de una entrada, hay que encerrarlo todo entre paréntesis,
ejemplos:
local "lado
(local "lado "unidad)
arranque Es una variable global, cuyo contenido es una
lista. Sirve para ponerle auto ARRANQUE a
un fichero de Logo, al finalizar de cargar un fichero que tiene una
variable global arranque se ejecuta el conjunto de órdenes de la lista,
ejemplo:
?haz "arranque [bp dibpercua 83 "Km]
Consiste en
mantener un diálogo con el ordenador mediante preguntas y respuestas
Espera a Leer una Palabra
que introduciremos porteclado, después de haberla
escrito debemos pulsar la tecla
![]()
OTRAS
PRIMITIVAS
teclea Esta primitiva es análogo a es= escribe, con la única diferencia que el texto siguiente lo escribe
a continuación, en el mismo renglón; puede llevar como
es = escribe una entrada o varias,
en el caso de llevar más de una, debemos encerrar todo entre paréntesis.
Pi Devuelve el valor de n =
3.1415927
/ Este símbolo se llama slash, y se utiliza para dejar espacios en
blanco y escribir como normales los caracteres que delimitan palabras.
4.3. RESOLUCION DE
PROBLEMAS
PROBLEMA
1:
1) Define un
procedimiento que dibuje triángulos equiláteros de lado variable.

2) Define un
procedimiento que dibuje rectángulos de lados variables.

PROBLEMA 2:
1) Define un
procedimiento para construir polígonos regulares de cualquier número de lados y
cuya ,longitud de lado sea también variable.
2) Define un procedimiento interactivo
para dibujar polígonos regulares.

3) Define un
procedimiento que calcule el perímetro de un polígono regular.
4) Define un procedimiento
interactivo para calcular el perímetro de un polígono regular.
5) Define un
procedimiento que dibuje y calcule el perímetro de un polígono regular.

PROBLEMA 3:
Define un
procedimiento para dibujar circunferencias de radio variable. Recuerda que la
longitud de la circunferencia viene dada por la fórmula L = 2 * pi * r y que pi es una primitiva
que Logo ya conoce.

PROBLEMA 4:
Define 8 variables
diferentes para que al cambiar el color del fondo no sea necesario utilizar
números, sino simplemente responder con su nombre. Ejemplo:
?color
¿De qué
color quieres el fondo? rojo
PROBLEMA 5:
1) Define un
procedimiento variable que dibuje la siguiente casa.

2) Dibuja dos
casas en la pantalla de distinto tamaño y obtén una copia en la impresora.
3) Guarda en
tu Disco de Trabajo todos los procedimientos de este tema con la variable arranque,
que dibuje dos casas al terminar de cargarse.
4.4. SOLUCIONES
PROBLEMA 1:
1) para tri :d
gd 30
repite 3 [av :d gd 120]
gi
30
fin
Ejecución:
?bp
tri 100
2) para rec :a :b
repite 2 [av :a gd 90 av :b gd
90]
rin
Ejecución:
?bp
rec 50 120
PROBLEMA 2:
1) para
pol :n
:d
gi 90
repite :n [av
:d gd 360 / :n]
gd 90
fin
Ejecución:
?bp
pol 5 60
2) para pol1
(local
"n "d)
teclea [Dime
el número de lados \ ]
haz "n lp
teclea [Dime
la longitud del lado \ ]
haz "d lp
pol :n :d
fin
Arbol
Ejecución:
?bp
pol1
3) para perpol :n :d :u
(es
[Perímetro =] :n * :d :u)
fin
Ejecución:
?pt
bt perpol 5 60 "m
4) para perpol1
(local "n "d "u)
teclea [Dime el número de lados \ ]
haz "n lp
teclea [Dime
la longitud del lado \ ]
haz "d lp
teclea [Dime
la unidad de medida del lado \ ]
haz "u lp
perpol :n :d :u
fin
Arbol
Perpol1 ‑> perpol
Ejecución:
?pt
bt perpol1
5) para dibperpol :n :d :u
pol :n :d
perpol :n :d :u
fin
Arbol
dibperpol pol
perpol
Ejecución:
?bp
dibperpol 5 60 "m
PROBLEMA 3:
para cir :r
local "paso
haz "paso 2 * pi * :r /
36
gd 5
repite 36 [av :paso gd 10]
gi 5
fin
Ejecución:
?bp cir 50
PROBLEMA 4:
Definimos en Modo Directo
las siguientes variables globales
?haz
"negro 0
?haz "azul 1
?haz "verde 2
?haz "cyan 3
?haz "cian 3
?haz "rojo 4
?haz "morado 5
?haz "marrón 6
?haz
"blanco 7
En el Editor definimos el
siguiente procedimiento:
para color
teclea [¿De qué
color quieres el fondo? \ ]
haz "color valor lp
ponfondo :color
fin
Ejecución:
?color
PROBLEMA 5:
1) para
casa :d
ponfondo 1 ponpaleta 0
fachada :d
si av:d
gi 90 av:d * .2 gd 90 bl
tejado :d *
1.4
sl gi 90 re
:d * .2 gd 90 re :d bl
fin
para fachada :d
poncl 2
cua :d
sl gd 90 av :d * .4 gi 90 bl
puerta :d * .3 :d *
.2
sl av:d*.8 gd
90 av:d*.2 bl
vent :d * .2
sl re:d*.4
bl
vent :d * .2
sl re:d*.2
gi 90 re:d*.8bl
poncl 1
sl gd 45 av :d / 8 bl rellena
sl re:d
/ 8 gi 45 bl
fin
para tejado :d
poncl 3
tri:d
poncl 2
sl gd 60 av :d / 2 bl rellena
sl re:d / 2 gi 60 bl
fin
para puerta :a
:b
poncl 2
rec :a :b
poncl 3
sl gd 45 av :b / 2 bl rellena
sl re:b / 2 gi 45 bl
fin
para vent:d
poncl 2
cua :d
poncl 3
sl gd 45 av :d / 2 bl rellena
sl re
:d /2 gi 45 bl
fin
Ejecución:
?bp re 40 casa 50
2) para casas
si re
80 gi 90 av 120 gd 90 bl
casa 80
si av 60 gd
90 av 200 gi 90 bl
casa 50
fin
Arbol
casas ‑>
casa
Ejecución:
?bp casas
3) ?haz "arranque [casas]
?guarda "tema4
4.5. PROYECTOS
Porcentaje composición
del aire mediante cubos encajados

Andrés Sánchez
Laura Navarro
Ana Belén Navas Alonso
Elizabeth Montané
Rosa Millanes
C. P. "San José de Calasanz"
Fraga
(Huesca)
Máscara bajo
la tormenta

Máximo Alonso Acija
Armando Alonso Fernández
Luis Miguel Arias Pérez
Ismael Cuesta de Cabo
Angel Tomás
Panero Alvarez
I. B. de Astorga.
León