El Manejo de los Procesos: Los Botones y las Familias de Procesos
Cuando se usa el Centro de Mando para lanzar procesos en forma directa por medio de una instrucción, se lanza una colección de procesos. Al controlar el árbol de Procesos dentro del área de Procesos, veremos que todos están en el mismo nivel. En otras palabras, todavía no hemos usado un proceso para lanzar otro.
Se puede pensar en una colección de procesos como en una familia. Cuando se hace clic en un botón para ejecutar una instrucción, el botón lanza una familia de procesos. Mientras el botón esté presionado, algún proceso de la familia estará ejecutándose. Mientras esto sucede se puede hacer clic en otro botón o escribir una instrucción en el Centro de Mando. Cuando se hace clic en una tortuga que ha sido programada para que ejecute una instrucción, la tortuga lanza su propia familia de procesos.
En las cajas de diálogo de las tortugas y de los botones se puede establecer que una instrucción se ejecute Una vez o Muchas veces. Muchas veces repite la instrucción en forma continua, tal como lo hace el mando porsiempre. Una vez es similar al mando lanza.
Miremos primero al botón. El mismo proceso que se ha lanzado desde el Centro de Mando pueder ser lanzado desde dos botones diferentes. Haga el siguiente experimento.
Debe crear dos botones:
- El primero tiene la instrucción repite 360 [adelante 1] establecida en Una vez.
- El segundo tiene la instrucción repite 360 [derecha 1] establecida en Una vez.
Escriba t1, cp en el Centro de Mando para asegurarse de que la t1 es la tortuga activa y de que está con pluma.
Para poder hacer clic en los botones repite en forma simultánea, seleccione los dos botones y luego haga clic en uno de ellos para presionarlos al mismo tiempo. Verá cómo se dibuja un círculo. Es el mismo círculo dibujado por el ejemplo del Centro de Mando. Los botones continúan apretados mientras se ejecutan las instrucciones. Una vez finalizadas, los botones vuelven a su estado original.
En realidad, en un botón no hay que lanzar un proceso en forma explícita. La instrucción se lanza cuando se hace clic en el botón. En el ejemplo anterior cada botón lanza un proceso diferente.
Pruebe realizar esto de nuevo, mientras mira el proceso de cada uno de los botones en el área de Procesos. Si el proceso se desarrolla muy rápidamente, ajuste la velocidad a Despacio (la caja amarilla en la parte superior del área de Procesos) para que la instrucción se ejecute más lentamente. Todo lo anterior produce el mismo efecto que si hubiéramos escrito en el Centro de Mando:
lanza [repite 360 [adelante 1]]
lanza [repite 360 [derecha 1]]
La instrucción porsiempre equivale a establecer el botón en Muchas veces. Para verlo en un ejemplo, debe crear dos botones nuevos:
- adelante 1 establecido en Muchas veces
- derecha 1 establecido en Muchas veces
Ahora haga clic en los botones para iniciar los procesos. Ambos botones continuarán presionados en forma indefinida hasta que:
- Haga clic nuevamente en los botones
- Haga clic sobre cada proceso con el botón derecho del ratón dentro del área de Procesos, y elija Detener.
- Haga clic en la herramienta Detener todo de la barra de herramientas.
- Use el mando detén.
En término de los procesos, los dos nuevos botones (adelante 1 y derecha 1) son equivalentes a los botones de repite. Cada uno lanza un proceso, como se puede ver en el área de Procesos.
Ahora probemos con algo diferente. Defina el siguiente procedimiento:
para vuela
porsiempre [ffigura "pájaro1 ffigura "pájaro2]
porsiempre [adelante 1]
fin
Tiene que crear un nuevo botón que tenga como instrucción vuela. Haga clic en el botón. El botón se mantiene presionado y el pájaro seguirá volando hasta que de nuevo haga clic en el botón.
![]()
Piense en lo que pasa en términos de cómo fueron lanzados los procesos. Hay dos instrucciones en el procedimiento vuela que comienzan con porsiempre. El mando vuela está dentro de un botón. El botón lanza un proceso llamado vuela que, a su vez, lanza otros dos procesos: uno para ffigura y otro para adelante.
Podemos decir que el botón ha lanzado una familia de procesos: el botón vuela es el padre y los dos procesos porsiempre son los hijos.
Haga clic en el botón vuela para detenerlo. En realidad, el proceso de vuela ya se ha detenido mucho antes, ni bien han sido lanzados el proceso porsiempre ffigura y el proceso porsiempre adelante. El botón permanece "presionado" hasta que se hace clic en él, porque los procesos hijos siguen activos.
El hecho de que el proceso vuela se detiene muy rápido (tan pronto como Logo termina de ejecutar el procedimiento), resulta obvio cuando se mira el árbol del Proceso. El proceso vuela sucede tan rápido que no se lo ve. Hay que ajustar la velocidad a Despacio para que cada proceso aparezca en el árbol del Proceso.
![]()
Si rastreamos la instrucción vuela en el Botón1 tendremos un modelo de lo que está pasando. Haga clic en vuela con el botón derecho del ratón dentro del área de Proyecto, y elija Rastrear. El Centro de Mando mostrará la siguiente información (los números al comienzo de cada línea seguramente serán diferentes):
botón1 en página1 se enciende
#19 comienza -- lanza [vuela] (botón1 en págna1)
#20 comienza -- porsiempre [ffigura "pájaro1 ffigura "pájaro2] (botón1 en página1)
#21 comienza -- porsiempre [adelante 1] (botón1 en página1)
#19 se detiene
#20 se detiene
#21 se detiene
botón1 en página1 se apaga
El reporte de Rastrear dice que Botón1 controla esta familia de procesos. El proceso inicial es vuela (#19 arriba). Vuela es el procedimiento que tiene las instrucciones que lanzan los otros dos procesos, #20 y #21 arriba. El primer proceso que se detiene es #19, vuela. Pero su familia de procesos continúa ejecutándose, porque el botón permanece presionado. Cuando se desactive el botón, también se detendrán #20 y #21.
Cuando se escriben instrucciones en el Centro de Mando, se puede lanzar sólo un proceso (sólo hay un Centro de Mando). Cada botón que creamos dispara una nueva familia de procesos. Esto es lo que posibilita tener muchas familias de procesos que se ejecutan al mismo tiempo. Existe un límite interno que son 37 procesos.