Saber Básico A.4: Generación de tareas repetitivas y condicionales 2ESO
Computación y Robótica – 2º ESO
1. Recordatorio: la “C” que dejamos pendiente
En el A.2 vimos que los bloques de control tienen forma de C porque envuelven a otros bloques, y dijimos que servían para repetir o para decidir. Entonces solo tenías que reconocer su forma.
Hoy pasamos de reconocer a generar: partir de un problema escrito con palabras y construir tú el programa, decidiendo qué se repite, qué se decide y cuándo se para.
🔁 2. Tareas repetitivas: elegir el bucle adecuado
Un bucle es un grupo de bloques que se ejecuta varias veces. En Scratch tienes tres, y elegir bien es lo que se evalúa hoy:
| Si el enunciado dice… | Bloque | Tipo de bucle |
|---|---|---|
| “5 veces”, “cada uno de los 6 lados” | repetir (n) veces | Finito: sabes cuántas vueltas |
| “hasta que…”, “mientras no…” | repetir hasta que <condición> | Finito, pero no sabes cuántas vueltas: depende de una condición |
| “siempre”, “sin parar” | por siempre | Infinito: no termina solo |
Fíjate: “repetir hasta que” tiene un hueco hexagonal. Es el bloque booleano del A.2 encajando dentro de un bloque de control.
Los bucles suelen trabajar con variables. Una cuenta atrás, por ejemplo, guarda el número en una variable y lo va restando en cada vuelta.
🔀 3. Tareas condicionales: decidir con condiciones
Un condicional ejecuta unos bloques solo si una condición es verdadera:
- si <condición> entonces…: hace algo solo si se cumple.
- si <condición> entonces… si no…: elige entre dos caminos. Uno de los dos siempre se ejecuta.
Desde 2º puedes construir condiciones compuestas con los operadores del A.2:
- <A> y <B>: se cumplen las dos a la vez.
- <A> o <B>: se cumple al menos una.
- no <A>: se cumple justo lo contrario.
Idea clave: usa si no cuando las dos situaciones son opuestas. Si escribes dos “si” separados, corres el riesgo de dejar algún caso sin cubrir.
🕵️ 4. De la especificación al programa: caza las pistas
Generar un programa es traducir un enunciado en estructuras. Antes de encajar ningún bloque, subraya las palabras clave:
| Pista en el enunciado | Estructura | Ejemplo |
|---|---|---|
| “N veces”, “cada” | repetir (n) veces | “Avanza 10 pasos, 5 veces” |
| “hasta que”, “mientras no” | repetir hasta que | “Avanza hasta detectar una roca” |
| “siempre”, “sin parar” | por siempre | “Mide la temperatura siempre” |
| “si”, “cuando”, “en caso de” | si… entonces | “Si la batería está baja, vuelve” |
| “si no”, “en caso contrario” | si… entonces… si no | “Si hay tormenta, para; si no, explora” |
| Ninguna de las anteriores | Solo una secuencia | “Enciende la luz y avanza” |
Y antes de programar, contesta siempre a tres preguntas: ¿qué se repite?, ¿qué se decide?, ¿cuándo se para?
Error típico: el “si” debe ir dentro del “por siempre” si quieres que se compruebe continuamente. Fuera, se comprueba una sola vez.
📊 5. De bloques a texto: la misma idea, otra forma
| Bloque | Equivalente en Python |
|---|---|
| repetir (10) veces | for i in range(10): |
| por siempre | while True: |
| repetir hasta que <cuenta = 0> | while cuenta != 0: |
| si <temp > 30> entonces | if temp > 30: |
| si no | else: |
| <A> y <B> | A and B |
| <A> o <B> | A or B |
Un ejemplo completo (la función leer_temperatura() es inventada, solo para ilustrar):
python
while True:
temp = leer_temperatura()
if temp > 30:
print("¡Alarma!")
else:
print("Todo en orden")
En bloques, la forma de C dice qué está dentro. En Python lo dice la sangría (los espacios a la izquierda).
📝 PARA TU LIBRETA (Resumen clave para copiar)
Copia en tu cuaderno este resumen de 5 puntos:
- Elegir el bucle: sabes cuántas veces → repetir (n) veces; hasta que ocurra algo → repetir hasta que; sin parar → por siempre.
- Condicional: si… entonces ejecuta algo solo si la condición es verdadera; usa si no cuando hay dos caminos opuestos.
- Condiciones compuestas: y (las dos), o (al menos una), no (lo contrario).
- Pistas del enunciado: “N veces”, “hasta que” y “siempre” señalan bucles; “si” y “en caso contrario” señalan condicionales; si no hay ninguna, es solo una secuencia.
- Lo que va dentro de la C se repite o depende de la condición; lo de fuera no. En Python lo marca la sangría.
FICHA DE TRABAJO DESENCHUFADA: GENERO MIS PROPIOS BUCLES Y CONDICIONALES
Saber Básico A.4: Generación de tareas repetitivas y condicionales
Nombre y Apellidos: ____________________________________________________
Curso y Grupo: 2.º ESO ____ | Fecha: __ /__ /2026
🔍 RETO 1: Caza-pistas
Subraya las palabras clave de cada enunciado y rellena la tabla: ¿es repetitiva, condicional, las dos o ninguna? ¿Qué estructura usarías?
- El rover avanza 10 pasos, 5 veces seguidas.
- El rover avanza hasta que detecta una roca.
- Si la batería baja del 20 %, el rover vuelve a la base.
- La estación mide la temperatura cada segundo, todo el tiempo que esté encendida.
- Si hay tormenta de polvo o la batería está baja, el rover se queda quieto; si no, explora.
- El rover enciende la luz, avanza 10 pasos y apaga la luz.
- El rover dibuja un hexágono. (Pista: un giro completo son 360°.)
| Nº | Palabras clave | ¿Repetitiva / condicional / las dos / ninguna? | Estructura que usarías |
|---|---|---|---|
| 1 | ___________ | ___________ | ___________ |
| 2 | ___________ | ___________ | ___________ |
| 3 | ___________ | ___________ | ___________ |
| 4 | ___________ | ___________ | ___________ |
| 5 | ___________ | ___________ | ___________ |
| 6 | ___________ | ___________ | ___________ |
| 7 | ___________ | ___________ | ___________ |
Reflexión: uno de los enunciados no necesita ni bucle ni condicional. ¿Cuál es y por qué?
Respuesta: ____________________________________________________________________
✍️ RETO 2: Genera tú el programa
Escribe cada programa con bloques dibujados o con esta notación, donde la sangría indica lo que va dentro de la C:
al presionar bandera verde
por siempre
mover (5) pasos
si <¿tocando [borde]?> entonces
girar (180) grados
a) Cuenta atrás de lanzamiento. Hay una variable cuenta que empieza en 10. Mientras no llegue a 0, el programa dice el número durante 1 segundo y lo reduce en 1. Al terminar, dice “¡Despegue!”.
b) Patrulla del rover. Al empezar, el rover avanza 5 pasos sin parar. Cada vez que toca una roca, gira 90 grados.
c) Alarma del hábitat. Supón que las variables temperatura y co2 se actualizan solas. Cada segundo, si la temperatura pasa de 30 o el CO₂ pasa de 1000, el programa dice “¡Alarma!”. Si no, dice “Todo en orden”.
(Tu solución, en el reverso o en tu cuaderno.)
Reflexión: ¿qué estructura has usado en cada apartado y por qué?
Respuesta: ____________________________________________________________________
🐞 RETO 3: Cazador de errores
Estos tres programas se pueden montar sin ningún error de escritura, pero no hacen lo que deberían. Para cada uno, explica qué falla y cómo lo arreglarías.
Programa A (debe avisar cada vez que el rover se topa con una roca mientras avanza)
al presionar bandera verde
si <¿tocando [roca]?> entonces
decir [¡Roca detectada!]
por siempre
mover (5) pasos
Programa B (debe contar atrás hasta cero)
fijar [cuenta] a (5)
repetir hasta que <(cuenta) = (0)>
decir (cuenta) por (1) segundos
cambiar [cuenta] por (-2)
Programa C (debe avisar si la temperatura es alta y, si no, decir que todo va bien)
por siempre
si <(temperatura) > (30)> entonces
decir [¡Alarma!]
si <(temperatura) < (30)> entonces
decir [Todo en orden]
| Programa | ¿Qué falla? | ¿Cómo lo arreglo? |
|---|---|---|
| A | ___________ | ___________ |
| B | ___________ | ___________ |
| C | ___________ | ___________ |
Conclusión del Reto 3: en el A.1 vimos que en los lenguajes de bloques no hay errores de sintaxis. Entonces, ¿por qué estos tres programas siguen estando mal? ¿Cómo escribirías en Python la condición de parada del programa B?
Respuesta: ____________________________________________________________________
💡 Dinámica sugerida para el aula (35-40 min)
- 10 min: Repaso oral de la tabla de pistas (pizarra, sin apuntes): cada enunciado, su estructura.
- 20 min: Trabajo individual o en parejas con los tres retos.
- 5-10 min: Corrección conjunta del Reto 2c, comparando soluciones distintas (por ejemplo, el orden de las condiciones o si se usa “o” o dos “si”) y viendo cuáles son todas válidas.
Solucionario (solo para ti)
- Reto 1: 1) repetir (5) veces [mover 10]. 2) repetir hasta que <¿tocando roca?> [mover]. 3) si <batería < 20> entonces volver a la base. 4) por siempre [medir; esperar 1 s]. 5) si <tormenta o batería baja> entonces quieto, si no explora (condición compuesta con “o”). 6) ninguna, es una secuencia. 7) repetir (6) veces [mover; girar 60°].
- Reto 2: a) fijar cuenta a 10; repetir hasta que <cuenta = 0> [decir cuenta 1 s; cambiar cuenta por -1]; decir “¡Despegue!”. b) por siempre [mover 5; si <¿tocando roca?> entonces girar 90]. c) por siempre [si <(temperatura > 30) o (co2 > 1000)> entonces decir “¡Alarma!” si no decir “Todo en orden”; esperar 1 s].
- Reto 3: A) el “si” está fuera del bucle y se comprueba una sola vez: hay que meterlo dentro del “por siempre”. B) de 5 restando 2 (5, 3, 1, -1…) nunca llega a 0 y el bucle es infinito: restar 1, o parar con <cuenta < 1>. C) si la temperatura es exactamente 30 no ocurre nada: usar “si… si no”. En Python,
while cuenta != 0:con el mismo fallo, o mejorwhile cuenta > 0:.
