El Manejo de los Procesos: Tiempo y Sincronización

Cancelar procesos en forma individual tiene un propósito. Permite controlar el tiempo y la secuencia dentro del entorno. Detén se utiliza a menudo para detener cosas en forma simultánea.

Una forma de sincronizar los procesos es la siguiente. Primero se ejecuta una instrucción porsiempre. Se activa la segunda instrucción y, una vez finalizada ésta, se detiene la primera. Por ejemplo:

para truco
porsiempre [animar]
   Ejecuta animar en forma repetitiva.
Vivaldi                       Toca música Midi mientras se desarrolla la animación.
detén [animar]    ... se detiene la animación.
fin

para animar
ffig "mariposa1 espera 1 ffig "mariposa2 espera 1
fin

Animar da a la tortuga dos figuras diferentes. La instrucción porsiempre (en el procedimiento truco) ejecuta en forma repetida animar para que las figuras continúen cambiando. Vivaldi toca la música. Una vez finalizada, MicroMundos va a la próxima instrucción para detener la animación. Asegúrese de que la instrucción dada como entrada a detén sea la misma que se ha dado a porsiempre.

Otra forma de sincronizar la animación con música es mediante los mandos enciende y apaga. Por ejemplo, escriba animar como instrucción para la tortuga y establezca que lo haga Muchas veces. Digamos que la tortuga es la t1. Si quiere tocar la música y hacer que termine al mismo tiempo que la animación, escriba en el Centro de Mando:

t1, enciende vivaldi apaga

El ejemplo que se muestra a continuación tiene más procesos. Una abeja danzará en círculos y se detendrá cuando se detenga el sonido. Con las primitivas esperahasta y acabado? es posible controlar el tiempo en el cual se ejecuta una instrucción. Acabado? reporta cierto cuando se completa el proceso lanzado por lanza o porsiempre. Esperahasta finaliza cuando su instrucción reporta cierto.

Ahora hay que crear una nueva tortuga. Su nombre es Abeja y su instrucción aletea. Establezca que la instrucción se realice Muchas veces. Ahora defina los procedimientos aletea y baila:

para aletea
ffig "abeja1 espera 1
ffig "abeja2 espera 1
fin

para baila
enciende
lanza [Chopin]
porsiempre [círculo]
esperahasta [acabado? [Chopin]]
apaga
detén [círculo]
fin

para círculo
ad 5 de 5
fin

Para probarlo, hay que importar un archivo MIDI llamado Chopin. Luego escriba en el Centro de Mando:

abeja, baila

Es instructivo observar con cuidado de qué manera baila ejecuta sus instrucciones:

Comienza baila
Enciende empieza el proceso de la tortuga-abeja y la hace aletear.
Lanza [Chopin] lanza la música de Chopin.
Porsiempre [círculo] lanza el procedimiento círculo en forma repetitiva y hace que la abeja vuele en círculos.
esperahasta [acabado? [Chopin]] hace que Logo espere hasta que la música de Chopin haya finalizado para ir a la próxima instrucción.
Apaga desactiva el proceso de la tortuga-abeja.
Detén [círculo] cancela el procedimiento círculo. Baila termina.

Ponga la instrucción abeja, baila en un botón, haga clic en el botón y mire el árbol de proceso (los números pueden ser diferentes):

Nota: Baila.abeja es el nombre de la página donde está ubicado el botón1.

Hay dos familias de procesos: Botón1 y la tortuga Abeja. En total se han lanzado cuatro procesos.

Vamos a ratrear los procesos de las instrucciones abeja, baila y aletea para comprender mejor cómo los procesos empiezan y se detienen. Haga clic con el botón derecho del ratón en la instrucción abeja, baila dentro del área de Proyecto y elija Rastrear. Haga lo mismo con la instrucción aletea. Haga clic nuevamente en el botón abeja, baila. El reporte se parecerá a esto:

botón1 en Baila.abeja se enciende
#51 comienza -- lanza [abeja, baila] (botón1 en Baila.abeja)
abeja en Baila.abeja se enciende
#52 comienza -- porsiempre [aletea] (abeja en Baila.abeja)
#53 comienza -- lanza [Chopin] (botón1 en Baila.abeja)
#54 comienza -- porsiempre [círculo] (botón1 en Baila.abeja)
#53 se detiene
#52 se detiene
abeja en Baila.abeja se apaga
#54 se detiene
#51 se detiene
botón1 en Baila.abeja se apaga

Habrá notado que, cuando la música de Chopin se detiene (#53), la abeja deja de aletear (#52) y de moverse en forma circular (#54), y se termina el baile (#51).

Seleccione Sin rastreo del menú Edición para detener el rastreo.