PALABRAS Y LISTAS

 

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

 

PROBLEMA 1

 

Define un conjunto de procedimientos para reducir palabras

 

Ejemplo:

 

Andalucía

Andaluci

Andaluc

Andalu

Andal

Anda

And

An

A

 

PROBLEMA 2

 

Define un procedimiento para formar el plural de las palabras

 

Ejemplo

 

casa

casas

 

árbol

árboles

 

perdiz

perdices

 

lunes

lunes

 

 

PROBLEMA 3

 

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

 

PROBLEMA 4

 

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

 

PROBLEMA 5

 

Define un MENU para este tema con la variable global arranque.

 



9.4. SOLUCIONES

 

PROBLEMA 1

 

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

 

PROBLEMA 2

 

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

 

PROBLEMA 3

 

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

 

 

PROBLEMA 4

 

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

 

PROYECTO 1. Matemáticas

 

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.


PROYECTO 2. Latín

 

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.