Bugs opsporen als een detective

Programmeergidsen

Een bug is een fout waardoor een programma iets anders doet dan jij bedoelt. Debuggen betekent dat je die fout onderzoekt en oplost. Ervaren programmeurs doen dit ook. Bugs vinden hoort bij het maken van een werkend programma.

Verzamel aanwijzingen

Een detective begint met bewijs. Schrijf op wat je verwachtte, wat er werkelijk gebeurde en welke stappen het probleem veroorzaakten. Probeer hetzelfde probleem opnieuw te laten gebeuren voordat je code verandert.

Een foutmelding kan wijzen op een spelfout of een fout in de syntaxis. Een programma kan ook gewoon draaien en toch een verkeerd antwoord berekenen. Dat heet een logische fout.

Een programma met een aanwijzing

We willen drie sterren die elk twee punten waard zijn. Dit voorbeeld gebruikt expres een verkeerde berekening, maar het is geldige Pliro-code.

# taal: nl
laat sterren = 3
laat punten = sterren + 2
zeg punten

Voorspel en probeer

Reken de verwachte score zelf uit: drie groepjes van twee zijn zes. Wat berekent de geschreven code echt?

5

De + telt maar één keer twee punten op. Dat betekent niet ‘twee voor elke ster’. We kunnen één gerichte verbetering proberen:

# taal: nl
laat sterren = 3
laat punten = sterren * 2
zeg punten

Het verbeterde resultaat is:

6

We veranderden de bewerking, niet het aantal sterren. In de foute versie sterren veranderen in 4 zou toevallig zes geven. De regel zou nog steeds niet kloppen.

Jouw uitdaging

Probeer nul sterren en vijf sterren met de verbeterde versie. Leg uit waarom de scores nul en tien moeten zijn. Die extra controles laten zien dat de regel meer doet dan één keer toevallig het goede antwoord geven.

Een veelgemaakte fout

Als je verschillende regels tegelijk verandert, weet je niet welke verandering hielp. Maak kleine aanpassingen. Wijst een melding naar een regel? Bekijk ook de regel ervoor. Een ontbrekend aanhalingsteken of haakje kan gevolgen hebben voor de volgende regel.

Vraag je om hulp? Deel dan het kleinste voorbeeld met het probleem, jouw verwachte resultaat en de precieze melding. Gebruik verzonnen gegevens in plaats van persoonlijke informatie.

Verder leren

Een programma volgen · Testen · Foutmeldingen begrijpen