Pagas 10 euros y debías pagar 11,50
Tres amigos piden la cuenta en el bar. La app dice 10 euros. Tú has contado 11,50.
Alguien se ha equivocado, y no hay ningún mensaje de error. ¿Cómo encuentras el fallo?
Mirando el programa línea a línea, como un detective. Eso es depurar.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Depurar | Buscar y arreglar los fallos de un programa. | Encontrar por qué sale 10 y no 11.5 |
| Bug | Un fallo en un programa. En inglés quiere decir bicho. | Un descuento mal calculado |
| Punto de parada | Una marca en una línea. El programa se detiene ahí. | Una bolita roja junto a la línea 6 |
| Paso a paso | Avanzar una sola línea cada vez. | Pulsas un botón y avanza una línea |
| Variable observada | Una variable cuyo valor miras mientras el programa avanza. | Mirar total tras cada línea |
| Tabla de seguimiento | Una tabla donde apuntas el valor de cada variable en cada línea. | Una fila por línea |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Depurar es investigar
Un bug es un fallo en el programa. Depurar es buscarlo y arreglarlo.
No adivines. No cambies cosas al azar. Un detective sigue las pistas.
Tu pista es el valor de cada variable. Cuando un valor sale distinto de lo que esperabas, el fallo está cerca.
Pruébalo: la cuenta del bar
public class Main {
public static void main(String[] args) {
int coffees = 3;
double coffeePrice = 1.5;
int sandwiches = 2;
double sandwichPrice = 3.5;
double coffeeTotal = coffees * coffeePrice;
double sandwichTotal = sandwiches + sandwichPrice;
double total = coffeeTotal + sandwichTotal;
double perPerson = total / 2;
System.out.println("Total: " + total);
System.out.println("Cada uno paga: " + perPerson);
// Debería salir 11.5 y 5.75. No sale. ¿Dónde está el fallo?
}
}
Primera técnica: escribe los valores
La forma más fácil de investigar es escribir los valores en la consola.
Añade un System.out.println después de cada cálculo. Así ves qué guarda cada variable.
Cuando un valor no es el que esperabas, has encontrado la zona del fallo.
Pruébalo: mira cada total
public class Main {
public static void main(String[] args) {
int coffees = 3;
double coffeePrice = 1.5;
int sandwiches = 2;
double sandwichPrice = 3.5;
double coffeeTotal = coffees * coffeePrice;
System.out.println("Café: " + coffeeTotal);
double sandwichTotal = sandwiches + sandwichPrice;
System.out.println("Bocadillos: " + sandwichTotal);
// 2 bocadillos a 3.5 euros deberían ser 7.0.
// Corrige la línea de sandwichTotal y ejecuta otra vez.
}
}
Ejemplo resuelto: la tabla de seguimiento
| Línea | Variable | Valor que sale | Valor esperado |
|---|---|---|---|
| coffeeTotal = coffees * coffeePrice | coffeeTotal | 4.5 | 4.5 |
| sandwichTotal = sandwiches + sandwichPrice | sandwichTotal | 5.5 | 7.0 |
| total = coffeeTotal + sandwichTotal | total | 10.0 | 11.5 |
| perPerson = total / 2 | perPerson | 5.0 | 5.75 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Segunda técnica: el depurador
Los IDE tienen una herramienta llamada depurador. Hace lo mismo que tu tabla, pero sola.
Pones un punto de parada en una línea. Ejecutas en modo depuración. El programa se para ahí.
Ahora avanzas paso a paso y miras las variables. No hace falta escribir ningún println.
Los botones del depurador
| Botón | Qué hace | Cuándo lo usas |
|---|---|---|
| Continuar | Sigue hasta el siguiente punto de parada. | Cuando ya has mirado esa zona |
| Paso siguiente | Ejecuta una línea y se para. | Casi siempre |
| Entrar | Se mete dentro del método que se llama. | Cuando sospechas del método |
| Salir | Termina el método y vuelve a la línea que lo llamó. | Cuando ya has visto el método |
| Parar | Termina la depuración. | Cuando has acabado |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cada IDE los llama de una forma
Nota
Los botones tienen otro nombre según el IDE, y a veces llevan solo un dibujo. En inglés verás Step Over para Paso siguiente y Step Into para Entrar. Busca la idea, no el nombre.
Repaso rápido
Inténtalo
Repaso rápido
4 preguntasTus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.