For and while loop

For mer info: for, while og do while.

Intro

Løkker (loops) brukes for å kjøre lik kode flere ganger. Du er kanskje allerede kjent med løkker allerede fra python, men i C++ implementeres de litt anderledes.

Det er tre forskjellige løkker man kan bruke: for, while og do while. Disse løkkene kan brukes om hverandre, men ofte er en av dem mer intuitiv å bruke enn de andre.

For-løkkken

En for løkke i C++ skrives slik:



for (type type_name = value; condition; iterator)
{
	// code
}

    

Som du ser gjør for-løkken tre ting i tilleg til koden innenfor krøllparantesene.

  1. Lager en variabel
  2. Skjekker om noe er sant (condition)
  3. Itererer

I eksempelet under ser du et eksempel på hva det kan bety i praksis.

	

vector my_vector = {"Hello", "from", "the", "other", "side"};
for (int i = 0; i < my_vector.size(); i++)
{
	cout << my_vector[i] << " ";
}

	

Dette printer ut i terminalen "Hello from the other side". For-løkken over tilsvarer for i in range(0, len(my_list)): i python. Det er også verdt å merke at ettersom koden inni for-løkken bare er på en linje, kunne krøllparantesene blitt fjernet i dette eksempelet.

I python er det vanlig å iterere gjennom lister ved hjelp av nøkkelordet in (faktisk lager range funksjonen bare en liste som for-løkken itererer gjennom). I C++ kan man få til det samme med nøkkelordet auto:

	

vector my_vector = {"Hello", "from", "the", "other", "side"};
for (auto element : my_vector) cout << element << " ";

	

Her vil koden, som i forrige eksempelet printe ut "Hello from the other side".

While-løkken

While-løkken fungerer på mange måter som i python. Den kjører koden så lenge det som er inni betingelsen er sant. I eksempelet under avslutten løkken når brukeren skriver y for å avslutte løkken.

	

char response;
while (response != 'y')
{
	// Do stuff
	cout << "Do you want to quit? (y/n): ";
	cin >> response;
}

	

Do while

Do while-løkken er godt egnet hvis du ønsker at koden innenfor krøllparantesene alltid kjøres hvertfall en gang, eller hvis betingelsen avhenger av kalkuleringen. I eksempelet under garanterer vi at hvertfall ett tilfeldig tall skrives ut (0) og betingelsen avhenger av den "avanserte" kalkuleringen random_number = rand() % 10;.

	

int random_number;
do
{
	random_number = rand() % 10;
	cout << random_number << endl;
} while (random_number > 0);