Herhalen met een teller

Op deze pagina ga je herhaallussen gebruiken om een stukje code te herhalen en het aantal herhalingen te tellen. Op deze manier kun je de teller gebruiken om vormen te tekenen met zich herhalende patronen.

Geen Afbeelding Geen Afbeelding

Computerwetenschappers beschrijven de programmastructuur die je hier gaat leren als looping, herhaling of iteratie. In het Nederlands spreken we ook wel van een lus.

Rangschikken, selecteren en itereren zijn de bouwstenen van algoritmes. Kijk nog even bij H1L2P4: Spelersnamen leren voor een opfrisser over rangschikken en selecteren.


Vooraf

Het herhaalblok genereert een oneindige lus die voor zich altijd zal blijven herhalen. Een oneindige lus kan het resultaat zijn van een bug, maar soms is het juist opzet dat het programma blijft lopen totdat het gestopt wordt door de gebruiker.

Je hebt de onderstaande manieren gezien om een groep blokken te herhalen:

Het Geen Afbeeldingblok bevat een teller-variable, Geen Afbeelding, die het aantal herhalingen bijhoudt.

Je kan de naam van de tellervariable aanpassen door erop te klikken.

Gebruik deze tellervariable in een zich herhalend script. Dit versimpelt lange scripts, zoals hieronder.

Geen Afbeelding       doet hetzelfde als Geen Afbeelding

Elke keer wanneer het herhaalblok het script binnenin uitvoert, verhoogt het de waarde van de variabele imet 1. Dit doet het vanaf zijn eerste invoergetal tot aan zijn tweede invoergetal, hier respectievelijk 1 en 10.

  1. Klik op het Geen Afbeelding-menu aan de bovenkant van het snap beeld en selecteer 'Importeer Tools.'
  2. Het herhaalblok geeft je een standaard variabele, i ( de i staat voor index). Verander de naam van deze variabele door er op te klikken. Eenmaal veranderd, sleep je het buiten zijn vakje en kan je het gebruiken zoals elke variabele.

  3. Bouw dit script waarin een sprite alle getallen tussen 1 en 10 zegt.

    Geen Afbeelding

    1. Pas dit script nu aan zodat de sprite de reeks 0, 2, 4, 6, 8, ... tot en met 30 zegt.
    2. Bespreek hoe je de stap hierboven hebt gedaan met je partner of iemand anders.

  4. Experimenteer met spiralen.
    1. Bouw het onderstaande script en voer het uit.

      Geen Afbeelding
    2. Geen Afbeelding Bespreek met elkaar waarom de vierkante spiraal naar buiten draait.
    3. Probeer eens om in het script van de vierkante spiraal, het eerste en tweede invoergetal te verwisselen in het herhaalblok. Wat is het resultaat hiervan?
    4. Probeer eens om de draaihoek in het vierkant-script te veranderen naar andere getallen zoals 92, 126, etc.
    5. Verander de invoer in de draai graden- en de neem stappenblokken, om zo dicht mogelijk in de buurt te komen van een ronde spiraal:
      Geen Afbeelding
  5. Geen Afbeelding Sla je werk op als H1L3-VierkanteSpiraal
  1. Open je H1L3-Molen project en bouw een geneste_vierkantenblok dat een herhaalblok en je veelhoekblok gebruikt, om zo een aantal geneste vierkanten te tekenen. "Genest" betekent dat de vierkanten in elkaar zitten. Geef het een invoer zodanig dat het een willekeurig aantal vierkanten zal tekenen die jij specificeert, met elk vierkant groter dan de voorgaande:
    Geen Afbeelding

  2. Bouw nu een geneste_veelhoekenblok dat als invoer een bepaald aantal veelhoeken en een bepaald aantal kanten voor de veelhoeken heeft.

  3. Bouw een script dat twaalf gewone veelhoeken tekent. Elk met steeds één kant meer dan de voorgaande, zoals hieronder weergegeven.
    Geen Afbeelding

  4. Voorspel wat het onderstaande script doet, voordat je het uitprobeert:

    Geen Afbeelding

  Geen Afbeelding

  1. Bouw een script dat met stappen van 10 aftelt van 100 tot 0 (dus, 100, 90, 80, etc.).

  2. Zoek een manier om het forblok te gebruiken om geneste vierkanten te tekenen.
    Bouw je blok met twee invoeren die zeggen hoeveel vierkanten het ontwerp bevat en hoeveel groter elk vierkant zal worden ten opzichte van de vorige.

    Geen Afbeelding

  3. Hieronder staan twee animaties die de molencode gebruiken met verschillende invoeren. Probeer zelf ook zo'n artistieke animaties kunt maken.

    Geen Afbeelding Geen Afbeelding

    De onderstaande code geeft inzicht in hoe je animaties kunt maken. Zorg ervoor dat je alle wacht 0.5 sec blokken uit je molencode hebt verwijderd, zodat ze het script niet vertragen. Code die omringd wordt door een warpblok, wordt in één keer tegelijkertijd uitgevoerd.

    Geen Afbeelding

  4. Geen Afbeelding Geen Afbeelding Geen Afbeelding
    Dit blok is vergelijkbaar met het script dat de vierkante spiraal tekent. Maar het verandert de invoer voor het neem stappenblok, in plaats van de invoer voor het draai gradenblok.
    Geen Afbeelding

    1. Probeer te schetsen wat dit blok zal tekenen als de invoer voor de hoek 2 is.
      Het aantal herhalingen en de grootte bepaal je zelf.
    2. Bouw nu het blok na en probeer deze tests:

      Geen Afbeelding
    3. Stop een test met de `stop-knop` Geen Afbeelding als je er zeker van bent dat er niks nieuws gaat gebeuren. Maar beslis dit nooit te snel!

    4. Wat gebeurt er? Kun je een theorie uitwerken om iets te voorspellen over de vorm die het tekent voor een bepaalde hoekinvoer?

      Denk aan deelbaarheid.

TerugVolgende