9.1.
EXPERIMENTA
Ejecuta las órdenes
siguientes y trata de descubrir su significado.
1)
?pt bt
?es "Logo
?es [Grupo LOGO\-MADRID]
?(es [Superficie =] 50 * 60 "m2)
?bt
?teclea "Logo
?teclea
[Grupo LOGO\-MADRID]
?(teclea [Superricie =\ ] 50 * 60
"\ m2)
?bt
?muestra "Logo
?muestra
[grupo LOGO\-MADRID]
?(muestra [Superficie =] 50 * 60
"m2)
2)
?bt
?es [Grupo LOGO-MADRID]
?es [Grupo LOGO -
MADRID]
?es [Grupo \ \ \ \ LOGO \ \ \ \
- \ \ \ \ MADRID]
3)
?bt
?es pr "Logo
?es pr [Grupo LOGO\-MADRID]
?es ul "Logo
?es ul [Logo
es un entorno de trabajo]
?es mp "Logo
?es mp [Logo
es un entorno de trabajo]
?es mu "Logo
?es mu [Logo es un entorno de
trabajo]
4)
?bt
?es palabra "quita
"manchas
?es (palabra "micro "auto "bus)
?muestra lista "León "Zamora
?muestra lista "León [Zamora Salamanca]
?muestra lista [León Zamora Salamanca] "Valladolid
?muestra lista [León Zamora] [Salamanca Burgos]
?muestra frase "León "Zamora
?muestra frase "León [Zamora Salamanca]
?muestra frase [León Zamora Salamanca] "Valladolid
?muestra
frase [León Zamora] [Salamanca Burgos]
5) ?bt
?muestra
pp "León [Zamora Salamanca]
?muestra
pp [León Zamora] [Salamanca Valladolid]
?muestra
pu "León [Zamora Salamanca]
?muestra pu [León Zamora] [Salamanca Valladolid]
6) Ejecuta
las siguientes órdenes. Después de cada una, escribe un texto y pulsa ![]()
?bt
?es lc
?es lp
?es ll
?muestra lc
?muestra lp
?muestra ll
7) Copia el siguiente
procedimiento, ejecútalo y trata de descubrir el significado de tecla?
para correr para
gira
av 10 loca "c
si tecla? [gira] haz "c lc
correr si "g = :c [gd
15]
fin
fin
Ejecución
?enlaza mt correr
8)
?pt bt
?es elemento 7 "Barcelona
?es elemento 4 [a ante bajo cabe con contra de]
?es cuenta [a ante bajo cabe con contra de]
?es cuenta
[León [Astorga La Bañeza Ponferrada]]
9)
?bt
?es car 65
?es car 66
?es car 97
?es asii "A
?es ascii "a
?es ascii "Angel
?es ascii lc
10)
?es miembro? "a "mesa
?es miembro? "a "Pepe
?es miembro? "casa [Mi casa es verde]
?es palabra? "casa
?es palabra? [Mi casa]
?es palabra? [casa]
?es palabra? "
?es palabra 5
?es número? 5
?es número? "5
?es número? "a
?es lista? "casa
?es lista? [Mi casa es verde]
?es lista? [casa]
?es lista? [ ]
?es lista? [[a e o] [i u]]
9.2. OBSERVA
En Logo
sólo hay dos tipos de objetos: palabras y listas, los números se consideran
palabras.

PALABRAS
Una palabra está formada
por caracteres sin espacios en blanco. En Logo van
precedidas de comillas, nunca se cierran las comillas, el espacio en blanco
basta para señalar el final de una palabra.
Ej. "mesa
Además de los espacios en
blanco, los siguientes caracteres delimitan palabras:
+ - * / < > = ( )
[ ]
Para considerarlos como
texto deben ir precedidos del signo slash \ en Logosb
y de un dólar $ en ACTI-LOGO.
Estos mismos símbolos son los que dejan espacios entre las palabras.
DIFERENCIA ENTRE PALABRAS, PROCEDIMIENTOS Y
VARIABLES
Las palabras
van precedidas de comillas Ej. "lado
Las
primitivas y procedimientos no llevan nada Ej. lado
El contenido
de una variable lleva dos puntos Ej. :lado
LISTAS
Una lista está formada
por palabras y también puede contener a su vez a otras listas. Siempre tienen
que ir entre corchetes. Ej. [Mi casa es
verde]
PRIMITIVAS QUE MANEJAN LISTAS
Primitivas
que descomponen objetos:
pr primero Devuelve el PRimer
elemento del objeto.
ni último Devuelve el ULTimo elemento del objeto.
mp
menosprimero Devuelve
todo Menos el Primero.
mu
menosúltimo Devuelve todo Menos el Ultimo.
Primitivas
que juntan objetos:
palabra Devuelve una PALABRA formada por la concatenación
de
las entradas.
lista Devuelve
una LISTA formada por las entradas.
frase Devuelve una lista, pero, si
las entradas son listas,
elimina
los corchetes.
Las
primitivas palabra, lista y frase cuando
llevan un número de entradas distinto de dos se encierran entre paréntesis. Ej.
(palabra "micro "auto
"bus)
pp ponprimero Devuelve una lista, Poniendo Primero el
primer elemento.
pu ponúltimo Devuelve una lista, Poniendo Ultimo el
primer elemento.
Primitivas que pasan objetos para y desde el
usuario:
lc leecarácter Lee el primer Carácter
que se introduce desde el tecla
do.
No hay que pulsar ![]()
lp leepalabra Lee la Palabra que se
introduce desde el teclado. Luego
hay que
pulsar ![]()
II leelista Lee
la Lista que se introduce desde el teclado. No se ponen corchetes. Luego
hay que pulsar ![]()
tecla? Indica
si se ha pulsado una TECLA
es escribe EScribe su entrada en la
pantalla, suprime los corchetes y comillas iniciales.
teclea Lo
mismo que es - escribe, pero
no salta de línea el cursor ni deja espacio en blanco.
muestra Lo
mismo que es = escribe, pero no
elimina los corchetes más externos de lista.
Las primitivas es = escribe, teclea y
muestra cuando llevan más de una entrada se encierran entre paréntesis.
Ej. (es [Superficie =] :a * :b "m2)
elemento Devuelve
el ELEMENTO correspondiente de la
lista.
cuenta CUENTA el número de elementos de un
objeto y devuelve ese número.
ascii Devuelve
el número ASCII del primer carácter
car Devuelve el CARácter
correspondiente.
Primitivas que determinan la naturaleza de un
objeto:
miembro? Devuelve cierto o falso, según que el primer
elemento sea MIEMBRO o no del segundo.
lista? Devuelve
cierto o falso, según que el objeto sea o no una LISTA.
palabra? Devuelve cierto o falso, según que el objeto sea o no
una PALABRA.
número? Devuelve
cierto o falso, según que el objeto sea o no
NUMERO.
9.3. RESOLUCION DE PROBLEMAS
Define un conjunto de
procedimientos para reducir palabras
Ejemplo:
Andalucía
Andaluci
Andaluc
Andalu
Andal
Anda
And
An
A
Define un
procedimiento para formar el plural de las palabras
Ejemplo
casa
casas
árbol
árboles
perdiz
perdices
lunes
lunes
Define un
conjunto de procedimientos para saludar, devolviendo dos tipos de mensajes.
Ejemplo:
¿Cómo te
llamas? Sonia
Encantado de
conocerte Sonia
¿Cómo te
llamas? José María
Encantado de
conocerte José María
¿Cómo te
llamas? Sonia
Encantado de
volverte a ver Sonia
Define un conjunto de
procedimientos que te pregunte la formulación química.
Ejemplo:
Según Stock,
cuál es la fórmula del Acido sulfhídrico H2S
Correcto
Según Stock,
cuál es la fórmula del Oxido de azufre (IV) S04
La respuesta era: S02
Define un MENU
para este tema con la variable global arranque.

9.4. SOLUCIONES
para reducir
local "palabra
es " teclea [Dame
una palabra\ ]
haz "palabra lp
reduce :palabra
fin para
reduce :palabra
si" =
:palabra [alto]
es :palabra
reduce mu :palabra
fin
Arbol de los procedimientos
reducir -> reduce
Ejecución:
?pt bt reducir
para plural
local "nombre
es "
es [Dame un nombre]
es "
haz "nombre lp
si "lunes
= :nombre [es "lunes plural alto]
si "café
= :nombre [es "cafés plural alto]
si "z = ul :nombre [es palabra mu :nombre "ces plural alto]
si miembro? ul :nombre
[a e o u] [es palabra :nombre "s plural alto]
es palabra
:nombre "es
plural
fin
Ejecución:
?pt bt plural
para saluda
local "nombre
es "
ponct [7 0]
? teclea
[¿Cómo te llamas?\ ]
haz "nombre ll
es " ponct [6 0]
si [ ] =
:nombre [es [Por favor, escribe tu nombre] saluda alto]
reconoce
ponct [7 0]
saluda
fin
para reconoce
si miembro? :nombre :nombres [ponct [4 7] (es
[Encantado de volverte a ver] :nombre) es " alto]
haz "nombres pu
:nombre :nombres
ponct [1 3]
(es
[Encantado de conocerte] :nombre)
es "
fin
Arbol de los
procedimientos
saluda -> reconoce
Ejecución:
?haz "nombres [ ]
?pt bt saluda
para química
pt bt
formulación
pregunta
fin
para formulación
haz "fórmulas
[[[Hidruro de potasio] [KH]] [[Hidruro de magnesio] [MgH2]]
[[Acido clorhídrico] [HCl]]
[[Acido sulfhídrico] [H2S]] [[Oxido de hierro \
(11\)] [Fe0]] [[Oxido de hierro \(III\)] [Fe203]]
[[Oxido de azufre \(IV\)] [S02]] [[Oxido de azufre\ (VI\)] [S03]] [[Hidróxido
de Litio] [LiOH]] [[Acido sulfúrico]
[H2SO4]]]
fin
para pregunta
haz
"cuestión elemento 1 + azar cuenta :fórmulas :fórmulas
haz
"pregunta pr :cuestión
haz
"respuesta ul :cuestión
es "
es "
es [Según Stock, cuál es
la fórmula del]
es "
(teclea :pregunta "\ )
comprobar :respuesta
fin
para comprobar
:respuesta
haz "contestación ll
si :respuesta =
:contestación [es "Correcto] [(es [La respuesta
era:\ ] :respuesta)]
es "
pregunta
fin
Arbol de los procedimientos
Química --> formulación
--> pregunta -> comprobar
-> pregunta
Ejecución:
?química
PROBLEMA 5
para menú
ponfondo 1 ponpaleta 0
cargadib "menú
ot
ponct [1 0]
poncursor [6 11]
es [OPCIONES \ \ \ \ 1
EJECUCION]
ponct [3 0]
poncursor [10 13] es
[1 \ \ \ \ \ Reducir palabras]
poncursor [10 14] es
[2 \ \ \ \ \ Plural de nombres]
poncursor [10 15] es
[3 \ \ \ \ \ Saludar]
poncursor [10 16] es
[4 \ \ \ \ \ Química]
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 [12 3 4 5] [opciones alto]
si 1 = :c [pt bt reducir]
si 2 = :c [pt bt plural]
si 3 = :c [pt bt saluda]
si 4 = :c [pt bt química]
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

Ejecución:
?menú
Definimos la variable global arranque
y guardamos los procedimientos en el disco.
?haz "arranque [menú]
?guarda
"tema9
9.5.PROYECTOS
A partir de un
procedimiento de radio variable, diseña el logotipo de los juegos olímpicos de Seul‑88.

César San Pablo Sebastián
Romualdo Iglesia Erdozain
C. P. "Antonio Machado".
Madrid.
Crea los procedimientos
para declinar palabras de la primera declinación Latina.

Jesús García Díaz
José María Alvarez Lázaro
Angel Rejón Pérez
I. B. "Calderón de la Barca".
Madrid.