Ejercicios con Scratch (VII)

0
519

Bienvenidas/os a un nuevo artículo de ejercicios para aprender a programar con Scratch. Ya hemos aprendido los conceptos básicos como, por ejemplo, las condiciones iniciales y, en el segundo artículo, empezamos con ejercicios prácticos. En esta séptima entrega seguiremos la misma metodología que ya conocemos. Recordad que, para ver los retos y las soluciones, deberéis ir al usuario que he creado para estos artículos aquí.

En el último artículo aprendimos a usar las variables. En este artículo, profundizaremos en el uso de las mismas. Así que ¡vamos allá!

EJERCICIOS PARA APRENDER SCRATCH

Por si te has perdido alguno de nuestros artículos anteriores o quieres repasar, aquí los tienes para practicar antes de enfrentarnos a los retos de hoy:

RETOS DE HOY

RETO 17

En este primer reto trataremos de conseguir que BaMiau dibuje un cuadrado. Para ello necesitaremos incrementar nuestras herramientas, es decir, los bloques de instrucciones. El motivo es sencillo: por ahora no tenemos ninguno que pinte. Así que pulsaremos con el ratón el siguiente icono (imagen inferior) de la zona de instrucciones:

A continuación, pulsaremos sobre la opción Lápiz, tal y como se muestra en la imagen siguiente:

Ahora deberíamos tener la opción Lápiz entre los distintos bloques de instrucciones y ver la zona tal que así:

Bien, ahora ya tenemos las herramientas necesarias. Para poder dibujar usando a BaMiau, solamente deberemos incluir la instrucción Bajar Lápiz y, a continuación, desplazar a BaMiau mediante la instrucción Mover exactamente igual que en los ejercicios anteriores. Si queremos que deje de pintar usaremos la instrucción Subir Lápiz y, si queremos limpiar la pantalla, podremos usar la instrucción Borrar todo. También podremos variar el color, el grosor de la línea, alterar la saturación de color, el brillo, la transparencia y muchas otras características. No obstante, por ahora, eso lo dejaremos para que juguéis vosotras.

Ahora vamos con el código del reto. Igual que en los ejercicios anteriores (de los artículos anteriores) empezaremos fijando las condiciones iniciales de BaMiau:

  • Posición: x = -100 | y = 120
  • Orientación: 90º

Si queréis intentarlo por vuestra cuenta os recomiendo que lo hagáis antes de leer la solución propuesta.

Solución al Reto 17

A continuación de las condiciones iniciales, fijaremos un bloque del tipo bucle y le pediremos que la repita 4 veces (en vez de ser un bucle infinito igual que en ejercicios anteriores). Una por cada lado del cuadrado. Dentro del bucle deberemos indicarle que se mueva (da igual la cantidad de pasos que le indiquemos, sabiendo que a mayor número de pasos mayor será el cuadrado) y tras moverse que haga una rotación de 90º.

Consejo práctico: recomiendo que tras la instrucción de movimiento se añada una instrucción de espera de 1 segundo. Esta sencilla instrucción permitirá que se pueda visualizar la secuencia de instrucciones que realiza BaMiau.

Podréis hallar una propuesta de solución bajo el nombre de RETO_17_SOL.

RETO 18

Bien, realizado el primer reto vamos a complicar un poco más el tema. En este momento, el cuadrado será siempre igual a menos que modifiquemos el código. Es decir, haciendo un símil, si queremos reprogramar a BaMiau para que haga un cuadrado más grande tenemos que acceder al código fuente. Pero cuando queremos que un dispositivo de uso diario varíe su comportamiento lo que hacemos no es eso, lo que hacemos es acceder a su sistema de configuración.

Vamos a poner un ejemplo práctico que haga comprensible lo que acabo de escribir. Si queremos cambiar el canal de la televisión no abrimos el mando, nos conectamos la placa base y lo programamos de nuevo. Sencillamente pulsamos una de las teclas con un número, la placa capta usando sensores qué botón se ha pulsado, las procesa y el mando le da la orden al dispositivo reproductor. Es decir, no modificamos el código interior, les transmitimos la información. Ahora queremos conseguir lo mismo con el comportamiento de BaMiau.

En concreto queremos conseguir variar la longitud de los lados del cuadrado, pero hacerlo en función de una variable en lugar de tener el dato dentro del código. Lo que haremos, en primer lugar, será crear una variable llamada LATERAL. Tomaremos como notación, a partir de ahora, escribir el nombre de las variables en mayúsculas. Si tenéis dudas sobre cómo crearlas podéis repasar el artículo anterior pulsando aquí.

Como ya sabéis, porque me repito más que el ajo, lo segundo será empezar fijando las condiciones iniciales de BaMiau:

  • Posición: x = -100 | y = 120
  • Orientación: 90º
  • LATERAL = 0

Ahora será necesario sustituir el valor de mover X pasos por un mover LATERAL pasos.

Pero, claro, ahora necesitaremos darle un valor a dicha variable. Por ahora, en esto reto, lo dejaremos con que se asigne este valor en las condiciones iniciales. Acabaremos la última fase del ejercicio de hoy en el próximo reto. En cuanto tengáis una solución podéis examinar la que os ofrezco a continuación, que podréis hallar bajo el nombre RETO_18_SOL.

RETO 19

Y ahora vamos a por el último paso, conseguir darle la información a BaMiau des de fuera del código. Para ello usaremos las instrucciones pregunta y respuesta.

Esta instrucción tiene dos componentes. La instrucción pregunta hará que BaMiau, usando un globo de diálogo típico del cómic, mostrará la pregunta que decidamos. Por ejemplo:

¿Qué longitud debe tener cada lado?

En la parte inferior de la pantalla de ejecución (el recuadro en el que BaMiau actúa) aparecerá un rectángulo en el que mediante el teclado podremos escribir la respuesta. Al pulsar la tecla Intro la respuesta se dará por válida. Dicha respuesta se almacenará en la variable RESPUESTA, que no habremos creado nosotros. La variable RESPUESTA es una variable interna del código que aparecerá siempre que usemos la instrucción pregunta. La respuesta quedará a nuestra disposición para poder usarla en otras instrucciones.

Es importante recalcar que la ejecución del programa quedará suspendida hasta que,una vez introducida la respuesta, pulsemos la tecla Intro. También es interesante comentar que en el caso de no haber respuesta alguna, es decir pulsar la tecla Intro sin haber respondido, el valor de la variable RESPUESTA será un 0 (independientemente del valor que hubiésemos asignado en las condiciones iniciales).

Bien, ahora os toca jugar un rato. Comentaremos la solución a continuación.

Solución al Reto 19

Si examinamos la respuesta ofrecida, que podréis hallar una propuesta de solución bajo el nombre RETO_19_SOL, veremos que los pasos han sido los siguientes:

  • Botón de arranque (en este caso, al pulsar la bandera verde)
  • Establecer las condiciones iniciales
  • Preguntar la longitud deseada
  • Bajar el lápiz
  • Realizar el bucle
    • Mover RESPUESTA pasos
    • Girar 90º
  • Subir el lápiz

Esta sucesión de instrucciones harán que BaMiau realice lo que pedíamos en la descripción del reto. Mi pregunta ahora es: ¿se puede alterar dicho orden?

La respuesta es que sí, porque el orden de algunos factores no altera el producto. Sin embargo en la programación no aplica la famosa propiedad conmutativa que aprendemos en matemáticas. Podemos alterar el orden de todas las instrucciones entre el botón de arranque hasta llegar al bucle en su mayoría. Por ejemplo obtendríamos los mismos resultados haciendo esto:

  • Botón de arranque (en este caso, al pulsar la bandera verde)
  • Bajar el lápiz
  • Establecer las condiciones iniciales
  • Preguntar la longitud deseada
  • Realizar el bucle
    • Mover RESPUESTA pasos
    • Girar 90º
  • Subir el lápiz

No obstante, si captamos la RESPUESTA de la pregunta y luego alteramos dicho valor asignando un nuevo valor dejaría de funcionar. Por ejemplo, si hacemos esto.

  • Botón de arranque (en este caso, al pulsar la bandera verde)
  • Bajar el lápiz
  • Preguntar la longitud deseada
  • Establecer las condiciones iniciales
  • Realizar el bucle
    • Mover RESPUESTA pasos
    • Girar 90º
  • Subir el lápiz

Para que siga funcionando igual deberíamos seguir este esquema:

  • Botón de arranque (en este caso, al pulsar la bandera verde)
  • Bajar el lápiz
  • Establecer condiciones iniciales a RESPUESTA
  • Preguntar la longitud deseada
  • Establecer el resto de las condiciones iniciales
  • Realizar el bucle
    • Mover RESPUESTA pasos
    • Girar 90º
  • Subir el lápiz

Os animo a jugar con ese orden y ver los distintos resultados. Esto es un ejemplo práctico del motivo por el cual os animo a fijar siempre las condiciones iniciales al principio del código.

CONCLUSIÓN

Hoy hemos aprendido a usar las variables para modificar el comportamiento de un programa sin alterar el propio código. Igual que la frase de Neil Armstrong en la llegada a la Luna esto puedo parecer un pequeño paso… pero os aseguro que no lo es. Cualquier programa remotamente complejo requerirá el uso de variables, recordemos que servirán para gestionar y almacenar datos.

Y con esto y un bizcocho (yo siempre los recomiendo con chocolate y más si es de Batman) habremos terminado los nuevos ejercicios. Espero que os hayan gustado y 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!

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

En cumplimiento de la legislación española vigente en materia de protección de datos de carácter personal y del reglamento europeo RGPD 679/2016 le informamos de:
Responsable: Julia María Iriarte Gahete + info
Finalidad: Gestión del envío de información solicitada, gestión de suscripciones al blog y moderación de comentarios. + info
Legitimación:: Consentimiento expreso del interesado. + info
Destinatarios: No se cederán datos a terceros para la gestión de estos datos.
Derechos: Tiene derecho a Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la información adicional. + info
Información adicional:: Puede consultar la información adicional y detallada sobre Protección de Datos Personales en mi página web bebeamordor.com + info