## Fouten in je programma

Het is eigenlijk wel vreemd dat we het woord 'code' gebruiken om een uitgeschreven programma mee aan te duiden. Er is niets geheim aan, als je de programmeertaal kent kun je het programma gewoon lezen. De oorsprong van die term ligt in de begintijd van de computer. De eerste computers moest je programmeren door een reeks processorinstructies in te voeren. Die instructies waren genummerd, vaak als binaire getallen, omdat de processor nu eenmaal binair werkt. Zo zou het binaire getal '0010' kunnen staan voor de instructie 'sla een getal op in het geheugen'. Deze machinecodes leken natuurlijk wel op geheimschrift. Het werd aangeduid als 'code' en dat woord is nooit meer weggegaan. Een andere vreemde term in de wereld van programmeurs is bug, wat letterlijk kever of torretje betekent. Je weet het waarschijnlijk wel, een bug is een fout in een programma. Er wordt beweerd dat de term is uitgevonden toen een computer ooit uitviel omdat er een echt torretje in de elektrische schakelingen zat. Dat is niet waar. De term werd al veel langer gebruikt voor fouten in het ontwerp van apparaten. Edison, de uitvinder van onder andere de gloeilamp, gebruikte de term al. Het is wel waar dat ooit een echte tor de oorzaak van het uitvallen van een computer was. De fout was dus geen figuurlijke bug, maar een echte.

Er bestaat geen programmeur die altijd meteen bij de eerste compilatie een perfect werkend programma heeft. Dus het opsporen en corrigeren van fouten is een altijd aanwezig onderdeel van het programmeren.
Er zijn verschillende soorten fouten.

Fouten in de syntax
Allereerst zijn er de zogenaamde syntactische fouten. Fouten die je zou kunnen vergelijken met taalfouten bij het schrijven. Een voorbeeld van een syntax-fout is wanneer je een programma-opdracht niet afsluit met een puntkomma, of wanneer je de naam van een methode met een hoofdletter schrijft, terwijl je dat eerder met een kleine letter hebt gedaan. Het kan ook zijn dat je een accolade vergeten bent. Dit soort fouten wordt meestal bij het compileren ontdekt. Bovendien geeft de compiler aan wat er fout is en in welke regel.

Fouten in de semantiek
Semantische fouten zondigen tegen de betekenis van codewoorden. Ook het gebruik van bouwstenen of procedures waarvan we betekenis, bedoeling of gebruik niet precies kennen, leidt tot semantische fouten. Semantische fouten worden soms wel en soms niet door de compiler herkend.

Het fout gebruiken van een variabele is een voorbeeld van een semantische fout:

bv: opp_rechthoek = lengte + breedte i.p.v. opp_rechthoek = lengte * breedte
Logische fouten
Een ander soort fout is een logische fout. In dat geval heb je soms een werkend programma, alleen doet het niet wat je wilt. Als je een programma wilt schrijven dat twee vierkanten moet tekenen, maar het tekent er maar één, dan heb je een logische fout.

Debuggen
Semantische en logische fouten worden ook wel bugs genoemd. Het opsporen en verbeteren van dit soort fouten noemen we 'debuggen'. Voor ons Turtle kunnen we debuggen dmv het console. Als er fouten zijn zullen deze in het console weergegeven worden.

Console
In je console kan je zien welke stappen uitgevoerd worden door je programma. Je kan zien dat elk commando stap voor stap wordt uitgevoerd. Je kan de snelheid van uitvoeren van de stappen instellen. Hiervoor kan je het commando `.speed()` gebruiken. `.speed(1)` tekent het langzaamst, hoe hoger het getal hoe snelle er wordt getekend. `.speed(0)` is zo snel mogelijk.