Saber Básico A.2: Generación de programas con especificaciones básicas en lenguajes de bloques
1. De la conexión bloques-texto a construir desde cero
En el A.1 aprendiste que un bloque y una línea de código de texto son la misma lógica escrita de dos formas distintas. Pero en la vida real nadie te da el código ni los bloques ya hechos: te dan una especificación, es decir, una descripción de lo que el programa tiene que hacer, y tú tienes que construirlo.
Hoy trabajamos exactamente ese paso: de la especificación al programa funcionando en bloques.
2. ¿Qué es una especificación?
Una especificación es la descripción, en lenguaje normal, de lo que un programa debe hacer. No dice cómo programarlo, solo dice qué resultado se espera.
Ejemplo de especificación: “Queremos un programa que pida al usuario su edad. Si es mayor o igual de 12 años, debe decir ‘Puedes entrar’. Si no, debe decir ‘Acceso restringido’.”
Una buena especificación suele contener tres tipos de información:
- Entradas: qué datos necesita el programa del usuario o del entorno (la edad, en el ejemplo).
- Proceso: qué debe comprobar o calcular el programa (si la edad es mayor o igual a 12).
- Salidas: qué debe mostrar o hacer el programa como resultado (el mensaje correspondiente).
3. El proceso: de la especificación al programa
Generar un programa a partir de una especificación no es “empezar a poner bloques a ver qué sale”. Sigue un proceso:
- Leer la especificación completa antes de tocar nada, y asegurarte de que la entiendes.
- Identificar las entradas: ¿qué datos necesita pedir el programa? (bloques de tipo preguntar y esperar, sensores…)
- Identificar el proceso: ¿hay que comparar, calcular, decidir? (bloques de control, reporteros, booleanos)
- Identificar las salidas: ¿qué debe mostrar, decir o hacer el programa al final?
- Identificar qué variables hacen falta para guardar los datos durante la ejecución.
- Construir el programa por partes, probando cada parte antes de seguir con la siguiente.
- Probar el programa con varios casos, no solo con uno: en el ejemplo anterior, probarlo con 10 años, con 12 y con 30, no solo con uno.
Idea clave: cada requisito de la especificación debe convertirse en algo concreto del programa. Si un requisito no está representado por ningún bloque, el programa está incompleto, aunque “funcione” a simple vista.
4. Ejemplo trabajado
Especificación: “Queremos un programa que pida al usuario el precio de una cuenta de restaurante. El programa debe calcular una propina del 10% y decir el total a pagar (cuenta + propina).”
| Paso del proceso | Qué necesito |
|---|---|
| Entrada | Bloque preguntar “¿Cuál es el precio de la cuenta?” y esperar |
| Variable | cuenta (guarda lo que responde el usuario) |
| Proceso 1 | Bloque reportero: cuenta × 0.1 (calcula la propina) |
| Variable | propina (guarda ese resultado) |
| Proceso 2 | Bloque reportero: cuenta + propina (calcula el total) |
| Salida | Bloque decir (unir “Total a pagar: ” con el total) |
Fíjate en que cada fila de la especificación tiene una fila correspondiente en el programa. No sobra ni falta nada.
5. Errores típicos al generar un programa desde una especificación
- Olvidar una entrada o salida que pedía la especificación (por ejemplo, no mostrar el resultado final, aunque el cálculo esté bien).
- Usar una variable para dos cosas distintas, lo que provoca resultados incorrectos.
- No probar con casos límite: en el ejemplo de la edad, no probar exactamente con 12 años (el caso “igual”, no solo mayor o menor).
- Construir todo de golpe sin probar cada parte por separado, lo que hace muy difícil encontrar el error si algo falla.
📝 PARA TU LIBRETA (Resumen clave para copiar)
Copia en tu cuaderno este resumen de 5 puntos:
- Especificación: descripción en lenguaje normal de lo que un programa debe hacer, sin decir cómo programarlo.
- Toda especificación tiene entradas, proceso y salidas. Identificarlos es el primer paso antes de tocar ningún bloque.
- Cada requisito de la especificación debe tener su equivalente en el programa: si falta uno, el programa está incompleto.
- Construye y prueba por partes, no todo de golpe.
- Prueba siempre con varios casos, incluyendo los casos límite (el valor justo en el que cambia el resultado).
FICHA DE TRABAJO DESENCHUFADA: DE LA ESPECIFICACIÓN AL PROGRAMA
Saber Básico A.2: Generación de programas con especificaciones básicas en lenguajes de bloques
Nombre y Apellidos: ____________________________________________________
Curso y Grupo: 3.º ESO ____ | Fecha: __ /__ /2026
📖 Recuerda el proceso (consulta si tienes dudas)
Entradas → Proceso → Salidas → Variables necesarias → Construir por partes → Probar con varios casos (incluido el caso límite).
🔍 RETO 1: Diseca la especificación
Para cada especificación, identifica sus entradas, su proceso y sus salidas, igual que en el ejemplo de la propina.
Especificación A: “Queremos un programa que pida al usuario un número. Si el número es par, debe decir ‘Es par’. Si es impar, debe decir ‘Es impar’.”
- Entradas: ____________________________________________________________________
- Proceso: ____________________________________________________________________
- Salidas: ____________________________________________________________________
Especificación B: “Queremos un programa que pida el precio de un producto y calcule cuánto cuesta con un 21% de IVA añadido.”
- Entradas: ____________________________________________________________________
- Proceso: ____________________________________________________________________
- Salidas: ____________________________________________________________________
🧩 RETO 2: Rellena la tabla de generación
Elige una de las dos especificaciones del Reto 1 (indica cuál: ______) y complétala como en el ejemplo trabajado en teoría:
| Paso del proceso | Qué necesito |
|---|---|
| Entrada | ___________________________________________________________ |
| Variable(s) | ___________________________________________________________ |
| Proceso | ___________________________________________________________ |
| Salida | ___________________________________________________________ |
🐛 RETO 3: Caza el requisito olvidado
Un compañero ha construido este programa a partir de la especificación B (precio con IVA), pero se ha dejado un requisito sin cumplir:
[ Al hacer clic en 🚩 ]
[ Preguntar "¿Precio del producto?" y esperar ]
[ Fijar [precio] a (respuesta) ]
[ Fijar [iva] a (precio × 0.21) ]
- ¿Qué requisito de la especificación original no ha cumplido este programa?
Respuesta: ____________________________________________________________________ - ¿Qué bloque(s) faltan para completarlo? Descríbelos con tus palabras.
Respuesta: ____________________________________________________________________ - ¿Con qué tipo de error de los que vimos en teoría se corresponde este fallo? (elige uno: entrada olvidada / salida olvidada / variable mal usada / falta de pruebas)
Respuesta: ____________________________________________________________________
✅ RETO 4: Elige tus casos de prueba
Piensa en la especificación A (par/impar). Vas a probar el programa con cuatro números distintos, elegidos para comprobar que funciona bien en todas las situaciones posibles.
- Un número par cualquiera: ______
- Un número impar cualquiera: ______
- El número 0. ¿Qué debería decir el programa? _______________________________
- Un número negativo, por ejemplo -4. ¿Qué debería decir el programa? _______________________________
Reflexión: ¿por qué no basta con probar el programa una sola vez, con un solo número?
Respuesta: ____________________________________________________________________
✍️ RETO 5: Escribe tu propia especificación
Escribe una especificación breve (2-3 frases) de un programa que tú quieras diseñar. Debe tener entrada, proceso y salida claros.
Mi especificación: ____________________________________________________________________________________________________________________________________________________________
Ahora complétala en la tabla:
| Paso del proceso | Qué necesito |
|---|---|
| Entrada | ___________________________________________________________ |
| Variable(s) | ___________________________________________________________ |
| Proceso | ___________________________________________________________ |
| Salida | ___________________________________________________________ |
💡 Dinámica sugerida para el aula (40-45 min)
- 10 min: Repaso oral del proceso (entradas → proceso → salidas → variables → construir → probar).
- 20 min: Trabajo individual o en parejas con los Retos 1 a 4.
- 10-15 min: Los que terminen el Reto 5 antes, intercambian su especificación con un compañero, que debe rellenar la tabla sin haber visto la del autor. Se comparan las dos tablas al final.
