Volver a la portadaFormación Tecnológica · sétimo año · Cambiar asignatura
Empezar gratis
Sétimo 7° · Formación Tecnológica
La creación de contenidos digitales · Creación y programación sencilla

Programación por bloques

Josué, en la computadora del laboratorio del colegio, quiere que su personaje salude, camine hasta una meta y avise cuando llegue. No sabe escribir código, pero sí encajar piezas como en un rompecabezas. ¿Alcanza con eso para decirle a la computadora qué hacer, en qué orden, cuándo repetir y cuándo decidir? La respuesta es sí, y al final de la página usted podrá armar ese programa.

Las tres estructuras básicas

Un programa es una lista de instrucciones que la computadora ejecuta. En la programación por bloques (como en Scratch) cada instrucción es una pieza que se encaja con las demás. No hay que escribir nada, pero la lógica es la misma que en cualquier lenguaje.

Esquema de las tres estructuras básicas de programación: secuencia de tres bloques apilados, bucle con un grupo de bloques que se repite y condicional con dos caminos, si y si no. secuencia repetir bucle si / si no condicional

Cualquier programa, por complicado que parezca, es una combinación de estas tres piezas.

Practica★☆☆Sin empezar
Explique con sus palabras qué hacen las tres estructuras básicas de un programa —secuencia, ciclo y condicional— y ponga un ejemplo de la vida diaria de cada una que no…

Explique con sus palabras qué hacen las tres estructuras básicas de un programa —secuencia, ciclo y condicional— y ponga un ejemplo de la vida diaria de cada una que no tenga que ver con computadoras.

Resolver
Practica★☆☆Sin empezar
Un programa tiene estos bloques sueltos: «decir ¡Adiós!», «al hacer clic en la bandera», «esperar un momento», «decir ¡Hola!». Ordénelos en la pila correcta y describa…

Un programa tiene estos bloques sueltos: «decir ¡Adiós!», «al hacer clic en la bandera», «esperar un momento», «decir ¡Hola!». Ordénelos en la pila correcta y describa qué ocurrirá exactamente al ejecutar el programa.

Resolver
Practica★☆☆Sin empezar
El programa de la figura, formado por bloques encajados, debería hacer que un personaje recorra el cuadrado punteado y avise al terminar, pero dentro del bucle falta un…

El programa de la figura, formado por bloques encajados, debería hacer que un personaje recorra el cuadrado punteado y avise al terminar, pero dentro del bucle falta un bloque.

al pulsar la bandera repetir 4 veces dar un paso ? decir ¡He llegado!

Indique qué bloque falta dentro del bucle para que el personaje complete el recorrido del cuadrado y explique qué hace cada parte del programa.

Resolver
Practica★☆☆Sin empezar
Un programa tiene esta pila: «al hacer clic en la bandera», «decir 3», «esperar un momento», «decir 2», «esperar un momento», «decir 1», «decir ¡Ya!». Describa con…

Un programa tiene esta pila: «al hacer clic en la bandera», «decir 3», «esperar un momento», «decir 2», «esperar un momento», «decir 1», «decir ¡Ya!». Describa con detalle qué verá y qué escuchará el usuario desde que hace clic en la bandera hasta el final, y explique qué utilidad tienen las esperas.

Resolver

Eventos, movimiento y el escenario

Un proyecto puede tener varias pilas, cada una con su propio evento, y funcionan de forma independiente: por ejemplo, una pila que mueve al personaje con las flechas y otra que lo hace saludar al hacer clic sobre él.

Para mover personajes hay que ubicarlos. El escenario es un plano de coordenadas: x es la posición horizontal, y la vertical, y el centro es $(0, 0)$.

Practica★☆☆Sin empezar
Los bloques de evento deciden cuándo empieza a funcionar una pila de bloques. Explique qué hace arrancar cada uno de estos tres eventos: «al presionar la bandera», «al…

Los bloques de evento deciden cuándo empieza a funcionar una pila de bloques. Explique qué hace arrancar cada uno de estos tres eventos: «al presionar la bandera», «al presionar la tecla espacio» y «al hacer clic en el personaje», y describa qué pasaría si un proyecto tiene dos pilas distintas con dos eventos distintos.

Resolver
Practica★☆☆Sin empezar
Estos bloques de apariencia están sueltos: «cambiar al disfraz de pirata», «decir ¡Hola, me llamo Marco! durante 2 segundos», «al hacer clic en la bandera», «esperar 1…

Estos bloques de apariencia están sueltos: «cambiar al disfraz de pirata», «decir ¡Hola, me llamo Marco! durante 2 segundos», «al hacer clic en la bandera», «esperar 1 segundo». Ordénelos para presentar a un personaje que primero saluda y luego se disfraza, y describa lo que verá el espectador.

Resolver
Practica★☆☆Sin empezar
El escenario de un programa por bloques funciona como un mapa de coordenadas: la «x» indica la posición horizontal y la «y» la vertical, y el centro es el punto…

El escenario de un programa por bloques funciona como un mapa de coordenadas: la «x» indica la posición horizontal y la «y» la vertical, y el centro es el punto $(0, 0)$. Explique dónde aparecerá el personaje con el bloque «ir a x: 0, y: 0» y hacia dónde se moverá si la «x» aumenta o si la «y» disminuye.

Resolver

Variables y bucles controlados

Además de «repetir 10 veces» hay dos bucles más:

Bucle Cuándo termina Conviene si…
repetir n veces después de n vueltas sabe cuántas veces
repetir hasta que (condición) cuando la condición se cumple no sabe cuántas, pero sí cuándo parar (llegar a la meta)
por siempre nunca (hasta detener el programa) vigilar algo todo el tiempo

Si en «repetir hasta que» la condición nunca llega a cumplirse, el bucle es infinito: el programa queda dando vueltas.

La animación muestra cómo una variable controla un bucle: siga el resaltado.

Animación de una variable «puntos» en un bucle: un resaltado recorre los bloques; en cada vuelta se comprueba la cabecera del bucle, «sumar 1 a puntos» llena un indicador y luego se da un paso. Con tres indicadores llenos la comprobación se cumple, el flujo sale del bucle y se resalta «decir ¡Meta!». poner puntos a 0 repetir hasta que puntos = 3 sumar 1 a puntos dar un paso decir ¡Meta!
Practica★★☆Sin empezar
Un programa quiere contar del uno al diez con estos bloques: «repetir 10 veces: decir el número; sumar 1 al número». Al ejecutarlo, la cuenta no empieza en uno y, cada…

Un programa quiere contar del uno al diez con estos bloques: «repetir 10 veces: decir el número; sumar 1 al número». Al ejecutarlo, la cuenta no empieza en uno y, cada vez que se vuelve a ejecutar, empieza en un número distinto. Explique qué bloque falta y dónde debería colocarse, y en qué posición de la pila hay que poner el valor inicial del número.

Resolver
Practica★★☆Sin empezar
Para animar un personaje se usa «repetir 4 veces: siguiente disfraz; esperar medio segundo». Explique qué logra ese bucle y calcule cuánto dura la animación completa si…

Para animar un personaje se usa «repetir 4 veces: siguiente disfraz; esperar medio segundo». Explique qué logra ese bucle y calcule cuánto dura la animación completa si cada espera es de $0,5\ \text{s}$ y el cambio de disfraz es instantáneo.

Resolver
Practica★★☆Sin empezar
La figura muestra dos programas que mueven a un personaje con dos tipos de bucle distintos. Explique qué diferencia hay entre los dos bucles, ponga una situación en la…

La figura muestra dos programas que mueven a un personaje con dos tipos de bucle distintos.

al empezar repetir 10 veces dar un paso al empezar repetir hasta la meta dar un paso

Explique qué diferencia hay entre los dos bucles, ponga una situación en la que convenga usar cada uno y razone qué puede ocurrir con el bucle de la derecha si la meta no existiera.

Resolver
Practica★★☆Sin empezar
La figura muestra un programa con una variable llamada «puntos» que controla un bucle. Haga la traza del programa: indique cuántas veces se ejecuta el bucle y cuántos…

La figura muestra un programa con una variable llamada «puntos» que controla un bucle.

al pulsar la bandera poner puntos a 0 repetir hasta que puntos = 3 sumar 1 a puntos dar un paso decir ¡Meta!

Haga la traza del programa: indique cuántas veces se ejecuta el bucle y cuántos pasos da el personaje en total. Después razone qué ocurriría si el bloque «poner puntos a 0» estuviera dentro del bucle en lugar de antes.

Resolver

Condicionales y operadores lógicos

El bloque «si … entonces» ejecuta lo que tiene adentro solo si la condición es verdadera. Con «si … entonces … si no» hay un camino para cada caso.

Para que el programa vigile algo durante todo el juego, el condicional se mete adentro de un «por siempre». Por ejemplo, para que suene un «miau» justo cuando el perro alcanza al gato:

«por siempre: si ¿tocando perro? entonces tocar sonido miau».

Anidar es poner un «si» dentro de otro: se comprueba la primera condición y, solo si se cumple, la segunda. Eso se parece a un «y», pero en dos pasos.

Practica★☆☆Sin empezar
En un juego, un gato corre por el escenario y un perro lo persigue. Explique dónde colocaría el bloque «tocar sonido miau» para que suene exactamente cuando el perro…

En un juego, un gato corre por el escenario y un perro lo persigue. Explique dónde colocaría el bloque «tocar sonido miau» para que suene exactamente cuando el perro alcanza al gato, qué bloque de comprobación lo acompaña y qué pasaría si el sonido estuviera fuera de esa comprobación.

Resolver
Practica★★☆Sin empezar
Describa con sus palabras los bloques de un programa que pregunta la edad del usuario y responde «puede pasar» si tiene 14 años o más, y «lo siento» en caso contrario.…

Describa con sus palabras los bloques de un programa que pregunta la edad del usuario y responde «puede pasar» si tiene 14 años o más, y «lo siento» en caso contrario. Indique qué tipo de bloque de decisión usaría y qué comprobación haría exactamente.

Resolver
Practica★★☆Sin empezar
Una soda del barrio regala un café solo a los socios y solo antes de las 10 de la mañana. Describa los bloques de decisión anidados del programa que lo comprueba y…

Una soda del barrio regala un café solo a los socios y solo antes de las 10 de la mañana. Describa los bloques de decisión anidados del programa que lo comprueba y explique la diferencia entre poner dos «si» uno dentro de otro y poner dos «si» seguidos, usando este ejemplo.

Resolver
Practica★★☆Sin empezar
Los bloques de operadores «y», «o» y «no» combinan comprobaciones. Explique qué hace cada uno y describa las condiciones completas de estos dos sistemas: una puerta que…

Los bloques de operadores «y», «o» y «no» combinan comprobaciones. Explique qué hace cada uno y describa las condiciones completas de estos dos sistemas: una puerta que se abre si la tarjeta es válida y además la huella coincide, y una alarma que suena si se abre la ventana o se rompe el cristal.

Resolver

Comunicación entre personajes

Diagrama de comunicación por mensajes: la pila del botón (al hacer clic, enviar «aparecer») envía el mensaje al mago, cuya pila «al recibir aparecer» ejecuta mostrarse. emisor: botón receptor: mago botón: al hacer clic enviar «aparecer» mago: al recibir «aparecer» mostrarse mensaje
Practica★★☆Sin empezar
En un proyecto hay dos personajes: un botón y un mago. Al hacer clic en el botón, el mago debe aparecer. Explique para qué sirven los bloques de «enviar mensaje» y «al…

En un proyecto hay dos personajes: un botón y un mago. Al hacer clic en el botón, el mago debe aparecer. Explique para qué sirven los bloques de «enviar mensaje» y «al recibir mensaje», describa las pilas de bloques que llevaría cada personaje y razone por qué no basta con poner los bloques del mago dentro del botón.

Resolver
Practica★★★Sin empezar
Un compañero programó el ciclo de un semáforo para carros (verde: 10 s; ámbar: 3 s; rojo: 12 s) y un semáforo de peatones sincronizado. Para ello, creó dos programas…

Un compañero programó el ciclo de un semáforo para carros (verde: 10 s; ámbar: 3 s; rojo: 12 s) y un semáforo de peatones sincronizado. Para ello, creó dos programas independientes con «al presionar bandera verde» y bucles «por siempre» con bloques de espera en cada objeto. Tras un minuto de simulación, los carros y los peatones tienen luz verde al mismo tiempo.

  1. a) Justifique por qué se produce esta desincronización peligrosa al usar bucles con tiempos de espera independientes.
  2. b) Diseñe una solución con bloques que garantice que nunca coincidan en verde, explicando si utiliza variables de estado o mensajes («enviar mensaje y esperar») y detallando el orden exacto de los cambios de luz.
Resolver

Programas que fallan: vigilar bien

Un «por siempre» no da una vuelta por segundo: da muchas (unas 30). Eso explica fallos que parecen misteriosos. Para encontrarlos, imagine qué vale todo en cada vuelta, como en una traza.

Practica★★★Sin empezar
En un videojuego, se ha incluido este bloque dentro del bucle «por siempre» del personaje principal: «si <tocando Moneda?> entonces [cambiar Puntos por 1]» «si <tocando…

En un videojuego, se ha incluido este bloque dentro del bucle «por siempre» del personaje principal:

  • «si entonces [cambiar Puntos por 1]»

  • «si entonces [cambiar Vidas por -1]»

  • «si entonces [detener todos]»

Al probarlo, se detectan dos fallos graves: al tocar una única moneda el contador sube de golpe entre 15 y 20 puntos, y al rozar a un enemigo las 3 vidas se pierden de forma instantánea.

  1. a) Justifique técnicamente por qué ocurre esto teniendo en cuenta la velocidad de ejecución de los bucles por segundo.
  2. b) Diseñe la modificación necesaria en los bloques de la moneda y del personaje para corregir ambos comportamientos sin pausar el movimiento general del juego (considere ocultar/destruir objetos y periodos de invulnerabilidad).
Resolver
Practica★★★Sin empezar
En un juego de contrarreloj se quiere registrar el récord del menor tiempo empleado en completar un circuito. Un alumno escribe este código al llegar a la meta: «si…

En un juego de contrarreloj se quiere registrar el récord del menor tiempo empleado en completar un circuito. Un alumno escribe este código al llegar a la meta:

«si <Tiempo_Partida < Récord> entonces [fijar Récord a Tiempo_Partida]»

Sin embargo, al jugar por primera vez tras crear la variable Récord (que Scratch inicializa por defecto en 0), el récord nunca se actualiza, sin importar lo rápido que vaya el carro.

  1. a) Justifique por qué falla esta comprobación y explique la diferencia de inicialización entre buscar un récord de máxima puntuación y uno de tiempo mínimo.
  2. b) Diseñe la estructura de bloques que resuelva este problema para la primera partida y las siguientes sin tener que escribir manualmente un valor inicial ficticio antes de presionar la bandera verde.
Resolver
Practica★★★Sin empezar
Un juego de plataformas tiene este script en el personaje: «al presionar bandera verde: fijar Vidas a 3 si <Vidas = 0> entonces [detener todos] por siempre: si <tocando…

Un juego de plataformas tiene este script en el personaje:

«al presionar bandera verde:

fijar Vidas a 3

si entonces [detener todos]

por siempre:

si <tocando Trampa?> entonces:

  cambiar Vidas por -2

  esperar 0,5 s»

El juego presenta dos fallos: la partida nunca termina aunque el jugador toque la trampa repetidamente, y si un jugador cae en la trampa teniendo 1 vida, el marcador pasa a -1 vidas sin detener el juego.

  1. a) Justifique por qué la comprobación de fin de partida tal como está colocada no detiene el juego en ningún momento.
  2. b) Explique por qué utilizar la condición estricta es un error de diseño cuando el daño resta más de 1 vida.
  3. c) Diseñe la solución reubicando y modificando los bloques condicionales para asegurar que la partida finalice exactamente cuando las vidas se agoten o queden por debajo de cero.
Resolver

Resumen

Vuelva al principio: el programa de Josué se arma con un evento («al presionar la bandera»), una secuencia (decir ¡Hola!), un bucle («repetir hasta que tocando meta: mover 10 pasos») y un aviso final. Con las tres estructuras alcanza.

Ver todos los ejercicios de este apartado