# 4. Herhalingen

![](/files/5emKrhmHIdTZZrAjZp21)

Keuzes en herhalingen zijn waarschijnlijk de twee belangrijkste constructies in een programmeertaal. Keuzes hebben we al gezien in het vorige hoofdstuk. In dit hoofdstuk gaan we leren hoe je een herhaling programmeert.

Met herhalingen kun je je een hoop werk besparen doordat je de computer meerdere malen hetzelfde of bijna hetzelfde kunt laten uitvoeren, zonder dat je elke stap moet programmeren. Er zijn meerdere manieren voor herhalingen. De eerste herhaling die je zal zien is een *for*-lus. Dit is een voorbeeld van een stukje code dat een *for*-lus bevat:

```clike
for (int i = 0; i < 5; i++) {
    cout << "Hallo allemaal" << endl;
}
```

Bovenstaande code schrijft het volgende naar het beeldscherm:\
Hallo allemaal\
Hallo allemaal\
Hallo allemaal\
Hallo allemaal\
Hallo allemaal

We leggen de verschillende onderdelen van de for-lus nu uit. Tip: als een onderdeel niet duidelijk is, lees dan eerst de volledige uitleg, en kijk dan opnieuw naar het deel dat niet duidelijk was.

* `int i = 0`: deze code wordt 1 keer uitgevoerd aan het begin van de herhaling. Aan het begin van de herhaling wordt de variabele *i* aangemaakt. Deze variabele krijgt in het programma de waarde 0. &#x20;
* `i < 5`: dit is een voorwaarde, zoals we die in het hoofdstuk over keuzes ook hebben gezien. Als *i* kleiner is  dan 5 levert de code *i < 5* als uitkomst *waar* op, en zal de herhaling doorgaan. Als de voorwaarde *onwaar* oplevert (als *i* gelijk is aan 5 of groter is dan 5), dan stopt de herhaling.  In dit geval zal de herhaling dus doorgaan als de variabele i kleiner is dan 5.  *Voor* elke keer dat de herhaling wordt uitgevoerd, wordt getest of aan de voorwaarde voldaan is.
* `i++`: de code i++ is een korte versie van i = i + 1. (Het *=*-teken kun je hier weer lezen als *wordt*.) Deze code wordt *na* elke herhaling uitgevoerd: na elke herhaling wordt de i met 1 opgehoogd.
* De code die tussen { en } staat, wordt bij elke herhaling uitgevoerd.

We hadden hetzelfde resultaat kunnen bereiken door zelf in de code 5 keer de schrijfopdracht uit te schrijven, maar dat is meer werk. Bij ingewikkeldere programma's wordt de kans dat je op die manier fouten maakt, ook veel groter.&#x20;

**Opdracht 4.1**\
Schrijf een programma dat een getal inleest en als uitvoer zoveel complimentjes geeft.

**Opdracht 4.2**\
Schrijf een programma dat een getal inleest en de tafel van dit getal afdrukt. Maak gebruik van een for-lus.\
Bijvoorbeeld voor de tafel van 6 is de uitvoer:\
1 \* 6 = 6\
2 \* 6 = 12\
3 \* 6 = 18\
4 \* 6 = 24\
5 \* 6 = 30\
6 \* 6 = 36\
7 \* 6 = 42\
8 \* 6 = 48\
9 \* 6 = 54\
10 \* 6 = 60

Een tweede manier voor herhalingen is de *while-*&#x6C;us.

`while (voorwaarde) {`\
&#x20;     `// code`\
`}`

Zolang de voorwaarde als resultaat *waar* oplevert, wordt de code uitgevoerd. Ook onderstaande code drukt 5 keer de tekst “Hallo allemaal” af.

```cpp
int i = 0;
while (i <= 4) {
    cout << "Hallo allemaal" << endl;
    i++;
}
```

Let er bij een herhaling met een *while*-lus altijd goed op dat de voorwaarde wel op een gegeven moment *onwaar* wordt, anders blijft je code oneindig in de lus hangen, en loopt je programma vast. Als in bovenstaand voorbeeld i niet elke herhaling wordt verhoogt, dan zou het programma vastlopen en 'Hallo allemaal' blijven printen.

**Opdracht 4.3**\
Schrijf een programma waarbij de computer een willekeurig getal kiest en de gebruiker moet raden welk getal de computer gekozen heeft. Steeds zegt de computer of het getal hoger of lager is. Het programma stopt als de gebruiker het getal geraden heeft.\
De computer kan een willekeurig getal kiezen met de code:\
&#x20;   `srand (time(NULL)); //deze regel hoeft maar 1 keer uitgevoerd te worden.`\
&#x20; `int getal = rand() % 100; //code voor een willekeurig getal tussen 0 en 99`\
Dit programma kan je nog uitbreiden door bij te houden hoeveel beurten de gebruiker er over gedaan heeft om het getal te raden

**Opdracht 4.4**\
Maak de opdracht [Hoogste score](https://informatica.cuttle.org/?action=question_standalone\&que_id=79\&t=556c448537776b0b)

Opdracht 4.5\
Maak de opdracht [Hagelstenen](https://informatica.cuttle.org/?action=question_standalone\&que_id=111\&t=297fcf2960c41fb5)


---

# 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-de-basis-van-programmeren/4.-herhalingen.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.
