Les 6 - Nog een keer loops … - range() goed gebruiken
Last updated
Was this helpful?
Last updated
Was this helpful?
In één van de vorige lessen hadden we kennisgemaakt met loops (herhalingen). Het gebruik van loops zorgde ervoor dat we met minder code hetzelfde konden bereiken. Een eenvoudige loop waarmee je een vierkant maakt ziet er als volgt uit:
Nu weten we dat door deze loop de opdrachten forward
en right
vier keer worden herhaald.
Maar eigenlijk heb ik nooit uitgelegd wat die i
betekent. En wat doet range
eigenlijk? Daar gaan we in deze les iets dieper op in. Let dus goed op ;)
Allereerst is het belangrijk om te weten dat we in plaats van i
ook een andere naam hadden kunnen kiezen. De meeste programmeurs gebruiken vaak een letter zoals j,k,x,
maar ook het woordje count
. De gouden regel blijft "een gepaste naam dat overeenkomt met de bedoeling ervan".
Deze i
wordt ook wel de loopcounter of de teller genoemd. Tijdens het herhalen wordt hiermee bijgehouden bij welke herhaling de computer is! De eerste keer dat de loop herhaalt, is i
gelijk aan het getal 0. De tweede keer wordt hij 1. De derde keer wordt hij 2 en de vierde keer wordt hij gelijk aan 3. En dan houdt de loop op. Wat kun je hier nu mee? Nou, een hele hoop! Laten we eerst een eenvoudig voorbeeld nemen:
Dit programma tekent 10 stippen achter elkaar. De dikte van elke stip is 1 pixel. Nadat hij een pixel heeft getekend, schuift de turtle 10 pixels op. En dat wordt 10 keer herhaald. Dit kun je hieronder uitproberen:
Bij elke herhaling gebeurt nu hetzelfde. Maar stel dat je na elke herhaling de stip 1 pixel groter wilt maken. Hoe doe je dat dan? Hier komt het antwoord ...
Omdat de i na elke herhaling eentje groter wordt kunnen we dat goed gebruiken. We vervangen de 1 van turtle.dot(1)
met i. Dat ziet er dan als volgt uit:
Je kunt ook een andere naam gebruiken voor i
:
Het resultaat zie je hieronder:
Opdracht 1
Wat verandert er als je in het bovenstaande voorbeeld ook forward(10)
vervangt door turtle.forward(dikte)
?
En wat als je de dikte
vervangt door dikte * 2
?
Opdracht 2
Hierboven zie je een spiraal die uit 400 strepen bestaat. Het allereerste streepje is 0 pixels lang. Vervolgens wordt een 90º hoek naar rechts gemaakt. Daarna een streepje van 1 pixel lang. Dan weer een 90º hoek naar rechts. Daarna een streepje van 2 pixels lang enzovoorts.
Schrijf de functie tekenspiraal()
die dit plaatje maakt.
Opdracht 3
Verander de functie tekenspiraal()
nu zodanig, dat je bij de aanroep kan aangeven uit hoeveel streepjes hij moet bestaan. Dus tekenspiraal(20)
zou dan een piepklein spiraaltje tekenen.
Opdracht 4
Teken de volgende dotspiraal.
De spiraal heeft 50 stippen.
De eerste stip heeft dikte 0 en er komt steeds 1 bij. Kun je ook kleuren toevoegen?
Range is eigenlijk een functie die een lijst van getallen maakt. Zo maakt range(4)
de lijst [0,1,2,3]
. En range(10)
de lijst [0,1,2,3,4,5,6,7,8,9]
. Zoals je nu wel weet wordt tijdens elke herhaling de loopcounter gelijkgesteld aan het volgende getal in de lijst die range maakt. We hebben nu lijsten waarbij de getallen steeds met 0 beginnen en vervolgens met 1 toenemen. Maar stel dat je het volgende lijstje wilt hebben: [10,15,20,25]
. Hoe doe je dat dan? Dat doe je als volgt:
Zie ook het plaatje hieronder:
Uitleg: range
heeft dus in dit geval drie parameters. De eerste bevat de beginwaarde. We willen dus niet meer dat de lijst begint met 0 maar met 10. De tweede bevat de eindwaarde. De lijst wordt dus gevuld tot het getal 30 (niet tot en met!!). En als derde parameter geef je de stapgrootte mee. Die is standaard 1, maar nu hebben we hem ingesteld met 5. De lijst ziet er dan als volgt uit:
[10,15,20,25]
Je krijgt dus vier stippen. Het resultaat kun je hieronder zien:
Opdracht 5
Schrijf een programma waarmee je het volgende figuurtje natekent:
Denk er wel om dat je gebruik maakt van een loop!
Opdracht 6
Maak nu een programma waarmee de turtle het figuurtje van hierboven kan tekenen. Het kleinste vierkantje heeft zijden van 20 pixels. Het grootste vierkantje zijden van 95 pixels.
Je krijgt geen begin. Je moet het nu helemaal zelf doen :)
(VWO+) Kun je er ook voor zorgen dat ieder vierkantje een willekeurige kleur krijgt?
Maak nu een programma waarmee je de volgende spiraal kan maken.
Het eerste streepje is 10 pixels lang. De stappen zijn 5 pixels lang. De laatste streep is 195 pixels lang.