# Code debuggen - deel 1

<figure><img src="/files/G1XorGZNI5icmnBdLzSB" alt="" width="375"><figcaption></figcaption></figure>

De compiler van C++ controleert of je code geschreven is volgens de C++ afspraken qua grammatica en syntax. De compiler geeft een foutmelding als er je code niet voldoet, bijvoorbeeld als je een ; bent vergeten aan het einde van een regel.

Maar ook als de compiler geen foutmeldingen meer geeft, kunnen er nog fouten in je code zitten. Dit zijn logische fouten, zoals fouten in de werking van je algoritme.&#x20;

Er zijn verschillende manier om logische fouten uit je code te halen. Twee opties zijn:

1. Met `cout`-statements in je code
2. Met een debugger-tool

We gaan beide technieken toepassen op onderstaande code. Dit is de code van opgave 5.4.

```cpp
#include <iostream>
using namespace std;

int main() {
  srand (time(NULL)); 
  int dobbelsteen;
  int aantalKeer[6]{};

  for (int teller = 0; teller< 10; teller++){
    dobbelsteen = (rand() % 6) + 1; 
    aantalKeer[dobbelsteen-1]++;
  }
  
  for (int teller = 0; teller< 6; teller++){
    cout << teller+1 << " is " << aantalKeer[teller] << " keer gegooid" << endl;  
  }
}
```

\
**Debuggen met behulp van cout**\
Een manier om fouten uit je code te halen is extra `cout`-statements toe te voegen aan de code. \
Vervang de for-loop in de code hierboven door de volgende code:

```cpp
for (int teller = 0; teller< 10; teller++){  
  cout << "Teller " << teller << endl; 
  dobbelsteen = (rand() % 6) + 1; 
  aantalKeer[dobbelsteen-1]++; 
  cout << "Dobbelsteen = " << dobbelsteen << endl; 
  cout << "Aantalkeer " << dobbelsteen << " = " << aantalKeer[dobbelsteen-1] << endl; 
  cout << "Druk enter om verder te gaan " << endl; 
  cin.get(); 
}
```

Er wordt bewust op input van de gebruiker gewacht voordat het programma verder gaat anders krijg je in 1 keer heel veel informatie op het scherm waardoor het heel moeilijk is om te zien wat er gebeurt.\
Probeer deze manier van debuggen uit.&#x20;

**Debuggen met behulp van een debugger**\
Een tweede manier om code te doorlopen is met een debugger. Het hangt af van de compiler en IDE (=software waarin je je code schrijft) of er een debugger aanwezig is. Dit leer je in deel 3 van deze cursus.<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://girls.gitbook.io/c++-cursus/leer-meer-c++/code-debuggen-deel-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
