P ara parar un procedimiento en Logosb se utiliza la tecla F2 y en ACTI‑LOGO F10 ;algunas veces ara parar es necesario pulsar la
tecla
e inmediatamente F2 o F10
según el Logo utilizado.
8.1. EXPERIMENTA
1) Dibuja
las siguientes poliespirales

2) Copia el
siguiente procedimiento y ejecútalo
para poli :d :a
si 180 < :d
[alto]
av :d gd :a
poli :d + 5 :a
fin
Ejecución:
?bp poli 5 90
?bp poli 5 123
…………………..
3) Copia el siguiente
procedimiento y ejecútalo
para polis
bp
ponfondo azar 16
ponpaleta azar 2
poli 5 90 + azar 90
espera 20
polis
fin
Ejecución:
?polis
4) ¿Cuál es la función
del siguiente procedimiento?. Cuando hayas intuido posible solución ejecútalo.
para color
bt
teclea [¿Color del
fondo?1 ]
haz "c lp
si o 0 = :c "negro = :c [ponfondo 0]
si o 1= :c "azul = :c [ponfondo 1]
si o 2 = :c "verde = :c [ponfondo 2]
si (o 3 = :c "clan = :c "cyan = :c) [ponfondo 3]
si o 4 = :c "rojo = :c [ponfondo 4]
si o 5 = :c "morado = :c [ponfondo 5]
si o 6 = :c "marrón = :c [ponfondo 6]
si o 7 = :c "blanco = :c [ponfondo 7]
color
fin
Ejecución:
?color
5) ¿Qué operación
matemática realizan los siguientes procedimientos?, ejecútalos
para m :x :y
si :y = 0 [dev :x]
dev m :y resto :x :y
fin
para mcd
(local "x "y)
es [Este procedimiento
calcula]
es [el M.C.D. de dos números]
es "
teclea [Escribe el primer
número\]
haz "x lp
teclea [escribe el
segundo número\ ]
haz "y lp
(teclea
[M.C.D. \(] :x ", :y ") "\ \=\
m :x :y)
es "
es "
mcd
fin
Ejecución:
?pt bt mcd
8.2. OBSERVA
RECURSION
Consiste en llamar dentro de un procedimiento al mismo procedimiento,
como por ejemplo poli del EXPERIMENTA.
Es una
expresión cuyo resultado es CIERTO o FALSO. Ejemplo:
100 < :d
Con las condiciones
podemos volver el Logo de alguna manera inteligente;
puede dilucidar entre varias posibilidades y elegirla que nos interese en cada
caso.
si Es un condicional, siempre tiene que ir
seguido de un predicado y de una o dos acciones. SI el predicado es CIERTO,
se ejecuta la acción, si hay dos acciones se ejecuta la primera. SI el
predicado es FALSO, no se ejecuta la acción, si hay dos acciones se
ejecuta la segunda. Las acciones tienen que ir entre corchetes.
Sintaxis
1) si
predicado [acción]
Ej. si 180 < :d [alto]
2) si predicado
[acción1] [acción2]
Ej. si 0 = resto: n 2 [es "Par] [es "Impar]
alto Hace un ALTO
en el ejecución y devuelve el control al procedimiento del que venía.
Ej. si
180 < :d [alto]
no Devuelve CIERTO o FALSO
según que el predicado sea FALSO o
CIERTO, es el NO lógico y devuelve el complementario.
Ej. no
0 > :x
y Devuelve CIERTO, si uno Y otro de los predicados de las entradas
son CIERTOS, es decir, si todas las entradas son CIERTAS, en otro
caso,
devuelve FALSO.
Ej. Y 0 < :x 10 > :x
o Devuelve CIERTO, si uno O el otro de los predicados de las entradas
son CIERTOS, es decir, si alguna de las entradas es CIERTA, en otro
caso,
devuelve FALSO.
Ej. o 2 = :c "verde = :c
Las funciones lógicas o
e y pueden llevar más de dos entradas, en este caso todo ello va entre
paréntesis.
Ejemplo:
(o 3 = :c "cian = :c "cyan = :c
"tres = :c)
dev devuelve
DEVuelve el objeto
de la entrada, y hace un alto DEVolviendo el
control al procedimiento del que venía. Solo se puede usar dentro de
procedimientos.
FUNCIONES
EN LOGO
Son las primitivas o precedimientos que necesitan ir precedidas de otras
primitivas.
Ej. coorx es coorx
8.3. RESOLUCION DE
PROBLEMAS
PROBLEMA
1:
Define un
procedimiento que dibuje estrellas, siendo
al azar los colores del fondo y de la paleta.
Obtén una
por impresora.

PROBLEMA 2:
Define un
procedimiento para dibujar dirigiendo la tortuga mediante 6 teclas, obedecediendo con mayúsculas y con minúsculas. Obtén por
impresora los procedimientos.

PROBLEMA 3:
Define un procedimiento
que nos pregunte aleatoriamente la tabla de
multiplicar,
ejemplo:
¿Cuántos
son?
6*8=48
Correcto
¿Cuántas
son?
4*0=4
No, la
respuesta es 0
PROBLEMA 4:
Definir un conjunto de
procedimientos para representar parábolas.

PROBLEMA 5:
Definir un MENU
para este tema y guardarlo en un fichero con la
variable global arranque.

8.4. SOLUCIONES
PROBLEMA 1:
para estrella :d
:a
poncl 1 + azar 3
av :d gd :a
si 0 = rumbo [alto]
estrella :d :a
fin
Ejecución:
?bp ponfondo 1
?estrella 100 150
?bp estrella 100 145
Para obtener una copia en
la impresora, se pulsan las teclas
![]()
para estrellas
bp
ponfondo azar 16
ponpaleta azar 2
re 80
estrella 160 90 + azar 90
espera 20
estrellas
fin
Arbol de los
procedimientos
estrellas -->
estrella
Ejecución:
?estrellas
PROBLEMA 2:
para dibujar
bp mt
poncursor [0 0]
es [U = av 10]
es [N = re 10]
es [K = gd 15]
es [H = gi 15]
es [Z = bp]
es [F = FIN]
dib
fin
para dib
local "x
haz "x lc
si o "u =
:x "U = :x [av 10]
si o "n =
:x "N = :x [re 10]
si o "k =
:x "K = :x [gd 15]
si o "h =
:x "H = :x [gi 15]
si o "z =
:x "Z = :x [dibujar alto]
si o "f =
:x "F = :x [alto]
dib
fin
Arbol de los procedimientos
dibujar --> dib
Ejecución:
?dibujar
Para obtener
por impresora estos dos procedimientos ejecutamos:
?eco
"lpt1
?im [dibujar dib]
?noeco
PROBLEMA 3:
para mul
(local
"x "y "n)
pt
haz "x
azar 11
haz "y
azar 11
es [¿Cuántas son?]
(teclea
:x "\ "* "\ :y "\\ =\ )
haz "n lp
si :n = :x * :y [es "correcto] [(es
[No, la respuesta es] :x * :y)]
es "
mul
fin
Ejecución:
?pt
mul
PROBLEMA 4:
para ejes
ponpaleta 0 poncl 2 ponfondo 1
ot ponrumbo 0
eje 10
gd 90 eje 10
gd 90 eje 10
gd 90 eje 10
gd 90
fin
para eje :n
repite :n [gi 90 av 2 re 4 av 2 gd 90 av
10]
gi 90 av 2 re 4 av 2 gd 90 re:n*10
fin
para parábola
(local "a "b
"c "x "y)
bt poncl 3 ponct [1 1]
poncursor [0 22]
es [Parábola y = ax\ + bx + c
poncursor [15 21] es
2
ponct [3 1] poncursor [0 23]
es "Coeficientes
poncursor [15 23]
teclea [a \=\ ]
haz "a lp
poncursor [23 23]
telclea [b \=\ ]
haz "b lp
poncursor [31 23]
teclea [c \=\ ]
haz "c lp
haz "x -10
haz "y :a * :x * :x + :b
* :x + :c
sl ponpos lista -100 :y * 10 bl
paráb :x
fin
para paráb :x
si 10 < :x [alto]
haz "y :a * :x * :x + :b
* :x + :c
filtro
ponpos lista :x * 10 :y * 10
paráb :x + .3
fin
para filtro
si 500< :y [haz "y 500]
si -500 > :y [haz "y -500]
fin
Arbol de los procedimientos
ejes ->
eje
parábola ->
paráb -->
filtro
Ejecución:
?bp ejes
?bt parábola
PROBLEMA 5:
para menú
ponfondo 1 ponpaleta 0
cargadib "menú
ot
ponct [1 0]
poncursor [6 11] es
[OPCIONES \ \ \ \ \ EJECUCION]
ponct [3 0]
poncursor [10 13] es
[1 \ \ \ \ \ Estrellas]
poncursor [10 14] es
[2 \ \ \ \ \ Dibujar]
poncursor [1015] es
[3 \ \ \ \ \ Tabla de multiplicar]
poncursor [10 16] es
[4 \ \ \ \ \ Parábola]
poncursor [10 17] es
[5 \ \ \ \ \ FIN]
ponct [2 0]
poncursor [8 20] es
[Pulsa la opción deseada]
ponct [7 0]
opciones
fin
para opciones
local "c
haz "c lc
si no miembro?
:c [1 2 3 4 5] [opciones alto]
si 1 = :c [bp bt estrellas]
si 2 = :c [bp bt dibujar]
si 3 = :c [pt bt mul]
si 4 = :c [bp bt ejes parábola]
si 5 = :c [pt bt alto]
continuar
fin
para continuar
local "v
poncursor [3 24]
teclea [¿Quieres
volver al menú?] \(S\/N\)\ ]
haz "v lc
si "s =
:v [menú]
pt bt
fin
Arbol de los procedimientos
menú ‑‑>
opciones --> estrellas ‑-> estrella
-->dibujar --> dib
-‑>mul
--> ejes
-‑> eje
-->parábola -->
paráb
-->continuar --> menú
Ejecución:
?menú
Guardamos el contenido
del Area de Trabajo en un fichero con la variable global arranque
haz
"arranque [menú]
?guarda
"tema8
8.5.
PROYECTOS
Haz los procedimientos
para dibujar una elipse con los focos y semiejes.

Angeles Fernández Yuncal
Carmen Uceda Arranz
Adolfo Alvarez Mateos
Luis Vegas Mollá
I. B. "Fijo y Garay".
Madrid
Diseña los procedimientos para representar gráficamente el movimiento
uniformemente acelerado

M. Angeles Gutiérrez
Rosa M. Santander
I. B. "García Morato".
Madrid