Niet alleen wanneer je leert programmeren, maak je fouten. Ook ervaren programmeurs maken heel wat fouten. Het is belangrijk dat je een fout leert herkennen.
Soorten fouten
Tijdens het leren programmeren maak je kennis met drie soorten fouten:
- Syntactische fout: fouten tegen de syntax van de programmeertaal.
- Uitvoeringsfout: fouten tijdens het uitvoeren van het programma.
- Ontwerpfout: fouten tijdens het bedenken van een oplossing voor een probleem.
Syntactische fouten (syntax error) zijn de makkelijkste fouten om te herkennen. Dodona ontdekt ze automatisch en zal ze meestal in het
rood onderlijnen. Syntactische fouten zijn fouten tegen de taal. Vergelijk ze gerust met een fout tegen de vervoeging van
een werkwoord in een gesproken taal. In het voorbeeld hieronder werd de print()
-functie foutief met een hoofdletter geschreven.
Zowat elke programmeertaal is hoofdlettergevoelig. Dat wil zeggen dat je niet zomaar hoofdletters of kleine letters kan gebruiken. Als je het programma zou starten, dan laat Dodona een foutmelding zien en probeert aan te geven waar het probleem zit. Het is een goed idee om syntactische fouten in de Sandbox te verbeteren vóór je het programma test.
Een uitvoeringsfout (runtime-error) is een fout in de bedoeling van je code. Het zijn geen syntactische fouten, maar de code doet iets wat onmogelijk is in Python. Deze fouten merkt de Sandbox van Dodona niet op. Je krijg pas een foutmelding te zien wanneer je het programma laat testen door Dodona.
De bovenstaande foutmelding is voor een beginnend programmeur zo goed als onleesbaar. Wanneer je veel oefent en een programmeertaal steeds beter leert kennen, zal je ook de foutmeldingen beter leren begrijpen. Zo zal deze uitvoeringsfout je erop wijzen dat je een stukje tekst probeert te delen door een getal: dat is geen syntactische fout. Dit is een fout die pas ontdekt wordt tijdens het uitvoeren van je programma.
Een ontwerpfout (design error) is een fout die geen syntactische fout of uitvoeringsfout is.
Wanneer je de code met eigen voorbeelden test in de Sandbox, kan het zelfs gebeuren dat je de fout helemaal niet opmerkt. Dat is de reden waarom Dodona je code onderwerpt aan een hele reeks testen.
Typisch aan ontwerpfouten is dat de uitvoer van het programma niet is wat je ervan verwacht. In de bovenstaande afbeelding wordt het gemiddelde van twee getallen verwacht. Het programma geeft een onverwachte waarde terug.
Ontwerpfouten vinden is niet eenvoudig. Soms komen ze maar af en toe voor, bijvoorbeeld bij bepaalde invoerwaarden. Vandaar dat je in Dodona ook een debugger vindt waarmee je de code regel per regel kan testen.