|   | 
  
  
    
  
    |   | 
    
      
          | 
        Scratch: Introducción de datos. Condiciones  | 
       
      
        | Duración aproximada: 1-2 sesiones. | 
       
      | 
   
     
  
  
      | 
    Objetivos | 
   
  
    - Conocer los sensores de introducción de datos.
 - Conocer los operadores de cadenas de texto. 
 - Conocer los sensores de información más importantes.
 - Concepto y utilización de condiciones simples. 
 - Interactuar con el usuario por medio del teclado y el ratón. 
 
  | 
   
  
  
      | 
    Fuentes de información | 
   
  
     | 
   
  
  
      | 
     | 
   
  
  
  
    |   | 
     1. Sensores. Introducción de datos 
      Hasta el momento hemos diseñado 
programas unidireccionales en los que para producir resultados 
diferentes teníamos que cambiar los bloques e instrucciones y volver a 
ejecutar. Lógicamente, Scratch nos proporciona herramientas para 
interactuar con el usuario. Dentro del bloque Sensores, tenemos 2 instrucciones específicas:  
      preguntar “texto” y esperar   
      Muestra un diálogo en pantalla con el 
texto que hemos puesto y espera que introduzcamos algo por el teclado 
hasta que pulsamos la tecla Intro o hacemos clic en el icono de validar. 
         
      respuesta   
      Contiene los caracteres introducidos por el usuario. 
      2. Operadores de cadenas de texto 
      Una de las tareas más habituales en los 
programas informáticos es el uso de cadenas de texto (o palabras), tanto
 si se trata de aplicaciones de bases de datos, como para la simple 
salida de mensajes en pantalla. Scratch dispone de 3 operadores para 
manejar caracteres introducidos por teclado. 
       2.1. Concatenación de cadenas de texto 
      unir              
      Este operador une o junta 2 cadenas de texto (palabras) en una sola cadena.  
      2.2. Longitud de una cadena de texto
      longitud de   
      Devuelve el número de caracteres de longitud de una cadena de texto.  
      2.3. Subcadena de texto
      letra n de   
      Devuelve la letra que ocupa la posición "n" dentro de una palabra.   | 
   
  
  
      | 
    
           | 
   
  
    |   | 
    Crear y guardar nuevo proyecto  
      - Crea un nuevo programa.
 - Ve  al menú   (local). Pon como nombre "pryintdatos" y guárdalo en tu carpeta de "SCRATCH".
  
      Programa. Instrucciones  
      -  Realiza una animación en la 
que un personaje en el escenario que tú quieras te pregunte cómo te 
llamas y que luego te salude por tu nombre. 
 - Ayuda: 
  
        
      -  Modifica el programa para que el personaje te salude por tu nombre diciéndote: “Hola ____, cómo estás?”.
 -  Modifica el programa anterior para que después de preguntar el nombre y saludarte, te diga: “Tu nombre empieza por __”.
 -  Ayuda: 
        
        
      - Modifica el programa anterior para 
que el personaje, después de las acciones anteriores, te pregunte tu 
edad y cuando se la das, te diga:  “Sólo ___ años, qué joven!!”. 
  
      - Modifica la animación anterior para 
que el personaje, después de realizar las acciones anteriores, se ponga a
 andar de un lado a otro del escenario.  El código para moverse de un 
lado a otro sería: 
  
        
      - Crea un documento de texto. Guárdalo con nombre "cuestiones". 
 - A partir del ejercicio anterior responde a las siguientes cuestiones: 
          
- ¿Qué ocurre si eliminamos la orden “siguiente disfraz”? 
 - ¿Qué ocurre si eliminamos la orden “esperar 0.1 segundos”? 
 - ¿Qué ocurre si eliminamos la estructura de control “por siempre”? 
  
          
      Subir el proyecto  
      - Sube el fichero "cuestiones.odt" a la plataforma.
 - Sube el fichero "pryintdatos.sb2" a la plataforma.
         | 
   
  
  
      | 
     | 
   
  
    |   | 
    3. Ejercicio práctico
        A continuación vamos a realizar  un ejercicio práctico de repaso de todos los contenidos vistos anteriormente.   | 
   
  
  
      | 
     | 
   
  
    |   | 
    3.1. Fantasma que asusta 
      Crear y guardar proyecto  
      - Crea un nuevo programa.
 - Ve  al menú  (local). Pon como nombre "pryfantasma" y guárdalo en tu carpeta de "SCRATCH".
  
      Programa. Instrucciones  
      - Haz un programa en el que un fantasma
 te pregunte cuántas veces quieres que te asuste. Si le dices 10 te dirá
 “Buh!” 10 veces. El fantasma estará en un fondo que buscarás por 
internet y que será un lugar abandonado. Cuando asuste el fantasma, el 
disfraz será distinto. Por ejemplo: 
  
        
              
      Subir el proyecto  
      - Sube el fichero "pryfantasma.sb2" a la plataforma.
         | 
   
  
  
  
      | 
     | 
   
  
    |   | 
    4. Sensores. Información en tiempo real 
      Los elementos llamados sensores (de la familia Sensores),
 vigilan cosas como si estamos tocando el borde, si tenemos una tecla 
pulsada, la posición en el escenario, etc. Es decir, miden o determinan 
eventos para que sepamos cuál es la situación en tiempo real.  
      Scratch dispone de bastantes sensores de información, si bien los principales  son los siguientes: 
      - ¿ratón presionado? 
  Informa de si está presionado o no el ratón. - ¿tecla espacio presionada? 
  Informa de si la tecla espacio está presionada o no. - ¿tocando el color? 
  Indica si el objeto está tocando un determinado color. - ¿tocando a? 
  Indica si el objeto está tocando el puntero del ratón o un borde.  
      5. Condiciones
      Todo el código que hemos visto hasta 
ahora ejecuta sus instrucciones de arriba abajo, según se las va 
encontrando. La ejecución de instrucciones una a una, en el mismo orden 
en que aparecen en el programa, se denomina ejecución secuencial.
  Si un ordenador no pudiese ejecutar instrucciones más que en orden 
secuencial, no pasaría de ser más que una buena calculadora de bolsillo.
 Pero un ordenador puede también tomar decisiones en función de 
determinadas condiciones; es decir, según sea el valor de determinadas 
variables en el momento de la ejecución del programa, el computador 
decide si ha de seguir ejecutando una parte del programa u otra. Este 
tipo de acciones se denomina Control de flujo. 
      El segundo bloque más importante dentro 
de la familia Control, es el de las comparaciones. Este tipo de bloques 
permite cambiar el orden de ejecución de un programa dependiendo del 
resultado de una determinada condición. La cuestión está en que las 
condiciones se pueden controlar mediante los sensores (ver apartado 
anterior). 
      5.1. Condición simple o binaria 
      La selección condicional simple o 
binaria, admite dos opciones. Es la sentencia más común para tomar una 
decisión: si se cumple una condición, entonces se ejecuta algo, en caso 
contrario, se ejecuta otra cosa.  
        
      La sintaxis es: SI ... ENTONCES ... SI NO ...  
      Que quiere decir: SI condición ENTONCES 
instrucción1 SI NO instrucción2. Siendo opcional el SI NO, ya que puede 
que no haya acción en caso de que no se cumpla la condición. 
      Si no hay nada que ejecutar si no se cumple la condición, tendremos el bloque más simple: 
               | 
   
  
  
      | 
     | 
   
  
    |   | 
    Crear y guardar nuevo proyecto  
      - Crea un nuevo programa.
 - Ve  al menú  (local). Pon como nombre "prycondicion" y guárdalo en tu carpeta de "SCRATCH".
  
      Programa. Instrucciones  
      - Inserta un control de la familia Eventos,concretamente al presionar la tecla Espacio. 
 - A continuación inserta un bloque de la familia Control llamado si...entonces. 
 - Entre el si y el entonces, introduce el bloque ¿ratón presionado?, el cual hará que si está pulsado se ejecute lo que hay dentro del bloque. 
 - Para terminar, dentro del bloque condicional inserta un mensaje para que diga "Ratón presionado".
 - Ayuda: 
  
        
      - Ahora, al ejecutarlo, el gato no dirá
 nada, pero si antes de pulsar la tecla espacio presionas el botón 
izquierdo del ratón, el gato avisará de la pulsación:
  
        
      El problema, es que si lo volvemos a 
ejecutar sin pulsar el ratón, el gato sigue con el bocadillo de ratón 
presionado. ¿No sería más lógico que, en caso de que no esté pulsado 
también lo diga?  
      - Utiliza el bloque si..entonces..sino  de la familia Control. Cambia el bloque si..entonces por éste y añade debajo del sino un bloque en el que diga Ratón no pulsado:
  
        
      - El resultado, en caso de que no se haya pulsado será:
  
        
      Mostrar sensores en pantalla  
      También podemos, haciendo clic en 
algunos sensores (aquellos que tienen un cuadro para ser seleccionados),
 mostrarlos en el escenario para tener controlados sus valores.  
      - Por ejemplo, si en el anterior seleccionamos el de volumen del sonido:
  
        
      - Veremos como en la parte superior izquierda del escenario se muestra el valor:
  
        
      Añadir movimiento  
      Para concluir, vamos a modificar un poco
 el programa para que el gato ande solo hasta encontrarse con el borde, 
lo cual hará que se vaya en retroceso. 
      - Quita el bloque al presionar la tecla espacio y cámbialo por el bloque al presionar la bandera verde. 
 - Cambia el bloque ¿ratón presionado? por ¿tecla espacio presionada?
 - Cambia  el bloque si..entonces..sino por si..entonces. 
 - Añade un bloque repetir hasta que y, dentro de éste, un sensor ¿tocando ?, seleccionando la opción borde. 
 - A continuación, inserta un movimiento
 de 10 pasos y lo duplicas (estará repetido). Entre medio de ambos un 
movimiento de 10 pasos negativo. Por último, un movimiento de 10 pasos 
positivo.
 - Ayuda. El 
funcionamiento es el siguiente: si apretamos la tecla espacio, el gato 
se moverá hacia adelante hasta que toque el borde derecho. Cuando toque 
el borde derecho, retrocedemos 10 pasos y repetimos la operación 
anterior pero hacia el lado contrario. Cuando toquemos el borde 
izquierdo, avanzaremos 10 pasos y vuelta a empezar.
  
        
      - Ejecuta el programa. Para ello, pulsa
 la tecla espacio y, manteniéndola apretada, haz clic en la bandera 
verde. Ahora, el gato chocará con el borde y se irá hacia atrás.
 - ¿Qué ocurre si volvemos a ejecutar el programa y el gato está tocando un borde?
 El gato parece que no se mueve y, encima, se va cada vez más hacia 
detrás o hacia adelante. El problema es que ya estamos tocando un borde.
 ¿Solución? Hacemos que el gato empiece siempre en la 
posición x=0, y=0. Añade la instrucción correspondiente antes del bloque
 condicional y comprueba que ahora sí funciona correctamente. 
  
      Más modificaciones  
      Modifica el programa para que: 
      - Pinte una línea azul.
 - Diga "Hasta aquí" durante un segundo al llegar a cada borde.
 - Se repita indefinidamente hasta pulsar la tecla a.
 - Ayuda (inicio del programa):
  
        
      Subir el proyecto  
      - Sube el fichero "prycondicion.sb2" a la plataforma.
         | 
   
  
  
  
   
  
    
 
 | 
  |