Naar de inhoud
Lus, naar de startpagina
Algoritmes

Herhalen en kiezen: lussen en voorwaarden

Met een lus laat je een computer iets herhalen, met een voorwaarde laat je hem kiezen. Zo worden lange programma's kort en slim.

5e-6e leerjaar10 tot 13 jaarConcept: Nog niet nagelezen door een leerkracht informatica.

Waarom

Je wilt een robot tien vakjes vooruit laten gaan. Moet je dan echt tien keer “ga vooruit” schrijven?

Dat kan, maar het is saai en je maakt snel een fout. Programmeurs schrijven liever één keer: herhaal 10 keer, ga vooruit.

En wat als er een muur staat? Dan moet de robot kunnen kiezen: als er een muur voor je staat, draai, anders ga vooruit. Met herhalen en kiezen kan een kort programma heel veel.

Zie het

Kies een programma en speel het stap voor stap af. Links staan de blokken in je eigen taal, rechts dezelfde regels als code. De regel die nu loopt, licht op.

ABCDE12345
Blokken
  1. herhaal 4 keer
  2. ga 1 vakje vooruit
  3. ga 1 vakje vooruit
  4. draai naar rechts
Code
for i in range(4):
    move()
    move()
    turn_right()

De blokken en de code zijn hetzelfde programma, regel per regel. De code lijkt op Python en gebruikt Engelse woorden, zoals echte code.

stap 0 van 16
Het programma staat klaar. De robot staat op B4 en kijkt naar boven.
Beschrijving van het beeld

Een rooster met kolommen A tot F en rijen 1 tot 6, een robot met een neus die toont waar hij naar kijkt, soms muren en een vlag. Naast het rooster staat het programma twee keer: als blokken, zoals herhaal 4 keer en draai naar rechts, en als code, zoals for i in range(4) en turn_right(). Bij elke stap beweegt de robot en licht de regel op die hij uitvoert.

Snap het

Een programma is een rijtje opdrachten die de computer één voor één uitvoert, van boven naar onder. Dat heet een reeks.

Een lus herhaalt de opdrachten die erin staan. In de blokken staat herhaal 4 keer, in de code for i in range(4):. Wat erin hoort, schuift een stukje naar rechts in. range(4) telt 0, 1, 2, 3: dat zijn vier rondes.

Een voorwaarde laat de computer kiezen. if wall_ahead(): betekent: als er een muur voor je staat. Dan doet hij wat eronder staat, en anders (else:) iets anders.

Een lus met een voorwaarde erin is heel sterk. while path_ahead(): betekent: zolang de weg vrij is, blijf herhalen. De robot stopt vanzelf bij de muur, hoe ver die ook is.

In Lus zie je altijd twee vormen van hetzelfde programma: blokken in je eigen taal en code met Engelse woorden, zoals echte programmeertalen die gebruiken. Het zijn dezelfde regels, met hetzelfde nummer.

De regel

Reeks: van boven naar onder. Lus: herhaal wat inspringt. Voorwaarde: als dit waar is, doe dat, anders iets anders.

Uitgewerkt voorbeeld

De robot staat op A5 en kijkt naar boven. Waar staat hij na dit programma?

  1. Het programma:

    for i in range(3):
        move()
    turn_right()
    move()
    move()
  2. De lus loopt 3 keer: de robot gaat van A5 naar A4, A3 en A2.

  3. Daarna draait hij naar rechts en gaat twee vakjes vooruit: B2, C2.

  4. Antwoord

    De robot staat op C2 en kijkt naar rechts.

Doe het

Kies een niveau. Je krijgt telkens een nieuwe opgave, die meteen nagekeken wordt.

Oefenen

De robot start op B3 en kijkt naar rechts. Op welk vakje staat hij na dit programma?

De robot start op B3 en kijkt naar rechts. Op welk vakje staat hij na dit programma?
ABCDE12345
Blokken
  1. herhaal 2 keer
  2. ga 1 vakje vooruit
  3. draai naar links
  4. ga 1 vakje vooruit
  5. ga 1 vakje vooruit
Code
for i in range(2):
    move()
    turn_left()
move()
move()
Kies het juiste antwoord

Valkuilen

  • Fout: range(4) telt 1, 2, 3, 4.

    Python begint te tellen bij 0. Het zijn wel vier rondes, maar de teller is 0, 1, 2 en 3.

    Juist: range(n) geeft n rondes, met de teller van 0 tot n − 1.

  • Fout: Alles onder een lus wordt herhaald.

    Alleen de regels die inspringen horen bij de lus. Een regel die weer links begint, komt pas na de lus.

    Juist: Kijk naar het inspringen: dat toont wat bij de lus of bij de voorwaarde hoort.

  • Fout: Een while-lus stopt na een vast aantal keer.

    Een while-lus herhaalt zolang de voorwaarde waar is. Wordt die nooit onwaar, dan stopt de lus nooit.

    Juist: Zorg dat er iets verandert in de lus, zodat de voorwaarde ooit onwaar wordt.

In het echt

  • Een verkeerslicht herhaalt zijn lus de hele dag: groen, oranje, rood, en weer van voren af aan.
  • Een robotstofzuiger rijdt rechtdoor zolang de weg vrij is, en draait als hij een muur of een stoelpoot voelt.
  • In een spel controleert de computer telkens opnieuw: als je de munt raakt, krijg je een punt.
  • Een thermostaat kijkt steeds: als het kouder is dan ingesteld, gaat de verwarming aan.

Geschiedenis

In 1843 schreef Ada Lovelace notities bij de Analytical Engine van Charles Babbage, een rekenmachine die nooit helemaal gebouwd werd. Ze beschreef er stap voor stap hoe de machine een reeks getallen kon berekenen, met stappen die herhaald worden. Daarom noemt men haar vaak de eerste programmeur.

Aan tafel

Speel samen robot op de tegels van de keuken. Eén iemand schrijft een programma met herhaal en als, de ander voert het letterlijk uit. Lukt het om bij de koelkast te komen?

Een vraag om samen over te praten, voor ouders en kinderen. Er is geen fout antwoord.

Fout gezien?

Een paar woorden is genoeg. We kijken het na en passen het aan.

Zoeken

Even laden…

Leesgemak

Kies wat helpt. Je keuze blijft bewaard op dit toestel.

Tekstgrootte

Gebruik je liever de instellingen van je toestel (zoom, schermlezer, donkere modus)? Die werken hier ook gewoon.