Herhaalde uitvoering Bepaalde en onbepaalde lussen.

Slides:



Advertisements
Verwante presentaties
HET CSE NEDERLANDS. Je spreekt toch al jaren
Advertisements


Sudoku puzzels: hoe los je ze op en hoe maak je ze?
PSD Basisstructuren programmeren.
Spelbegeleiding Zaalhockey Jongste Jeugd
Welkom iPad of Laptop uit. Tassen tegen de achterwand s.v.p. Ga rustig zitten en wacht tot de les begint. Tafels staan opgestapeld, blaadje met pen ligt.
Sander Mager Roel Lafeber CE2A. Sinds een aantal maanden ben ik erg fanatiek de game ‘’Candy Crush’’ aan het spelen. Een klasgenootje van mij speelde.
Workshop harde schijf indelen
Programmeren met Alice
Goethals Frederik Vakdidactiek 17 – Goethals Frederik
Poëzie December.
Practica Computerlinguistiek Tekst en uitleg:
Componenten van een algoritme Variabelen en hun Inhoud Instructies Sekwenties (van instructies) Selecties (tussen instructies) Herhalingen (van instructies)
Datastructuren Analyse van Algoritmen en O
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
VBA en VBS Een introductie.
Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)
Hoofdstuk 6: Controle structuren
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Les 2 Basisbouwstenen (deel 1)
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Stijn Van Wonterghem1 ALICE Een inleiding. Alice - Een Inleiding2 Wat is ALICE? Een moderne programmeeromgeving –Visuele voorstelling, opgebouwd uit drie-
Stijn Van Wonterghem1 ALICE Een animatie opbouwen.
Beroepsvaardigheden onderdeel van SBC
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
Datastructuren Sorteren, zoeken en tijdsanalyse
Object georiënteerd programmeren in Alice
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
ALLES EN NOG VEEL MEER OVER HET VERKEER !
G!DS Basismodule Trainingsdag 2 Naam, functie Datum, plaats.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Ieder zijn leerstijl Voor we over leerstijl spreken moeten we duidelijk weten wat leren is. ‘Leren is het verwerven van nieuwe competenties’. Dit leren.
Vraag aan de Helpdesk: Hoe kan ik LIEFDE installeren?
Les 2: Interactie in je space door middel van klikbare objecten en actionscript. Wat is actionscript en programmeren?
Visie & Strategie.
Les 3 Basisbouwstenen (deel 2) Programmeren met Visual Basic Karl Moens.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
CONTROLESTRUCTUREN (DEEL 1)
Hoofdstuk 3 - Conditionele logica
Torens van Hanoi ● Uitgevonden door Franse Wiskundige Edouard Lucas in ● Beschreven in zijn wiskundig “spelletjesboek” Récréations Mathématiques.
Programmeren.
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
verhoudingen – breuken – procenten - kommagetallen
Onderzoeksvaardigheden 3
Methodiek: Plancyclus
LEVENDE OCEANEN Wat weten jullie al over de oceanen? Maak een mindmap en schrijf alles op! In de oceanen leven duizenden bijzondere diersoorten. Ook hebben.
Is ‘t kofschip gezonken…?
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Raadsels oplopend in moeilijkheidsgraad
C++ Les 1: introductie. Programmeren Programma’s scripts Websites libraries (Sound, GUI, netwerking…)
Loops en errors Array's Random try catch for loop while loop do while loop.
GUI & classes Een Gui in een class steken en het object gebruiken.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Vandaag: Restant les 3 Verhoudingen
Programmeren met Reeksen
Wat zit er allemaal in je hoofd ?
BEGINNER EV3 PROGRAMMEER Les
Gameprogrammeren: Herhalingen
De gyroscoop en omgaan met overgevoeligheid
Political Communication & Journalism
Small Basic Console deel 2
GAME MAKER ONLINE Les 3 / Pac-Man Michel Fiege.
Small Basic Console deel 2
SQL Les February 2019.
Leren programmeren met Scratch
Software Development fundamentals
EEN SPEL MAKEN MET SCRATCH
Python – For loop + strings
Python – For loop + strings
Transcript van de presentatie:

Herhaalde uitvoering Bepaalde en onbepaalde lussen

Herhaalde 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.

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’

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

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

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

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 -> 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

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

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

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.

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?

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.

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

Onbepaalde herhaling In programma’s 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

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

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

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.

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.

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

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

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

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

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)

BDE event Events -> 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.