Hoe programmeer je loops in C++?

Hoe programmeer je loops in C++? In een computerprogramma is het soms noodzakelijk dat bepaalde stukken code meer dan eens worden uitgevoerd. Daarbij maak je in de programmeertaal C++ vaak gebruik van conditionele lussen, ook wel 'loops' genoemd. Er zijn verschillende soorten loops mogelijk, bijvoorbeeld while en for. Hoe implementeer je ze?

Artikelindeling


While

Deze loop wordt uitgevoerd zolang de gegeven conditie (soms ook expressie genoemd) waar is. Zodra de conditie onwaar is, verlaat het programma de loop en gaat verder met het verwerken van de rest van de broncode. In het geval dat de conditie de eerste keer al onwaar is, wordt de code in de loop nul keer uitgevoerd.

Voorbeeld:
#include <iostream>
int main(){

int a = 3;
while(a>1)
{
std::cout << "Nog " << a << " seconden voor lancering van de raket." << std::endl;
a--;
}

std::cout << "Goede reis naar de maan!" << std::endl;

std::cin.get();
return 0;
}

We initialiseren een variabele genaamd 'a' van het datatype integer met waarde '3' (int a=3) en verminderen in de loop de waarde hiervan met '1' (a--). Het is duidelijk dat de conditie van de while loop (a>1) de eerste twee keer dat het wordt doorlopen waar is, want drie is groter dan één en twee is ook groter dan één. De uitvoer van het programma is dan ook als volgt:

Nog 3 seconden voor lancering van de raket.
Nog 2 seconden voor lancering van de raket.
Goede reis naar de maan!

Do while

Een do while loop lijkt op de vorige, met als verschil dat de code minstens eenmaal wordt uitgevoerd, ongeacht of de conditie waar of onwaar is.

Voorbeeld:
#include <iostream>
int main(){

int b = 3;
do
{
std::cout << "Ik heb " << b << " appels." << std::endl;
b += 2;
}while(b<5);

std::cin.get();
return 0;
}

De variabele 'b' heeft de eerste keer de waarde drie (int b=3). Vervolgens wordt b met twee verhoogd (b += 2, alhoewel b = b + 2 ook correct is) en is dus gelijk aan vijf en niet minder dan vijf. De conditie 'b<5' is nu niet meer waar. De uitvoer is kort maar krachtig:

Ik heb 3 appels.

For

Een for loop bestaat uit drie condities gescheiden door een puntkomma: begin, eind en teller. Zolang nog niet aan de eindconditie is voldaan, wordt de code uitgevoerd.

Voorbeeld:
#include <iostream>
int main(){

for(int c = 1; c<4; c++)
{
std::cout << "Aantal gekochte boeken: " << c << std::endl;
}

std::cin.get();
return 0;
}

De beginconditie is c=1, de eindconditie is c<4 en de teller is c++. Zolang c niet gelijk is aan vier wordt de code in de loop verwerkt. De uitvoer van dit programma is:

Aantal gekochte boeken: 1
Aantal gekochte boeken: 2
Aantal gekochte boeken: 3

If else

In deze loop zijn er twee mogelijkheden: de conditie is waar en de betreffende code in het 'if'-gedeelte wordt uitgevoerd, of de eerste conditie is niet waar en de code in het 'else'-gedeelte wordt uitgevoerd.

Voorbeeld:
#include <iostream>
int main(){

int d = 10;
if(d == 20)
{
std::cout << "Ik krijg " << d << " dagen vakantie." << std::endl;
}else{
std::cout << "Mag ik een paar extra dagen vrij?" << std::endl;
}

std::cin.get();
return 0;
}

Na initialisatie van de variabele 'd' met waarde '10' kan de conditie 'd is gelijk aan twintig' (d == 20) niet waar zijn, dus slaat het programma de code in het 'if'-gedeelte over en voert alleen de code in het volgende gedeelte van de loop uit. Dat betekent dat de uitvoer in dit geval het volgende bevat:

Mag ik een paar extra dagen vrij?

Er is een variant op deze constructie, waarbij 'else if' dezelfde functie heeft als 'if'. Als de conditie in het 'else if'-gedeelte onwaar is, wordt het overgeslagen.

Voorbeeld:
#include <iostream>
int main(){

int d = 10;
if(d == 20)
{
std::cout << "Ik krijg " << d << " dagen vakantie." << std::endl;
}else if(d == 15){
std::cout << "Ik krijg " << d << " dagen vakantie." << std::endl;
}else{
std::cout << "Mag ik een paar extra dagen vrij?" << std::endl;
}

std::cin.get();
return 0;
}

Switch

Als je veel if else constructies gebruikt, kan het onoverzichtelijk worden. Een switch loop lijkt hierop en is minstens zo geschikt om een bepaalde voorwaarde af te dwingen.

Voorbeeld:
#include <iostream>
int main(){

int cijfer = 7;
switch(cijfer)
{
case 8:
std::cout << "Ik wil graag een hoger cijfer." << std::endl;
break;

case 9:
std::cout << "Ik wil graag een hoger cijfer." << std::endl;
break;

case 10:
std::cout << "Ik heb het hoogste cijfer!" << std::endl;
break;

default:
std::cout << "Ik zal harder studeren." << std::endl;
break;
}

std::cin.get();
return 0;
}

Zoals je ziet, is de opbouw van een case (een voorwaarde, net zoals 'if' in de 'if else'-loop) steeds hetzelfde: het woord 'case', de mogelijke waarde, een dubbele punt, jouw code, en het woord 'break'. Er kunnen zoveel cases worden toegevoegd als je wilt.

Stel dat we als invoer een cijfer met de waarde '7' krijgen. Als een case van de switch overeenkomt met de conditie, wordt alleen dat stuk code uitgevoerd.

De case 'default' kan worden weggelaten, maar het is verstandig dit toch toe te voegen. Deze case wordt namelijk gebruikt als de invoer niet overeenkomt met de andere voorwaarden.

Als het cijfer gelijk zou zijn aan '10' is de uitvoer van het programma als volgt:
Ik heb het hoogste cijfer!

Echter, als het cijfer gelijk is aan '7' krijgen we de volgende uitvoer op het scherm:
Ik zal harder studeren.
© 2014 - 2024 Starryheart, het auteursrecht van dit artikel ligt bij de infoteur. Zonder toestemming is vermenigvuldiging verboden. Per 2021 gaat InfoNu verder als archief, artikelen worden nog maar beperkt geactualiseerd.
Gerelateerde artikelen
Inwendige of begin ballistiek: versnelling kogel in de loopInwendige of begin ballistiek: versnelling kogel in de loopDe inwendige ballistiek is een onderdeel van de wetenschappelijke ballistiek waarin de verschijnselen bestudeerd worden…
Polar Loop: een goedkope fitnesstracker voor in het waterWanneer je op zoek bent naar een fitnesstracker waar je mee kunt zwemmen, kom je al snel uit op de dure exemplaren. De P…
LOOP Leeuwarden - hardlopen in de Friese hoofdstadLOOP Leeuwarden - hardlopen in de Friese hoofdstadLoop Leeuwarden is een jaarlijks georganiseerd loopevenement dat wandelend en hardlopend te volbrengen is. Het is het gr…
Kinderliedjes: Sint MaartenKinderliedjes: Sint MaartenIeder jaar op 11 november wordt in sommige streken van Nederland, maar ook in Vlaanderen en Noord-Frankrijk het Sint Maa…

Strings in C++ programmerenStrings in C++ programmerenIn de programmeertaal C++ zijn er diverse bibliotheken. Een van de eerste die je zult leren kennen is de bibliotheek 'st…
Werken met big dataWerken met big dataBig data lijkt te zorgen voor een nieuwe revolutie in het digitale tijdperk. Bedrijven die grootschalig gegevens hebben…
Bronnen en referenties
  • C++, Leen Ammeraal, 6e druk, Academic Service, ISBN 9039519358
Starryheart (9 artikelen)
Laatste update: 15-06-2014
Rubriek: Pc en Internet
Subrubriek: Programmeren
Bronnen en referenties: 1
Per 2021 gaat InfoNu verder als archief. Het grote aanbod van artikelen blijft beschikbaar maar er worden geen nieuwe artikelen meer gepubliceerd en nog maar beperkt geactualiseerd, daardoor kunnen artikelen op bepaalde punten verouderd zijn. Reacties plaatsen bij artikelen is niet meer mogelijk.