opdracht 2: dodo laten bewegen - radboud universiteitcourse.cs.ru.nl/greenfoot/docs/opdrachten...

26
Opdracht 2: Dodo laten bewegen Algoritmisch Denken en Gestructureerd Programmeren (in Greenfoot) c 2017 Renske Smetsers-Weeda & Sjaak Smetsers 1 Inhoudsopgave Inleiding 1 Leerdoelen 1 Instructies 1 Theorie 2 2.1 Stroomdiagrammen ............................................ 2 2.2 Stappenplan voor het ontwikkelen van een oplossing ........................ 4 2.3 Opeenvolging van taken .......................................... 5 2.4 Testen (en debuggen) ............................................ 5 2.5 Vergelijken .................................................. 6 2.6 Beslissingen: if..then..else ...................................... 7 2.7 Een wereld openen vanuit een bestand ................................. 8 2.8 Kopi¨ eren is saai en foutgevoelig: op zoek naar een generieke oplossing .............. 8 2.9 Herhaling: while .............................................. 9 2.10 Nesten .................................................... 10 Uitdagingen 14 2.1 Reeks van instructies: gotoEgg ...................................... 14 2.2 Een reeks met meerdere instructies ................................... 15 2.3 Niet door hekken lopen .......................................... 16 2.4 Jouw eigen opeenvolging: climbOverFence( ) ............................ 17 2.5 Vind graan .................................................. 17 2.6 Herhaling met een while: gotoEgg( ) ................................. 19 2.7 Loop tot einde van de wereld ....................................... 20 2.8 Loop terug naar begin van rij ....................................... 21 2.9 Submethodes combineren: walkToWorldEdgeClimbingOverFences( ) ............ 21 2.10 Complimentjes geven ........................................... 22 2.11 Pak granen op en druk co¨ ordinaten af ................................. 22 1 Licensed under the Creative Commons Attribution 4.0 license: https://creativecommons.org/licenses/by/4.0/

Upload: others

Post on 12-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Opdracht 2: Dodo laten bewegen

Algoritmisch Denken en Gestructureerd Programmeren (in Greenfoot)c© 2017 Renske Smetsers-Weeda & Sjaak Smetsers1

Inhoudsopgave

Inleiding 1

Leerdoelen 1

Instructies 1

Theorie 22.1 Stroomdiagrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Stappenplan voor het ontwikkelen van een oplossing . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Opeenvolging van taken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4 Testen (en debuggen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.5 Vergelijken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.6 Beslissingen: if..then..else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.7 Een wereld openen vanuit een bestand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.8 Kopieren is saai en foutgevoelig: op zoek naar een generieke oplossing . . . . . . . . . . . . . . 82.9 Herhaling: while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.10 Nesten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Uitdagingen 142.1 Reeks van instructies: gotoEgg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2 Een reeks met meerdere instructies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Niet door hekken lopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Jouw eigen opeenvolging: climbOverFence( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Vind graan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.6 Herhaling met een while: gotoEgg( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.7 Loop tot einde van de wereld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.8 Loop terug naar begin van rij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.9 Submethodes combineren: walkToWorldEdgeClimbingOverFences( ) . . . . . . . . . . . . 212.10 Complimentjes geven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.11 Pak granen op en druk coordinaten af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Licensed under the Creative Commons Attribution 4.0 license: https://creativecommons.org/licenses/by/4.0/

Page 2: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Reflectie 23

Opslaan en inleveren 24

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 2

Page 3: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Inleiding

In de vorige opgave maakte je kennis met Greenfoot. Je hebt nu wat basiskennis opgedaan en bent instaat om code te lezen, aanpassingen door te voeren en deze te testen. Nu kun je, met behulp van eenaantal Java taalconstructies, beginnen met het schrijven van jouw eigen code.In deze opdracht zul je jouw eigen algoritmes ontwikkelen en die in Greenfoot uitproberen. Wezullen oefenen om dit op een gestructureerde manier te doen, eerst door een algoritme in een stroom-diagram weer te geven, en daarna dit stapsgewijs in werkende code om te zetten.Doelen

De doelen van deze tweede opdracht zijn:• Oplossingen ontwerpen, implementeren en testen;

• Kennismaken met de Greenfoot omgeving.

Scenario

Voor deze opdracht heb je een nieuw scenario nodig: ’DodoScenario2’. Vanaf nu zul je steeds verderwerken met hetzelfde scenario waaraan je zelfgeschreven code toevoegt.

Leerdoelen

Na afloop van deze opdracht kun je:• een algoritme ontwikkelen voor een problem door de benodigde opeenvolgingen, beslissingenen herhalingen voor een oplossing te identificeren.• aan de hand van begin- en eindsituaties, redeneren over de correctheid van een algoritme.• een algoritme weergeven in een stroomdiagram.• een stroomdiagram omzetten naar programmacode.• submethodes combineren om (complexe) problemen op te lossen.• NIET, EN en OF en andere booleanmethodes toepassen in een conditioneel statement.• een return-statement gebruiken in een stroomdiagram en in code.• gestructureerd en stapsgewijs code aanpassingen doorvoeren en testen.• fouten opsporen in code, foutmeldingen analyseren en deze gebruiken om problemen op telossen (debuggen).• een generiek algoritme opstellen en implementeren.

Instructies

Voor deze opdracht heb je het ’DodoScenario2’ scenario nodig. Dit moet je downloaden.Tijdens de opdracht zul je wat vragen moeten beantwoorden. Je moet het volgende inleveren:• Alle stroomdiagrammen: gebruik potlood en papier, of maak gebruik van de software op https://www.draw.io/;

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 1

Page 4: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

• Jouw code: het bestand MyDodo.jav bevat al jouw code en moet ingeleverd worden;• Het reflectieblad: vul in en lever het in.Je moet al jouw antwoorden met je partner te bespreken. Noteer kort jullie antwoorden.

Er zijn drie soorten taken:

Aanbevolen. Leerlingen met weinig programmeerervaring, of leerlingen die wat meeroefening nodig hebben, moeten deze taken allemaal afmaken.Verplicht. Iedereen moet deze taken afmaken.Uitdagend. Complexere opgaven, ontwikkeld voor leerlingen die de 2-ster opdrachtenvoltooid hebben en klaar zijn voor een grotere uitdaging.

LLeerlingen die 1-ster taken overslaan moeten alle 3-ster taken maken.Opmerking:

• In deze opdracht mag je alleen aanpassingen maken in MyDodo;• Je mag methodes gebruiken uit de MyDodo of Dodo klasse, maar niet uit de Actor klasse;• ‘Teleporteren’ is niet toegestaan: als Mimi ergens moet zijn, dan moet ze daar zelf stap voor stapheenlopen (ze mag er niet in een keer naar toe springen).

Theorie

Theorie 2.1: Stroomdiagrammen

Een algoritme kan visueel weergegeven worden in een stroomdiagram. Daarna kan het worden omge-zet naar code.

Figuur 1: Stroomdiagram

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 2

Page 5: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Een probleem opdelen in kleinere problemen

Soms is een probleem zo ingewikkeld dat de oplossing uit meerdere stappen bestaat. Dan weet jemisschien niet waar je moet beginnen, of verdrink je in de details. Het probleem kan dan groter lijkendat het eigenlijk is.Een stroomdiagram kan helpen om een probleem op te delen in kleinere problemen (ook wel de-compositie genoemd). Eerst moet je op hoog niveau een plan bedenken: wat moet er gebeuren en inwelke volgorde.Door die stappen in een stroomdiagram te zetten heb je een beeld van de oplossing als geheel.Daarna kun je iedere stap (of deelprobleem) apart aanpakken zonder je meteen druk te maken overhet geheel. Nadat je dat deelprobleem hebt opgelost en getest, hoef je je niet meer bezig te houden metde details daarvan. Je kan de oplossing als een bouwsteen gebruiken voor het oplossen van grotereproblemen. Deze aanpak, waarin je grotere problemen opdeelt in kleinere problemen heet decompo-sitie of verdeel-en-heers. Als je alle deelproblemen hebt opgelost, controleer je natuurlijk nog even ofje het probleem als geheel hebt opgelost.Hoe een stroomdiagram eruitziet

Een stroomdiagram bestaat uit de volgende onderdelen:

Figuur 2: Onderdelen van een stroomdiagramRegels voor stroomdiagrammen

• Elk stroomdiagram heeft een naam.• Er zijn geen onderdelen die los ’rondzwerven’ (behalve de naam van het stroomdiagram). Alleonderdelen zijn verbonden met pijlen of lijnen.• Er is een begin en een eindpunt.• Een mutatormethode heeft geen resultaat, maar verandert wel de toestand van een object. Vaakwerkt zo’n methode alleen als aan bepaalde voorwaarden is voldaan. We geven deze voorwaar-den aan in het stroomdiagramonderdeel ’beginsituatie’ en koppelen dit door middel van een ge-stippelde lijn aan het startpunt. In de ’eindsituatie’ beschrijven we wat er aan de toestand isveranderd. Dit wordt gekoppeld aan het eindpunt.• Een accessormethode is een methode die alleen een resultaat heeft. De toestand van het objectblijft verder ongewijzigd. Meestal worden er geen speciale eisen gesteld aan de beginsituatie. Deeindsituatie is altijd gelijk aan de beginsituatie. Daarom hoef je de begin- en eindsituaties niet teomschrijven bij een accessormethode.• Een taak of stap (weergegeven als een rechthoek) heeft altijd een inkomende en een uitgaandepijl.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 3

Page 6: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

• Een conditie (weergegeven als een ruit) heeft altijd een ingaande en twee uitgaande pijlen. Bijiedere uitgaande pijl staat true (waar) of false (onwaar).• Een herhaling (weergegeven als een vijfhoek) heeft twee ingaande en twee uitgaande pijlen. Ookhier staat bij de uitgaande pijlen true of false.• Het stroomdiagram bestaat bij voorkeur uit niet meer dan zeven taken (rechthoeken). Het moeteen overzichtelijke, hoog-niveau beschrijving zijn.

Het tekenen van een stroomdiagram

Om een probleem op te lossen met behulp van een stroomdiagram, volg je deze stappen:1. Beginsituatie: Omschrijf in een paar woorden wat de beginsituatie is. Wat is het probleem datopgelost moet worden?2. Eindsituatie: Wanneer is jouw probleem opgelost? Hoe weet je dat? Omschrijf dit in een paarwoorden.3. Oplossingsstrategie: Bedenk hoe je het gaat oplossen. Beschrijf dit op een hoog niveau, gebruikhooguit zeven taken.4. Decompositie: Splits het probleem op in deelproblemen en die eventueel weer in kleinere deel-problemen. Doe dit tot elk afzonderlijk probleem klein genoeg is om gemakkelijk te wordenopgelost. Bedenk: Elk deelprobleem bestaat uit hooguit zeven stappen/deelproblemen.5. Voor elke stap of deelprobleem:

• Kies een geschikte naam (betekenisvol, bestaand uit werkwoorden en geformuleerd als com-mando).• Bepaal of je een bestaande methode opnieuw kunt gebruiken.• Bepaal of taken herhaald worden. In dat geval kun je overwegen om een while-loop te ge-bruiken.

6. Schets het stroomdiagram.7. Controleer:

• Regels: Controleer of het stroomdiagramvoldoet aan de eerder genoemde regels voor stroom-diagrammen.• Kwaliteit: Doorloop het stroomdiagram om er zeker van te zijn dat het goed is. Kijk of hetstroomdiagram eenvoudiger of mooier kan. Komt, bijvoorbeeld, een aantal achtereenvol-gende stappen vaker voor in het diagram? Geef die stappen een naam en beschrijf ze als eenaparte submethode.

Theorie 2.2: Stappenplan voor het ontwikkelen van een oplossing

1. Bepaal een globaal plan voor het oplossen van het probleem.2. Teken een stroomdiagram voor de oplossing. Bekijk ”Stappen voor het tekenen van een stroom-diagram” in Theorie 2.1.3. Vertaal het stroomdiagram naar code. Houd rekening met de naamgevingsafspraken (zie op-dracht 1).4. Voeg (JavaDoc) commentaar toe aan de code.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 4

Page 7: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

5. Test demethode door het object in dewereld te slepen. Klik in dewereldmet de rechtermuisknopop het object en selecteer de methode. Gebruik verschillende situaties om te controleren of hetprogramma doet wat je verwacht.6. Debug. Herstel de fouten die je vindt. Bepaal of jouw code precies doet wat er in jouw stroomdi-agram staat. Zo niet, pas jouw code aan.7. Beoordeel de oplossing en reflecteer over jouw aanpak. Is het probleem opgelost? Welkeverbeteringen kun je bedenken? Bij het komen tot een oplossing, wat ging er goed? Wat had jebeter anders kunnen doen?

Theorie 2.3: Opeenvolging van taken

Bij een opeenvolging worden de aangegeven stappen achter elkaar uitgevoerd.

Figuur 3: Stroomdiagram voor opeenvolging

void methodeNaam ( ) { // methode met opeenvolgingstap1 ( ); // roep de methode aan in de eerste rechthoekstap2 ( ); // roep de methode aan in de tweede rechthoekstap...( ); // roep de methode aan in de volgende rechthoekstapN ( ); // roep de methode aan in de n-de rechthoek}

Theorie 2.4: Testen (en debuggen)

Na elke wijziging (hoe klein dan ook) test je het programma om te controleren of het werkt zoals jeverwacht. Als dat niet zo is, volg dan de volgende stappen:1. Probeer te achterhalen waar het probleem precies zit.2. Als het programma helemaal niet werkt, of als je de foutmelding van de compiler niet begrijpt,ga dan terug naar Theorie 1.13.3. Doet het programma iets verkeerds? Dan moet je jouw stappen achterstevoren nalopen:

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 5

Page 8: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

(a) Zorg ervoor dat de code overeenkomt met het stroomdiagram. Je kunt waarden of tekstafdrukken zodat je een beeld krijgt van wat er in jouw programma nou echt gebeurt enwelke code uitgevoerd wordt (zie Theorie 1.14).(b) Zorg ervoor dat jouw stroomdiagram overeenkomt met de oplossing die je voor ogen had.Komt jouw code overeen met jouw stroomdiagram, maar het programma doet niet wat jeverwacht? Dan zit er misschien een fout in jouw stroomdiagram. Analyseer het stroomdia-gram. Heb je een verkeerde aanname of veronderstelling gemaakt? Ga terug naar stap 2 inTheorie 2.2, pas het stroomdiagram aan en volg vanaf daar weer de stappen om de wijzigingnaar jouw code door te voeren.

4. Probeer verschillende situaties uit. Controleer of het programma ook goed omgaat met onver-wachte waarden en grensgevallen.• Het programma moet waken voor onverwachte waarden. Bepaal wat het programma danmoet doen, bijvoorbeeld een foutmelding geven of helemaal stoppen. Voorbeelden van on-verwachte waarden zijn nul, negatieve waarden of juist hele grote waarden (buiten de we-reld van Mimi).• Grensgevallen zijn interessant om te testen omdat de meeste fouten die worden gemaaktjuist in de eerste of het laatste stap zitten. Controleer grensgevallen zoals 0, 1 of pal voor eenwereldgrens of een nest.

Bekijk bijvoorbeeld de methode jump( int distance ). De waarde van distance mag niet zo-maar van alles zijn. Waarden waar je hier voor moet waken zijn negatieve getallen en waardenzo groot dat Mimi daarmee uit de wereld zou springen. Interessante grensgevallen zijn 0, 1, debreedte van de wereld en eentje kleiner dan de breedte van de wereld (breedte van de wereld-1).Maak er een gewoonte van om telkens te testen na elke aanpassing. Hierdoor spoor je makkelijker ensneller fouten op.Theorie 2.5: Vergelijken

Is gelijk aan

De vergelijkingsoperator ’ ==’ controleert of twee waarden aan elkaar gelijk zijn.Voorbeeld

Met ’a == 4’ vergelijk je of ’a ’ gelijk is aan ’4’. Hier komt true (waar) of false (onwaar) uit.Toelichting

Een is-teken ’ =’ heeft in Java een totaal andere betekenis dan ’ ==’, wat voor sommigen verwarrendkan zijn. Met java = 4’ geef je aan dat de variabele a de waarde 4 krijgt. Je spreekt dit uit als ’a wordt4’.NIET

De negatie-operator ’ !’ betekent NIET. Hiermee kun je een waarheidswaarde omkeren: true wordtfalse en false wordt true.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 6

Page 9: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Voorbeelden:

• Met ’ ! borderAhead( )’ kun je controleren of Mimi NIET aan een grens staat.• Met ’a != 4’ test je of ’a ’ NIET gelijk is aan ’4’.

Theorie 2.6: Beslissingen: if..then..elseHet stroomdiagram en de code hieronder laten zien hoe je een if..then..else constructie gebruiktbij een beslissing:”Als de conditie (voorwaarde) waar is, dan moet je iets doen. Anders moet je iets anders doen.”

Figuur 4: Stroomdiagram met keuze: if .. then .. else

/*** Voorbeeld methode met een keuze*/void methodeNaam( ) { // methode met keuzeif ( check( ) ) { // check de conditie in de ruit// als de conditie waar isstap1a ( ); // roep de methode aan in de rechthoek na ’Waar’

} else { // als de conditie niet waar isstap1b ( ); // roep de methode aan in de rechthoek na ’Niet waar’}}

Toelichting stroomdiagram en code

• Eerst wordt er bij ’check conditie’ gecontroleerd of de conditie waar is.• Als de conditie true (’waar’) is, dan wordt ’stap 1a’ uitgevoerd.• Anders wordt ’stap 1b’ uitgevoerd.• Daarna is de methode afgelopen.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 7

Page 10: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Toevoeging:

Als er, in het geval de conditie onwaar is (en je dus in de else-tak terecht zou komen), niets te doenvalt, dan mag je de else-tak gewoon weglaten.Theorie 2.7: Een wereld openen vanuit een bestand

Een wereld openen (in het huidige scenario) gaat als volgt:1. Klik in de wereld met de rechtermuisknop op een lege cel.2. Kies void populateFromFile( ).

Figuur 5: Een wereld openen3. Ga naar de map ’worlds’.4. Kies het juiste bestand, in dit voorbeeld ’worldEgg6CellsAhead.txt’.

Theorie 2.8: Kopieren is saai en foutgevoelig: op zoek naar een generieke oplos-

sing

Bekijk het volgende scenario. De opdracht luidt nog altijd: ”Help Mimi haar ei vinden”. Hoe zou je ditaanpakken?

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 8

Page 11: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Figuur 6: Scenario: veel stappen nodig om bij het ei te komenJe kunt het natuurlijk net zo aanpakken als bij de vorige opgaven, door telkens een bepaald aantalkeren move( ) aan te roepen. Maar wat als Mimi nou 1003 stappen zou moet zetten om bij haar ei tekomen? Dan ben je als programmeur wel even bezig door 1003 keer move( ); in te tikken. Dat heefteen aantal nadelen:• Je moet veel typen of knippen-en-plakken (en dat is nogal saai).• Je zou zomaar per ongeluk 1004 aanroepen van move( ) kunnen hebben in plaats van 1003. Jouwprogramma werkt dan niet goed.• Jouw programma is niet flexibel of algemeen (oftewel generiek). Het werkt alleen voor een spe-cifieke situatie. Het zal niet werken als Mimi in een volgend scenario maar 42 stapjes hoeft tezetten om bij haar ei te komen.

Om jouw programma algemener (generieker) te maken moet je het algoritme wat slimmer uitwerken.Wat je eigenlijk nodig hebt is een herhaling:”Zolang Mimi haar ei nog niet heeft gevonden, moet ze een stapje zetten.”

En dus, als ze haar ei heeft gevonden is ze klaar. Zo’n herhaling heet ook wel een while-loop.Een algoritme dat in meerdere beginsituaties te gebruiken is noemen we generiek. Het lost niet eenbepaald probleem op, maar kan gebruikt worden om heel veel vergelijkbare problemen op te lossen.Je zult in de vervolgopdrachten meer leren over generieke algoritmes.Theorie 2.9: Herhaling: whileHet stroomdiagram en de programmacode hieronder laten zien hoe je een while statement gebruiktom iets te herhalen: ”Zolang een conditie waar is, dan moet je iets doen.”

Figuur 7: Stroomdiagram voor een whilevoid methodeNaam( ) { // methode met herhalingwhile ( checkConditie( ) ) { // check de conditie in de ruit// als de conditie waar isdoeIets( ); // roep de methode aan in de rechthoek}}

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 9

Page 12: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Toelichting stroomdiagram en code

• Eerst wordt er bij ’check conditie’ gecontroleerd of de voorwaarde (conditie) ’Waar’ is.• Als de conditie ’Niet waar’ (false) is, dan is de methode afgelopen.• Als de conditie ’Waar’ (true) is, wordt doeIets( ) uitgevoerd. Daarna wordt er teruggegaannaar de controle van de conditie. Is deze nog steeds ’Waar’, dan wordt het pad van ’Waar’ weervervolgd, net zolang totdat de conditie ’Niet waar’wordt. Zo’n constructie wordt ook wel een loopgenoemd. De while-loop (en in dit geval de hele methode) is afgelopen zodra de conditie onwaaris.

Toevoeging:

• De conditie wordt aan het begin van de loop gecontroleerd.• Vaak wordt in een conditie gebruik gemaakt van de ontkenning. In programmacode gebruik je:’!’. Dit spreek je uit als ”NIET”. Een voorbeeld conditie is ”NIET ei gevonden”. Je gebruikt eenontkenning vanwege de gelijkenis met de manier waarop je het algoritme in woorden omschrijft:”zolang iets NIET het geval is, dan... ”.• In het gedeelte doeIets( ) moet op een gegeven moment iets gebeuren waardoor de conditie’niet waar’ wordt. Op dat moment stopt de herhaling. Een veelgemaakte fout is dat men vergeetom ervoor te zorgen dat de conditie ooit onwaar wordt. Doordat de conditie dan altijd ’waar’blijft kom je nooit uit de whileloop. Je hebt dan een oneindige herhaling opgeschreven.• Het herhalen van iets totdat aan een bepaalde conditie voldaan heet een conditie-gestuurde her-haling.

Theorie 2.10: Nesten

De opeenvolging, keuze en herhaling kunnen in willekeurige combinaties met elkaar gebruikt worden.Ze kunnen achter elkaar voorkomen of als onderdeel binnen een andere. Dat laatste heet nesting.Voorbeeld: if..then..else genest in een whileZie hier een voorbeeld van een stroomdiagram met een if..then..else genest in een while.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 10

Page 13: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Figuur 8: Stroomdiagram voor een if..then..else genest in een while

void nestedIfThenElseInWhile(){while ( checkConditie1( ) ){ // zolang cond. 1 waar is, doe dan:if ( checkConditie2( ) ){ // als 2e cond. ook waar is, doe dan:stap2( ); // volg de ’true’ tak} else { // als 2e cond. niet waar is, doe dan:stap1( ); // volg de ’false’ tak}}}

Voorbeeld: meerdere geneste if..then..else statementsEen geneste if .. then .. else controleert meerdere mogelijkheden direct na elkaar.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 11

Page 14: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Figuur 9: Geneste if..then..else

public void genesteIfThenElse( ) {if ( checkA() ) {stapA();} else {if ( checkB() ) {stapB();} else {if ( checkC() ) {stapC();} else {stapD();}}}}

Vereenvoudigen van een geneste if .. then .. else, door else .. if te gebruikenZo’n geneste if .. then .. else kun je overzichtelijker maken door een else..if te gebruiken. Deelse en de if worden dan als volgt gecombineerd:

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 12

Page 15: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

public void nestedIfThenElse( ) {if ( checkA() ) {stapA();} else if ( checkB() ) {stapB();} else if ( checkC() ) {stapC();} else {stapD();}}

Figuur 10: else if in plaats van geneste if .. then .. else statements• Als ’Check A’ waar is, dan wordt ’stap A’ uitgevoerd.• Anders (dus A is niet waar), als ’Check B’ waar is, dan wordt ’stap B’ uitgevoerd.• Anders (dus A en B zijn beide niet waar), als ’Check C’ waar is, dan wordt ’stap C’ uitgevoerd.• Anders (dus A, B en C zijn geen van alle waar), dan wordt ’stap D’ uitgevoerd.• De laatste stap kan eventueel worden weggelaten als er geen zinvolle invulling voor deze moge-lijkheid bestaat.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 13

Page 16: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Uitdagingen

Lees eerst Theorie 2.1: Stroomdiagrammen.

Lees eerst Theorie 2.2: Stappenplan voor het ontwikkelen van een oplossing.

Lees eerst Theorie 2.3: Opeenvolging van taken.

Lees eerst Theorie 2.4: Testen (en debuggen).

Opgave 2.1: Reeks van instructies: gotoEggOnze MyDodo, Mimi, is haar ei kwijt. Help je haar dat terug te vinden?

Figuur 11: Eerste scenario: Help Mimi haar ei vindena) Klik met je rechtermuisknop op Mimi. Wat moet Mimi doen om bij haar ei te komen (zodatze er bovenop zit)? Bedenk een strategie. Maak daarbij alleen gebruik MyDodo-methodes (geenmethodes uit de inherited lijst).b) Vul A,B,C,D (in het stroomdiagram) en E en F (in de programmacode) aan:

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 14

Page 17: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Figuur 12: Help Mimi haar ei vinden/*** Dodo moves forward 2 steps and sits on the egg.** <p>Initial situation: E* <p>Final situation: Dodo has moved forward and is sitting on the egg.* Dodo is facing original direction.** @param nothing* @return nothing*/public void gotoEgg( ) {move();// F}

c) Open de code voor MyDodo in de editor. Pas de methode gotoEgg( ) aan. Beschrijf ook de begin-en eindsituaties als (JavaDoc) commentaar.d) Test of jouw programma doet wat je verwacht. Wordt de eindsituatie in jouw stroomdiagrambereikt? Tip: Doet de programma niet wat je verwacht of krijg je een foutmelding? Volg dan destappen voor ’Debuggen’ in Theorie 2.4.

Opgave 2.2: Een reeks met meerdere instructies

Nu staat Mimi nog verder van haar ei. Kun je haar weer helpen haar ei te vinden?

Figuur 13: Tweede scenario: Help Mimi haar ei weer vindena) Pas de wereld aan zodat die eruit ziet zoals in Figuur 13.b) Welke methode(s) van MyDodo ga je aanroepen om bij het ei te komen? Nogmaals, je mag geengeerfde methodes gebruiken. Pas het stroomdiagram uit taak 2.1 aan en ook de bijbehorendegotoEgg( )methode.c) Pas het (JavaDoc) commentaar aan.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 15

Page 18: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

d) Test jouw methode.Lees eerst Theorie 2.5: Vergelijken.

Lees eerst Theorie 2.6: Beslissingen: if..then..else.

Opgave 2.3: Niet door hekken lopen

In opdracht 1 hadden we gezien dat Mimi niet uit de wereld kan stappen. We bekijken nu opnieuw demethode boolean canMove( ) en kijken of we die kunnen verbeteren.a) Bekijk de code en het stroomdiagram voor canMove( ) hieronder.

Figuur 14: Stroomdiagram voor canMove( )

/*** Test if Dodo can move forward,* i.e. there are no obstructions or end of world in the cell in front of her.** <p> Initial: Dodo is somewhere in the world* <p> Final: Same as initial situation** @return boolean true if Dodo can move (thus, no obstructions ahead)* false if Dodo can’t move* there is an obstruction or end of world ahead*/public boolean canMove( ) {if ( borderAhead( ) ){return false;} else {return true;}}

b) Mimi trekt zich niks aan van hekjes: Ze loopt er gewoon doorheen! Plaats een hekje in de werelden controleer het zelf.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 16

Page 19: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

c) Roep de de Dodo methode boolean fenceAhead( ) aan met een hek direct voor Mimi. Roep demethode nogmaals aan, maar zonder hek. Wat doet deze methode?d) Pas de conditie in het stroomdiagram aan zodat Mimi niet voorbij de wereldgrens kan en ook nietdoor een hek kan lopen. TIP: in code gebruik je ’ &&’ voor ’EN’, ’ ||’ voor ’OF’, ’ !’ voor NIET.e) Pas ook de code en het commentaar aan.f) Test jouw methode. Tip: Doet het programma niet wat je verwacht of krijg je een foutmelding?Volg dan de stappen voor ’Debuggen’ in Theorie 2.4.

Lees eerst Theorie 2.7: Een wereld openen vanuit een bestand.

Opgave 2.4: Jouw eigen opeenvolging: climbOverFence( )We gaan Mimi nu nog slimmer maken. Als er iets op haar pad ligt (een hekje bijvoorbeeld) dan moetze dat kunnen ontwijken.De taak luidt:

”Mimi loopt naar haar ei. Als ze een hekje tegenkomt, dan klimt ze daar overheen.”

Figuur 15: Scenario: Klim over het hekDat doen we als volgt:a) Open de wereld ‘worldFenceObstructing’. Tip: Theorie 2.7 beschrijft hoe je een andere wereldkunt openen.b) Als het goed is, dan stopt Mimi als ze tegen een hek aanloopt. Check dit. Loopt ze gewoon doorhet hek heen, controleer dan of je taak 2.3 goed hebt gemaakt.c) We willen dat Mimi over het hek klimt, zoals afgebeeld in figuur 15. Vul de volgende strategieaan:

i. draai naar linksii. zet een stapiii. ...

d) Zorg dat Mimi na afloop weer naar rechts kijkt.e) Schrijf een methode climbOverFence( ) die overeenkomt met jouw strategie (je mag geenmetho-des uit de inherited lijst gebruiken). Omschrijf in commentaar de begin- en eindsituaties.f) Test jouw methode.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 17

Page 20: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Opgave 2.5: Vind graan

Mimi heeft honger en is op zoek naar graan. Maar, ze is slechtziend. Ze kan graan alleen zien als ze erprecies bovenop staat. Kun jij haar helpen uitvogelen of er graan in de cel voor haar ligt?a) Bekijk het (onvolledige) stroomdiagram en de code voor de methode grainAhead( ). Deze me-thode levert true op als er graan in de cel voor Mimi ligt, en anders false. Merk op dat:

• Dit een accessormethode is, dus hoeven we geen begin- en eindsituatie aan te geven. Omdatde toestand van Mimi niet mag veranderen moet ze uiteindelijk weer op de oorspronkelijkepositie staan en dezelfde kant op kijken.• Met een return wordt een methode afgesloten, daarna wordt niets meer uitgevoerd. Dus,Mimi moet eerst terug naar haar beginsituatie voordat return aangeroepen wordt.• B, C, E en F (in de code en stroomdiagram) kunnen uit meer dan een regel bestaan.

/*** Test there is a grain in the cell in front of Dodo** <p> Initial and final situations are the same.** @param nothing* @return boolean true if there is a grain in the cell in front of Dodo* false else otherwise*/public boolean grainAhead( ) {//Dif ( onGrain( ) ) {// Dodo goes back to initial situation before returning value// Ereturn true;} else {// Dodo goes back to initial situation before returning value// Freturn false;}}

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 18

Page 21: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

b) Geef aan wat er bij A tot en met F zou moeten staan (in zowel het stroomdiagram als de code).c) Schrijf en test de methode grainAhead( ).

Lees eerst Theorie 2.8: Kopieren is saai en foutgevoelig: op zoek naar een gene-

rieke oplossing.

Lees eerst Theorie 2.9: Herhaling: while.

Opgave 2.6: Herhaling met een while: gotoEgg( )Jouw taak luidt: Help Mimi om haar ei te vinden, ongeacht hoe ver dat ei voor haar ligt.Jouw oplossing moet generiek zijn. Gegeven is de volgende beginsituatie:

• Mimi staat een aantal (0 of meer) cellen van haar ei vandaan, maar ze weet niet precies hoeveel;• Mimi kijkt in de juiste richting (ze hoeft niet meer te draaien, alleen stappen te zetten);• Er staat niets in de weg tussen Mimi en haar ei (hekjes of andere obstakels);• Mimi heeft haar ei gevonden als ze in de cel staat waarin het ei ligt.

Figuur 16: Scenario: een aantal zijn stappen nodig om het ei te bereikenWe gaan hier stapsgewijs mee aan de slag:a) Open de wereld ’worldEgg6CellsAhead’.b) Beredeneer of het volgende generieke algoritme juist is:”Zolang Mimi haar ei nog niet heeft gevonden, moet ze een stapje zetten.”c) Bekijk het stroomdiagram in figuur 17. Wat moet er herhaaldelijk uitgevoerd worden? Vul dit inbij B.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 19

Page 22: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Figuur 17: Stroomdiagram ”Zolang het ei niet gevonden is, zet een stap.”d) Welk conditie hoort bij A?e) Pas de code aan voor MyDodo’s methode gotoEgg( ) zodat deze generiek is. Het zou er zo ongeveeruit moeten zien als in de code hieronder. Toelichting: ’ !’ in code betekent niet. Uiteraard hoorter op de plaats van C en D code te staan.

/*** Dodo moves forward and sits on the egg.** <p>Initial situation: Somewhere in a cell ahead of Dodo lies a egg.* The cells between Dodo and the egg are empty.* <p>Final situation: Dodo has moved forward and is sitting on the egg.* Dodo is facing original direction.** @param nothing* @return nothing*/public void C( ) {while( ! onEgg( ) ){// D}}

f) Pas ook het commentaar bij gotoEgg( ) aan.g) Test jouw programma.

Opgave 2.7: Loop tot einde van de wereld

Schrijf een methode waarmee Mimi vanaf een willekeurige plaats naar de rand van de wereld loopt.a) We beginnen met een lege wereld. Open de wereld: ‘worldEmpty’ (Zie Theorie 2.7).b) Vul het stroomdiagram aan.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 20

Page 23: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Figuur 18: Stroomdiagram voor walkToWorldEdge( )c) Schrijf de bijbehorende methode void walkToWorldEdge( ). Voeg commentaar toe.d) Test jouw methode door met de rechtermuisknop te klikken op Mimi. Herhaal dit met Mimi opverschillende plaatsen.e) Werkt jouw methode ook als Mimi een andere kant op kijkt (naar het zuiden of westen)? Pas zonodig het commentaar aan bij jouw methode zodat het goed uitlegt wat Mimi zoal kan.

Opgave 2.8: Loop terug naar begin van rij

Schrijf eenmethode void goBackToStartOfRowAndFaceBack( )waarmeeMimi zich omdraait, naar heteinde van de wereld loopt, en dan weer terugdraait zodat ze weer de oorspronkelijke richting uitkijkt.Lees eerst Theorie 2.10: Nesten.

Opgave 2.9: Submethodes combineren: walkToWorldEdgeClimbingOverFences()We gaan nu twee van jouw methodes combineren zodat Mimi van de ene naar de andere kant vanhaar wereld kan lopen, ook als er obstakels staan. Als ze onderweg een hek tegenkomt, dan klimt zedaar overheen (zie figuur 19).

• climbOverFence( ) (uit taak 2.4)• walkToWorldEdge( ) (uit taak 2.7)

Figuur 19: Scenario: Loop tot het einde van de wereld en ontwijk hekkena) Pas jouw stroomdiagram aan voor walkToWorldEdge( ) (uit taak 2.7) zodat Mimi over hekkenklimt als ze die tegenkomt. Hernoem ook het stroomdiagram zodat het overeenkomt met dewijziging

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 21

Page 24: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

b) Schrijf de methode walkToWorldEdgeClimbingOverFences( ). Je mag ervan uitgaan dat er altijdeen lege cel tussen twee opeenvolgende hekken zit. Tip: Je kunt jouw climbOverFence methodeaanroepen met: climbOverFence( );c) Test jouw methode.

Opgave 2.10: Complimentjes geven

Als Mimi een taak heeft voltooid, willen we haar een complimentje geven. Pas de code aan voorwalkToEdgeOfWorldClimbingOverFences( ) om haar een complimentje te geven. Gebruik de methodeshowCompliment( String compliment ) als volgt:showCompliment( "Gefeliciteerd!");

Opgave 2.11: Pak granen op en druk coordinaten af

Je volgende opdracht is:Laat Mimi naar het einde van de wereld lopen. Onderweg pakt ze al het graan op dat zetegenkomt. Druk steeds de coordinaten van ieder graantje af.

Figuur 20: Pak in deze rij alle granen op en druk de coordinaten af• Open de wereld ‘worldGrainsInRow’.• Druk, in de console, de coordinaten af van de granen in de rij waarin Mimi staat. Tip: je kuntgebruik maken van int getX() en int getY() om de positie van Mimi te bepalen. Bekijk ook deandere graan-methodes die Mimi heeft (geerfd van Dodo).• Test jouw code. Worden de coordinaten ook juist afgedrukt als er een graan in de allerlaatste celligt? En in de eerste cel?

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 22

Page 25: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Reflectie

In deze opdracht heb je kennis gemaakt met algoritmes. In een algoritme beschrijf je heel precieshoe een bepaalde taak gedaan moet worden. Je geeft stap voor stap aan hoe iets gedaan moet wor-den. Daarbij gebruik je beslissingen en herhalingen. Bij de laatste taak heb je jouw eigen algoritmeontwikkeld, dit in een stroomdiagramweergegeven en zelf de bijbehorende code geschreven en getest.Als je ergens echt goed in wilt worden, dan is een van de meest belangrijke stappen om even terugte blikken op wat je deed en hoe dat ging:Resultaat

Ik weet dat mijn oplossing werkt omdat . . .Ik ben trots op mijn oplossing omdat . . .Ik kan mijn oplossing verbeteren door . . .

Aanpak

Mijn aanpak was goed omdat . . .Wat ik volgende keer beter anders kan doen is . . .

Geef met een smiley aan hoe het ging. Ik kan het

Het is me een beetje gelukt maar ikbegreep het niet helemaalIk snapte er helemaal niks van

Ik kan een algoritme opstellen als een opeenvolging van stappen, beslis-singen (if..then..else) of herhalingen(while)Ik kan code aanpassingen maken door stapsgewijs kleine aanpassingendoor te voeren en deze meteen te testen.Ik kan op een gestructureerdwijze code schrijven door eerst een stroom-diagram te tekenen en dit daarna naar programmacode om te zetten.Ik kan bestaande oplossingen (submethodes) gebruiken om een com-plexer probleem op te lossen.Ik kan een generieke oplossing bedenken voor een probleem.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 23

Page 26: Opdracht 2: Dodo laten bewegen - Radboud Universiteitcourse.cs.ru.nl/greenfoot/docs/Opdrachten v3.1.1...Opdracht 2: Dodo laten bewegen AlgoritmischDenkenenGestructureerdProgrammeren(inGreenfoot)

Dodo laten bewegen Opdracht 2

Opslaan en inleveren

Sla je werk op. Je hebt het nodig voor de volgende opdrachten.Opslaan

Selecteer ’Scenario’ in het Greenfoot menu, en dan ’Save’. Alle bestanden die bij het scenario horenzitten nu in een map.Inleveren

Lever het volgende in:• Naam: van jou (en je partner);• Jouw code: Het MyDodo.jav java bestand;• Stroomdiagrammen:

– Als je ze op papier hebt gemaakt: plak (foto’s van) jouw stroomdiagrammen in een (Word)bestand.– Als je software gebruikt hebt: sla het bestand op als .pdf of .jpg.

Algoritmisch denken en gestructureerd programmeren (in Greenfoot) 24