4. Herhalingen

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:

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.

  • 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.

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-lus.

while (voorwaarde) { // code }

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

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

Opdracht 4.3 Schrijf net zoals bij opdracht 4.1 een programma dat een getal inleest en als uitvoer zoveel complimentjes geeft maar maak nu gebruik van een while-lus.

Opdracht 4.4 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: srand (time(NULL)); //deze regel hoeft maar 1 keer uitgevoerd te worden. 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.5 Bo en Mo spelen jeu des boules. Elke ronde schrijven ze op wie gewonnen heeft en met hoeveel punten (1, 2 of 3 punten). Schrijf een programma dat berekent wie aan het eind de meeste punten heeft gehaald. Een gelijkspel komt niet voor. De invoer: - Op de eerste regel staat hoeveel rondes N er gespeeld zijn. - Op de volgende N regels staat de naam van degene die de ronde gewonnen heeft en met hoeveel punten. De uitvoer: - De uitvoer bestaat uit 1 regel met de naam van de winnaar, degene die de meeste punten heeft gehaald. Voorbeeld: Invoer: 5 Mo 3 Bo 2 Bo 1 Mo 3 Bo 2 Uitvoer: Mo Met de volgende link kan je testen of je programma werkt: hoogste score. In hoofdstuk 3 kan je terug lezen hoe het inleveren van de opgaves werkt. Vergeet niet je naam in commentaar bovenaan je code te zetten als je de code inlevert. // Deze code is geschreven door: <Naam>

Last updated