Fractals

In dit project ga je herhaalblokken 'nesten' in herhaalblokken om complexe afbeeldingen te maken.





  1. "H2L4-FractaleKunst"
  2. Bouw een script dat een rode driehoek tekent, maak daarna twee kopieën van dit script. Laat de eerste kopie een blauwe driehoek tekenen half zo groot als de rode. Laat de tweede kopie een groene driehoek tekenen half zo groot als de blauwe.
    • Om een script te kopiëren, klik je met de rechter muisknop (of met de linker muisknop terwijl je Ctrl ingedrukt houdt) op het eerste blok van het script (in dit geval het herhaal blok) en kies je 'kopieer'.
    • Daarna verander je de invoer om de kopie te laten doen wat je wilt. Deze video laat het hele proces zien:

    Geen Afbeelding

  3. Probeer ieder script een keer uit om zeker weten wat het doet. Wis daarna het speelveld.
  4. Plaats nu het script van de blauwe driehoek tussen de neem stappen- en draaiblokken van de rode driehoek, zoals hieronder.

    Geen Afbeelding

  5. Voorspel wat er zal gebeuren als je dit script uitvoert.

  6. Kijk dan wat het script doet.

Debuggen met Stapsgewijs Programmaverloop

Snap! heeft een eigen debug-tool: Stapsgewijs Programmaverloop. Met deze tool kan je stap voor stap door de code lopen. Zo kun je de werking van elk blok bestuderen, fouten opsporen en verbeteringen in het geheel aanbrengen.

Nadat je op de Stapsgewijs Programmaverloop-knop hebt geklikt, kan je de stapsnelheid bepalen met de schuif rechts naast de knop. De sprite voert elke stap van de code uit, aangegeven door het oplichten van het betreffende blok.


Geen Afbeelding

Met de schuif helemaal naar links verandert de gele pauze-knop in een slowmotion-knop. Hierop klikken kan je helpen om te zien wat er op een specifiek moment gebeurt.


Geen Afbeelding
  1. Bedenk met behulp van de scripts die je hebt, een manier om deze afbeelding te maken. Gebruik Stapsgewijs Programmaverloop om eventuele bugs te vinden.


  1. Voeg op dezelfde manier aan deze driehoeken nog een driehoek toe, half zo groot als de groene.

Abstractie gebruiken om driehoeken te nesten

Voelt al dit knippen en plakken van code een beetje raar? Je kent al een betere manier: abstractie.
In Hoofdstuk 1 heb je een molenblok gebruikt om asterisk en veelhoek te implementeren, in plaats het kopiëren van de code. Nu kan je ook weer een blok maken om abstractie te realiseren. Maar in dit geval willen we vergelijkbare code (een kleinere driehoek) plaatsen in de originele code. We zullen dus het blok binnen zichzelf 'nesten'.


  1. Maak een geneste driehoekblok.
    1. Ontwerp een blok met één invoer, grootte. Laat voor nu even het deel over kleur veranderen weg.


    2. Gebruik je driehoekscript uit het begin van deze les als inhoud van het blok, en vergeet niet de invoer toe te voegen. Voeg ook een voorwaarde toe: teken de driehoek alleen als hij groot genoeg is. Hieronder zie je dat deze voorwaarde wordt gecontroleerd met het predikaat grootte > 9. Deze voorwaarde is belangrijk voor later.


    3. Klik op 'OK' in het 'Maak een blok'-venster, zodat het blok links verschijnt in het Bewegen-palet.
    4. Probeer dit blok te gebruiken met ten minste de invoeren 9, 18, 20 en 100, zodat je zeker weet dat het werkt zoals je verwacht.

  2. Bij stap 4 in deze les sleepte je een kopie van het driehoekscript tussen de neem stappen- en draaiblokken. Je kan iets soortgelijks doen met je geneste driehoekblok.
    1. Sleep van het palet een kopie van het geneste driehoekblok naar het venster waar je het geneste driehoekblok maakt. Zet het blok in de definitie van geneste driehoek tussen de neem stappen en draaiblokken. Maak zijn grootte invoer de helft van de huidige waarde van grootte.


    2. Probeer je blok opnieuw uit met de invoeren 9, 18, 20 en 100.

      Recursief

      Je gebruikt geneste driehoek in zijn eigen definitie. Als een blok naar zichzelf verwijst, dan noem je dit blok recursief. Recursie is een van de meest krachtige technieken in de informatica en je gaat er meer over leren in latere projecten.
  3. Gebruik geneste driehoek als een voorbeeld om een recursief genest vierkantblok te bouwen.




  1. Probeer een kleurinvoer toe te voegen, gebruikmakend van
    in plaats van , zodat je de kleur kan veranderen terwijl je tekent.

    Probeer in de 'recursieve oproep' (het blok binnenin met de gehalveerde grootte) 10 toe te voegen aan de kleur. Voordat je dit blok uitprobeert, gebruik om een felle kleur te kiezen, niet bijna wit of bijna zwart. Daarna kan je elk getal gebruiken als invoer voor je nieuwe blok.

  2. Bekijk deze code zonder het uit te voeren:


    1. Voorspel hoeveel blauwe vormen het scipt zal tekenen.
    2. Probeer te schetsen wat het zal opleveren.
    3. Als er nog een kopie van het originele script in de blauwe versie zit, hoe vaak wordt die vorm dan getekend?

TerugVolgende