Bugs opsporen als een detective
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.
