0% encontró este documento útil (0 votos)
144 vistas33 páginas

Introducción a Scratch para Principiantes

Scratch es un entorno de programación desarrollado por el MIT para hacer que la programación sea accesible. Los proyectos de Scratch contienen instrucciones que aportan comportamiento a los objetos. Los ejemplos incluyen juegos interactivos y animaciones. Los usuarios deben registrarse para crear y guardar proyectos. Un proyecto contiene objetos, escenarios, fondos e instrucciones. Los primeros ejercicios en Scratch incluyen hacer que los personajes hablen y se muevan. Los algoritmos son secuencias de pasos para resolver

Cargado por

Mari121
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
144 vistas33 páginas

Introducción a Scratch para Principiantes

Scratch es un entorno de programación desarrollado por el MIT para hacer que la programación sea accesible. Los proyectos de Scratch contienen instrucciones que aportan comportamiento a los objetos. Los ejemplos incluyen juegos interactivos y animaciones. Los usuarios deben registrarse para crear y guardar proyectos. Un proyecto contiene objetos, escenarios, fondos e instrucciones. Los primeros ejercicios en Scratch incluyen hacer que los personajes hablen y se muevan. Los algoritmos son secuencias de pasos para resolver

Cargado por

Mari121
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Scratch

Grau Marianela Clara


October 3, 2022

1 ¿Qué es Scratch?
Scratch es un entorno de programación desarrollado por un grupo de investigadores del In-
stituto de Tecnologı́a de Massachusetts (MIT) que aprovecha los avances en el diseño de
interfaces para hacer que la programación sea atractiva y accesible para todo aquel que se
enfrente por primera vez a programar.

Un proyecto dentro de Scratch es uno o varios programas que contienen instrucciones y


aportan comportamiento a los objetos que queramos tener.

2 Ejemplos de proyectos Scratch


Para hacerte una idea del tipo de medios interactivos que pueden programarse con Scratch
podemos visitar [Link]

La página muestra un conjunto de imágenes, cada una de ellas es un proyecto. Para ver
su contenido, pincha sobre una de las imágenes y después pulsa sobre la bandera verde para
que se ejecute. Para finalizar su ejecución, pulsa sobre el botón rojo.

3 Registro de nuevo usuario


El registro de usuario sólo hay que hacerlo una vez. Esto nos permitirá crear una cuenta en
la plataforma Scratch que siempre usaremos a partir de ese momento.

Para registrarnos como nuevos usuario en la comunidad Scratch pulsaremos sobre el enlace
“Únete a Scratch” en la página: [Link]

1
Pasos para la registración:

1. Elegiremos un nombre de usuario y una contraseña.

2. Escribiremos nuestros datos personales, que se utilizan para generar estadı́sticas de


uso. La dirección de correo se utiliza por si olvidamos la contraseña.

Una vez registrados, podemos observar que hemos ingresado en la plataforma con nuestro
nombre de usuario que se mostrará en la zona superior izquierda de la pantalla.

Si nos salimos de la sesión, podemos ingresar de nuevo a través de:

4 Creación de un proyecto
Para crear un nuevo proyecto pulsaremos sobre el botón ”Crear” de la barra azul de menú
y se abrirá el entorno de creación de proyectos en Scratch en donde podremos dar inicio a
nuestro proyecto y ponerle un nombre.

Las partes principales del entorno de creación de un proyecto son:

• Los objetos: son los elementos visuales que aparecerán en nuestro proyecto y sobre
los que podremos actuar.

2
• El escenario: es la zona en la que los objetos trabajarán: moviéndose, girando, etc.

– El centro del escenario es la coordenada (0,0).

• El fondo: es la imagen o imágenes de fondo del escenario donde irán trabajando


nuestros objetos.

• Sección de código: son todas las posibles instrucciones que podremos usar en nuestro
proyecto. Las instrucciones también se denominan bloques.

• Las instrucciones de mi proyecto: son las instrucciones que habremos elegido


para que se ejecuten dentro de nuestro proyecto. Las instrucciones de mi proyecto se
consiguen arrastrando instrucciones a la zona en blanco que se encuentra al lado de los
bloques de código.

Para poder ver nuestros proyectos tendremos que ir a donde se encuentra nuestro nombre de
usuario arriba a la derecha, hacer click y tocar en ”Mis cosas”. Luego, nos aparecerán todos
nuestros proyectos. Si queremos editar alguno tenemos que hacer click en ”Ver dentro”.

5 Primeros ejercicios, conociendo Scratch


1) Al tocar la bandera verde, el personaje debe decir ”Hola Mundo!”.

2) Un personaje avanzará 20 pasos en 45 grados, maullará y esperará un segundo para


bajar en 45 grados. Este proceso lo repetirá dos veces.

3) Un personaje cuando se toque la tecla espacio, apunte hacia el puntero del mouse y
camine 20 pasos.

4) Se encuentran dos personajes: un fantasma y un gato. El fantasma dirá ”Buuuu” y


el gato dirá ”No te tengo miedo!” durante 2 segundos.

6 Algoritmos
Un algoritmo es un conjunto ordenado de pasos a seguir (instrucciones concretas) que llevan
a resolver un determinado problema. Ha de cumplir con las siguientes condiciones:

• Ser correcto (Resuelve el problema).

• Ser finito (Conduce a la solución en un tiempo dado).

• Ser claro (comprensible por otras personas).

• Ser eficiente (ahorro de tiempo y recursos).

3
El algoritmo surge de la necesidad de resolver un problema dado. Para ello, siempre será
posible crear múltiples soluciones. El algoritmo que seleccionemos será aquel que obtenga
los resultados esperados en el menor tiempo posible y con el menor coste. Para ello debemos
reflexionar sobre:
1. ¿Qué información o resultados se quieren obtener?
2. ¿A través de que procesos se podrán obtener los resultados?
3. ¿Qué condiciones exige el problema para su solución?

7 Información y movimiento de objetos


En esta sección comenzaremos analizando el sistema de coordenadas y cómo establecer la
dirección hacia la que apunta un objeto. Posteriormente se introducen las instrucciones
de movimiento: desplazamiento y giro. Después aprenderemos que varios objetos pueden
participar en un mismo proyecto, cada uno con sus propios scripts o programas.

7.1 Coordenadas y monitor de coordenadas


El sistema de coordenadas dentro de Scratch se define partiendo de la coordenada (x,y)=(0,0)
en el centro de la zona de dibujo. El área de la zona de trabajo en Scratch queda determinada
por:
• Esquina superior izquierda: (x,y)=(-240,180).
• Esquina inferior izquierda: (x,y)=(-240,-180).
• Esquina superior derecha: (x,y)=(240,180).
• Esquina inferior derecha: (x,y)=(240,-180).

4
En la paleta de instrucciones de movimiento se puede activar un monitor de la posición x e
y del objeto que está seleccionado:

Si se activa el monitor, en el escenario se muestra el valor de las coordenadas x e y del objeto


que está seleccionado en ese momento.

Si se mueve de posición el objeto que tiene activado el monitor de la posición x e y , los


valores de las posiciones x e y irán variando su valor, mostrando las nuevas posiciones del
objeto.

7.2 Dirección y monitor de dirección


Para saber en qué dirección se moverá un objeto hay que tener en cuenta su dirección. Cada
objeto está apuntando hacia una dirección. La dirección es un valor que se mide en grados
y que puede variar entre (-180,180), siendo el valor dirección:

• 0º: hacia arriba.

• 90º: hacia la derecha.

• 180º: hacia abajo.

• -90º: hacia la izquierda.

5
Dada una dirección D (en grados), la dirección opuesta es D - 180 ó también D + 180. Ası́
por ejemplo, la opuesta de 45º es 45º - 180º= -135º y la opuesta de 0º se puede escribir como
180º o -180º.

En la paleta de instrucciones de movimiento se puede activar un monitor de la dirección del


objeto:

Si se activa este monitor, en el escenario se muestra el valor de la dirección del objeto que
está seleccionado en ese momento.

7.3 Información de un objeto


En la información del objeto podremos:
• Modificar el nombre.
• Seleccionar el estilo de rotación.
• Mostrar/ocultar el objeto.
• ver las coordenadas en donde se encuentra el objeto.
• Modificar el tamaño del objeto.

6
7.4 Instrucciones de desplazamiento
Para mover un objeto un determinado número de pasos, utilizaremos la instrucción: Si el

número de pasos que insertamos en la casilla en blanco es positivo, el objeto se moverá en


la dirección que tiene configurada el objeto y si el número de pasos es negativo, el objeto se
moverá en sentido contrario.

Si lo que se desea es ver desplazarse el objeto con un movimiento continuo hasta una deter-
minada posición usaremos el bloque:

En este caso el objeto se desplazará a la posición dada por las coordenadas (x,y), y tardará
en realizar el desplazamiento el número de segundos que insertemos en la casilla. El objeto
se muestra en cada una de las posiciones que va ocupando desde la posición en la que está
hasta la posición destino (x,y).

También podemos hacer que el objeto se mueva a una posición determinada sin que se
muestre el objeto en las posiciones intermedias utilizando esta instrucción:

7
7.5 Instrucciones de giro y cambio de dirección
Para cambiar la dirección de un objeto podemos usar la instrucción:

Esta instrucción gira el objeto 15º en el sentido de las agujas del reloj. Podemos modificar
este valor para que gire un número diferente de grados.

Se puede girar un objeto en sentido contrario a las agujas del reloj:

Esta instrucción gira el objeto 15º en el sentido contrario a las agujas del reloj.

Ambas instrucciones, son instrucciones de movimiento relativo ya que dependen de la di-


rección inicial a la que apunta el objeto. Si se desea cambiar la dirección a la que apunta un
objeto puede usarse:

7.6 Usando más de un objeto


Vamos a analizar cómo funciona una animación con dos objetos diferentes; el primero será
el gato por defecto y el segundo un perro. El gato y el perro se moverán concurrentemente
(al mismo tiempo). El gato cruzará la pantalla de izquierda a derecha y el perro lo hará de
abajo arriba. Ambos emplearán el mismo tiempo: 3 segundos.

Tocar en el enlace para acceder al proyecto dentro de Scratch. Una vez en la página de
Scratch pulsa sobre el botón ”Ver dentro” para ver los bloques que utiliza este proyecto.

8
8 Disfraces de los objetos
Un objeto puede tener varios disfraces. Para ver los disfraces de un objeto, selecciona la
pestaña que tiene un pincel llamada Disfraces.

En la figura se puede observar que el objeto Gato tiene 2 disfraces denominados: disfraz1,
disfraz2. Podemos elegir con qué disfraz queremos que aparezca el objeto.

La instrucción ”siguiente disfraz” permite cambiar el disfraz de un objeto, seleccionando


el siguiente disfraz que tenga definido:

9 Bucles
En esta sección estudiaremos cómo repetir un número finito o infinito de veces la ejecución
de un conjunto de bloques.

En algunos programas necesitaremos que un conjunto de instrucciones se ejecute un número


finito de veces, por ejemplo 5.

Una solución para que el programa ejecute esas instrucciones una cantidad de veces es copiar
ese conjunto de instrucciones el número de veces que queramos que se repitan.

9
Sin embargo, esta solución harı́a que nuestros programas fuesen muy largos y difı́ciles de
entender.

9.1 Repetición finita


El bloque ”repetir” permite elegir el número de veces que queremos que se repita su con-
tenido.

Por ejemplo si queremos que el objeto se mueva 20 veces, podemos escribir el siguiente
programa:

9.2 Repetición infinita


Si se desea que un programa esté repitiendo la ejecución de un conjunto de instrucciones sin
finalizar nunca su ejecución, necesitamos introducir un nuevo bloque que se encuentra en las
instrucciones de Control, el bloque ”por siempre”.

Pulsa sobre este proyecto y ejecútalo pinchando sobre la bandera verde. Observarás que
este programa no termina su ejecución, salvo que pulsemos sobre el botón que detiene su
ejecución.

10
El programa contiene unas instrucciones para inicializar la posición y dirección del gato y
después el bloque por siempre. Este bloque se ejecuta infinitamente: las instrucciones que se
encuentran dentro de este bloque se ejecutan repetidas veces, sin detener nunca su ejecución.

Observa cómo el bloque por siempre no permite que otros bloques se puedan encajar debajo
de él. Esto es ası́ porque en ningún caso se podrı́an ejecutar dichos bloques ya que el bloque
por siempre nunca termina su ejecución.

Aclaración: El bloque ”rebotar si toca un borde” comprueba si el objeto está tocando


uno de los bordes del escenario, en cuyo caso rebotará y por lo tanto, cambiará su dirección
de movimiento. Si el objeto se está moviendo en dirección 90º, al tocar un borde comenzará
a moverse en dirección -90º.

Observa que el cambiar de dirección 90º a -90º provocarı́a que el objeto Gato se girase
y quedase boca abajo:

En las propiedades del objeto podemos modificar el estilo de rotación para que sólo pueda
rotarse de derecha a izquierda:

11
9.3 Ejecución repetida con condición
Se puede ejecutar un conjunto de instrucciones repetidas veces hasta que se cumpla una
determinada condición. Para ello utilizaremos el bloque ”repetir hasta que”.

Una condición es una afirmación que puede ser ”verdadera” o ”falsa”.

Las instrucciones que se encuentran dentro de ”repetir hasta que” se ejecutan repetidas
veces hasta que una determinada condición sea verdadera. Es decir, mientras la condición
sea falsa se seguirán ejecutando las instrucciones que se han puesto dentro del bloque repetir
hasta que.

En el momento de ejecutar la primera vez el bloque repetir hasta que, si una determi-
nada condición es falsa, entonces se ejecutan las instrucciones que se encuentran dentro. A
continuación se vuelve a comprobar la condición, y si ésta es falsa, vuelven a ejecutarse por
segunda vez y ası́ sucesivamente. Si alguna de las veces en las que se comprueba la condición
ésta es verdadera, el bloque repetir hasta que terminará finalmente su ejecución.

Pulsa sobre el siguiente proyecto para ver cómo se mueve el objeto Gato hasta que al-
canza el borde del escenario:

En este programa el gato se moverá 10 pasos hasta que la condición sea verdadera. Inicial-
mente el gato se encuentra en el extremo izquierdo de la pantalla, sin tocar ningún borde
del escenario.

La primera vez que se ejecuta el bloque repetir hasta que la condición ”¿tocando borde?” es
falsa, por tanto se ejecutan las instrucciones que se encuentran dentro, es decir, el gato se
mueve 10 pasos.

A continuación vuelve a comprobarse la condición del bloque repetir hasta que. Esta se-
gunda vez el gato aún no ha llegado al borde del escenario, y por tanto la condición sigue
siendo falsa, volviéndose a ejecutar las instrucciones. Esta repetición del bloque repetir hasta
que se realizará mientras la condición sea falsa, es decir, mientras el gato no haya tocado el
borde. Cuando el gato llega al borde, la condición se hace verdadera y el bloque de repetición
termina su ejecución.

12
9.3.1 Condiciones
Las condiciones se expresan mediante bloques que se encuentran dentro del tipo Sensores.
Estos bloques tienen una forma especial de romboide que encaja en la zona de condición del
bloque repetir hasta que, que tiene también forma de romboide.

Recuerda que una condición es una afirmación que puede ser verdadera o falsa en un in-
stante determinado.

A continuación se muestran algunas condiciones que puedes utilizar para definir condiciones:

10 Ejecución concurrente
En esta sección veremos cómo se realiza la ejecución de varios programas asociados a difer-
entes objetos.

10.1 Múltiples objetos


Cada objeto tiene asociado un área de programación diferente. Es decir, si está seleccionado
un determinado objeto y pulsamos sobre la pestaña ”Código” observaremos los programas
asociados a dicho objeto. Si ahora seleccionamos otro objeto diferente y pulsamos sobre la
pestaña ”Código”, se mostrarán los programas asociados al nuevo objeto seleccionado.

Veamos un ejemplo en el siguiente proyecto.

En ese proyecto hay un objeto Gato y un objeto Oso, cada uno de ellos con un programa
diferente que se ejecuta al pulsar la bandera verde.

Si seleccionamos el objeto Gato, observaremos el programa asociado a este objeto. Lo mismo


si seleccionamos el objeto Oso.

13
En este proyecto tenemos un único programa para el objeto Gato y otro para el objeto
Oso. Ambos programas inician su ejecución a la vez. Decimos que se ejecutan con-
currentemente. Cuando pulsamos la bandera verde el gato y el oso comienzan a ejecutar
sus respectivos programas.

10.2 Múltiples programas para un mismo objeto


Un mismo objeto puede tener definidos varios programas que se ejecutan cuando se pulsa la
bandera verde o cuando se produce otro tipo de situación o evento.

Haz click en el siguiente enlace y ejecuta el proyecto pulsando sobre la bandera verde.

En este proyecto el objeto Gato tiene 2 programas que se ejecutan a la vez cuando se pulsa
la bandera verde. Uno de los programas realiza el movimiento y el otro el sonido:

Estos dos programas inician su ejecución al pulsar la bandera verde y se ejecutan concur-
rentemente.

11 Comunicación entre objetos y variables


Cada objeto tiene sus propios programas. Todos los objetos ejecutan su código a la vez.
Pero en ocasiones queremos que los objetos interaccionen, para lo cuál necesitamos aprender
mecanismos que nos permitan especificar los patrones de comunicación entre los objetos y
que permitan sincronizar sus acciones.

14
A veces necesitamos almacenar información que los objetos necesitarán utilizar más tarde.

Los objetivos principales de esta sección son:

1. aprender a sincronizar las acciones de los programas de diferentes objetos de forma que
podamos programar comportamientos coordinados de los objetos.

2. aprender a utilizar las variables como mecanismo de almacenamiento de información


que puede ser recuperada más tarde.

11.1 Comunicación entre objetos


Los objetos y fondos de un proyecto pueden comunicarse entre sı́ y coordinarse mediante el
envı́o y recepción de mensajes: un objeto/fondo envı́a un mensaje que puede recibir cualquier
otro objeto y fondo.

Uno o más objetos/fondos pueden reaccionar a la recepción de un mensaje, ejecutando


un programa.

Por ejemplo, si deseamos que dos objetos mantengan un diálogo, podrı́amos utilizar las in-
strucciones ”decir por segundos” y ”esperar segundos” para coordinar el diálogo
entre ambos.

15
Para ver el proyecto haz click aquı́.

La coordinación entre ambos objetos se realiza controlando el tiempo que tiene que es-
perar cada objeto para mostrar el siguiente diálogo.

Observa que mientras el objeto Chico está mostrando un diálogo, el objeto Chica debe
estar esperando.

Para que el control del diálogo sea más fácil y no haya que estar calculando el número
de segundos que cada uno tiene que esperar, un objeto puede avisar a otro de que ha ter-
minado de mostrar su diálogo a través del envı́o del evento mensaje. El otro objeto estará
esperando recibir este evento y cuando lo reciba sabrá que el otro objeto ha terminado de
mostrar su cuadro de diálogo y ahora le tocará a este objeto mostrar su diálogo.

Haz click sobre este proyecto que también desarrolla el mismo diálogo entre los dos per-
sonajes pero utilizando el evento de envı́o y recepción de mensajes.

En este nuevo proyecto cada vez que un objeto termina de mostrar su diálogo envı́a un
mensaje al otro objeto.

16
11.1.1 Envı́o y recepción de mensajes
El envı́o y recepción de mensajes son dos instrucciones de control del tipo Eventos.

La instrucción ”enviar message1” provoca que se envı́e el mensaje denominado “menssage1”


a todos los objetos. El nombre del mensaje hay que definirlo en la instrucción, al crear un
nuevo mensaje.

Cuando tenemos un programa que envı́a varios mensajes, es recomendable definir nombres
que ayuden a saber a qué mensaje se refiere en cada momento.

La instrucción ”al recibir message1” sólo puede aparecer como la primera instrucción
de un programa. Fı́jate en la forma de esta instrucción y en cómo no se pueden enganchar
bloques encima de éste:

17
Cuando se recibe el mensaje especificado, en este ejemplo ”message1”, se ejecutan las in-
strucciones que aparecen a continuación del mismo.

En algunos casos puede ser útil enviar un mensaje y esperar a que todos los objetos lo
hayan recibido. El siguiente bloque ”enviar y esperar” permite enviar un mensaje a
todos los objetos y fondos del proyecto y, además, espera hasta que todos los elementos han
recibido dicho mensaje:

El uso de mensajes nos permite coordinar las ejecuciones de los programas de diferentes
objetos, asegurándonos de que un programa comience a ejecutarse sólo después de que otro
programa haya ejecutado determinadas instrucciones.

Para ver un ejemplo de ”enviar y esperar” hacer click en este proyecto.

11.2 Variables
Las variables se utilizan para guardar valores.

Vamos a pensar en cómo harı́amos el siguiente programa en Scratch: queremos contar en


número de veces que un usuario pulsa con el ratón sobre un objeto del escenario. Cada vez
que el usuario pulse sobre el objeto, el objeto mostrará un diálogo que indique el número de
veces que ha sido pulsado.

Para ello, crea un nuevo proyecto que por defecto tendrá el objeto Gato y utiliza el bloque
”al clickear este objeto” de la siguiente forma:

Con este programa, cada vez que se pulse sobre el Gato, aparecerá el mensaje ”Me has
pulsado 1”. Sin embargo, si deseamos que muestre el número de veces que se ha pulsado
durante la ejecución del proyecto, deberı́amos mostrar la primera vez: ”Me has pulsado 1”,
la segunda vez: ”Me has pulsado 2”, la tercera vez: ”Me has pulsado 3”, y ası́ sucesivamente.

Para realizar este programa necesitamos recordar el número de veces que ha sido pulsado el
Gato, de tal forma que cada vez que pulsemos sobre dicho objeto sumemos uno a ese número
de veces y mostremos un mensaje en el que aparezca dicho número de veces.

Para recordar el número de veces que hemos pulsado un objeto vamos a crear una vari-
able. Una variable permite guardar un valor de algo, ya sea un número o una cadena de

18
texto. En nuestro caso vamos a crear una variable para guardar el número de veces que se
ha pulsado el objeto. Vamos a llamar a esa variable numVeces.

Desde el menú de Código, seleccionamos las instrucciones de tipo Variables: pulsamos sobre
el botón ”Crear una variable”. En la casilla ”Nombre de variable” le vamos a asignar un
nombre, en nuestro caso ”numVeces”, dejaremos marcada la casilla que esté marcada por
defecto (”Para todos los objetos”) y pulsaremos sobre el botón ”De acuerdo”.

Observarás cómo en las instrucciones de Variables han aparecido los siguientes bloques aso-
ciados a la variable nueva que acabamos de crear:

También verás cómo en el escenario aparece un monitor con el contenido de la variable


”numVeces”, su valor inicial es 0.

El monitor se puede ocultar o mostrar. Mientras estemos realizando el programa es útil


mostrar el monitor para ver el contenido de nuestra variable. Para mostrar/ocultar el mon-
itor de la variable ”numVeces” se pulsa sobre la siguiente instrucción que se muestra en
Variables:

19
Si está seleccionado, se mostrará el monitor de la variable ”numVeces”. De momento vamos
a dejarlo seleccionado para ver cómo va cambiando.

El resto de instrucciones que han aparecido en el menú Variables se utilizan de la sigu-


iente forma:

Vamos a usar el bloque ”cambiar numVeces por 1” para que al pulsar sobre el objeto,
la variable numVeces aumente en una unidad.

Cada vez que pulsamos sobre el objeto, podremos ver cómo va aumentando el valor en la
variable numVeces que se muestra en el monitor. Sin embargo, el diálogo que muestra el
objeto siempre dice que le hemos pulsado una vez. Nos gustarı́a que mostrara en el diálogo
el número de veces total que hemos pulsado el objeto. Para ello vamos a unir el texto
”Me has pulsado” con el número de veces que hemos pulsado, es decir, el contenido de la
variable numVeces. Utilizaremos el bloque ”unir” del tipo de instrucciones Operadores para
concatenar el texto ”Me has pulsado” y el contenido de la variable numVeces. Para acceder
al contenido de la variable numVeces, arrastraremos el bloque con el nombre de la variable
que aparece en las instrucciones de tipo Apariencia sobre el bloque ”unir”:

20
Y ahora arrastraremos este bloque que concatena esos dos valores sobre el bloque ”decir por
segundos”:

Al ejecutar nuevamente este programa, observarás ahora cómo el diálogo muestra cómo
cambia el número de veces que se pulsa sobre el objeto. Sin embargo, la cuenta del número
de veces no se ha iniciado en 1, si no que ha continuado con el valor que tenı́a de la ejecución
anterior. Para que comience en 1 cada vez que se ejecuta el programa es necesario añadir la
inicialización de esta variable, es decir, asignarle un valor inicial.

21
12 Listas
Los programas que hemos escrito hasta ahora usaban variables ordinarias para almacenar
datos individuales. Pero las variables no son útiles cuando queremos guardar un conjunto
de valores, como por ejemplo, los números de teléfono de nuestros amigos, los nombres de
los libros de una biblioteca, o los registros diarios de las temperaturas máxima y mı́nima en
una localidad durante un mes. En efecto, si quisiéramos que nuestro programa recordase los
números de teléfono de 20 de nuestros amigos, necesitarı́amos 20 variables. Evidentemente,
escribir un programa que gestione 20 variables serı́a muy engorroso. En esta sección apren-
deremos a manejar las listas, un tipo de datos propio de Scratch que nos permite agrupar
valores relacionados.

Una lista es como un contenedor donde podemos guardar múltiples valores y acceder a
ellos. Podemos imaginar que una lista es una especie de cómoda con muchos cajones, donde
cada cajón almacena un solo objeto. Al crear una lista le ponemos un nombre, igual que lo
harı́amos con una variable. Después, podemos acceder a los elementos individuales de la lista
usando su posición en la lista. Por ejemplo, la figura muestra una lista llamada “dayList”
que almacena los nombres de los siete dı́as de la semana:

Podemos acceder a los elementos contenidos en la lista usando sus ı́ndices de almacenamiento
(o posiciones). En Scratch, el primer elemento tiene un ı́ndice de 1, el segundo un ı́ndice
de 2, y ası́ sucesivamente. Por ejemplo, como el martes (tuesday) es el tercer elemento de
la lista, su ı́ndice es 3. Por consiguiente, podemos acceder al tercer elemento de la lista
“dayList” usando un comando de la forma “elemento (3) de (dayList)”.

12.1 Crear listas


El proceso de crear una lista es casi idéntico al de creación de variables. Selecciona la cate-
gorı́a “Variables” y haz click en el botón “crear una lista” para acceder a la ventana de
diálogo de la figura. A continuación, escribe el nombre de la lista.

22
Al clicar en el botón “OK”, Scratch crea una nueva lista vacı́a, y muestra los bloques rela-
cionados con las listas, como ilustra la figura:

Al crear la lista, Scratch también muestra su monitor en el escenario, como muestra la figura.
La lista estará inicialmente vacı́a, por lo que su longitud es inicialmente 0. Puedes usar este
monitor para añadir elementos a la lista conforme escribes tu programa.

Si conocemos los datos que queremos guardar en la lista (como en el caso de nuestra lista
“dayList”), podemos añadirlos en este punto del proceso de creación. La figura muestra
cómo añadir dı́as a la lista “dayList” usando su monitor. Pincha en el signo “más” en la
esquina inferior izquierda siete veces para crear siete entradas, y a continuación, escribe un
dı́a de la semana dentro de cada entrada. Usa la tecla de tabulación (a la izquierda de la
tecla de la Q) para navegar a través de los elementos de la lista. Para 189 seleccionar un
elemento de la lista, basta con clicar sobre él. Al presionar el botón del signo más con un
elemento de la lista seleccionado, el nuevo elemento de la lista se añadirá a continuación del
elemento actual; si no hay ningún elemento seleccionado, el nuevo elemento se añade al final
de la lista. Cuando seleccionamos un elemento de la lista, junto a él aparece un botón con
una cruz. Si queremos eliminar ese elemento de la lista, debemos presionar sobre el botón

23
de la cruz del elemento a borrar

12.2 Comando de listas


Añadir y borrar

El comando “añade ( ) a ( )” agrega un nuevo elemento al final de una lista, mientras


que el comando “borrar ( ) de ( )” elimina el elemento en la posición especificada.

El programa de la figura muestra estos dos comandos en acción. El programa ejecuta un


comando “borrar” para eliminar el segundo elemento de la lista, que es “naranja”. A con-
tinuación, el programa pone “limón” al final de la lista mediante el bloque “añade”.

El comando “añade” es fácil de entender, ası́ que vamos a examinar el comando “borrar”
con un poco más de detalle. En el hueco para parámetros de este bloque podemos escribir
directamente el ı́ndice del elemento que queremos borrar, pero también podemos seleccionar
una de las opciones del menú desplegable que aparece al pinchar en la flecha dentro del hueco
para parámetros (ver figura). Este menú desplegable nos permite borrar el primer elemento
de la lista, el último elemento, o borrar todos los elementos de la lista.

24
Insertar y reemplazar

Imagina que queremos guardar alfabéticamente los nombres y números de teléfono de nue-
stros amigos en una lista, como los contactos de nuestro teléfono móvil. Conforme vamos
creando la lista, debemos insertar la información de contacto de cada amigo en la posición
adecuada. Pero con posterioridad, si un amigo cambia de número, necesitamos editar la lista
para cambiar esa información. Los comandos “insertar” y “reemplazar” son útiles para estas
tareas. La figura muestra un ejemplo de utilización de estos comandos:

El comando “reemplazar” sobrescribe el elemento actual en la posición indicada (3 en el


ejemplo) con la información especificada (el nuevo número de Ana). El comando “insertar”
ubica un nuevo elemento (en el ejemplo, el teléfono de Blas) en la posición indicada (4 en el
ejemplo). Notar que al insertar el contacto Blas en la posición 4, los elementos existentes se
mueven hacia abajo 1 posición para hacer sitio a la nueva entrada.

Si hacemos click en la flecha dentro del hueco para parámetros de los bloques “reemplazar”
e “insertar” podremos acceder a un menú desplegable con tres opciones: 1, último, y al azar
(ver figura). Si elegimos “al azar”, el comando elegirá un ı́ndice aleatoriamente

Acceder a los elementos de una lista

Ya hemos mencionado antes que podemos acceder a cualquier elemento de una lista us-
ando el ı́ndice de ese elemento. Por ejemplo, el programa de la figura muestra cómo usar el

25
bloque “elemento ( ) de ( )” para acceder a los elementos de la lista “dayList”. Este pro-
grama usa una variable llamada “pos” (de posición) para iterar a lo largo de los elementos
de la lista, mostrando los contenidos mediante el bloque “decir”.

El programa inicializa el valor de “pos” a 1 para acceder al primer elemento de “dayList”,


y a continuación, entra en un bucle. El bucle se repite 7 veces, el número de elementos en
nuestra lista. A cada pasada, el 191 bucle dice el elemento de la lista con un ı́ndice igual a
“pos”, e incrementa el valor de “pos” en 1 unidad para acceder al siguiente elemento.

El bloque “¿( ) contiene ( )?

Usando el bloque “¿( ) contiene ( )?” podemos comprobar si una lista contiene o no una
cierta cadena. Se trata de un bloque booleano que devuelve VERDADERO o FALSO de-
pendiendo de si la lista contiene o no la cadena especificada. El programa de la figura ilustra
una aplicación de este bloque. Como “dayList” contiene la cadena “friday”, se ejecutará el
comando “decir” dentro del bloque “si”.

Aclaración: El bloque “¿contiene?” no distingue entre mayúsculas y minúsculas. Por ejem-


plo, el bloque “¿(dayList) contiene (friDAY)?” también se evaluarı́a a VERDADERO.

12.3 Los lı́mites de una lista


Los bloques de listas “borrar”, “insertar”, “reemplazar”, y “elemento de” requieren un
parámetro de entrada que especifique el ı́ndice del elemento al que queremos acceder. Por
ejemplo, para borrar el séptimo elemento de la lista “dayList”, usamos el bloque “borrar (7)
de (dayList)”. ¿Pero qué crees que ocurrirá si usamos un ı́ndice inválido en uno de estos
bloques? Por ejemplo, ¿cómo crees que responderı́a Scratch si le pidiésemos borrar el octavo
elemento de la lista “dayList” (que solo contiene 7 elementos)?

26
Técnicamente, es un error intentar acceder a un elemento más allá de los lı́mites de una
lista. Sin embargo, y en lugar de mostrar un mensaje de error, Scratch intenta hacer algo
coherente con el bloque infractor. 192 (Por esta razón, la ausencia de mensajes de error
en un programa no significa que no haya un error). Scratch no se quejará de que estemos
intentando acceder a un ı́ndice inválido; en vez de ello, el programa simplemente no se com-
portará de la manera esperada. La tabla de la figura muestra lo que puede ocurrir cuando
intentamos acceder a “dayList” usando un ı́ndice fuera del rango del 1 al 7.

12.4 Listas dinámicas


Los ejemplos que hemos visto hasta ahora usaban listas que se habı́an creado manualmente
usando sus monitores. ¿Pero qué pasa si no conocemos cuál será el contenido de una lista al
escribir nuestro programa? Por ejemplo, podrı́amos necesitar crear una lista con los números
que vaya introduciendo un usuario, o llenar una lista con valores aleatorios cada vez que se
ejecuta un programa. Éste es el objetivo de la presente sección.

Las listas son muy útiles porque pueden crecer o menguar dinámicamente conforme se está
ejecutando un programa. A modo de ejemplo, digamos que estamos escribiendo una apli-
cación en la que el profesor introduce las notas de los alumnos para poder procesarlas. (El
profesor podrı́a necesitar la nota máxima, la mı́nima, el promedio, la mediana, y cosas por
el estilo). Sin embargo, el número de alumnos puede ser distinto en cada clase. El profesor
podrı́a necesitar 20 notas para la clase 1, 25 notas para la clase 2, etc. ¿Cómo sabe nue-
stro programa que el profesor ha terminado de introducir notas? En esta sección también
responderemos a esta pregunta.

12.4.1 Rellenar listas con los datos ingresados por un usuario


Hay dos formas con las que podemos rellenar una lista con los datos introducidos por un
usuario. En el primer método, el programa comienza preguntando cuántas entradas querrá
introducir el usuario, y a continuación, arranca un bucle para ir recopilando los datos que
va proporcionando el usuario. La figura muestra un programa que ilustra esta técnica:

27
La segunda forma de rellenar automáticamente una lista es hacer que el usuario introduzca
un valor especial (conocido como centinela) para indicar el final de la lista. Por supuesto,
el centinela debe elegirse de forma que no coincida con uno de los elementos posibles de
la lista. Por ejemplo, si nuestra lista va a almacenar nombres o números positivos, una
buena elección para el centinela serı́a el valor −1. Ahora bien, si el usuario puede introducir
números negativos, el valor −1 no serı́a un centinela adecuado. Para nuestra 193 lista de
notas, un centinela de −1 funcionarı́a perfectamente. El programa de la figura usa este
centinela para saber cuándo el usuario termina de introducir valores.

Notar que el programa especifica en la pregunta al usuario cuál es el centinela (−1 en este
caso). Si el usuario introduce el valor −1, el programa se para, porque sabe que el usuario
ha terminado de introducir notas (y ese valor no se incluye en la lista). En caso contrario,
el valor introducido se adjunta a la lista, y al usuario se le solicita otra entrada. La figura
muestra cómo quedarı́a “listaNotas” si el usuario introdujese tres notas (6, 3, y 9) seguidas
del centinela (−1).

12.5 Listas numéricas


Las listas de números son muy comunes en muchas aplicaciones. Por ejemplo, podemos tener
listas de notas en exámenes, de medidas de temperaturas, de precios de productos, y más. En
esta sección exploraremos algunas de las operaciones más comunes que podrı́amos necesitar
realizar sobre una lista numérica. En particular, escribiremos procedimientos para hallar el
valor máximo, el valor mı́nimo, y el valor promedio de los números almacenados en una lista.

Hallas el máximo y mı́nimo

Imagina que eres un profesor y que necesitas saber cuál es la nota máxima del último exa-
men. Para ello, podrı́amos escribir un programa para comparar todas esas notas y hallar el

28
valor máximo. El programa de la figura halla el valor máximo de una lista llamada “notas”.

El procedimiento “hallarMáximo” comienza ajustando el valor de la variable “notaMax”


igual al primer número de la lista. A continuación, inicia un bucle para comparar el resto de
números en la lista con el valor actual de “notaMax”. Cada vez que encuentra un número
mayor que “notaMax”, actualiza el valor de “notaMax” a ese número. Cuando el bucle
termina, el valor guardado en “notaMax” será el número más grande contenido en la lista.

Para hallar el valor mı́nimo de una lista podemos usar un algoritmo muy similar. Comen-
zamos asumiendo que el primer elemento de la lista es el elemento más pequeño, y a contin-
uación, usamos un bucle para comprobar el resto de elementos. Cada vez que encontremos
un valor más pequeño, actualizamos la variable que almacena el valor mı́nimo.

13 Interacción con el usuario


El bloque ”preguntar y esperar” del conjunto de instrucciones Sensores, permite que
los objetos puedan establecer un diálogo con la persona que está ejecutando el proyecto. Por
ejemplo, podemos usar este bloque en el siguiente programa:

Al ejecutar este programa, en el escenario aparecerá en la parte inferior del escenario un


cuadro de texto donde podremos introducir la respuesta:

29
El texto que introduzcamos quedará almacenado en una variable del sistema, llamada re-
spuesta, a la que se puede acceder a través de las instrucciones Sensores. Podemos utilizar el
contenido de esta variable para ofrecer una respuesta personalizada al usuario, por ejemplo:

Este programa solicita el nombre al usuario y construye un saludo personalizado con el


nombre del usuario.

14 Espera condicional
La espera condicional es una instrucción que detiene la ejecución de un programa hasta que
una determinada condición sea verdadera. Cuando dicha condición sea verdadera el pro-
grama continuará la ejecución con la siguiente instrucción. Este tipo de instrucción también
se utiliza para coordinar acciones entre objetos.

La espera condicional se programa con la instrucción ”esperar hasta que ” de las


instrucciones de tipo Control.

30
Por ejemplo podemos usar esta instrucción para esperar que un objeto esté tocando a otro y
en ese momento realizar otra acción. Pulsa sobre el siguiente proyecto para ver un ejemplo.
En este caso cuando el tiburón alcanza al pez, el pez se escapa. El programa del pez está es-
perando a que el tiburón le toque (objeto Shark), utilizando para ello la instrucción ”esperar
hasta que ”, cuando esta condición es verdadera, el pez se mueve a otra posición y escapa.

Éste es el programa del pez:

15 Condicionales
En este bloque vamos a aprender a utilizar otro tipo de estructuras de control que también
sirven para alterar el orden de la ejecución de otros bloques: las instrucciones condicionales.

Los objetivos principales de este bloque son:

1. aprender a utilizar las instrucciones condicionales.

2. aprender a utilizar los operadores lógicos y los de comparación como condiciones de


las instrucciones condicionales.

15.1 Introducción
La estructuras de control son instrucciones que permiten controlar el orden de ejecución de
las instrucciones. Anteriormente hemos visto instrucciones para repetir la ejecución de un
conjunto de instrucciones (”por siempre”, ”repetir hasta que ”, ”esperar hasta que ”, ”al
recibir ”). Tanto las instrucciones ”repetir hasta que ” como ”esperar hasta que ” utilizaban
una condición que tomábamos del bloque Sensores para poder decidir su ejecución:

• En ”repetir hasta que ” se ejecutaba repetidas veces un conjunto de instrucciones


hasta que la condición era verdadera. Una vez que la condición era verdadera se
interrumpı́a la ejecución repetida.

31
• En ”esperar hasta que ” el programa interrumpı́a su ejecución hasta que la condición
era verdadera. Una vez que la condición era verdadera se continuaba con la ejecución
de la siguiente instrucción.

En este tema veremos cómo modificar de forma general el comportamiento de nue-


stro programa en función de si una determinada condición es verdadera o falsa, las
instrucciones condicionales.

15.2 Instrucción condicional y condición


La instrucción condicional se encuentra dentro del conjunto de instrucciones de Control:

Como en el caso de la espera condicional y la ejecución repetida condicional, esta instrucción


necesita una condición para ejecutarse. Esta condición va situada justo después de la palabra
”si”. En la condición colocaremos un bloque de Sensores que tenga la forma adecuada para
que encaje en el hueco que hay justo después de la palabra ”si”.

A diferencia de los bloques que hemos visto hasta ahora, esta instrucción permite inser-
tar 2 secuencias de instrucciones en 2 sitios diferentes: justo debajo de la palabra ”si” y
justo debajo de la palabra ”si no”. Sólo se ejecutará una de las 2 secuencias de instrucciones
dependiendo de la condición:

Si la condición que hemos colocado es verdadera, entonces se ejecutarán las instrucciones que
están justo debajo de la palabra ”si” y si la condición es falsa, se ejecutarán las instrucciones
que están justo debajo de la palabra ”si no”.

En algunas ocasiones necesitaremos ejecutar un conjunto de instrucciones sólo si se cumple


una determinada condición y si no se cumple no ejecutaremos nada especial. Para este tipo
de casos usaremos un bloque condicional más sencillo que sólo tenga una secuencia de in-
strucciones en su interior, sin la rama ”si no”:

32
15.2.1 Condición
Cuando vimos los bloques ”esperar hasta que ” y ”repetir hasta que ”, estudiamos algunos
tipos de condiciones, en particular aquéllas que se muestran en las instrucciones Sensores.
Además de este tipo de condiciones también podemos utilizar otro tipo de bloques como
condición, por ejemplo, algunos bloques de Operadores:

33

También podría gustarte