Después de presentar distintas plataformas para aprender a programar, hoy iniciamos una serie de artículos para tomar consciencia de algunos elementos importantes para el diseño de software. En esta ocasión, realizaremos ejercicios con Scratch y veremos algunos conceptos iniciales.
Estos pequeños retos pretenden que nos familiaricemos con la plataforma. Igualmente, como ya he dicho, veremos ciertos conceptos básicos que muchas veces no se explican porque se dan por obvios. No obstante, a veces, lo obvio presenta ciertas sutilezas de las que es importante ser consciente de su existencia.
Primero vamos a empezar con un poco de teoría, una explicación de los conceptos que vamos a trabajar hoy y, a continuación, presentaré unos ejercicios con Scratch con los que practicar los mismos. Así que ¡allá vamos!
¿Qué encontrarás en este artículo?
CONCEPTOS BÁSICOS
INICIO DE UN PROGRAMA
Puede parecer una tontería, o demasiado obvio, pero la realidad es que todo código empieza por alguna parte. Todos tienen una línea de código que es la primera o, quizá, sería más correcto decir que todos los códigos tienen uno (o más) puntos de entrada o activadores. Estos elementos activadores son aquellos que provocan que un robot o un determinado programa se pongan en marcha. Y lo más importante, estos activadores pueden tener muchas y variadas formas: una tecla del teclado, un click de ratón, una hora, una orden de voz, que otro programa ejecute una instrucción o el típico botón rojo de la guarida del supervillano.
En el caso de Scratch este tipo de instrucciones se denominan Eventos.
Los tenemos de distintos tipos:
- Dependen de un periférico: son aquellos eventos que requieren que el usuario tenga algún tipo de interacción con el dispositivo de programación (ordenador, tablet, etc…). Por ejemplo: pulsar una tecla determinada del teclado o una interacción con el ratón.
- Dependen de un evento previo: son aquellos eventos que empiezan a actuar a partir de un evento previo que puede producirse sin interacción directa del usuario, sino que dependen de que ocurra una determinada situación dentro del propio programa y que se genere por el código. Puede parecer un tanto complicado de entender a primera vista, por ello lo veremos posteriormente con un ejemplo práctico.
CONDICIONES INICIALES
Por norma general estamos acostumbrados a que cuando encendemos un ordenador o un electrodoméstico este responde siempre de la misma manera. Es más, en caso de no hacerlo, generalmente arqueamos la ceja o nos ponemos en lo peor suponiendo que se ha roto o, cuanto menos, tiene un mal funcionamiento. Esto no siempre es así, un aparato puede tener distintos funcionamientos de arranque previstos, pero lo que es innegable es que todos están diseñados para ubicarse siempre en el mismo estado.
Imaginemos, por poner un ejemplo sencillo, una nevera. Al conectarla, esta siempre verificará si:
- El motor está apagado o encendido. (Sí, ya sé que sin la ayuda de un fantasma no puede estar activada si no está conectada. Pero ella lo verifica igualmente.)
- La temperatura de la cabina está por encima o por debajo del valor al que queremos que esté.
- El pulsador de la puerta nos indica si esta está abierta o cerrada.
Una vez verificadas estas condiciones tomará unas decisiones:
- Si el motor está apagado y la temperatura en la cabina es superior a la deseada, entonces encenderá el motor. En caso contrario, lo mantendrá apagado.
- Si la puerta está abierta, encenderá la luz. Si no está abierta, la mantendrá apagada.
Pero siempre verificará estas dos cosas al empezar a funcionar. Y, además, lo hará en el mismo orden. Y eso mismo hacen todos los programas (por lo menos los que están bien hechos) y robots del mundo. El primer paso al encender siempre es el de fijar las condiciones iniciales de todos los elementos que control, generalmente con un valor que tienen almacenado en su memoria o con un valor que capturan con algún sensor.
Por consiguiente, todo programa que hagamos, deberá en primer lugar establecer estas condiciones iniciales con el fin de asegurar el correcto funcionamiento. Y eso incluirá, a veces, listas muy largas de condiciones que verificar. Pero, al mismo tiempo, significa que cada vez que queramos añadir una función o condicionante nuevo a nuestro programa tendremos que acordarnos de modificar este apartado de condiciones iniciales.
RETOS Y EJERCICIOS CON SCRATCH
Una vez tengáis vuestro usuario creado en Scratch, podéis buscar en este enlace y os saldrá mi página de perfil para BaM!, donde podréis acceder a los retos y ejercicios con Scratch que os iré planteando. Debería saliros una pantalla como esta:
Al hacer click con el ratón sobre la imagen con el nombre del reto debería salir una página como la que sigue:
En el recuadro de la derecha hay una pequeña descripción de lo que se plantea. Si hacéis click en el botón de Ver dentro, podréis acceder al código principal.
Empezaremos por el primer reto, se llama: Reto_1-Inicio_programa
Este pequeño reto pretende que se investigue un poco la aplicación y las instrucciones. Pero primero expliquemos los detalles principales del funcionamiento. En primer lugar os presento al gato (ponedle un nombre, el mío se llama BaMiau y así lo llamaré a partir de ahora):
Esta es la zona de instrucciones disponibles:
Si arrastráis cualquiera de las instrucciones del lateral hasta el panel principal las instrucciones estarán disponibles:
No obstante, si las colocáis sin conectar con nada, sencillamente no se ejecutarán nunca porque nadie le dará la orden pertinente. Para que las instrucciones se ejecuten es importante que se ponga de manera secuencial a otras instrucciones:
Eso implica que cuando se ejecute el programa (entraremos en cómo se ejecutan en breve) se irán ejecutando las instrucciones de una en una y de manera ordenada según se hayan dispuesto.
Y con esto y un bizcocho, ya estamos listos para empezar a trabajar.
Como sugerencia, antes de ponernos a trabajar, cuando queráis editar el código sugiero no borrar las instrucciones. No obstante, en el caso de querer volver a cargar el código bastará con volver a reabrir el programa y se verá como estaba al principio.
RETO 1
En este primer reto (llamado Reto_1-Inicio_programa) el programa simplemente realiza lo siguiente: cuando hacemos click en la bandera verde BaMiau avanzará 10 pasos. Podéis mirar el código. Sencillo, ¿verdad?
NOTA: es importante mencionar que el cuadrado donde habita BaMiau, en realidad, está delimitado por coordenadas (X,Y) y que el centro del recuadro es la posición (0,0).
Bien, pues ahora os propongo que hagáis tres cosas:
- Conseguid que, cada vez que se pulse la bandera verde, BaMiau vuelva a la posición inicial y luego se mueva los 10 pasos. Es decir, fijarle unas condiciones iniciales. Podréis encontrar esta solución en el programa que lleva por nombre Reto1-SOL1-Inicio_programa.
- Una vez resuelto este pequeño reto sumaremos una nueva dificultad. Cuando se pulse la bandera verde, debe avanzar 10 pasos. Pero cuando se pulse la tecla espacio BaMiau debe volver a la posición inicial. Podréis encontrar esta solución en el programa que lleva por nombre Reto1-SOL2-Inicio_programa.
- Como último ejercicio, conseguid que BaMiau se pueda mover 20 pasos. Hay varias maneras de solucionar este reto. Explicaremos la solución en próximos retos.
NOTA: la instrucción básica indica «mover» un número determinado de pasos. Pero no da la sensación de movimiento. Si queréis ver el proceso del movimiento la instrucción a usar es «deslizar». Esta instrucción nos implica indicar la posición en la que debe acabar el movimiento mediante las coordenadas y el tiempo que se requiere para hacer dicho movimiento (y ello marcará la velocidad a la que se realizará dicho desplazamiento).
RETO 2
En este segundo ejercicio de scratch (llamado Reto_2-Saludamos) el programa realiza lo siguiente: cuando hacemos click en la bandera verde BaMiau avanzará 10 pasos, girará 15º y luego avanzará 10 pasos. Al mirar el código podemos ver esas instrucciones detalladas y de manera consecutiva.
Bien pues los ejercicios, ahora, son los siguientes:
- Conseguid que al pulsar la bandera verde BaMiau vuelva a la posición inicial.
- Una vez tengamos las condiciones iniciales establecidas, al acabar el proceso del código, BaMiau debe saludaros diciendo un simple Hola. Este es un indicador de funcionamiento.
Podréis hallar la solución a este reto en el fichero Reto2-SOL-Saludamos.
Espero que estos retos os hayan dado no solamente un ejercicio con el que aprender los primeros pasos de programación, sino también un contexto sobre la importancia de estos elementos en un código.
Recordad que podéis consultarme cualquier duda, ya sea de estos ejercicios con scratch o cualquier otra cosa, mandando un correo electrónico a marc@bebeamordor.com. ¡Nos vemos en el siguiente artículo!
Tengo que hacer este ejercicio y no soy capaz de sacarlo. EXPLICACIÓN. El objetivo de este ejercicio es crear un juego en el que utilicemos
bucles, sonidos, cambio de disfraz, y mensajes
En este juego el objeto fantasma perseguirá al objeto caballero, este se
desplazará por toda la pantalla, para esto se utilizarán las flechas del teclado.
Crearemos dos variables para utilizarla en los códigos de los p
ersonajes. Las
variables que necesitamos son: Objeto 1 y Dirección.
Al presionar la bandera verde la variable dirección se fija a 90. El Objeto 1
envía un mensaje a todos de inicio. Se ejecuta un bucle que repite su contenido hasta
que presionemos la tecla espacio. El contenido del bucle es si toca un borde rebota y
cambia de disfraz, sino seguir moviéndose y cambiando de disfraz. La otra parte del
bucle hace que utilizando el teclado el objeto cambie de dirección.
Además, se colocará un esperar 10 segundos para tener una velocidad diferente
al fantasma. El código del fantasma tiene la condición que al tocar al Objeto 1, repite el
bucle de apuntar al Objeto 1, mover 10 pasos y cambiar de disfraz. La velocidad de este
objeto es más lenta que el objeto 1: 0.2; cuando el fantasma toque al Objeto 1 dice
“AUU”, y envía un mensaje: “GOLPE”, y detiene el programa
¿Me puedes ayudar?
Hola Gema,
si me mandas un email a marc@bebeamordor.com tratamos de hablarlo con detalle.
Hola marc, das cursos para niños? Mi hijita tiene ocho y me pide hacer cursos para programar juegos etc..yo no se al respecto…me encanta tu didactica.
Hola mi hijo tiene 9 años . Me ha pedido hacer el curso para programar juegos …y no sé cómo lo debo hacer
Mil gracias