TAREA 10.2
CONTENIDO DEL TEMA 10
4. LENGUAJE DE PROGRAMACIÓN SCRATCHJR (I)
Scratch Jr, ¿qué es?, ¿en qué consiste?ScratchJr es un lenguaje de programación visual diseñado para introducir a la programación a niños de 5 a 7 años de edad, basado en Scratch pero sin requerir habilidades de lectura. ScratchJr fue desarrollado por el MIT Media Lab, que también desarrollaron Scratch, en cooperación con Tufts University y The Playful Invention Company.
Permite crear historias interactivas, juegos y animaciones mediante bloques de código que se ensamblan como piezas de un rompecabezas.
4.1. Bloques equivalentes en Code.org y ScratchJr
Los bloques que hemos estudiado con Code.org tienen sus equivalentes en ScratchJr.
Los bloques “repetir” y de movimiento de ambos lenguajes son similares, ambos contienen signos (flechas y curvas) que ayudan a su comprensión.
Sin embargo, también hay diferencias. Por ejemplo, no es tan evidente la equivalencia entre los bloques “Ejecutar” de Code.org y “Al presionar bandera verde” de ScratchJr, que se colocan al comienzo de su programa respectivo. Otra diferencia es que los programas de Code.org se leen de arriba abajo, y los de ScratchJr se leen de izquierda a derecha.
4.2. El entorno de programación de ScratchJr
Una característica importante de ScratchJr es que el usuario puede desarrollar cualquier programa. En esto se diferencia de los puzles de Code.org, que tenían un micromundo, un objetivo y unos bloques fijos en cada ejercicio.
Al abrir el entorno de programación de ScratchJr, accedemos a una pantalla con cuatro iconos en su parte superior. Con el iciono “casa” se muestran los programas que hayamos desarrollado con ScratchJr, más la posibilidad de crear uno nuevo.
Figura 17. Pantalla principal de ScratchJr
Un proyecto en ScratchJr (un programa se llama proyecto) presenta un escenario formado por un fondo y personajes con acciones específicas. El escenario mostrará el efecto de ejecutar el programa ScratchJr desarrollado, normalmente movimientos y conversaciones de sus personajes.
Una secuencia de bloques se llama guión en ScratchJr. La Figura muestra dos guiones con diversos bloques de movimiento en secuencia o agrupados en un bucle. Por tanto, otras diferencias destacadas con Code.org es que pueden existir varias secuencias de bloques (es decir, guiones) y que un guión puede comenzar por un evento distinto de la bandera verde.
Veamos brevemente el significado de todos los elementos de la pantalla de ScratchJr numerados en la figura anterior :
1. Guardar. Guarda el proyecto y vuelve a la página principal. Es importante pulsar en este icono siempre que queramos guardar un proyecto.
2. Escenario. Es el área de la pantalla donde ocurre la acción.
3. Modo de presentación. Permite ampliar el escenario a pantalla completa.
4. Cuadrícula. Permite mostrar u ocultar una cuadrícula con las coordenadas X-Y.
5. Cambiar fondo. Permite modificar la imagen de fondo para el escenario.
6. Añadir texto. Permite escribir títulos y etiquetas.
7. Reiniciar personajes. Sitúa todos los personajes en sus posiciones originales.
8. Bandera verde. Empieza la ejecución de todos los guiones que empiezan por el bloque “Al presionar bandera verde”.
9. Páginas. Permite seleccionar una página del proyecto o añadir una nueva.
10. Información del proyecto. Permite cambiar el título del proyecto, ver cuándo se creó y compartirlo.
11. Deshacer y rehacer. “Deshacer” permite anular la última acción realizada, mientras que “Rehacer” permite restaurar la última acción anulada.
12. Guiones. Los guiones presenten en esta área forman el programa de la página actual.
13. Zona de programación. Los bloques de programación se arrastran y encajan en esta zona.
14. Paleta de bloques. Muestra los bloques de la categoría seleccionada.
15. Categorías de bloques. Muestra las categorías de bloques de ScratchJr para que el usuario seleccione en cada momento la más adecuada. Hay seis categorías de bloques; de izquierda a derecha: disparadores (bloque de color amarillo), de movimiento (azul), de apariencia (rosa), de sonidos (verde), de control (naranja) y de finalización (rojo).
16. Personajes. Muestra los personajes del proyecto y permite crear uno nuevo.
Los bloques se arrastran desde la paleta de bloques (área 14) a la zona de programación (área 13). Asimismo, para eliminar un bloque o una secuencia de bloques, se arrastra fuera de la zona de programación.
En ScratchJr se habla de “zona de programación”, aunque podría hablarse de un editor gráfico, ya que se manejan bloques en lugar de escribir texto.
El programa de cada personaje de ScratchJr debe introducirse por separado. Podemos seleccionar un personaje pulsando en su miniatura, tras lo cual se presentan en la zona de programación los guiones de dicho personaje. También es posible pulsar su nombre para cambiarlo o la brocha para editar su imagen. Un bloque o una secuencia de bloques puede copiarse de un personaje a otro, arrastrándolo desde la zona de programación de un personaje hasta la miniatura del otro personaje.
Los signos ‘+’ permiten añadir un personaje o una página nueva. Asimismo, puede borrarse un personaje o una página manteniéndola pulsada. En cada momento, la página o el personaje seleccionados se muestran resaltados con un marco naranja.
4.3. Bloques de movimiento, de apariencia y de sonido
ScratchJr incluye bloques de movimiento, como Code.org, pero amplía sus posibilidades: además de desplazarse, también se puede saltar y girar. También existen bloques de apariencia y de sonido; la primera categoría permite cambiar el aspecto de los personajes, mientras que la segunda permite emitir sonidos.
Todos tienen la misma forma: como una pieza de un puzle, con una muesca a cada lado para permitir su ensamblaje con otros bloques.
Bloques de movimiento
Mover a la derecha: Mueve el personaje a la derecha cierto número de casillas
Subir: Mueve el personaje hacia arriba cierto número de casillas
Girar a la derecha: Gira el personaje a la derecha cierto número de grados, produciendo 1 un giro de 30º. Lo mismo ocurre con el de girar a la izquierda pero gira el personaje a la izquierda.
Mover a la izquierda: Mueve el personaje a la izquierda cierto número de casillas Bajar: Mueve el personaje hacia abajo cierto número de casillas
Saltar: Hace saltar el personaje cierto número de casillas y luego lo baja a la situación original.
Ir al inicio: Reinicia la posición del personaje a su posición inicial. (Para dar una nueva posición inicial, arrastra el personaje a dicha posición.)
Obsérvese que los bloques de giro o salto no cambian la posición del personaje. El tiempo que un personaje tarda en realizar un movimiento es proporcional al número de pasos a dar, no al número de bloques ejecutados.
Si un personaje se sale de la pantalla, vuelve a aparecer por el lado contrario, es decir, se mueve como si el escenario fuera circular.
Las categorías de apariencia y sonido permiten mostrar efectos multimedia visuales o sonoros
Bloques de apariencia
Decir: Muestra un mensaje dado en un bocadillo emitido por el personaje. El texto aparece brevemente, durante poco más de un segundo.
Disminuir: Reduce el tamaño del personaje
Ocultar: Desvanece al personaje hasta hacerlo invisible
Crecer: Aumenta el tamaño del personajeRestablecer tamaño: Devuelve el personaje a su tamaño original
Mostrar: Hace visible gradualmente al personaje
Pop:Reproduce el sonido “pop”
Reproducir sonido grabado: Reproduce un sonido grabado por el usuario
4.4. Estado de un programa
Recordemos que el estado de un programa es el conjunto de valores para controlar la ejecución del programa. ScratchJr permite muchas más posibilidades que Code.org, por lo que el estado de sus programas es más complejo, viene dado por dos tipos de información:
‒ 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 del guión en ejecución. Los bloques de un guión se ejecutan en secuencia, por lo que en cada momento hay un bloque activo. Además, en el caso de bucles “Repetir”, debe saberse qué iteración está realizando en cada momento.
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.
Una secuencia de estados de la ejecución paso a paso de un programa se llama una “traza” o rastro
5. NOTAS FINALES
5.1. Resumen de conceptos básicos de programación
Algunos son específicos de Code.org o de ScratchJr, mientras que otros son conceptos generales:
‒ Lenguajes de programación: lenguajes basados en bloques, Code.org, ScratchJr.
‒ Recursos para el desarrollo de programas: compilador, entorno de programación, zona de programación, editor.
‒ Organización estática de un programa: programa, puzle, proyecto, guión.
‒ Elementos básicos: instrucción, bloque, bloques de movimiento, categorías de bloques, secuencia, instrucción compuesta, instrucción iterativa o bucle.
‒ Dinámica de un programa: estado de la ejecución, estado inicial, estado final, estado del programa, bloque activo, control de la iteración, rastro de un programa.
‒ Actividades de programación: programar, editar, ejecutar, depurar.
‒ Propiedades de los programas: programa correcto.
1. El lenguaje de programación ScratchJr (II)
La ejecución de un programa en ScratchJr puede organizarse mediante secuencias de bloques y bucles “Repetir”. Las categorías de eventos, de control y de finalización contienen otros bloques que permiten organizar de forma distinta la ejecución de los programas.
1.1. Bucles infinitos
Encontramos 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 se ejecutan una y otra vez, indefinidamente.
El propósito de ambos tipos de bucle es distinto. Si queremos que un comportamiento se realice un número finito de veces, usaremos el bloque “Repetir”. Sin embargo, si queremos que no acabe nunca, debemos usar el bloque “Repetir indefinidamente”.
Figura 1. Movimientos de vaivén un número de veces: (a) infinito, y (b) finito
1.2. Forma de los bloques
‒ 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.
‒ 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. Sin embargo, no hay que olvidar que cada guión es una secuencia de bloques, es decir, los bloques de cada guión se ejecutan en secuencia.
La ejecución de un guión también puede producirse si el usuario toca a un personaje. En este caso, el personaje debe tener algún guión que comience por el bloque “Comenzar al pulsar”.
Los dos bloques “Al presionar bandera verde” y “Comenzar al pulsar” tienen algo en común: se activan ante un evento, iniciando la ejecución del guión que está a su derecha. De momento, hemos visto dos eventos: la pulsación del icono de bandera verde o de un personaje. Los bloques que detectan eventos tienen una forma redondeada en su lado izquierdo para indicar que sólo pueden usarse en el inicio de un guión, se llaman bloques disparadores.
La categoría de bloques disparadores contiene cinco bloques.
Al presionar bandera verde: Comienza el guión cuando se pulsa la bandera verde
Comenzar al tocar: Comienza el guión cuando el personaje es tocado por otro personaje
Enviar mensaje: Envía un mensaje del color seleccionado
Comenzar al pulsar: Comienza el guión cuando se pulsa el personaje
Comenzar con mensaje: cuando se envíe un mensaje del color seleccionado
1.4. Sincronización y mensajes
Con frecuencia, queremos coordinar varios guiones que se ejecutan en paralelo. En ScratchJr hay dos formas de sincronización entre personajes, mediante eventos específicos.
Una primera forma de sincronización es cuando dos personajes chocan, se tocan. Este evento puede ser detectado por un bloque disparador “Comenzar al tocar” en cualquiera de los personajes.
La principal forma de sincronizar 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. Cuando otro personaje recibe el mensaje mediante el bloque disparador “Comenzar con mensaje”, empieza a realizar otras acciones, actuando de forma sincronizada.
Cada mensaje se distingue mediante un color. El color de un mensaje se selecciona en el bloque “Enviar mensaje” y en “Comenzar con mensaje”.
El paso de mensajes tiene algunas peculiaridades:
‒ El emisor se queda temporalmente en pausa hasta que el guión receptor termina su ejecución completamente. Esto implica que:
o 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”.
o 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í.
Cada página tiene su propio conjunto de personajes y su fondo. Un personaje puede aparecer en varias páginas como independientes, con guiones propios. El programa puede provocar un cambio de la página actual a otra mediante el bloque “Ir a la página”. Este bloque produce un cambio de contexto e inicia la ejecución de los personajes y de los guiones de la nueva página (terminando la ejecución de los personajes de la página anterior).
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, porque indica que no hay ningún olvido en la programación de dicho guión.
El conjunto completo de bloques de la categoría de finalización es:
Finalizar: Indica el final del guión
Ir a la página: Salta a la página seleccionada del proyecto
Repetir indefinidamente: Ejecuta este guión continuamente
1.6 Otros bloques de control
ScratchJr incluye algunos bloques que permiten modificar ligeramente el tiempo de ejecución de un bloque particular.
El bloque “Esperar” permite que la ejecución de un guión se pare durante cierto tiempo.
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.
Se ha visto que los eventos permiten activar la ejecución de guiones adicionales. 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 bloque repetir, Repite cierto número de veces las instrucciones que están dentro del bloque
1.7 Ejecución de un programa
Las reglas que controlan la ejecución de un programa ScratchJr. Dos primeras reglas son similares a las que existen en Code.org:
‒ 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.
‒ “Fijar velocidad”. Su ejecución puede provocar que algunos bloques del guión donde se encuentra se ejecuten más o menos rápidamente.
‒ “Esperar”. Provoca que la ejecución del guión 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 tiene su propio guión e incluso puede tener varios . Todos estos guiones se ejecutan en paralelo, lo cual significa lo siguiente:
o Los bloques de cada guión se ejecutan uno detrás de otro.
o El ordenador sólo puede ejecutar una instrucción cada vez. Por tanto, va alternando entre guiones.
‒ Bloque de finalización “Finalizar” o simplemente que se ejecute el último bloque de un guión.
‒ Bloque de control “Parar”. Termina la ejecución de todos los guiones del personaje, salvo el que lo contiene.
‒ Bloque de finalización “Ir a la página”. Se para la ejecución de los guiones 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" activa guiones con "Comenzar con mensaje" del mismo color y detiene el guión emisor hasta que los receptores finalicen. También pueden activarse guiones con "Comenzar al tocar" o "Comenzar al pulsar".
1.8. Estado de un programa
El estado del programa depende de la página activa y de:
‒ 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”.
METÁFORAS SOBRE 10 CONCEPTOS
1. Bucle: Un bucle es como las agujas del reloj, que giran pasando una y otra vez por todos los números. Cada vez que la aguja llega al 12, vuelve a empezar a girar y así sucesivamente. En programación, un bucle repite unas instrucciones determinadas una y otra vez.
2. Lenguaje de programación: Un lenguaje de programación es como las partituras musicales. Los músicos tienen unas notas específicas y todos conocen cómo suena cada una de ellas. Saben cómo interpretar cada nota respetando los tiempos gracias a la partitura. En programación, utilizamos un lenguaje específico para escribir nuestras propias "partituras" con el objetivo de que el ordenador siga nuestras instrucciones.
3. Programa: "Programar es como enseñarle a un robot a hacer un pastel". Imagina que para hacer un pastel tienes la ayuda de un robot en tu cocina, el robot no sabe hacer nada por si solo, es por ello que necesita que le des instrucciones paso a paso. Por ejemplo, ve a la despensa y coge la harina , o rompe los huevos en un cuenco. Si le das las instrucciones correctas, el robot hará un pastel riquísimo, sin embargo si te olvidas de un paso o te equivocas, el pastel puede salir mal. Así funciona la programación, tu escribes instrucciones para que el ordenador( como el robot) haga lo que quieres.¡ Es como ser chef de un mundo mágico de códigos!
4. Micromundo: "Un micromundo en Code.org es como una caja de juguetes mágica". Imagina que tienes una caja llena de juguetes, dentro hay un muñeco que puedes mover(tu eres quien le dice qué hacer), caminos que tu mismo puedes construir, luces que encender o apagar...Le das instrucciones como gira a la derecha o salta sobre el obstáculo. Cada vez que juegas puedes inventarte nuevas aventuras dentro de la caja. Así funciona también un micromundo en Code.org, es un pequeño mundo digital donde tu eres el creador de todo lo que sucede allí.
5. Instrucción: Una instrucción es como una orden que le das a tu perro. Por ejemplo, cuando le dices ''saluda'', le estás dando una instrucción. Por tanto, en programación, le damos instrucciones al ordenador para que haga cosas específicas que le hayamos dicho que haga.
6. Bloque: Vamos a imaginarnos que tenemos un montón de bloques de juguete, pero estos bloques no son unos bloques normales, son muy especiales, porque con ellos podemos decirle a nuestros juguetes que tienen que hacer.
Cada bloque es como una orden mágica : ¡Muevete a la derecha!, ¡salta! o '¡Di hola!'. Y cada uno tiene un color diferente para dejarle claro a nuestro juguete lo que queremos que haga.
Cuando unimos estos bloques, conseguiremos que nuestros juguetes hagan exactamente lo que queremos.
7. Evento: Vamos a imaginar que tenemos una caja mágica, que solo hace algo determinado cuando ocurre una cosa específica. Por ejemplo, si damos tres palmadas, la caja se abre; si damos, un pisotón, la caja hace sonar una canción... Cada vez que hacemos algo, la caja contesta de una manera determinada. Así es como funcionan los eventos en programación: no ocurre nada, hasta que tiene lugar una acción determinada. Cuando tiene lugar esta acción concreta, el programa (en nuestro ejemplo, la caja mágica) responde.
8. Depurar: depurar un programa es como cuidar una planta que es dañada por gusanos. Imagina que tienes una planta en el jardín, pero un día te das cuenta que está seca, y sus hojas tienen pequeños agujeros. Entonces decides revisar la planta y encuentras unos pequeños gusanos que se están comiendo las hojas y hacen que la planta se este debilitando. Para curarla, hay que revisar poco a poco cada una de las hojas, identificar los gusanos y quitarlos de la planta. Así, sanará y podrá seguir creciendo.
Pasa lo mismo en la programación, pues para depurar o arreglar un programa hay que revisarlo con atención, identificar el error, en este caso serían los gusanos y corregirlo para que todo funcione bien.
9. Secuencia: imagina que estás siguiendo las instrucciones de un mapa para llegar a un destino y te indica que primero tienes que girar a la izquierda, seguir todo recto hasta el final de la calle, luego girar a la derecha y llegarás finalmente al lugar. Pero si decides seguir los pasos en un orden diferente, como por ejemplo girar primero a la derecha y luego a la izquierda, no conseguirás llegar al destino y te perderás.
Ocurre lo mismo en programación, donde la secuencia significa realizar cada paso en un orden, como seguir las instrucciones del mapa, para conseguir un resultado correcto y sin errores.
10. Variable: Imagina que tienes una caja mágica en la que puedes guardar las cosas que quieras: un juguete, una carta, una chuche... Cada vez que pones algo en la caja, puedes sacarlo cuando lo necesites.
En programación, una variable es como esa caja mágica. Es un lugar donde puedes guardar información, como un número, una palabra o una lista de cosas. Y cuando lo necesites, puedes sacar lo que guardaste para usarlo en el programa, ¡igual que si sacaras un juguete de tu caja cuando quieras jugar con él!
Comentarios
Publicar un comentario