PROCEDIMIENTOS VARIABLES. VARIABLES GLOBALES

 

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

 

VARIABLES GLOBALES

 

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]

 

INTERACTIVIDAD

 

Consiste en mantener un diálogo con el ordenador mediante preguntas y respuestas

lp                                                                                            leepalabra

 

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

Pol1 ‑> pol

 

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

 

PROYECTO 1. Ciencias Naturales

 

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)

 

PROYECTO 2. Expresión Plástica

 

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