- Leren
- Informatica & ICT
- Programmeren en digitale geletterdheid voor 7 tot 11 jaar
- Programmeren en debuggen
Programmeren en debuggen: eerste programma’s en volgorde
Groep 3, Groep 4Les 1 van 10 in Cursus Programmeren en digitale geletterdheid voor 7 tot 11 jaar
Wat je leert
- Ontdek wat commando’s, programma’s en code zijn en bouw korte programma’s waarmee je een vloerrobot of een personage op een scherm laat doen wat jij wilt.
- Leer wat commando’s, programma’s en code zijnLeer de woorden die programmeurs gebruiken, ontdek waarom een robot code precies volgt en wanneer de volgorde van commando’s verandert wat er gebeurt.
- Programmeer een vloerrobot om een doel te bereikenGebruik commando’s voor vooruit, achteruit en draaien om een vloerrobot over een mat met vakken te sturen en schrijf je programma op met pijlen.
- Bouw met blokken een programma voor een spriteKlik commandoblokken aan elkaar om een personage op een scherm te laten bewegen, praten en geluiden afspelen. Zorg dat het programma elke keer op dezelfde manier begint.
- Leer wat commando’s, programma’s en code zijn
- Lees een programma voordat je het uitvoert, zoek stap voor stap uit wat er gebeurt en leg uit hoe je denkt.
- Doorloop een programma stap voor stapDoorloop een programma met je vinger of een pionnetje, houd bij waar de robot is en welke kant hij op kijkt en voer het programma daarna uit om je voorspelling te controleren.
- Leg je voorspelling uit en vertel wat er door een aanpassing verandertGebruik wat je over elk commando weet om redenen te geven, programma’s te vergelijken en uit te zoeken wat er gebeurt als je de code verandert.
- Doorloop een programma stap voor stap
- Herken wat voor fout er in een programma zit, zoek precies waar die zit, verhelp de fout en test opnieuw totdat het programma werkt.
- Herken de soorten programmeerfouten in een programmaLeer wat een programmeerfout is en herken fouten die vaak in een volgorde voorkomen: een verkeerde volgorde, een ontbrekende stap, een overbodige stap, een verkeerd commando en een verkeerd getal.
- Zoek waar de programmeerfout zitGebruik manieren om te debuggen om precies te vinden welk commando verkeerd is: vergelijk wat je wilde met wat er gebeurde, voer de code stap voor stap uit en bespreek die met een ander.
- Verhelp de programmeerfout en test opnieuwMaak één kleine verandering om de programmeerfout te verhelpen, voer het hele programma opnieuw uit vanaf het begin en ga door totdat het werkt.
- Herken de soorten programmeerfouten in een programma
- Kies een doel, bedenk de stappen, zet je plan om in code en test tijdens het bouwen, zodat je eigen programma werkt en makkelijk te volgen is.
- Zet een plan om in codeBepaal wat je programma moet doen, bedenk de stappen als een algoritme en verander elke stap in commando’s die de robot of sprite begrijpt.
- Test tijdens het bouwen en verbeter je programmaTest je programma vaak tijdens het bouwen, vergelijk het met je doel, maak het overzichtelijk en leer van de programmeerfouten die je vindt.
- Zet een plan om in code
Programmeren en debuggen: uitleg
1Geef je robot een taak
Je kunt een robot laten rijden of een personage op een scherm laten praten. Eerst kies je commando’s en zet je ze op volgorde. Je probeert commandokaarten, knoppen en blokken en ontdekt hoe elk daarvan werkt. De voorkant van de robot en het scherm van de sprite geven je verschillende manieren om over een beweging te denken.
1.1 Met commando’s laat je iets gebeuren
Met een commando kun je een robot vertellen wat hij moet doen. Eén commando geeft één instructie, zoals “ga vooruit”. Een lijst met commando’s voor een robot of computer is een programma.
Maak een plan en schrijf dan code
Een algoritme is een plan met stappen voor een taak. Denk aan tandenpoetsen. Je doet tandpasta op de borstel voordat je poetst. Elke stap heeft een plek in het plan.
Een programma is een plan dat is geschreven in commando’s die een computer begrijpt. Die commando’s heten code. Ze schrijven heet code schrijven of programmeren. Je robot begrijpt misschien “vooruit”, maar heeft geen commando dat “bezoek de deur” heet. Je moet die taak verdelen in commando’s die hij kent.
Zet de commando’s op volgorde
De volgorde van commando’s heet een volgorde. In deze programma’s volgt de robot het ene commando na het andere. Hij begint bij het eerste en werkt naar het laatste toe.
Stel je een robot voor die van je af kijkt. Vergelijk deze programma’s:
| Programma | Wat gebeurt er |
|---|---|
forward, turn right | Hij gaat één vak vooruit en kijkt dan naar rechts. |
turn right, forward | Hij kijkt naar rechts en gaat dan één vak die kant op. |
De commando’s zijn hetzelfde, maar door hun volgorde stopt de robot op een ander vak. Hij kan niet raden dat je de andere route bedoelde.
Soms blijft het resultaat hetzelfde als je iets verwisselt. Begin op een getallenlijn bij 0. Ga 3 vooruit en dan 2 vooruit: je stopt op 5. Begin weer bij 0. Ga 2 vooruit en dan 3 vooruit: je stopt ook op 5. Doorloop de bewegingen om een verwisseling te controleren.
Speel het robotspel
Leg commandokaarten op een rij. Eén persoon leest de kaarten. Een ander speelt de robot en volgt elke kaart precies. Gebruik “stap vooruit”, “draai naar links” en “draai naar rechts” op een vrij pad. Als de route het doel mist, kijk dan naar de kaarten. De persoon die de robot speelt, mag geen betere route raden.
Mensen schrijven programma’s voor tabletspelletjes, wasmachines, magnetrons en verkeerslichten. De commando’s laten verschillende dingen gebeuren, maar hun volgorde doet er nog steeds toe.
Belangrijkste punten
- Een commando geeft een robot of computer de opdracht om één ding te doen.
- Een algoritme is een plan met stappen; een programma schrijft het plan als code.
- Een volgorde is de volgorde van commando’s.
- Doorloop een verandering in de volgorde om te controleren wat die doet.
1.2 Stuur een vloerrobot over een mat
Een vloerrobot volgt commando’s die je met zijn knoppen invoert. Op een mat die voor die robot is gemaakt, gaat hij met één beweging één vak verder. Kies eerst een startvak en de richting waarin zijn voorkant wijst.
Weet wat elke knop doet
| Commando | Wat de robot doet |
|---|---|
forward | Gaat één vak in de richting van zijn voorkant. |
backward | Gaat één vak achteruit zonder te draaien. |
turn left | Draait een kwartslag naar links op hetzelfde vak. |
turn right | Draait een kwartslag naar rechts op hetzelfde vak. |
Gebruik turn right, forward om het vak rechts van de robot te bereiken.
Links en rechts zijn vanuit de robot gezien. Als hij naar je toe kijkt, is zijn rechts aan jouw linkerkant. Ga achter hem staan of draai je eigen lichaam dezelfde kant op. Nu is jouw rechts hetzelfde als dat van de robot.
Tel de bewegingen naar de kaas
De kaas ligt 2 vakken vooruit en dan 1 vak naar rechts. Volg dat pad met een vinger. Tel elk nieuw vak waar je naartoe gaat. Tel het startvak niet als een beweging.
forward: ga naar het eerste vak vooruit.forward: ga naar het tweede vak vooruit.turn right: blijf op dat vak en kijk naar rechts.forward: ga naar de kaas.
Het hele programma is forward, forward, turn right, forward.
Schrijf pijlen voordat je op knoppen drukt
Je kunt pijlen gebruiken om de commando’s op te schrijven:
↑betekent vooruit.↓betekent achteruit.↰betekent draai naar links.↱betekent draai naar rechts.
Het kaasprogramma is ↑ ↑ ↱ ↑. De pijl vooruit betekent “volg de voorkant van de robot”. Na een draai betekent hij niet “ga naar de bovenkant van het papier”.
Maak je klaar om het programma uit te voeren
Bij veel vloerrobots blijven knopdrukken in het geheugen staan. Nieuwe knopdrukken komen achter de oude commando’s. Druk bij deze robots op Wissen voordat je een nieuw programma invoert. Druk daarna de commandoknoppen in de volgorde in die je hebt opgeschreven.
Zet de robot op Start, met zijn voorkant in de bedachte richting. Druk op GO om het hele programma uit te voeren. Als de robot het doel mist, controleer dan zijn startvak en kijkrichting én de commando’s.
Belangrijkste punten
- Vooruit volgt de voorkant van de robot; achteruit gaat naar achteren zonder te draaien.
- Een draai naar links of rechts is een kwartslag op de plaats.
- Gebruik links en rechts vanuit de robot gezien.
- Tel nieuwe vakken en tel het startvak niet mee.
- Wis opgeslagen commando’s voordat je een nieuw programma invoert en gebruik daarna GO om het uit te voeren.
1.3 Laat een sprite bewegen, praten en geluiden afspelen
Een sprite is een personage of voorwerp dat je op een scherm kunt besturen. Het kan een kat, een auto of een bal zijn. Selecteer de sprite die je wilt programmeren en sleep daarna blokken naar zijn codegebied.
Klik de blokken aan elkaar
Blokken die aan elkaar vastzitten, vormen een volgorde. Sommige apps lezen van links naar rechts. Andere lezen van boven naar beneden. Volg de richting die jouw app gebruikt. Een los blok wordt niet met het verbonden programma uitgevoerd.
Zet een startblok zoals “wanneer op de groene vlag wordt geklikt” vooraan. Als je op de groene vlag drukt, starten de blokken die eraan vastzitten. Elke sprite heeft zijn eigen code, dus controleer of je het juiste personage hebt geselecteerd.
Kies wat er gebeurt
Bewegingsblokken laten je sprite bewegen of draaien. Veel blokken hebben een getal dat je kunt veranderen. In een app die roostervakken telt, laat “beweeg 3 naar rechts” de sprite drie vakken bewegen. Hij bereikt dezelfde plek als met drie blokken “beweeg 1 naar rechts”.
Lees de commandowoorden zorgvuldig. Een schermcommando zoals “beweeg naar rechts” kan de sprite naar de rechterkant van het scherm laten bewegen, ongeacht zijn kijkrichting. Het commando vooruit van een vloerrobot volgt zijn voorkant.
Uiterlijkblokken kunnen woorden tonen, de grootte veranderen of de sprite laten verdwijnen of verschijnen. Geluidsblokken spelen geluiden af. Ze horen ook in de volgorde thuis.
Help de kat een bal te bereiken
De bal ligt 4 roostervakken rechts van de kat. Je wilt dat de kat de bal bereikt voordat ze praat.
- Begin met “wanneer op de groene vlag wordt geklikt”.
- Klik “beweeg 4 naar rechts” eraan vast.
- Klik “zeg Gevonden!” eraan vast.
Druk op de vlag. De kat beweegt eerst en zegt dan “Gevonden!”. Als je de laatste twee blokken verwisselt, praat ze voordat ze beweegt.
Speel noten op volgorde
De volgorde van geluiden verandert een melodie. “Do, re, mi, do” is het begin van “Vader Jacob”. “Mi, re, do, do” heeft een andere volgorde. In apps met beide geluidskeuzes wacht “speel geluid tot het klaar is” tot een geluid is afgelopen. Bij “start geluid” begint het volgende blok meteen, zodat geluiden tegelijk kunnen klinken.
Begin elke test op dezelfde manier
Zet een blok “ga naar de beginplek” of een positieblok direct na het startblok. Het zet de sprite terug op zijn startplek. Een positieblok zet alleen zijn plek terug. Als je programma zijn kijkrichting, grootte of zichtbaarheid verandert, voeg dan ook blokken toe om die terug te zetten. Een verborgen sprite heeft “verschijn” nodig; alleen teruggaan naar de beginplek maakt hem niet zichtbaar.
Belangrijkste punten
- Een sprite is een personage of voorwerp op een scherm dat je met code bestuurt.
- Klik blokken aan elkaar en zet een startblok vooraan.
- Elke sprite heeft zijn eigen code.
- Lees bewegingswoorden en getallen voordat je een pad bedenkt.
- Uiterlijk- en geluidsblokken worden ook op volgorde uitgevoerd.
- Zet elke begineigenschap terug die je programma verandert.
2Zoek de route uit voordat je het programma uitvoert
Je kunt uitzoeken welke route een programma volgt voordat het begint. Volg elk commando met een pionnetje of je vinger. Houd zowel de draaien als de bewegingen bij. Dan kun je je antwoord uitleggen en twee routes vergelijken, ook als ze op dezelfde plek uitkomen.
2.1 Doorloop elk commando
Voorspel wat een programma doet voordat je het uitvoert. Een voorspelling vertelt wat je denkt dat er gaat gebeuren. Je kunt dat uitzoeken door de code stap voor stap te doorlopen: volg steeds één commando.
Geef je pionnetje een voorkant
Zet een pionnetje op het startvak. Teken er een kleine pijl op om de voorkant aan te geven. Wijs het eerste commando aan en voer het uit. Wijs daarna het volgende commando aan.
Houd twee dingen bij: het vak en de kijkrichting. Door vooruit of achteruit verandert het vak. Door een draai verandert de kijkrichting. Houd het pionnetje op hetzelfde vak terwijl het draait.
Volg een route met twee draaien
Begin met je voorkant naar de bovenkant van de mat. Doorloop dit programma:
forward, forward, turn left, forward, turn left, forward
- De eerste keer vooruit brengt je één vak voor Start.
- De volgende keer vooruit brengt je twee vakken voor Start.
- Draai op dat vak naar links. Je voorkant wijst nu naar links.
- Ga één vak naar links.
- Draai nog eens naar links. Je voorkant wijst nu naar beneden.
- Ga één vak naar beneden.
Je eindigt één vak voor Start en één vak naar links. Je kijkt naar de onderkant van de mat. Tel de bewegingen na elke draai in de nieuwe kijkrichting.
Laat een spoor achter op papier
Schrijf bij een langer programma na elk commando een korte aantekening. Voor de eerste drie stappen hierboven kun je “1 vooruit”, “2 vooruit” en “2 vooruit, kijkt naar links” opschrijven. De laatste aantekening vertelt je het eindvak en de kijkrichting.
Een draai is een stap in je lijst, maar geen stap over de mat. Als je tijdens een draai naar een nieuw vak gaat, komen alle latere bewegingen bij het doorlopen op de verkeerde plek terecht.
Doorloop ook een programma voor een sprite
Lees “wanneer op de groene vlag wordt geklikt”, “beweeg 2 naar rechts”, “beweeg 1 omhoog”, “zeg Hoi!”. De vlag start de code. De sprite beweegt twee roostervakken naar rechts en dan één omhoog. Pas daarna zegt hij “Hoi!”.
Voer het programma nu uit en bekijk elke actie. Als het resultaat anders is dan je voorspelling, lees de commando’s dan opnieuw. Misschien heb je een beweging verkeerd doorlopen of moet de code worden verbeterd. Zoek de stap waar jouw uitwerking en de uitvoering voor het eerst verschillen.
Belangrijkste punten
- Voorspel voordat je het programma uitvoert en controleer daarna door naar de uitvoering te kijken.
- Doorloop elk commando op volgorde.
- Houd zowel het vak als de kijkrichting bij.
- Houd je pionnetje op hetzelfde vak tijdens een draai.
2.2 Geef redenen en vergelijk veranderingen
Een voorspelling is sterker als je kunt vertellen waarom je dat denkt. Logisch redeneren betekent dat je gebruikt wat je over elk commando weet om uit te zoeken wat er gebeurt. Je kunt bijvoorbeeld zeggen: “Hij bereikt de bloem, omdat hij met drie bewegingen vooruit de drie vakken aflegt.”
Vergelijk twee routes
Begin met een robot die vooruit kijkt. Een ster ligt één vak vooruit en twee vakken naar rechts. Doorloop elk programma vanaf dezelfde start.
- Programma A:
forward, turn right, forward, forward. - Programma B:
turn right, forward, forward, forward.
Programma A gaat één vak vooruit en dan twee naar rechts. Het bereikt de ster. Programma B draait voordat het beweegt. Het gaat drie vakken naar rechts over de startrij en mist de ster dus.
Er is nog een route naar de ster: turn right, forward, forward, turn left, forward. Die gaat eerst naar rechts en dan vooruit. Zowel die route als programma A bereikt het doel. De paden verschillen en ook de kijkrichting aan het einde is anders.
Denk na over één verandering
Als “3 vooruit” verandert in “2 vooruit”, eindigt die beweging één vak eerder. Het volgende commando begint vanaf de nieuwe plek. Doorloop de rest om te zien waar het hele programma eindigt.
Als je een draai naar links verandert in een draai naar rechts, verandert op dat punt de kijkrichting. Latere bewegingen vooruit volgen die nieuwe richting. Verander in je tekening niet alleen de draai terwijl je het latere pad hetzelfde laat.
Herken commando’s die elkaar opheffen
Na een draai naar rechts gevolgd door een draai naar links wijst de voorkant weer dezelfde kant op. Beide draaien gebeuren op hetzelfde vak. Daarom eindigt forward, turn right, turn left, forward op dezelfde plek als forward, forward, met dezelfde kijkrichting.
Gebruik een misser als aanwijzing
Een robot stopt vóór een bloem. Controleer eerst zijn startvak en kijkrichting. Doorloop daarna de code. Op een recht pad vanaf de juiste start kan een ontbrekende beweging vooruit de misser verklaren. Ook een verkeerde draai of een verkeerd getal kan ervoor zorgen dat hij het doel mist. Kijk naar de werkelijke stappen voordat je kiest wat je gaat verbeteren.
Als een voorspelling niet klopte, vraag jezelf dan af: “Welke stap verraste me?” Voer dat commando uit. De betekenis ervan helpt je uit te leggen wat er gebeurde.
Belangrijkste punten
- Leg een voorspelling uit met wat elk commando doet.
- Doorloop bij het vergelijken van routes elk programma vanaf dezelfde start.
- Verschillende paden kunnen hetzelfde doel bereiken.
- Doorloop na het veranderen van een commando ook de commando’s die erop volgen.
- Controleer de start en doorloop het programma voordat je bepaalt waarom een doel is gemist.
3Zoek de programmeerfout en probeer die te verhelpen
Een robot kan zijn programma afmaken en toch zijn doel missen. Kijk wat er gebeurt en vergelijk dat met je plan. Je leert de eerste verkeerde stap te herkennen, een kleine verbetering te maken en het opnieuw te proberen. Elke test geeft je een aanwijzing over wat er moet veranderen.
3.1 Herken een programmeerfout
Een programmeerfout is een fout in de code waardoor het programma niet doet wat je wilde. Debuggen betekent dat je programmeerfouten opspoort en verhelpt. Zelfs ervaren programmeurs moeten dat doen.
Kijk naar het soort fout
| Programmeerfout | Waar let je op |
|---|---|
| Verkeerde volgorde | De nodige commando’s staan erin, maar op de verkeerde plek. |
| Ontbrekend commando | Een nodige stap staat er niet in. |
| Overbodig commando | In de lijst staat een stap die je niet nodig hebt. |
| Verkeerd commando | Eén commando moet een ander commando zijn. |
| Verkeerd getal | Het getal in een blok is te groot of te klein. |
Deze aanwijzingen helpen je kiezen wat je gaat onderzoeken. Vergelijk ze met je doel en je route.
Vergelijk de code met de taak
De kaas ligt twee vakken vooruit en één vak naar rechts. De robot begint met zijn voorkant vooruit. Het programma is forward, turn right, forward, forward. Hij gaat maar één vak vooruit voordat hij draait en daarna twee naar rechts. Alle vier de nodige commando’s staan erin. De volgorde is verkeerd. Gebruik forward, forward, turn right, forward.
Voor een bloem drie vakken recht vooruit zijn drie bewegingen vooruit nodig. In een lijst met twee keer vooruit ontbreekt een commando. Een lijst met vier keer vooruit heeft een overbodig commando en gaat voorbij de bloem.
Een draai naar links op de plek waar een draai naar rechts nodig is, is een verkeerd commando. Met “beweeg 5 naar rechts” gaat een sprite voorbij een bal die vier vakken naar rechts ligt. Het getal moet 4 zijn.
Luister naar een programmeerfout bij geluid
In sommige apps begint “start geluid” een geluid en gaat het programma meteen verder. Twee van deze blokken kunnen geluiden starten die tegelijk klinken. Als je wilt dat het ene geluid is afgelopen voordat het volgende begint, gebruik dan blokken “speel geluid tot het klaar is”. Door het verkeerde soort geluidsblok kunnen de geluiden in je melodie door elkaar klinken.
Controleer meer dan de code
De robot begint misschien op het verkeerde vak of kijkt de verkeerde kant op. Bij een robot die commando’s bewaart, kan een oude lijst zijn blijven staan omdat niemand op Wissen heeft gedrukt. Controleer dit voordat je een goede route verandert.
Een programma kan een programmeerfout hebben, ook als het tot het einde wordt uitgevoerd. Kijk wat het doet en vergelijk dat met je doel. Een lijst afmaken is niet hetzelfde als het doel bereiken of geluiden op volgorde afspelen.
Belangrijkste punten
- Door een programmeerfout doet het programma niet wat je wilde.
- Zoek naar een verkeerde volgorde, ontbrekende of overbodige commando’s, een verkeerd commando of een verkeerd getal.
- Controleer geluidsblokken als geluiden tegelijk klinken.
- Controleer de start en de opgeslagen commando’s voordat je de code verandert.
- Vergelijk het resultaat met het doel, ook als de code helemaal is uitgevoerd.
3.2 Zoek de eerste verkeerde stap
Een programmeerfout vinden is makkelijker als je weet wat je verwachtte. Vertel wat het doel was en wat het resultaat was: “Ik wilde dat de robot op de bal kwam. Hij stopte aan de andere kant.”
Kijk waar de route voor het eerst verandert
Begin met je voorkant vooruit. De bal ligt één vak vooruit en twee naar links. Je code zegt forward, turn right, forward, forward.
De eerste keer vooruit past bij je plan. Bij het tweede commando kijkt de robot naar rechts. Volgens je plan moet hij naar links kijken. Dit is de eerste verkeerde stap, ook al heeft hij het vak nog niet verlaten. De draai naar rechts is de programmeerfout.
Latere bewegingen kunnen hun commando’s goed volgen, maar toch vanuit de verkeerde kijkrichting beginnen. Begin bij het eerste verschil, zodat je niet elk later vak apart probeert te verbeteren.
Voer de code langzaam stap voor stap uit
Wijs steeds één commando aan. Voer het uit met een pionnetje en vergelijk het daarna met de getekende route. Houd de pijlkaarten naast de mat, zodat je ze samen kunt controleren.
Stop als een commando verschilt van het plan. Vlak daarvoor kan ook een nodig commando ontbreken. Als je plan een draai nodig heeft maar het volgende commando vooruit is, controleer dan of de draai ontbreekt.
Maak een snel programma makkelijker te volgen
Een sprite kan zo snel bewegen dat je alleen zijn laatste plek ziet. Zet een blok “wacht” tussen de acties om de uitvoering te vertragen. Nu kun je zien of hij te vroeg sprak of te ver bewoog.
Je kunt ook alleen de eerste paar commando’s testen. Begin bij de geplande start en voer dat deel uit. Als je daarmee het juiste vak en de juiste kijkrichting bereikt, zoek dan verderop in de code. Als je een langer deel test, begin je weer vanaf dezelfde start.
Bespreek de blokken
Vertel een ander wat elk blok doet. Je kunt het zelfs aan een knuffel vertellen: “Eerst gaat hij vooruit. Daarna draait hij naar rechts.” Als je de naam van de draai uitspreekt, hoor je misschien dat het naar links moet zijn. De ander kan de route controleren terwijl jij de code aanwijst.
Als er niets start, controleer dan de beginvoorwaarden. Zit er een startblok vast? Staan de blokken bij de juiste sprite? Controleer bij een vloerrobot Start, de kijkrichting en het gewiste geheugen voordat je een verkeerde beweging zoekt.
Belangrijkste punten
- Vertel wat er moest gebeuren en wat er echt gebeurde.
- Voer de code stap voor stap uit tot je het eerste verschil met het plan vindt.
- Een draai kan de eerste verkeerde stap zijn zonder dat de robot van vak verandert.
- Gebruik korte tests of wachtblokken om de acties te zien.
- Leg de code hardop uit om een programmeerfout te helpen vinden.
3.3 Maak een kleine verbetering en voer het programma opnieuw uit
Als je de programmeerfout hebt gevonden, verander je het deel dat fout is. Laat de delen staan die hun taak al goed uitvoeren. Je kunt bijvoorbeeld commando’s verwisselen, er één toevoegen of weghalen, of een commando of getal veranderen.
Verbeter de draai
De bal ligt één vak vooruit en twee naar links. De robot begint met zijn voorkant vooruit. Je hebt de verkeerde draai gevonden in forward, turn right, forward, forward.
Verander alleen turn right in turn left. Je nieuwe programma is forward, turn left, forward, forward. De eerste beweging brengt de robot nog steeds één vak vooruit. Door de nieuwe draai kijkt hij naar links. De laatste twee bewegingen brengen hem bij de bal.
Als je de eerste beweging vooruit zou veranderen, zou dat de verkeerde draai niet verhelpen. Laat je verandering passen bij de aanwijzing die je hebt gevonden.
Test één verandering tegelijk
Maak één verandering en test daarna. Als je tegelijk de draai verandert en een beweging vooruit weghaalt, verandert het resultaat op twee manieren. Je weet dan niet welke verandering hielp.
Zorg bij de test voor dezelfde beginvoorwaarden:
- Zet de robot terug op Start.
- Zet hem met zijn voorkant in de geplande richting.
- Wis opgeslagen commando’s en voer het verbeterde programma in.
- Druk op GO en bekijk de hele route.
Zet bij een sprite de startplek en de veranderde kijkrichting, grootte of zichtbaarheid terug. Druk daarna op de groene vlag.
Controleer de hele taak
Door een verbetering kan de robot misschien verder komen en een andere programmeerfout laten zien. Hij kan de juiste draai maken, maar toch te vroeg stoppen. Controleer alle stappen, ook de laatste beweging, woorden en geluiden. Blijf programmeerfouten zoeken en verhelpen totdat het hele programma aan je doel voldoet.
Als je verandering niet hielp, maak die dan ongedaan en doorloop het programma opnieuw. Zoek het eerste verschil tussen het plan en de uitvoering. Je hoeft niet elke keer een helemaal nieuw programma te beginnen.
Je kunt zeggen: “Ik heb het nog niet opgelost.” Een test vertelt je waar je daarna naar kunt kijken. Als je de volgende programmeerfout ziet, maak je nog een kleine verandering en probeer je het opnieuw.
Belangrijkste punten
- Verander het deel dat fout is en laat de werkende delen staan.
- Verhelp één ding en test daarna.
- Begin opnieuw vanaf de geplande plek en met de geplande kijkrichting.
- Voer het hele programma uit om te controleren of er meer programmeerfouten zijn.
4Maak je eigen werkende programma
Kies een kleine taak voor je robot of sprite. Je kunt een auto naar een garage sturen of een personage een vriend laten begroeten. Teken of vertel de stappen voordat je gaat bouwen. Test daarna steeds een klein deel en maak je code makkelijk te volgen voor iemand anders.
4.1 Zet je idee om in commando’s
Kies wat je programma moet doen. Vertel het doel in gewone woorden, zoals “De auto rijdt naar de garage en toetert.” Bepaal waar hij begint en waar hij moet eindigen.
Teken of vertel het plan
Volg een route met je vinger of teken die op een rooster. Teken voor een verhaal de acties als plaatjes in een strip. Vertel wat er eerst, daarna en als laatste gebeurt.
Dit plan is je algoritme. Je kunt het veranderen voordat je tijd besteedt aan blokken vastklikken of knoppen indrukken.
Verdeel een grote stap in kleine commando’s
Een vloerrobot heeft geen knop die “bezoek de garage” heet. Kijk naar de route en gebruik commando’s die hij kent.
De garage is twee vakken vooruit en één vak naar links. De robot begint met zijn voorkant vooruit. Je plan zegt: “Ga twee vakken vooruit, draai naar de garage en ga dan één vak vooruit.”
Bouw de code stap voor stap:
- Voor twee vakken vooruit heb je
forward, forwardnodig. - Om naar de garage te kijken heb je
turn leftnodig. - Voor het laatste vak heb je
forwardnodig.
Schrijf ↑ ↑ ↰ ↑ op en doorloop het om te controleren. De draai is op het tweede vak vooruit, vóór de laatste beweging.
Bedenk het verhaal van een sprite
Een kat komt binnenlopen, zegt “Hallo!” en springt dan. In een roosterapp kun je na het startblok en de blokken die de beginstand terugzetten “beweeg 3 naar rechts”, “zeg Hallo!” en dan “spring” gebruiken. Het praten hoort tussen het lopen en springen, omdat dat het verhaal is dat je hebt bedacht.
Selecteer het personage voordat je het blokken geeft. Elke sprite heeft zijn eigen code. Zorg dat één personage werkt voordat je het deel van een ander personage bouwt.
Controleer zowel het plan als de code
Leg de code naast het getekende pad of de plaatjes van het verhaal. Heeft elke geplande stap commando’s? Staan ze op de juiste plek?
Als de code het plan volgt maar toch het doel mist, controleer dan ook het plan. Misschien heb je de route verkeerd geteld. Als het plan klopt en een blok anders is, verbeter dan het blok.
Meer dan één programma kan een doel bereiken. Een korter programma is vaak makkelijker te lezen, maar moet nog steeds elk deel van de taak uitvoeren. Controleer de route en het einde voordat je ervoor kiest.
Belangrijkste punten
- Vertel het doel en kies de start voordat je gaat bouwen.
- Teken een pad of een verhaalplan op volgorde.
- Verdeel elke grote stap in commando’s die de robot of sprite kent.
- Als het resultaat fout is, controleer dan zowel het plan als de code.
4.2 Bouw een stukje, test een stukje
Testen betekent dat je je programma uitvoert om te controleren of het doet wat je wilde. Je kunt al testen voordat het hele programma klaar is. Een programmeerfout is makkelijker te vinden in een paar nieuwe blokken dan in een lange lijst die nog niet is getest.
Voeg één klein deel toe
Bouw de eerste paar commando’s. Voorspel wat ze doen, voer ze uit en controleer het resultaat. Verhelp eventuele programmeerfouten voordat je het volgende deel toevoegt.
Zorg bij een auto die een garage moet bereiken en moet toeteren eerst dat de route werkt. Controleer op welk vak de auto stopt. Voeg daarna de toeter toe en controleer of die na de route klinkt. Elk nieuw deel heeft een duidelijke taak die je kunt testen.
Laat je doel de test bepalen
Let op elk deel van het doel. Een robot kan het juiste vak bereiken maar de verkeerde kant op kijken. Een sprite kan zijn plek bereiken maar de verkeerde woorden zeggen. Kijk en luister naar de hele uitvoering.
Vraag een vriend of vriendin om ook te testen. Vertel het doel en laat de ander vertellen wat die zag. Vriendelijke feedback noemt iets wat werkt en iets wat verbeterd moet worden: “De auto bereikt de garage. De toeter moet na de beweging klinken.”
Maak code makkelijker te lezen
Zoek naar commando’s die elkaar opheffen. Een draai naar rechts met meteen daarna een draai naar links laat de robot op hetzelfde vak staan, met dezelfde kijkrichting. Als je doel alleen die route en dat einde nodig heeft, kun je beide draaien weghalen.
In een roosterapp die getallen in bewegingsblokken toestaat, kunnen vier blokken “beweeg 1 naar rechts” één blok “beweeg 4 naar rechts” worden. De sprite bereikt dezelfde plek. Controleer of je doel geen aparte acties tussen die bewegingen nodig heeft.
Test na het overzichtelijk maken opnieuw vanaf het begin. Een kortere lijst is alleen nuttig als die de taak nog steeds uitvoert.
Vertel wat je hebt geleerd
Laat een ander elk deel van je code zien en vertel wat het doet. Vertel over één programmeerfout die je hebt verholpen. Je kunt zeggen: “Ik telde Start als een beweging. Nu tel ik alleen de vakken waar de robot naartoe gaat.”
Gebruik die les bij je volgende programma. Als links en rechts lastig waren, controleer die dan van achter de robot voordat je zijn draaien invoert. Als een blok los zat, controleer dan tijdens het bouwen of de blokken vastzitten.
Belangrijkste punten
- Test een paar commando’s voordat je het volgende deel toevoegt.
- Controleer elk deel van het doel, ook woorden, geluiden en kijkrichting.
- Geef vriendelijke, duidelijke feedback als je met een vriend of vriendin test.
- Haal onnodige commando’s weg of voeg dezelfde bewegingen samen waar de app dat toelaat.
- Test na het overzichtelijk maken vanaf het begin.
- Onthoud een programmeerfout die je hebt verholpen en let er de volgende keer op.
Programmeren en debuggen: voorbeelden
1Geef een robot en een sprite een taak
18 stappen
- 1IntroductieVan een idee naar een programma
Je wilt dat een robot een speelgoedboom bereikt. “Bezoek de boom” noemt de taak, maar de robot heeft kleinere stappen nodig. Je kiest commando’s, zet ze op volgorde en controleert de draaien. Daarna bouw je een kort programma met blokken voor een sprite op een scherm.
- 2UitlegHet ene commando na het andere
Een commando geeft één instructie, zoals “vooruit”. Een programma is een lijst met commando’s die een robot of computer volgt. De commando’s heten code. In jouw volgorde heeft elk commando een plek: het eerste wordt vóór het tweede uitgevoerd, enzovoort.
- 3AnalogieBedenk eerst de taak
Denk aan de stappen om je klaar te maken voor tekenen: pak papier, kies een kleurpotlood, teken. Een plan met stappen is een algoritme. Een programma schrijft een plan in commando’s die een computer kent. Voor de tocht van de robot heb je commando’s voor bewegen en draaien nodig in plaats van stappen om te tekenen.
- 4VoorbeeldProbeer een verwisseling
Zet een pionnetje op Start, met zijn voorkant naar boven. Voer
forward, turn leftuit. Het gaat vooruit en kijkt dan naar links. Zet het terug en probeerturn left, forward. Het gaat nu vanaf Start naar links. Dezelfde commando’s bereiken verschillende vakken omdat de volgorde is veranderd. - 5UitdagingEindigen ze op dezelfde plek?
Begin op een getallenlijn bij 0. Eén programma gaat 1 vooruit en dan 4 vooruit. Een ander gaat 4 vooruit en dan 1 vooruit. Eindigen ze op dezelfde plek?
---reveal---
Ja, beide stoppen op 5. Beide gaan vijf plaatsen vooruit. Bij deze verwisseling blijft de totale afstand op dezelfde rechte getallenlijn gelijk.
- 6UitlegDraai zonder verder te gaan
Op de mat van je robot gaat hij met vooruit één vak in de richting van zijn voorkant. Met achteruit gaat hij naar achteren zonder te draaien. Een draai naar links of rechts is een kwartslag op de plaats. Doe een draai naar rechts na: je voorkant verandert van richting, maar je voeten blijven op dezelfde plek.
- 7TipGa achter je robot staan
Gebruik links en rechts vanuit de robot gezien. Als hij naar je toe kijkt, is zijn rechts aan jouw linkerkant. Ga achter hem staan en kijk dezelfde kant op. Wijs met je rechterhand naar zijn rechterkant. Dat helpt je de draai te kiezen voordat je de route invoert.
- 8VoorbeeldBereik eerst het vak waar je draait
De boom staat drie vakken vooruit en één vak links van Start. Je robot begint met zijn voorkant naar boven. Leg
↑ ↑ ↑neer. Elke pijl betekent vooruit. Tel de drie nieuwe vakken waar hij naartoe gaat. Hij is nu naast de rij van de boom en kijkt nog steeds naar boven. - 9VoorbeeldDraai nu naar de boom
Houd de robot op dat vak. Voeg
↰ ↑toe: draai naar links en dan vooruit. De draai verandert zijn kijkrichting zonder hem te verplaatsen. Met vooruit gaat hij naar het vak met de boom. Je volledige route is↑ ↑ ↑ ↰ ↑. Druk bij een robot die commando’s bewaart eerst op Wissen, voer de lijst in en druk op GO. - 10UitdagingBereik speelgoed naast Start
Een robot kijkt naar boven. Speelgoed ligt één vak rechts van hem. Sam voert alleen
↱in. Waar stopt de robot en welk commando ontbreekt?---reveal---
Hij blijft op Start staan en kijkt nu naar rechts. Voeg
↑toe na de draai om het speelgoed te bereiken. Hier volgt de pijl vooruit de nieuwe voorkant van de robot. - 11UitlegKies de sprite
Een sprite is een personage of voorwerp op een scherm. Selecteer de sprite voordat je blokken naar zijn codegebied sleept. Zijn blokken besturen die sprite. Klik de blokken aan elkaar in de volgorde van je app, over het scherm of van boven naar beneden.
- 12VoorbeeldStart, zet terug en beweeg
Een vogel moet naar een nest bewegen dat vijf roostervakken rechts van de beginplek ligt. Begin met “wanneer op de groene vlag wordt geklikt”. Klik een blok vast dat de positie terugzet naar de beginplek en daarna “beweeg 5 naar rechts”. In deze roosterapp telt de beweging vakken naar de rechterkant van het scherm.
- 13VoorbeeldPraat na aankomst
Voeg “zeg Thuis!” toe na de beweging. Het verbonden programma start, zet de vogel terug, beweegt vijf vakken naar rechts en toont dan “Thuis!”. Een zegblok verandert wat je ziet. Een geluidsblok kan iets toevoegen wat je hoort, zoals een tjilp na het praten.
- 14KernpuntZet zo nodig meer terug dan de plek
Stel dat de vogel aan het einde van de uitvoering groeit en verdwijnt. Als je hem de volgende keer terug naar de beginplek laat gaan, verandert alleen zijn plek. Voeg na de start blokken toe die zijn oorspronkelijke grootte terugzetten en hem laten verschijnen. Anders begint de volgende test met een grote, verborgen vogel.
- 15UitdagingWaarom zegt de vogel niets?
Je vogel beweegt naar het nest, maar zijn blok “zeg Thuis!” ligt los naast het programma. Hoe kun je hem na aankomst laten praten?
---reveal---
Klik het zegblok vast aan het einde van de verbonden volgorde van de vogel. Een los blok wordt niet met die volgorde uitgevoerd, ook niet als het dicht bij het bewegingsblok ligt.
- 16TipLaat elk geluid aflopen
Sommige apps hebben zowel blokken “start geluid” als “speel geluid tot het klaar is”. Het eerste begint een geluid en gaat verder. Het tweede wacht tot het geluid is afgelopen. Kies voor een melodie waarvan de geluiden na elkaar moeten klinken de wachtende blokken, zodat de geluiden niet tegelijk klinken.
- 17UitdagingControleer de voorbereiding voor een nieuwe uitvoering
Je hebt een nieuwe route naar de boom geschreven. Je robot bewaart oude commando’s en zijn voorkant wijst nu naar links. Je plan begint met de voorkant naar boven. Wat moet je voorbereiden voordat je de nieuwe route invoert en uitvoert?
---reveal---
Wis oude commando’s. Zet de robot op Start met zijn voorkant naar boven, voer daarna de nieuwe route in en druk op GO. Zowel de code als de beginvoorwaarden beïnvloeden de tocht.
- 18SamenvattingKlaar om commando’s te geven
Een programma zet een plan om in commando’s die de robot of sprite kent. Controleer hun volgorde, lees wat elke beweging betekent en laat draaien op hetzelfde vak gebeuren. Selecteer bij blokken de juiste sprite, klik zijn volgorde aan elkaar en zorg bij elke uitvoering voor dezelfde begineigenschappen.
2Voorspel een route met een pionnetje
11 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieLees voordat je uitvoert
- 2UitlegHoud twee dingen in gedachten
- 3VoorbeeldVolg de eerste drie commando’s
- 4VoorbeeldMaak dezelfde route af
- 5UitdagingGa achteruit na een draai
- 6VerbandLeg het pad uit met een reden
- 7VoorbeeldVerander de laatste beweging
- 8UitdagingVergelijk twee paden
- 9TipGebruik een misser om te kiezen wat je controleert
- 10UitdagingVerander een draai en doorloop opnieuw
- 11SamenvattingControleer je voorspelling
3Volg de aanwijzingen naar een programmeerfout
14 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieWat wilde je laten gebeuren?
- 2UitlegBenoem de fout
- 3VoorbeeldLees het programma naar de tent
- 4UitdagingBenoem een andere programmeerfout
- 5VoorbeeldBekijk het begin van de route naar de tent
- 6VoorbeeldStop bij het eerste verschil
- 7TipMaak elke stap beter zichtbaar
- 8UitdagingZoek het eerste verkeerde blok
- 9VoorbeeldVerander één draai
- 10VoorbeeldVoer het hele verbeterde programma uit
- 11UitdagingEr verschijnt later een programmeerfout
- 12KernpuntEén verandering vertelt je meer
- 13UitdagingDe code krijgt geen goede kans
- 14SamenvattingVolg de aanwijzing en test daarna
4Bouw een kort verhaal met een sprite
11 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieKies een kort verhaal
- 2UitlegGeef elke actie een plek
- 3VoorbeeldZet het eerste plaatje om in code
- 4UitdagingHoud het verhaal op volgorde
- 5VoorbeeldTest eerst de route
- 6TipLuister naar de test van een ander
- 7VoorbeeldVoeg dezelfde bewegingen samen
- 8UitdagingControleer na het overzichtelijk maken
- 9UitdagingAls het plan verbeterd moet worden
- 10VerbandOnthoud wat je van een programmeerfout leert
- 11SamenvattingLaat een werkend programma zien
Programmeren en debuggen: oefenvragen
Set 1: Commando’s, draaien en eerste programma’s10 Oefenvragen
Vraag 1 van 10
Toon antwoordVerberg antwoord
Vraag 2 van 10
turn right in. Waar is de robot na dat commando?Toon antwoordVerberg antwoord
Vraag 3 van 10
Toon antwoordVerberg antwoord
Vraag 4 van 10
Toon antwoordVerberg antwoord
Vraag 5 van 10
Toon antwoordVerberg antwoord
Vraag 6 van 10
forward, turn left, backward. Waar eindigt hij ten opzichte van Start?Toon antwoordVerberg antwoord
Vraag 7 van 10
forward, turn right, forward, forward, turn left, forward. Waar stopt hij?Toon antwoordVerberg antwoord
Vraag 8 van 10
Toon antwoordVerberg antwoord
Vraag 9 van 10
Toon antwoordVerberg antwoord
Vraag 10 van 10
Toon antwoordVerberg antwoord
Set 2: Volg routes en vind kleine programmeerfouten10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
forward, backward en draaicommando’s. Je plan zegt “bezoek het kleed”. Wat moet je doen voordat je het plan invoert?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
backward, turn left, forward. Waar is hij ten opzichte van Start?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
forward, turn right, backward, turn left, forward. Wat zijn zijn eindplek en kijkrichting?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
forward, forward, forward uit. Door welke programmeerfout gaat hij voorbij het blad?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
forward, turn left, forward. De robot begint goed, maar voert forward, forward, turn left uit. Bij welk commando verschilt hij voor het eerst van het plan?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 3: Aanwijzingen voor debuggen en zorgvuldig opnieuw testen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
forward, forward, turn right, backward, turn right, forward uit. Waar eindigt hij ten opzichte van Start?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
forward, turn left, turn right, forward uit. De andere voert forward, forward uit. Hoe verhouden hun eindplekken en kijkrichtingen zich tot elkaar?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 4: Laat programma’s van begin tot eind werken10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
forward, turn right, forward, turn left, backward. Waar eindigt hij en welke kant kijkt hij op?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
forward, turn right, forward, turn left, forward uit. Je verandert alleen de eerste draai in turn left. Waar stopt hij nu?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
turn right, forward, forward uit. Wat voor programmeerfout zit er in deze lijst?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
forward, turn left, turn right, forward, turn right, forward. Welke kortere code behoudt dat pad en die kijkrichting?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
Achteruit
Algoritme
B
Bewegingsblok
Blok
C
Code
Code overzichtelijk maken
Commando
D
Debuggen
Deeltest
Doel
Doel
Draaibewegingen die elkaar opheffen
E
Eerste verkeerde stap
F
Feedback
G
Geluidsblok
GO
I
In kleine delen opbouwen
K
Kijkrichting
Kwartslag
L
Logisch redeneren
O
Ontbrekend commando
Opnieuw testen
Overbodig commando
P
Plan
Programma
Programmeerfout (bug)
Programmeren
R
Route
S
Sprite
Stap voor stap doorlopen
Stap voor stap uitvoeren
Startblok
T
Terugzetten naar de beginstand
Testen
U
Uiterlijkblok
V
Verhaalplan
Verkeerd commando
Verkeerd getal
Verkeerde volgorde
Vloerrobot
Volgorde
Voorspelling
Vooruit
W
Wachtblok
Wissen
Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.