Soluciones para docentes

Construye pequeños programas

Recoge cuatro tipos de evidencia: predicción del estado relevante; comportamiento en casos variados, incluidos los límites; explicación apoyada en la traza y el estado; y corrección razonada de una discrepancia. Valora cada aspecto como inicial, con apoyo o autónomo, en papel o mediante el proceso aprobado del centro. Superar un reto demuestra un comportamiento de la máquina, no la autoría ni un dominio completo. Acepta programas correctos equivalentes; las soluciones públicas son modelos, no las únicas respuestas posibles.

Material didáctico público. Las soluciones son ejemplos; otros programas correctos equivalentes pueden superar las comprobaciones.

28. Un pequeño juego de aciertos

Construye un juego de tres rondas con estado guardado y puntuación.

Abrir esta lección →

1. Predecir y trazar

Antes de ejecutar el programa de prueba, predice su salida y traza las tres primeras instrucciones ejecutadas. Sigue los registros, indicadores o memoria relevantes. Después avanza paso a paso para comparar.

STORE 5 200
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
JUMP_IF_ZERO hit
JUMP next
hit: LOAD R2
ADD 1
COPY R0 R2
next: NOP
RETURN
LOAD R2
STORE 201
PRINT
HALT

Añadir entradas a la cola: 5, 2, 5

Inicializar memoria: 200: 5

Solución de la predicción

Salida: 2

InstrucciónPC antesPC despuésR0 antesR0 despuésEstado relevanteSalida
STORE0100{"registers":[0,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[200]}Ninguno
LOAD1200{"registers":[0,5,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[200],"memoryWrites":[]}Ninguno
LOAD2300{"registers":[0,5,0,0,0,0,0,0],"flags":{"zero":true,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Ninguno

2. Construir y comprobar

La memoria 200 contiene un byte objetivo. Lee exactamente tres intentos. Cuenta cuántos coinciden, guarda la puntuación en la memoria 201 e imprímela una vez.

Tipos de instrucción requeridos: INPUT, CMP, LOOP, STORE, JUMP_IF_ZERO

Ejemplo de solución del reto

LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
JUMP_IF_ZERO hit
JUMP next
hit: LOAD R2
ADD 1
COPY R0 R2
next: NOP
RETURN
LOAD R2
STORE 201
PRINT
HALT

Casos reales del comprobador

Caso 1
Entrada
5, 2, 5
Memoria inicial
200: 5
Salida esperada
2
Memoria final esperada
200: 5, 201: 2
Lecturas de memoria requeridas
200
Caso 2
Entrada
1, 2, 3
Memoria inicial
200: 9
Salida esperada
0
Memoria final esperada
200: 9, 201: 0
Lecturas de memoria requeridas
200
Caso 3
Entrada
0, 0, 0
Memoria inicial
200: 0
Salida esperada
3
Memoria final esperada
200: 0, 201: 3
Lecturas de memoria requeridas
200
Caso 4
Entrada
17, 1, 2
Memoria inicial
200: 17
Salida esperada
1
Memoria final esperada
200: 17, 201: 1
Lecturas de memoria requeridas
200

3. Explicar la máquina

¿Qué cambia con un intento correcto y con uno incorrecto?

Razonamiento y nota docente

La puntuación aumenta solo en igualdad; el objetivo permanece como dato de la regla. Tres intentos producen una puntuación numérica.