## Omschrijving

Vaak wil je een opdracht vaak uitvoeren en hiervoor is programmeren uitermate geschikt voor. Om een herhalende opdracht uit te voeren gebruiken we loops. Binnen loops moeten we vaak vergelijken dit doe je met operatoren.

In dit hoofdstuk gaan we while loops, for loops en operatoren behandelen en maken we een turtle wedstrijd.

## Leerdoelen:

1. Operatoren begrijpen
2. While loop begrijpen
3. For loop begrijpen
4. Werken met een while loop

## Theorie

## Operatoren

Operatoren ken je vast nog wel van wiskunde. In programmeren gebruiken we verschillende soorten operatoren.

- Rekenkundige operatoren: plus, min
- Vergeleikings operatoren: groterdan en kleiner dan
- Logische operatoren: and or not

## Rekenkundige operatoren

Operator | Omschrijving | Voorbeeld
+ | Optellen | 6 + 3 = 9
- | Aftrekken & Negatief maken | 6 - 3 = 3
* | Vermenigvuldigen | 6 * 3 = 18
/ | Delen | 6 / 3 = 2
% | Restwaarden | 7 % 3 = 1 (3 + 3 = 6 dus er is 1 over)
** | Machtsverheffing | 6 ** 3 = 216 (6 * 6 * 6)

## Vergelijkings operatoren

Operator | Omschrijving | Voorbeeld | Uitwerking
== | Gelijk aan | a == b | a = 5 b = 3 print(a == b) # geef False, a is niet gelijk aan b
!= | Niet gelijk aan | a != b | a = 5 b = 3 print(a != b) # geef True, a is niet gelijk aan b
> | Groter dan | a > b | a = 5 b = 3 print(x > y) # geef True, a is groter dan b
< | Kleiner dan | a < b | a = 5 b = 3 print(x < y) # geef False, a is niet groter dan b
>= | Groter of gelijk aan | a >= b | a = 5 b = 3 print(x >= y) # geef True, a is groter of gelijk aan b
<= | Kleiner of gelijk aan | a <= b | a = 5 b = 3 print(x <= y) # geef False, a is niet groter of gelijk aan b

## Logische operatoren

Operator | Omschrijving | Voorbeeld | Uitwerking
and | Geeft True terug als bijde statements waar zijn | a < 5 and b < 10 | a = 5 print(a > 3 and a < 10) # geeft True omdat 5 groter is dan 3 AND 5 is kleiner dan 10
or | Geeft True terug als een of bijde statements waar zijn | a < 5 or a < 4 | a = 5 print(a > 3 or a < 4) # geeft True omdat 5 groter is dan 3
not | Draait het andwoord omen geeft False als he andwoord True is. | not(a < 5 and a < 7) | a = 7 print(not(a > 3 and a < 7)) # geeft False niet wordt gebruikt om het andwoord om te keren.

Deze operatoren zijn handig als je iets wil berekenen, zoals het aantal bezoekers van je website. Maar zijn ook handig om te gebruiken om te kijken of iemand een taak goed heeft uitgevoerd om vervolgens verder te mogen in je programma. Stel je moet in een spelletje 10 sterren hebben gehaald om naar de volgende level te gaan. Elke keer dat de speler een ster haalt kijk je of het gehaalde aantal sterren groter of gelijk aan (>=) 10 sterren is, zo ja, dan mag hij door naar de volgende level. Die zo ja, noemen we if statements

## Loops

In programmeren gebruiken we loops. Er zijn twee loop commands die veel gebruikt worden.

- while loops
- for loops

Met een while statement kun je net als met een for loop code herhaaldelijk uitvoeren.

Een for statement voert de loop alleen uit zolang een bepaalde conditie vervuld is.

## While Loop

De while loop voert een actie of statement uit als de conditie waar is.

Bijvoorbeeld: Print de waarde x uit zolang x kleiner is dan 8

    x = 1
    while x < 8:
    print(x)
    x += 1

De output van dit programma ziet er als volgt uit:

Als de loop geen += 1 krijgt blijft hij vooraltijd draaien, want er is geen waarde gegeven die onwaar is.

Om zeker te weten of de lus is beëindigd kun je onder de lus nog een print maken:

    print("Lus beëindigd.")

In sommige gevallen kan het natuurlijk gewenst zijn om een oneindige lus te maken, een voorbeeld hiervan is een webserver, deze heeft een oneindige lus waarin hij een connectie van een client aanvaardt en afhandelt, hierna accepteert hij een nieuwe connectie.

## For Loops

Een andere manier om een lus te maken is het for statement.

Het volgende voorbeeld geeft dezelfde output als het voorbeeld van het for statement:

De eerste regel maakt gebruik van de range(start,einde) functie. Dit genereert een array getallen:

    >>> print(*range(1,8))
    1 2 3 4 5 6 7

De startwaarde wordt wel uitgelezen de eindwaarde wordt niet uitgelezen.

    for x in range(1,8):   # voor elk element in de verzameling()
        print(x).           # print de waarde x
    print("Lus beëindigd.") # print de zin "lus is beëindigd."

De eerste regel kun je lezen als for variabele x in de lijst(1,8).

Hij leest het eerste cijfer uit de lijst uit en schrijft deze weg in de variabele x, dus de x veranderd elke keer dat hij de loop uitvoert. Tijdens de 1e loop wordt de waarde x 1, tijdens de 2e loop wordt de waarde x 2 etc. tot hij bij de 8 komt. De 8 mag niet geprint worden uitvoeren en het programma gaat door naar de volgende stap van de code: print("Lus beëindigd.").

In dit geval zal het geïndenteerde blok opgeroepen worden voor elk element in de lijst, maar zal variabele gelijkgesteld worden aan het huidige element in de lijst (dus de eerste keer zal variabele het eerste element uit de lijst bevatten, de tweede keer het tweede element en zo verder). Dit is een extra voorbeeld van hetzelfde principe, alleen wordt de lijst hier expliciet aangemaakt: