Soluciones para docentes

Decisiones e indicadores

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.

10. Lógica condicional: tomar decisiones

Compara valores y elige un camino con un indicador guardado.

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.

LOAD 7
CMP 7
JUMP_IF_ZERO same
LOAD 0
JUMP show
same: LOAD 1
show: PRINT
HALT

Añadir entradas a la cola: Ninguno

Inicializar memoria: Todos los bytes empiezan en cero

Solución de la predicción

Salida: 1

InstrucciónPC antesPC despuésR0 antesR0 despuésEstado relevanteSalida
LOAD0107{"registers":[7,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Ninguno
CMP1277{"registers":[7,0,0,0,0,0,0,0],"flags":{"zero":true,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Ninguno
JUMP_IF_ZERO2577{"registers":[7,0,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

Lee dos enteros. Imprime 1 si son iguales y 0 si son distintos. Debe funcionar con ambos tipos de entrada.

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

Ejemplo de solución del reto

INPUT
COPY R0 R1
INPUT
CMP R1
JUMP_IF_ZERO same
LOAD 0
JUMP show
same: LOAD 1
show: PRINT
HALT

Casos reales del comprobador

Caso 1
Entrada
5, 5
Memoria inicial
Todos los bytes empiezan en cero
Salida esperada
1
Caso 2
Entrada
2, 3
Memoria inicial
Todos los bytes empiezan en cero
Salida esperada
0
Caso 3
Entrada
-2, -2
Memoria inicial
Todos los bytes empiezan en cero
Salida esperada
1

3. Explicar la máquina

¿Puede Z estar activado aunque R0 no sea cero?

Razonamiento y nota docente

Sí: CMP 7 con R0 = 7 activa cero por la diferencia mientras R0 sigue en 7.