Técnicas Interesantes: las Variables Locales

Hemos visto muchos ejemplos de variables locales en Cómo Aprender MicroMundos Pro y Cómo Usar MicroMundos Pro. Las variables locales se crean cuando se introduce una entrada en la línea del título de un procedimiento. Una variable local sólo mantiene su valor mientras Logo está ejecutando el procedimiento en el que ha sido definido. Por ello, las variables locales resultan una buena forma de guardar resultados temporarios.

para bienvenida :a
muestra frase [Qué bueno verte] :a
fin

bienvenida "Jorge
Qué bueno verte Jorge

Ya que los nombres de las variables son propios de cada procedimiento, permiten a los superprocedimientos transmitir información a los subprocedimientos. Esto se ejemplifica mejor en los procedimientos recursivos, donde cada subprocedimiento tiene un valor propio para su entrada. Por ejemplo:

para contar :n
si :n > 5 [alto]
muestra :n
contar :n + 1
muestra :n
fin

Como cada contar tiene un valor propio para :n, contar 1 cuenta hacia adelante y luego hacia atrás. Esto resulta obvio cuando se rastrea contar. En el Área de Procedimientos haga clic con el botón derecho del ratón sobre el procedimiento contar y seleccione Rastrear. Escriba contar 1 en el Centro de Mando para ver el resultado de Rastrear:

contar 1
(#12) contar 1
1
(#12) contar 2
2
(#12) contar 3
3
(#12) contar 4
4
(#12) contar 5
5
(#12) contar 6
(#12) contar se detiene
5
(#12) contar se detiene
4
(#12) contar se detiene
3
(#12) contar se detiene
2
(#12) contar se detiene
1
(#12) contar se detiene

Ver los ejemplos en Repetición e Recursión y Procedimientos Recursivos qque Reportan.)

También hay dos primitivas para crear variables locales: local y asigna.

Dentro de un procedimiento, en combinación con da, local crea una variable local:

para saludo
local "nombre
pregunta [¿Cómo te llamas?]
da "nombre respuesta
bienvenida :nombre
fin

Saludo llama a bienvenida. La entrada de saludo se asigna por medio de da. Como local especifica que este nombre de variable es local, nombre no mantendrá un valor después de que el procedimiento se ejecute.

muestra :nombre
nombre no tiene valor

Asigna es otra de las formas de crear variables locales. Se puede pensar en ella como una combinación entre local y da.Vamos a corregir el ejemplo anterior con local:

para saludo
pregunta [¿Cómo te llamas?]
asigna [nombre respuesta]
bienvenido :nombre
fin

Podemos asignar varias variables con una sóla instrucción asigna:

para movert
asigna [rumb 90 dist 100 vel 1]
frumbo :rumb
desliza :dist :vel
fin

El ejemplo anterior asigna tres variables locales: rumb, dist y vel.

Observe que, aunque asigna es más conciso al asignar valores, su estructura es más sutil; por este motivo los programadores principiantes generalmente la evitan.