21 e eeuwse vaardigheden: Programmeren Wat is programmeren? Als je zin hebt in een boterham met kaas, dan kan je zeggen: papa, mag ik een boterham met kaas? Maar wat nu als je vader niet weet wat een boterham is, wat kaas is, en dat je de kaas op de boterham moet doen, de boterham moet snijden en dan geven? Dat is eigenlijk wat programmeren is: een apparaat of computer kent maar een paar woorden: de programmeertaal. Je moet met die beperkte set woorden zorgen dat de computer doet wat je wil, of dat je vader de boterham geeft die je wil. Met een beperkte set woorden zorgen dat de computer doet wat je wil. Waarom programmeren met kinderen? Allereerst leert programmeren je om logisch en abstract te denken. Je krijgt inzicht in hoe computers en apparaten werken. We hoeven niet allemaal programmeurs te worden, maar zo n inzicht helpt ons ook als we met de computers werken. Daarnaast kan je op ieder niveau enorm veel creativiteit kwijt in het bouwen van simpele animaties, websites, filmpjes of muziek. Het geeft enorm veel voldoening als je na wat gepuzzel zelf een spelletje hebt gemaakt en je ziet hoe je vriendje het speelt! Programmeren leert je probleemoplossend denken en vereist op verschillende manieren planmatig werken.
Voorbeeld in de klas 1: de boterhamrobot Dit is een letterlijke vertaling van de boterham met kaas van hierboven naar een speelse en eenvoudige manier om de basis van programmeren te ontdekken. Als een programmeur een probleem oplost begint hij/zij meestal met het identificeren van de belangrijkste objecten in het probleem. In het geval van de boterham kan dat bijvoorbeeld zijn: arm, hand, boterham, mes, kaas. (Objecten zijn vrijwel altijd de zelfstandig naamwoorden uit de omschrijving). Vervolgens gaat de programmeur de handelingen definiëren die de objecten moeten gaan doen. (In computertermen zijn dat Functies of Methodes van de objecten). Tussen het object en de methode staat in dit voorbeeld een dubbelepunt, de methodes herken je aan de haakjes. Bijvoorbeeld: arm:naarlinks() hand:pak() De kaas, boterham en mes hoeven in dit voorbeeld niets te kunnen. Leg uit dat naarlinks() vanuit het object gedacht is, dus in spiegelbeeld voor de kinderen. Stel je als boterhamrobot op achter een tafel waar een bord, mes, boterham en een plakje kaas op liggen. De kinderen gaan nu (in groepjes) op een werkblad een programma schrijven waarmee de robot de boterham kan smeren. Daarna lezen de kinderen hun programma voor en voert de robot het zo exact mogelijk uit. Geef ook aan als er iets verkeerd gaat ( Error: kan niets pakken ). Afhankelijk van het niveau kan je nog alle kanten op: - - Dit voorbeeld gaat uit van kinderen die vlot kunnen schrijven en links en rechts goed beheersen. Je vindt ook een aankruiswerkblad en in de laagste groepen kan je eventueel met papiertjes met tekeningen van bewegingen werken. In hogere jaren kan je bijvoorbeeld eerst met de groep de objecten (arm, hand, boterham, kaas) definiëren. Heb je een bord object nodig? En een vader object? Objecten kunnen onderdeel zijn van een ander object. In dat geval wordt het bijvoorbeeld vader->arm->hand->pak(). Bij programmeren werk je vaak met als dan constructies, met input ( Kies welk beleg je wil: kaas/jam/pindakaas ) en met loops ( doe 5x, of doe totdat ).
Voorbeeld in de klas 2: scratch Scratch is een voor kinderen ontwikkelde programmeeromgeving. URL: https://scratch.mit.edu/ Je kan een account maken zodat je je werk kan bewaren, maar je kan ook direct beginnen. Alle dingen die je in je film of game ziet heten sprites. De kat is ook een sprite. (Je mag hem weghalen als je hem niet wil) De sprites sleep je in de film of game. De opdrachten staan in het midden, gesorteerd per soort. Je sleept de opdrachten naar rechts en vormt zo het programma. Vaak begint een programmablokje met een Gebeurtenis : Wanneer op het vlaggetje wordt geklikt of Wanneer pijltje links wordt ingedrukt.
Laten we een eenvoudige game maken. Allereerst kiezen we een kat en een muis en zetten we die in het beeld. De kat moet reageren op de pijltjes. Selecteer de kat-sprite en bouw deze blokjes na: We willen punten bijhouden. Daarvoor hebben we een variabele nodig. Dat kan je zien als een envelopje met een naam. Je kan er van alles in stoppen en even later vragen wat er in zit. Onder het kopje Data maken we de variabele Punten. De muis krijgt een ingewikkeld script: - Eerst de punten op 0 - Muis bovenaan de pagina - Herhaal lus, met daarin o Zak een stukje o Rand bereikt? Punt eraf Weer naar boven Willekeurige horizontale positie o Kat aangeraakt? Punt erbij! Geluidje Weer naar boven Willekeurige horizontale positie Druk nu op het vlaggetje en probeer met de kat de muizen te vangen. Uitbreidingsmogelijkheden: - Kan de game sneller? - Kan de game sneller worden als de punten hoger worden? - Game over bij negatieve punten - Meer muizen - Achtergrondplaat - Etc. Etc.
Andere mogelijkheden: Bomberbot Niveau: beginners. Geef de robot de juiste opdrachten en laat het parcours aflopen. hem bomberbot.com (betaald) Ko de Kraker Niveau: ~bomberbot, iets ingewikkelder Goed: hier worden de opdrachten (vb. rechtsaf) vanuit Ko gezien. kodekraker.watnou.nl/ Codekinderen.nl Verzamelwebsite met een aantal lesideeën (o.a. een iets andere versie van de boterhamrobot) Codeuur.nl Een aantal kant en klare Scratch lessen Coderdojo.nl Op verschillende plekken in het land worden bijvoorbeeld op zaterdagmiddag gratis middagen georganiseerd waar kinderen onder begeleiding kunnen komen programmeren. Ze leren van elkaar en van de mentoren. https://www.kennisnet.nl/artikel/9-x-zo-begin-je-als-basisschool-met-programmeren/ Tips van een docente die bezig is met een leerlijn Computational Thinking
Boterhamrobot Schrijf hieronder het programma voor de boterhamrobot. Dit zijn de objecten die je mag gebruiken, en wat ze kunnen: arm:links() arm:rechts() arm:naarvoren() arm:naarachteren() hand:pak() hand:laatlos() mes bord kaas boterham
Boterhamrobot Schrijf hieronder het programma voor de boterhamrobot.