Los bloques de programación
Introducción
Scratch es un lenguaje de programación denominado gráfico. A diferencia de los lenguajes basados en texto, los programas están formados por bloques que se ensamblan uno tras otro, uno dentro de otro. En este capítulo, conocerá los diferentes bloques que se pueden utilizar para crear programas. Situados en la pestaña Código, están clasificados por categorías. Hay más de cien bloques de programación disponibles, divididos en diez categorías con colores diferentes, lo que facilita su identificación.
Además de estas diez categorías, existen bloques vinculados a extensiones. Cada una de estas extensiones será objeto de un capítulo independiente con la presentación de proyectos concretos.
Los bloques Movimiento
Los videojuegos y las animaciones presentan diferentes objetos que se mueven e interactúan entre sí. Algunos son controlados por el jugador mediante teclas del teclado asociadas a bloques Movimiento, mientras que otros están preprogramados, de forma aleatoria o no.
Los bloques de la categoría Movimiento se utilizan para colocar y mover objetos de forma absoluta o relativa en la escena. Definen su orientación y posición en relación con otros objetos.
En esta sección, descubrirá las características específicas de los distintos bloques que componen la categoría Movimiento.
En el capítulo Técnicas para videojuegos, se describirán en detalle varios programas utilizados para mover objetos.
1. Movimientos relativos
Los movimientos basados en los denominados valores relativos se realizan en relación con la posición del objeto, sin referencia a las coordenadas de la escena, o en relación con otro objeto. Cuando mueve a un personaje en un videojuego, sus movimientos son relativos.
Se utilizan tres bloques para mover objetos en Scratch de forma relativa. Estos tres bloques tienen una zona de entrada para especificar el valor de los pasos. El valor por defecto es de 10 pasos. Los pasos corresponden a la unidad del escenario.

El objeto avanza el valor especificado. Para hacerlo retroceder, basta con especificar un valor negativo: mover -10 pasos.
Este bloque suele asociarse a una tecla del teclado tecla () presionada para crear una instrucción.

Este bloque cambia la posición x del objeto en el valor especificado. El objeto se mueve horizontalmente hacia la derecha si el valor especificado es positivo o hacia la izquierda si el valor es negativo.
Por ejemplo, para un objeto situado en x = 150 e y = 50, el bloque sumar a x 10 posiciona el objeto en x = 160 e y = 50. La coordenada y (ordenada) no se modifica.

Este bloque cambia la posición y del objeto en el valor especificado. El objeto se mueve verticalmente hacia arriba si el valor especificado es positivo, y hacia abajo si el valor es negativo.
Por ejemplo, para un objeto situado en x = 150 e y = 50, el bloque sumar a y 10 posiciona el objeto en x = 150 e y = 60. La coordenada x (abscisa) no se modifica.
Ejemplos...
Los bloques Eventos
Un programa se compone de una serie de instrucciones que se leen y ejecutan una tras otra, como los distintos pasos de una receta de cocina. Un procedimiento forma parte de este programa. Formado por instrucciones, el procedimiento se utiliza para desencadenar acciones específicas.
La utilización de varios objetos y fondos en un mismo proyecto requiere la implementación de procedimientos específicos para ellos, pero también la creación de procedimientos para coordinar sus acciones entre sí. Para ello se utilizan los bloques de la categoría Eventos (y Control).
1. Programación de eventos
Los bloques Eventos se utilizan para lanzar instrucciones específicas cuando se realiza una acción. Esta acción puede consistir en pulsar una tecla del teclado, hacer clic con el ratón en un objeto o enviar o recibir un mensaje.
Los bloques utilizados para programar eventos o acciones bien definidos suelen empezar por al hacer clic en [].

Presente en la parte superior de todos los programas, este bloque se utiliza para iniciar la lectura y ejecución de instrucciones cuando se pulsa el icono de la bandera verde, situado en la parte superior izquierda del escenario. Este icono corresponde a un botón de inicio.

El programa para un solo objeto puede incluir varias pilas de bloques, cada una encabezada por al hacer clic en una bandera verde. Esto permite ejecutar los programas en paralelo.

Ejecuta la instrucción enganchada debajo de este bloque...
Los bloques Control
Algunos bloques controlan la ejecución de los programas. Pueden utilizarse para pausar o detener la reproducción de algunos o todos los programas.

Este es un bloque de control utilizado para pausar la reproducción de instrucciones. Cuando el ordenador llega a este bloque, espera un número determinado de segundos antes de leer y ejecutar los bloques siguientes. Este bloque se utiliza siempre que un objeto tiene que esperar otra acción.
Ejemplos de uso
-
Al iniciar un juego de disparos: esperar unos segundos después de pulsar la bandera verde para que el jugador se coloque en posición.
-
En un diálogo: esperar la respuesta antes de continuar con el programa.
-
Crear una animación; por ejemplo, un personaje andante, alternando sus disfraces.

Este bloque, dotado de un menú desplegable, se utiliza para detener, según la selección realizada:
-
todos los programas (parada completa del proyecto): detener todos;
-
solo la pila de bloques en la que está colocado este bloque: detener este programa;
-
solo los programas del objeto al que concierne este bloque: detener otros programas en el objeto.
1. Crear bucles
En un programa, algunas instrucciones están destinadas a repetirse. Para aligerar el programa y evitar repetir código, se utilizan bucles de repetición. Los bloques de bucle tienen forma de paréntesis y pueden encapsular instrucciones que pueden repetirse indefinidamente o un número determinado...
Los bloques Sensores
Casi todos los bloques de la categoría Sensores se utilizan, por su forma, junto con bloques de otras categorías. Los bloques Sensores se usan para crear condiciones e interacciones entre los diferentes objetos de un programa.
1. Sensores y condiciones
Los bloques con valores en los extremos puntiagudos son bloques booleanos que se utilizan para crear condiciones. Las condiciones booleanas en informática corresponden a variables que pueden tener dos estados: un estado «verdadero» o un estado «falso». Por su forma, estos bloques se insertan en otros bloques.

Devuelve «verdadero» si el elemento especificado usando el menú desplegable es tocado. Puede ser el puntero del ratón, el borde del escenario u otro objeto utilizado en el proyecto (aquí, el objeto del gato).
Encontrará este tipo de condiciones en los juegos en los que tiene que evitar el contacto, como los juegos de disparos, los laberintos, etc.
Ejemplos de uso
-
Si un objeto es tocado por el objeto que se está reproduciendo, desaparece o cambia de apariencia (1).
-
Si un objeto es tocado por un proyectil, el jugador gana puntos, pero el objeto alcanzado pierde vidas (2).
-
Si se golpea el borde, el objeto retrocede (3).

Devuelve «verdadero» si el objeto entra en contacto con el color especificado. Para establecer el color:
Haga clic en la muestra de color (1): se abre una ventana con herramientas para definir el color.
Tres controles deslizantes permiten definir el color: Color (2), Saturación (3) y Brillo (4).
También puede elegir un color del escenario seleccionándolo con la pipeta (5).

Ejemplos de uso
-
En un laberinto: cuando el objeto toca las paredes del laberinto, vuelve a la entrada del laberinto, retrocede y pierde puntos o una vida.


-
Al saltar, se puede utilizar el color del suelo para detener el descenso del objeto (ver capítulo Técnicas para videojuegos, sección Técnicas para saltar).

Devuelve «verdadero» si el primer color es tocado por el segundo color.
Ejemplo de uso
La flor amarilla solo es tocada por el personaje en el momento en que el amarillo de la flor entra en contacto con el rosa de la mano.

si ¿color (amarillo) tocando (rosa)? entonces // si el color amarillo de la flor es tocado por el color rosa de la mano del personaje.
esconder // para...
Los bloques Apariencia
Los bloques de la categoría Apariencia se utilizan para cambiar la apariencia de los objetos y cambiar los fondos.
Cada objeto puede tener varios disfraces. Los bloques se pueden utilizar para animarlo (para simular el movimiento, por ejemplo) o simplemente para cambiar su aspecto. Además, no todos los objetos utilizados en un programa están permanentemente visibles en el escenario. Pueden aparecer o desaparecer en función de eventos o interacciones (acciones entre ellos), del mismo modo que pueden cambiar de aspecto.
Un mismo proyecto puede incluir varios fondos utilizados para simular el movimiento (desplazamiento) o para crear distintos niveles en un juego.
1. Objetos visibles e invisibles
En un proyecto puede utilizarse un gran número de objetos, pero no todos ellos se mostrarán necesariamente al mismo tiempo. Por ejemplo, en un juego, dependiendo del nivel, ciertos objetos estarán presentes (mostrar) o ausentes (esconder).
Por ejemplo, en un juego tipo Pac-Man, las canicas que se come Pac-Man desaparecen cuando las toca (ver capítulo Juego del laberinto).

Asignado a un objeto, este bloque lo hace visible en el escenario. También es visible, es decir, detectable, por otros objetos.

Cuando se ejecuta este bloque, el objeto, aunque presente en el programa, no es visible en el escenario. No puede ser detectado por los demás objetos.
En el caso de los objetos que aparecen y desaparecen a medida que avanza el programa, es importante especificar su estado cuando se lanza el programa. Esto se denomina inicialización.

Ejemplos de uso
Un objeto puede ser visible o invisible:
-
tras un contacto;
-
tras la recepción de un mensaje;
-
al cambiar el fondo;
-
cuando se alcanza un determinado número de puntos, vidas, etc.
2. Los disfraces de objetos
Muchos objetos de la biblioteca de Scratch disponen de varios disfraces. Es el caso del gato, que tiene dos disfraces. Para identificar objetos con esta característica:
En la ventana de objetos, seleccione Elige un objeto. Se abre la biblioteca.

Desplace el ratón sobre las distintas miniaturas que representan los objetos. Cuando un objeto tiene varios disfraces, está animado: los disfraces se muestran uno tras otro.


Este bloque se utiliza para definir el disfraz mostrado por el objeto seleccionando su nombre en el menú desplegable.
Los nombres de los disfraces...
Los bloques Sonido
Scratch permite importar, grabar y modificar sonidos (ver capítulo Los editores), que pueden asociarse a objetos o fondos. Los sonidos son útiles para crear un entorno sonoro en un juego o animación.
Los bloques que pueden utilizarse para gestionar los sonidos son idénticos para los objetos y los fondos.
Para más información sobre sonidos y el editor de audio incorporado de Scratch, ver Los editores, sección El editor de sonido.

Este bloque se utiliza para reproducir el sonido seleccionado en el menú desplegable. Este sonido puede ser el sonido por defecto asociado a ciertos objetos, un sonido que haya seleccionado de la biblioteca de sonidos de Scratch o uno que haya importado. El sonido se reproducirá hasta el final, en su totalidad. Es decir, mientras el sonido no haya terminado, el bloque siguiente no podrá ejecutarse.
Seleccionando grabar... puede grabar un sonido o su voz.
Para crear un sonido de fondo permanente, basta con incorporarlo a un bucle de repetición.

Este bloque es útil para asociar un sonido a una acción. Los bloques situados debajo de él se leen y se ejecutan incluso si la canción que se está reproduciendo no ha terminado.

Para detener todos los sonidos en uso durante la ejecución.

Este bloque tiene un menú desplegable para seleccionar el tipo de efecto (altura - balance izquierda/derecha) y un área...
Los bloques Operadores
Un programa informático puede requerir la realización de cálculos, ya sean operaciones matemáticas, cálculos geométricos o comparaciones de valores.
De forma redondeada, los bloques Operadores se insertan en las zonas de entrada de otros bloques. También pueden encajarse entre sí. Útiles para realizar operaciones matemáticas, también se utilizan en proyectos relacionados con videojuegos. En el capítulo Técnicas para los videojuegos, veremos cómo utilizarlos para crear desplazamientos horizontales y verticales.
1. Bloques matemáticos
Scratch es enseñado en secundaria por profesores de matemáticas, y está equipado con una serie de bloques que pueden utilizarse tanto para cálculos como para la geometría.

Estos cuatro bloques permiten realizar cálculos: suma, resta, multiplicación y división. Estos bloques se encajan entre sí; permiten realizar operaciones complejas.
El resultado de la operación puede expresarse mediante el objeto:

Este bloque se inserta en las zonas de entrada de los demás bloques. Se utiliza para seleccionar aleatoriamente un número dentro del intervalo de valores especificados.
Ejemplos de uso
-
Hacer aparecer de manera aleatoria enemigos u objetivos en el escenario.

-
Crear apariciones, desapariciones y efectos gráficos aleatorios.

-
Seleccionar aleatoriamente números en un juego de cálculo mental o elementos de una lista.
Considerado por muchos como un software para niños, Scratch puede utilizarse, sin embargo, para realizar cálculos más complejos...
Los bloques Variables
Un proyecto, ya sea una animación o un juego, requiere el uso de datos que se almacenan y modifican a medida que se ejecuta el programa. Estos datos pueden adoptar la forma de variables o listas.
Una variable consiste en asociar un nombre a un valor. Por ejemplo, una variable Score corresponderá a un valor (un número de puntos). Este valor no es fijo. Las variables son dinámicas, es decir, pueden modificarse con el tiempo a medida que se ejecuta el programa. En un videojuego, por ejemplo, la puntuación del jugador cambia.
1. Renombrar y eliminar una variable
Por defecto, la categoría Variables tiene cinco bloques vinculados a una variable cuyo nombre es mi variable.

Si lo desea, puede cambiarle el nombre o eliminarla.
Haga clic con el botón derecho del ratón en el bloque mi variable. Aparecerá una ventana con dos opciones.

Renombrar variable: para cambiar su nombre. Este cambio se reflejará automáticamente en el programa.
En el campo de entrada (1) de la ventana Renombrar variable, introduzca el nuevo nombre que desea asignar a la variable.
Confirme seleccionando Aceptar (2). Los cinco bloques se actualizan automáticamente con el nuevo nombre.

Eliminar la variable "mi variable": para borrar la variable y los bloques asociados a ella.
2. Crear una variable
Un mismo programa puede requerir el uso de un gran número de variables. Para...
Los bloques Listas
Las listas se utilizan para almacenar datos en una matriz, uno tras otro. Cada elemento se almacena en una celda numerada a partir de 1. A diferencia de las variables, estos datos pueden ser números, cadenas de letras u otros caracteres. Las listas están accesibles, es decir, se pueden modificar (añadir, eliminar, cambiar el orden) a medida que se ejecuta el programa. Las listas se utilizan a menudo con variables y se comparan con los bloques Operadores.
1. Crear y utilizar una lista
El procedimiento para crear una lista es el mismo que para crear una variable.
En la categoría Variables, seleccione Crear una lista.
Se abre la ventana Nueva lista. En el campo de entrada (1), introduzca el nombre de su lista.
Para todos los objetos: la lista estará disponible para todos los objetos, sin obligación de utilizarla. le aconsejo que elija siempre esta opción, ya que le ofrece una mayor flexibilidad más adelante, a la hora de diseñar su programa.
Sólo para este objeto: solo el objeto a partir del cual ha creado la lista se verá asociado a ella. No se puede utilizar en los programas para otros objetos.
Confirme pulsando Aceptar (2).

Ha aparecido una lista en el escenario y se han creado doce bloques en la categoría Variables que pueden utilizarse para gestionarla.

La lista puede rellenarse manualmente o a medida que se ejecuta el programa. Para crear una zona de entrada:
Pulse el botón + en la parte inferior izquierda de la lista.
En la zona de entrada creada, introduzca el primer elemento (por ejemplo, la llave) de la lista. Se le asignará el número 1.

Para eliminar manualmente un elemento de una lista:
Seleccione la fila que desea borrar.
Haga clic en la cruz de borrar que aparece.

2. Bloques para la gestión de listas
Los bloques utilizados para gestionar las listas disponen de un campo de entrada y un menú desplegable para seleccionar la lista en cuestión.

Debido a su forma, este bloque encaja en las zonas de entrada de otros bloques. Al marcar la casilla situada delante del bloque, la lista aparece en el escenario.
Al marcar esta casilla, la lista se muestra de forma permanente durante la ejecución del programa, mientras que los siguientes bloques se utilizan para mostrar esta información de forma puntual, cuando se desee.
Se utilizan dos bloques para añadir elementos a una lista:

Este bloque se utiliza para añadir un elemento a una lista. El nuevo elemento se coloca en la posición 1 si la lista está vacía; si ya hay elementos, se coloca después de ellos.

Ejemplos de uso
Un elemento puede incluirse en una lista:
-
cuando se pulsa un objeto (1) o cuando dos objetos entran en contacto (2);
-
al recibir un mensaje (3);
-
tras una bonificación: se puede ganar una vida extra, se puede obtener un objeto (4).


Este bloque se utiliza para añadir un elemento a una lista especificando la posición que ocupará. Si un elemento ya ocupa esta posición, se moverá un lugar. Por ejemplo, pasará de la posición 1 a la posición 2. El elemento no se borra.

Ejemplo
El nuevo objeto, llamado varita mágica, entra en la lista en la casilla número 2. El objeto que estaba allí, la brújula, se desplaza una casilla. Se coloca en la casilla 3. Todos los demás objetos de la lista se desplazan una posición y la lista se amplía una casilla.

Este bloque permite borrar un elemento de la lista, simplemente seleccionando su posición. Una vez borrado el elemento, se recalcula automáticamente la posición de los demás elementos de la lista....
Crear bloques
Scratch incorpora una funcionalidad que permite crear bloques de programa para evitar la repetición: un bloque = una pila de bloques. Esta funcionalidad es muy útil para los programas con mucho código repetitivo. De hecho, cuando se crea un proyecto, es importante ser riguroso e intentar simplificar los programas al máximo.
La categoría Mis bloques permite personalizar los bloques adjuntándoles programas propios.
Asociados a un objeto específico, estos bloques pueden utilizarse tantas veces como sea necesario. Para crear un nuevo bloque:
Seleccione la categoría Mis bloques.
Haga clic en Crear un bloque.

Se abre la ventana Crear un bloque. Usted debe:
-
dar un nombre a este bloque en el cuadro de entrada (1).
-
definir sus atributos, es decir, su forma y las entradas que tendrá.
Añadir una entrada número o texto (2): un bloque que permite integrar valores (en forma redondeada) estará asociado a él.

Añadir una entrada lógica (3): se le asociará un espacio que permite realizar comparaciones.

Añadir una etiqueta (4): se asociará un bloque que permite integrar cadenas de caracteres (en forma de cuadrado).

A partir de estos tres elementos, se puede crear una multitud de bloques diferentes, ya que se pueden añadir uno tras otro.
El icono de la papelera de reciclaje (5) se utiliza para eliminar elementos del bloque situado...
Conclusión
Este capítulo le ha presentado los numerosos bloques disponibles en la paleta de bloques de la pestaña Código para crear sus propios proyectos. Estos bloques están ordenados por categoría y color, y aprenderá rápidamente a utilizarlos para crear sus propios proyectos. Algunos de ellos son esenciales y tendrá que usarlos con regularidad. Vale la pena señalar que, cuando utiliza Scratch localmente, dispone de un espacio llamado mochila. Aquí es donde almacena y agrupa los bloques (o pilas de bloques) que utiliza más a menudo.
Existen otros bloques. Situados en la categoría Añadir extensión, serán objeto de capítulos separados.