Herhaalde uitvoering - PowerPoint PPT Presentation

About This Presentation
Title:

Herhaalde uitvoering

Description:

Title: Creating A New Instruction Method Author: Wanda Dann Last modified by: Frederic Iterbeke Created Date: 9/11/2001 10:09:05 AM Document presentation format – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 25
Provided by: Wand115
Category:

less

Transcript and Presenter's Notes

Title: Herhaalde uitvoering


1
Herhaalde uitvoering
  • Bepaalde en onbepaalde lussen

2
Her haalde uitvoering
  • Zoals in de echte wereld worden ook in een
    programma vele acties herhaaldelijk uitgevoerd.
  • Voorbeeld
  • echte wereld een machine in een autofabriek
    maakt elke dag 250 identieke autodeuren.
  • programma een schietspelletje toont om de 5
    seconden een schietschijf op het scherm totdat
    het spel gedaan is.
  • In een programma worden acties herhaaldelijk
    uitgevoerd door éénzelfde instructie of methode
    meerdere keren na elkaar uit te voeren.

3
Oefening (bunnyHop)
  • Een konijn sluipt een tuin binnen en wil een
    stukje broccoli eten. Daartoe moet het konijn
    meerdere keren naar de broccoli toe springen.
  • Gebruik de methode hop van het object bunny

4
Een oplossing
  • Do in order
  • bunny.turn to face brocolli
  • bunny.hop
  • bunny.hop
  • bunny.hop
  • bunny.hop
  • bunny.hop
  • bunny.hop
  • bunny.hop
  • bunny.hop

5
Herhaalde uitvoering
  • Meerdere keren dezelfde instructie na elkaar
    zetten is enigzins tijdrovend en nogal
    onoverzichtelijk
  • De programmacode wordt langer en langer
  • We zouden liever de instructie slechts 1 keer
    moeten opschrijven en het programma vertellen dat
    die instructie een aantal keer herhaald moet
    worden
  • In Alice kan dit met de loop-instructie

6
Herhaling counted loop
  • De loop instructie is een alternatieve manier om
    repetitieve code te schrijven.
  • Counted loop tellende lus
  • Herhaalt instructies een bepaald (geteld)
    aantal keer

7
Oefening
  • Idem als de vorige oefening, maar nu met gebruik
    van de loop-instructie.
  • Belangrijk
  • De loop-instructie voert de code in zijn blok een
    bepaald aantal keer uit, gespecifieerd door een
    teller
  • De waarde van de teller moet geheel en positief
    zijn (negatieve waarde -gt lus voert niet uit)
  • De code in het blok van de loop kan een enkele
    instructie zijn of een blok instructies (dus ook
    if-else, do together, )
  • Het gebruik van een loop-instructie
  • bespaart tijd
  • is overzichtelijker

8
Oneindige herhaling demo
  • Het aantal keer dat een lus loopt, kan ook
    oneindig zijn ( infinity)
  • Als Infinity times is geselecteerd voor een
    lusteller, betekent dit dat de lus zal blijven
    uitvoeren tot wanneer het programma gestopt
    wordt.
  • Demonstratie Carrousel

9
Complexere lusconstructies
  • Zoals reeds vermeld kan de code binnen een lus
    eender welke instructie of blok instructies zijn
  • Het is dus ook mogelijk om een lus binnen een
    andere lus te plaatsen
  • We noemen dit geneste lussen (nested loops) de
    binnenste lus is genest binnenin de buitenste
    lus

10
Oefening (ferrisWheel)
Het grote rad (doublewheel) draait in wijzerszin,
terwijl de 2 kleine wielen (wheel1 en wheel2) in
tegenwijzerszin draaien. De kleine wielen moeten
2 keer ronddraaien voor elke omwenteling van het
grote wiel. Laat het grote rad 5 keer draaien.
11
Geneste lussen
  • Merk op
  • De binnenste lus loopt volledig voor elke
    iteratie van de buitenste lus.
  • Als de buitenste lus 5 keer loopt en de
    binnenste lus 2 keer, dan zal de binnenste lus in
    totaal 10 keer uitgevoerd worden.
  • Stel de teller van de buitenste lus in op 1, en
    die van de binnenste lus op 2. Wat zie je?

12
Een functie als teller
  • Een waarde voor de teller van een lus kan bepaald
    worden door een functie!
  • De loop-instructie rondt het teruggekregen getal
    (return value) van de functie automatisch (naar
    beneden) af naar een geheel getal.
  • Oefening pas de bunnyHop wereld aan zodat de
    teller van de lus bepaald wordt door een functie.

13
Onbepaalde herhaalde uitvoering
  • Tot dusver hebben we enkel situaties gezien
    waarbij we weten hoeveel keer de instructie(s)
    binnen de lus moeten worden uitgevoerd (eventueel
    bepaald door een functie)
  • Er zijn echter ook situaties waar het feit of de
    instructie(s) herhaald worden, afhankelijk is van
    een voorwaarde ( conditie)
  • We weten dus niet op voorhand hoeveel keer de lus
    moet uitgevoerd worden, al wat we weten is dat er
    herhaling nodig is
  • Daarom noemen we dit onbepaalde herhaling
  • Voorbeeld Zolang ik niet op school ben, blijf ik
    verder fietsen

14
Onbepaalde herhaling
  • In programmas waarin het aantal keer dat een
    actie herhaald moet worden niet gekend is
    (onbepaald), kan men 2 soorten
    controlemechanismen gebruiken
  • de While-instructie
  • recursie
  • We gaan verder in op de while-instructie

15
Werking van een while-lus
  • Het algemene principe
  • Zolang een bepaalde conditie waar
    is
  • voer instructie(s) uit
  • Om een while-instructie te schrijven, moeten we
    dus weten wat de voorwaarde is die bepaalt of de
    lus blijft draaien

16
While-lus
  • De voorwaarde is een Booleaanse conditie (net als
    bij de if-instructie), die telkens opnieuw wordt
    geëvalueerd is de conditie waar, dan worden de
    instructies in de lus uitgevoerd is de conditie
    niet waar, dan worden de instructies in de lus
    overgeslagen
  • Zolang de conditie waar blijft, zal de lus dus
    blijven draaien als de conditie vals wordt,
    stopt de lus. Daarom wordt de conditie ook soms
    een guard of bewaker genoemd. De conditie
    bewaakt als het ware de lus.
  • while conditionele herhaling
  • Syntax (in Alice)
  • while ltconditiegt
  • ltinstructiesgt

17
Oefeningen
  • Pas de bunnyHop wereld aan zodat het konijn naar
    de broccoli toespringt zolang het konijn verder
    dan een halve meter verwijderd is van de
    broccoli. Gebruik hiervoor een while-lus.
  • Een achtervolging een haai zit een visje
    achterna. Het visje probeert te vluchten maar de
    haai haalt het in en uiteindelijk wordt het visje
    opgegeten.

18
Probleem
  • Hoe laten we de haai de vis achtervolgen?
  • De haai mag het visje niet onmiddellijk vangen
    want dan is er geen achtervolging
  • De vis moet vluchten
  • Oplossing
  • We laten de haai een korte afstand naar de vis
    toe zwemmen en tegelijkertijd de vis een korte
    afstand van de haai wegzwemmen
  • De vis zal naar een willekeurige (maar dichtbije)
    plaats vluchten
  • Zolang de vis verder dan 0.5 meter verwijderd is
    van de haai, herhalen we bovenstaande stappen.

19
Oefening chase
  • Schrijf een verhaalbord uit
  • Splits op in verschillende logische delen (via
    methoden)
  • Implementeer in Alice, aangenomen dat
  • de haai elke keer 0.4 meter vooruit zwemt
  • het visje elke keer maximum 0.2 meter vooruit
    zwemt, en zijwaarts en verticaal ook maximum 0.2
    meter uitwijkt
  • Hint gebruik de randomMotion methode van
    goldfish

20
Opmerking
  • We zijn zeker dat de lus zal eindigen want de
    haai beweegt elke keer 0.4 meter vooruit terwijl
    de vis maximum 0.35 meter van de haai weg kan
    bewegen

0.35
0.2
0.2
0.2
21
Algemene regel
  • Een while-loop is normaalgezien eindig, en moet
    dus zo geschreven worden
  • de instructies in de lus moeten de toestand van
    de wereld zodanig veranderen dat de conditie
    waarvan de while-loop afhangt, uiteindelijk vals
    wordt
  • Een while-loop kan ook oneindig zijn, dit
    betekent dat zijn conditie nooit vals wordt
  • while true is equivalent aan loop infinity

22
Het Begin-During-End event
  • In een while-lus wordt een actie herhaald zolang
    een bepaalde conditie waar is
  • Soms willen we dat een actie wordt uitgevoerd
    wanneer de conditie vals wordt en de loop eindigt
  • Wanneer later de conditie terug waar wordt, moet
    alles opnieuw uitgevoerd worden
  • Alice heeft hier een speciale constructie voor
    het begin-during-end event

23
BDE event oefening
  • Een konijn is gestrand op een eiland na een
    vliegtuigramp, en een helikopter komt het konijn
    redden. De helikopter cirkelt rond het eiland. We
    willen nu dat het konijn naar de helikopter kijkt
    wanneer die zich voor het konijn bevindt.
    Bovendien willen we dat het konijn ernaar blijft
    kijken (en dus zijn hoofd draaien) zolang de
    helikopter zich vóór hem bevindt. Tenslotte
    willen we ook dat het konijn terug naar de camera
    kijkt wanneer de helikopter uit zicht verdwenen
    is. (wereld lost)

24
BDE event
  • Events -gt create new event
  • Selecteer while something is true
  • Vul de booleaanse conditie in
  • Specifieer (de nodige) acties
  • begin wat moet er gebeuren wanneer de conditie
    waar wordt (1 keer per loop)
  • during wat moet er gebeuren tot wanneer de
    conditie vals wordt (meerdere keren per loop)
  • end wat moet er gebeuren wanneer de conditie
    vals wordt (1 keer per loop)
  • In sommige situaties zijn niet alle acties nodig,
    dan laten we dat deel gewoon leeg.
Write a Comment
User Comments (0)
About PowerShow.com