TEMA 10. PROGRAMACIÓN (II)

 1. El lenguaje de programación ScratchJr (II)

1.1 Bucles infinitos

Es un segundo tipo de bucle en el bloque “Repetir indefinidamente”, de la categoría de finalización, también llamado bucle infinito. Su efecto es que los bloques del guión donde se encuentra (salvo bloque el inicial) se ejecutan secuencialmente una y otra vez, indefinidamente.

un proyecto que incluya el bloque “Repetir indefinidamente” nunca termina su ejecución. Sin embargo, en la práctica el programador puede parar su ejecución para no perder el control del entorno de programación. Al iniciar la ejecución de un proyecto, el icono de bandera verde cambia a un hexágono rojo. Si lo pulsamos, la ejecución del proyecto termina, volviendo a aparecer la bandera verde.


1.2 Forma de los bloques

Se pueden usar de diferentes formas:

  • Bloques disparadores. Tienen color amarillo. Siempre se colocan al comienzo de un guión, salvo el bloque “Enviar mensaje”, que puede se trata igual que las categorías siguientes.
  • Bloques de movimiento, apariencia, sonido y control. Permiten el ensamblaje de otros bloques por su izquierda y por su derecha. La única observación es que el bloque “Repetir” también puede ensamblar una secuencia de bloques en su interior. Por otro lado, los bloques disparadores sólo pueden colocarse al inicio de un guión.
  • Bloques de finalización. Son de color rojo. Siempre se colocan al final de un guión.

1.3 Paralelismo y eventos

En ScratchJr podemos tener varios personajes, de forma que cada personaje puede hacer algo distinto. Incluso un personaje puede tener varios guiones que se ejecutarán en paralelo. 

Al pulsar el icono de bandera verde, se inicia la ejecución simultánea de los guiones que empiezan con el bloque “Al presionar bandera verde”. Esta ejecución simultánea de varias partes de un programa se denomina paralelismo. 

La ejecución de un guión también puede producirse si el usuario toca a un personaje, debe tener algún guión que comience por el bloque "comenzar al pulsar". Se activan ante un evento, iniciando la ejecución del guion de la derecha. Los bloques que 4 detectan eventos tienen una forma redondeada en su lado izquierdo para indicar que sólo pueden usarse en el inicio de un guión. Estos bloques se llaman bloques disparadores. Estos tienen cinco bloques.

  • Al presionar bandera verde: comienza el guion cuando se pulsa la bandera verde
  • Comenzar al tocar: comienza el guion cuando el personaje es tocado por otro personaje
  • Enviar mensaje: envía un mensaje del color seleccionado
  • Comenzar al pulsar: comienza el guion cuando se pulsa el personaje 
  • Comenzar con mensaje: comienza el guion cuando se envíe un mensaje del color seleccionado 

1.4 Sincronización y mensajes

Los lenguajes de programación que proporcionan paralelismo también proporcionan mecanismos de sincronización. En ScratchJr hay dos formas de sincronización entre personajes, mediante eventos específicos. Una primera forma de sincronización puede realizarse cuando dos personajes chocan, es decir, se tocan. Este evento puede ser detectado por un bloque disparador “Comenzar al tocar” en cualquiera de los personajes.

La principal forma de sincronizar dos o más personajes es mediante el paso de mensajes. Un personaje puede ejecutar un bloque “Enviar mensaje”, produciendo un evento que puede ser detectado por otros personajes. El evento se denomina envío de mensaje y su detección, recepción de mensaje. Cuando otro personaje recibe el mensaje, empieza a realizar otras acciones, actuando por tanto de forma sincronizada.

Para recibir un mensaje, debe usarse el bloque disparador “Comenzar con mensaje”

Cada mensaje se distingue mediante un color, habiendo seis colores distintos disponibles.

El paso de mensajes tiene algunas peculiaridades: 

  • Si un mensaje es recibido por algún guión, el guión que lo envió se queda temporalmente en pausa hasta que el guión receptor termina su ejecución completamente. En ese momento, se reanuda la ejecución del guión emisor, por el siguiente bloque al de envío de mensaje. Esto implica:
    • Si el guión receptor no termina su ejecución, el guión se queda indefinidamente en pausa. Esto sucede si el guión receptor termina con un bloque “Repetir indefinidamente”.
    • Un mensaje puede ser recibido por varios guiones (y por tanto por varios personajes). En este caso, el guión emisor se queda en pausa hasta que hayan terminado todos los guiones activados por el mensaje.
  • Si un mensaje no es recibido por ningún guión, el guión que lo envió no se pausa, continuando su ejecución por el siguiente bloque.

1.5 Otros bloques terminadores 

Los proyectos pueden tener varias páginas. Esto permite organizar un programa en partes distintas, aunque relacionadas entre sí. Las páginas se pueden arrastrar a la posición que se desee para reordenarlas.

Cada página tiene su propio conjunto de personajes y su fondo. Un personaje puede aparecer en varias páginas, pero son distintas copias del mismo personaje. Las distintas copias no tienen ninguna relación entre sí, teniendo cada una sus propios guiones.

El programa puede provocar un cambio de la página actual a otra mediante el bloque “Ir a la página”, de la categoría de finalización. Este bloque produce un cambio de contexto, ya que presenta el fondo de la nueva página e inicia la ejecución de los personajes de la nueva página. Se inicia la ejecución de los guiones de la nueva página que comiencen con un bloque disparador “Al presionar bandera verde”. Por último, el bloque terminador “Finalizar” puede colocarse al final de un guión cuando no se coloca ninguno de los otros dos bloques de finalización, aunque no produce ningún efecto. En realidad, es una regla de buen estilo de programación que todos los guiones contengan un bloque de finalización.

Conjunto completo de bloques de la categoría de finalización:

  • Finalizar: indica el final del guion
  • Ir a la página: salta a la página seleccionada del proyecto
  • Repetir indefinidamente: ejecuta este guion continuamente 

1.6 Otros bloques de control

Incluye algunos bloques que permiten modificar ligeramente el tiempo de ejecución de un bloque particular. Son útiles para conseguir ciertos efectos multimedia. 

El bloque “Esperar” permite que la ejecución de un guión se pare durante cierto tiempo. No conviene utilizarlo para sincronizar personajes, siendo preferible el uso de mensajes.

El bloque “Fijar velocidad” permite variar la velocidad de ejecución de los bloques de movimiento del personaje cuyo programa lo ejecuta. Hay tres velocidades posibles: lenta, media y rápida.

También es posible realizar la operación inversa, interrumpir la ejecución de guiones. El bloque de control “Parar” provoca que todos los guiones de su personaje se paren, salvo el guión donde se ejecuta el propio bloque “Parar”. Puede utilizarse cuando se alcanza cierta situación en la que ya no se desea que el personaje realice nada más.

El conjunto completo de bloques de la categoría de control es:
  • Esperar: para el guion durante cierto tiempo 
  • Fijar velocidad: cambia la velocidad a la que ciertas instrucciones se ejecutan. 
  • Parar: para todos los guiones del personaje 
  • Repetir: repite cierto número de veces las instrucciones que están dentro del bloque 

1.7 Ejecución de un programa

Reglas que controlan la ejecución de un programa ScratchJr:
  • Secuencia de bloques o guión. Los bloques de un guión se ejecutan de forma secuencial e indivisible (es decir, uno tras otro) desde el primero hasta el último. 
  • Bloque de control “Repetir”. Los bloques contenidos dentro de este bloque se ejecutan de forma secuencial e indivisible tantas veces como indique el número del bucle. 
Sin embargo, la existencia de otros bloques exige introducir reglas adicionales de ejecución de un guión:
  • Bloque de control “Fijar velocidad”. Su ejecución puede provocar que algunos bloques del guión donde se encuentra se ejecuten más o menos rápidamente. 
  • Bloque de control “Esperar”. Provoca que la ejecución del guión donde se encuentra se pare durante un cierto tiempo. 
  • Bloque de finalización “Repetir indefinidamente”. Los bloques del guión se repiten sin fin. Solamente se para la ejecución del guión si hay un cambio de página, si le afecta un bloque “Parar” o si el usuario presiona el botón “Parar”.
El número de guiones en ejecución puede variar durante la ejecución del proyecto, según las siguientes reglas:
  • Varios guiones. Cada personaje de la página activa tiene su propio guión. Además, un personaje puede tener varios guiones. Todos estos guiones se ejecutan en paralelo:
    • Los bloques de cada guión se ejecutan en secuencia e indivisiblemente.
    • El ordenador sólo puede ejecutar una instrucción cada vez. Por tanto, al ejecutar varios guiones, va seleccionando en cada momento un bloque de alguno de los guiones. El resultado es que la ejecución paralela de varios guiones resulta en una ejecución entremezclada de sus bloques.
  • Bloque de finalización “Finalizar” o simplemente que se ejecute el último bloque de un guión. Termina la ejecución de este guión. 
  • Bloque de control “Parar”. Termina la ejecución de todos los guiones del personaje, salvo el guión donde se encuentra el bloque “Parar”. 
  • Bloque de finalización “Ir a la página”. Este bloque tiene un gran impacto sobre la ejecución del proyecto. Se para la ejecución de los guiones de todos los personajes de la página actual, se cambian el fondo y los personajes por los de la nueva página, y se inicia la ejecución de los guiones de estos personajes que comienzan con el bloque disparador “Al presionar bandera verde”.
  • Bloques disparadores “Enviar mensaje” y “Comenzar con mensaje”. El primero de estos bloques produce el envío de un mensaje del color correspondiente. Se comprueba si algún guión de la página actual tiene un bloque “Comenzar con mensaje” de dicho color. En ese caso, se inician todos los guiones que tengan dicho bloque disparador, quedando parado el guión que envió el mensaje, hasta que terminen su ejecución todos los guiones receptores del mensaje. 
  • Bloques disparadores “Comenzar al tocar” y “Comenzar al pulsar”. Si se comprueba que un personaje es tocado por el usuario o por otro personaje y tiene algún guión disparador con uno de estos bloques, se inicia su ejecución.

1.8 Estado de un programa

El estado de un programa es el conjunto de valores relevantes para controlar la ejecución del programa. En general, no es necesario conocer el estado de un programa con detalle porque vemos su efecto en el escenario, pero conviene ser consciente de los elementos que lo forman.

Dicha página determina el fondo y los personajes que pueden estar activos. Una vez conocida esta información, el estado del programa viene dado principalmente por dos tipos de información:
  • Estado de cada personaje. El estado de cada personaje viene dado por varias características: posición en los ejes X e Y, su orientación, su tamaño, si es visible y si está diciendo algo. 
  • Estado de cada guión activo. Los bloques de cada guión se ejecutan de forma secuencial e indivisible, por lo que en cada momento hay un bloque activo. En el caso de bucles “Repetir”, debe saberse qué iteración está realizando en cada momento. En el caso del bloque “Esperar” debemos saber cuánto tiempo lleva parada la ejecución del guión
El entorno de programación de ScratchJr nos da algunas ayudas para conocer el estado de la ejecución:
  • La página activa se resalta mediante un marco naranja
  • El bloque activo en cada guión se resalta con un cambio de color. Desafortunadamente, no se muestra el número de iteraciones realizadas de los bloques “Repetir”. 
  • Puede conocerse la posición exacta de un personaje activando el icono “Cuadrícula” 








Comments

Popular posts from this blog

STORYBIRD