← Back to CoursesStemExpert
StemExpert
Fundamental · Handboek · 22. Computationeel denken
StemExpert · Brecht Corbeel · schoolium.me
StemExpert
F22. Computationeel denken
FFundamental · deel F6 · Programmeren en automatiseren

Handboek · hoofdstuk 22Computationeel denken

Denken als een programmeur, nog voor je één regel code schrijft

Een computer is snel en gehoorzaam, maar hij bedenkt niets zelf: hij volgt precies de stappen die jij opschrijft. Computationeel denken is de manier van denken waarmee je een probleem zo opdeelt en beschrijft dat een machine het kan uitvoeren. Je leert vier gereedschappen, tekent stroomdiagrammen, speelt algoritmen na op papier en zoekt er de fouten in. En je ontdekt het verschil tussen een regel die een mens schrijft en een regel die een computer zelf leert uit voorbeelden: de kern van wat men AI noemt.

8× uitleg4× uitgewerkt voorbeeld1× proef1× naslag1× verhaal1× het geheel15 opdrachten in het werkboek± 6 lestijden
Eerst denken, dan programmeren: het algoritme van de meetkas groeit op het bord.
Eerst denken, dan programmeren: het algoritme van de meetkas groeit op het bord.
Na dit hoofdstuk
Verhaal · 22.1

Een woord uit Bagdad

1/16

Rond het jaar 825 schreef de wiskundige Muhammad ibn Musa al-Khwarizmi in Bagdad een boek over rekenen met de Indische cijfers: de tien tekens 0 tot 9 die jij vandaag gebruikt. Hij legde uit hoe je met die cijfers optelt, aftrekt, vermenigvuldigt en deelt, stap voor stap, zodat iedereen die de stappen volgt het juiste antwoord vindt. Het boek werd in de twaalfde eeuw in het Latijn vertaald. Het oudste bewaarde handschrift begint met de woorden Dixit Algorizmi: 'zo sprak Algorizmi'. Van die verlatijnste naam (ook als Algoritmi geschreven) komt ons woord algoritme.

Een algoritme is dus veel ouder dan de computer. De staartdeling die je in de lagere school leerde, is een algoritme: je hoeft niet te begrijpen waarom ze werkt om ze foutloos uit te voeren. Precies dat maakt algoritmen zo krachtig: wie de stappen volgt, mens of machine, komt tot hetzelfde resultaat.

In 1843 schreef de Britse wiskundige Ada Lovelace lange noten bij een artikel over de Analytical Engine, een rekenmachine die Charles Babbage ontworpen had maar nooit afwerkte. In haar laatste noot beschreef ze stap voor stap hoe die machine een reeks ingewikkelde getallen (de getallen van Bernoulli) kon berekenen, met herhalingen erin. Ze zag ook al dat zo'n machine meer kon dan rekenen: alles wat je in symbolen kan vastleggen, zoals muziek, kan ze bewerken.

Waarom dit verhaal ertoe doet

Tussen al-Khwarizmi en Ada Lovelace liggen duizend jaar, maar het idee is hetzelfde: een probleem zo precies beschrijven dat je het kan uitbesteden. In dit hoofdstuk leer je dat zelf, eerst op papier. In de volgende hoofdstukken besteed je het uit aan een computer en een microcontroller.

Rekenen met de cijfers 0 tot 9, stap voor stap uitgeschreven: de oudste algoritmen staan op perkament.
Rekenen met de cijfers 0 tot 9, stap voor stap uitgeschreven: de oudste algoritmen staan op perkament.
Uitleg · 22.2

Vier gereedschappen om te denken

2/16

Computationeel denken is niet 'denken zoals een computer', maar denken zodat een computer je kan helpen. Programmeurs, ingenieurs en wetenschappers gebruiken er vier gereedschappen voor. Je hebt ze niet altijd alle vier nodig, en ze lopen door elkaar, maar samen maken ze een groot probleem hanteerbaar.

  1. Decompositie: een groot probleem opdelen in deelproblemen die je apart kan aanpakken.
  2. Patroonherkenning: zien wat telkens terugkomt, zodat je één oplossing meerdere keren kan gebruiken.
  3. Abstractie: alleen overhouden wat ertoe doet voor het probleem, en de rest weglaten.
  4. Algoritme: een stappenplan maken dat het probleem altijd oplost, zo precies dat een machine het kan uitvoeren.

In de figuur zie je ze toegepast op de meetkas van Habitat. De opdracht 'zorg voor de planten' is te groot om in één keer te programmeren. Na de vier stappen blijft er een kort stappenplan over dat een microcontroller (hoofdstuk 24) kan uitvoeren.

Decompositieopdelen inkleineredeelproblemenDe kas verzorgen =water geven +licht +temperatuur +energie bewaken.Patroonherkenningzien wat telkensterugkomtWater, licht enverluchten:telkens meten,vergelijken enschakelen.Abstractieweglaten wat erniet toe doetVoor water geventelt het vocht inde grond, niet dekleur van de pot.Algoritmeeen stappenplandat altijd werktMeet het vocht.Lager dan 30 %?Pomp dan 30 s.Wacht 15 min.Opnieuw.de vier gereedschappentoegepast op de meetkas
Van een vage opdracht naar een stappenplan: elk gereedschap maakt het probleem kleiner of duidelijker.
Uitleg · 22.3

Decompositie: van groot naar klein

3/16

Een probleem dat te groot is om te overzien, knip je in stukken. Elk stuk knip je opnieuw, tot elk deel klein genoeg is om in één keer op te lossen. Zo ontstaat een boom: bovenaan het hele probleem, onderaan de kleine taken.

Decompositie heeft drie voordelen. Je ziet wat er allemaal moet gebeuren (en vergeet minder). Je kan het werk verdelen: in een team neemt elk lid een tak. En je kan elk deel apart testen: werkt het vochtmeten, dan pas koppel je er de pomp aan.

Wanneer is een deel klein genoeg?

Als je het in één zin kan beschrijven met een werkwoord en je weet hoe je het doet: 'vocht meten', 'pomp schakelen'. Kan je dat nog niet, knip dan verder.

De meetkas zorgt zelf voor deplantenWatervochtmetenpompschakelenLichtlichtmetenledstripschakelenTemperatuurtemperatuurmetendakraamopenenEnergiebatterijbewakenzuinigschakelenElk blad onderaan is klein genoeg om als één stap te programmeren.
De meetkas in vier deelproblemen, elk opgesplitst in taken die een microcontroller kan uitvoeren.
Proef · 22.4

Robot spelen op ruitjespapier

4/16
Onderzoeksvraag

Hoe precies moeten instructies zijn opdat iemand ze uitvoert zonder te raden, zoals een machine?

Materiaal
  • ruitjespapier (2 vellen per duo)
  • potlood en gom
  • een map of boek als schermpje tussen de twee leerlingen
start, kijkt naar bovenprogramma 1 VOORUIT 2 2 RECHTS 3 VOORUIT 2 4 LINKS 5 VOORUIT 2 6 RECHTS 7 VOORUIT 2 8 LINKS 9 VOORUIT 210 RECHTS11 VOORUIT 2met een patroonHERHAAL 3 KEER: VOORUIT 2 RECHTS VOORUIT 2 LINKSHet patroon herhaalt zichdrie keer. Het laatsteLINKS is overbodig, maardoet geen kwaad.
Elf commando's tekenen een trap; met HERHAAL volstaan er vijf regels.
Werkwijze
  1. 1Leerling A tekent in het geheim een figuur van 6 tot 10 lijnstukken langs de lijnen van het ruitjespapier.
  2. 2Ronde 1. A beschrijft de figuur in gewone woorden; B tekent zonder te kijken. Vergelijk daarna.
  3. 3Ronde 2. Een nieuwe figuur. Nu mag A alleen vier commando's gebruiken: VOORUIT n (n hokjes), LINKS en RECHTS (een kwartdraai ter plaatse) en een startpunt met een kijkrichting. A schrijft het hele programma eerst op, B voert het letterlijk uit.
  4. 4Tel in beide rondes het aantal lijnstukken dat verkeerd staat. Wissel daarna van rol.
  5. 5Zoek in je programma van ronde 2 een stukje dat zich herhaalt en schrijf het korter met HERHAAL.
Waarneming

In ronde 1 gaat het vaak mis bij woorden als 'een beetje naar rechts', 'schuin' of 'terug'. In ronde 2 staan de meeste figuren meteen juist. De fouten die overblijven, zijn tel- en draaifouten: vooral LINKS en RECHTS verwisselen als de 'robot' naar beneden kijkt. Een trap wordt met HERHAAL drie keer korter (zie figuur).

Verklaring

Gewone taal is vol dubbelzinnigheid: een mens vult aan wat bedoeld wordt, een machine niet. Een programmeertaal is net een kleine verzameling commando's die elk maar één betekenis hebben. Wat overblijft zijn bugs: fouten in het programma zelf. Je vindt ze door het programma stap voor stap na te spelen, precies wat B deed. Het korter schrijven met HERHAAL is patroonherkenning; in het volgende hoofdstuk heet dat blok herhaal.

Uitleg · 22.5

Patronen zien en weglaten wat niet telt

5/16

Patroonherkenning. Kijk nog eens naar de boom van het vorige blad. Water, licht en temperatuur werken alle drie op dezelfde manier: meet iets, vergelijk het met een grens, schakel iets aan of uit. Wie dat patroon ziet, hoeft het maar één keer goed uit te denken en kan het drie keer gebruiken. In hoofdstuk 25 krijgt dat patroon een naam: meten, beslissen, doen.

Abstractie. Een echte plantenbak heeft honderd eigenschappen: de kleur van de pot, de soort plant, de vorm van de bladeren. Voor het algoritme 'water geven' tellen er maar twee: hoe vochtig de grond is, en of er water in het reservoir zit. De rest laat je weg. Dat is geen slordigheid, het is net de kunst: een goede abstractie maakt een probleem eenvoudig zonder dat je iets belangrijks verliest.

Je kent abstracties al: een metrokaart toont de stations op rechte lijnen, zonder straten en zonder de echte afstanden. Voor een reiziger is dat net handiger dan een echte kaart (de schematische kaart van de Londense metro, ontworpen door Harry Beck, verscheen in 1933). Ook een schakelschema (hoofdstuk 18) is een abstractie: het toont verbindingen, niet hoe de draden echt lopen.

Te veel weglaten kan ook

Laat je 'water in het reservoir' weg, dan pompt de kas ook als het reservoir leeg is: de pomp draait droog en gaat stuk. Een abstractie is goed als ze alles bevat wat de beslissing kan veranderen.

wat je ziet in een plantenbak○ kleur van de pot○ soort plant● vocht in de grond○ grootte van de bladeren○ temperatuur● water in het reservoir○ tijdstipabstractiewat het algoritme nodig heeftvocht = 27 %reservoir: niet leegtwee gegevens in plaats van zeven
Van zeven eigenschappen blijven er twee over die het algoritme echt nodig heeft.
Uitleg · 22.6

Algoritmen in het dagelijks leven

6/16

Een algoritme is een stappenplan met vier eigenschappen:

  • eenduidig: elke stap kan maar op één manier begrepen worden ('bak de pannenkoek tot hij goudbruin is' is voor een mens duidelijk genoeg, voor een machine niet);
  • vaste volgorde: de stappen staan in de juiste volgorde, en bij een keuze staat er wat je doet bij 'ja' en bij 'nee';
  • eindig: het algoritme stopt na een eindig aantal stappen (behalve als het met opzet eindeloos doorgaat, zoals een thermostaat);
  • invoer en uitvoer: het krijgt gegevens binnen en levert een resultaat.
algoritmeinvoerstappenuitvoer
recept voor pannenkoekenbloem, melk, eierenmengen, rusten, bakken, kerenpannenkoeken
route van een gpsvertrekpunt, bestemming, kaartzoek de kortste weg langs de wegende route
kaarten sortereneen stapel kaartenzoek telkens de kleinste en leg hem vooraaneen gesorteerde rij
staartdelingdeeltal en delerschatten, vermenigvuldigen, aftrekken, cijfer bijhalenquotiënt en rest

Een gps kiest de kortste route door telkens de weg uit te breiden die tot nu toe het kortst is, tot hij de bestemming bereikt. Een sorteeralgoritme zet een stapel in volgorde. Die algoritmen werken voor elke kaart en elke stapel: dat bedoelen we met 'een stappenplan dat altijd werkt'.

Een recept is (bijna) een algoritme

'Voeg een snuifje zout toe' en 'bak tot goudbruin' zijn voor een kok duidelijk, maar niet eenduidig. Een machine heeft een getal nodig ('2 g zout') of een meting ('bak tot de onderkant 160 °C heeft'). Hoe preciezer, hoe dichter bij een echt algoritme.

Een recept is een stappenplan met invoer (de ingrediënten), stappen in volgorde en uitvoer.
Een recept is een stappenplan met invoer (de ingrediënten), stappen in volgorde en uitvoer.
Uitgewerkt voorbeeld · 22.7

Kaarten sorteren met een algoritme

7/16

Sorteer de kaarten 7, 3, 9, 1, 5 van klein naar groot met selectiesorteren: zoek in het ongesorteerde deel de kleinste kaart en wissel ze met de eerste kaart van dat deel. Hoeveel keer vergelijk je twee kaarten? En hoeveel keer bij 100 kaarten?

start73915ronde 1139751 en 7 wisselenronde 2139753 staat al goedronde 3135795 en 9 wisselenronde 4135797 staat al goed: klaarstaat op zijn plaats
Na elke ronde staat er één kaart meer op haar plaats (groen); na vier rondes liggen vijf kaarten juist.
Gegeven
  • rij: 7, 3, 9, 1, 5
  • regel: zoek de kleinste in het ongesorteerde deel en wissel naar voren
Gevraagd
  • de rij na elke ronde
  • het aantal vergelijkingen voor 5 en voor 100 kaarten
Oplossing
  1. 1
    Ronde 1. Zoek de kleinste van 7, 3, 9, 1, 5: dat is 1 (4 vergelijkingen). Wissel met 7: 1, 3, 9, 7, 5.
  2. 2
    Ronde 2. Kleinste van 3, 9, 7, 5: dat is 3 (3 vergelijkingen). Hij staat al vooraan: niets wisselen.
  3. 3
    Ronde 3. Kleinste van 9, 7, 5: dat is 5 (2 vergelijkingen). Wissel met 9: 1, 3, 5, 7, 9.
  4. 4
    Ronde 4. Kleinste van 7, 9: dat is 7 (1 vergelijking). De laatste kaart staat dan vanzelf goed.
  5. 5
    Tellen. vergelijkingen. Voor 100 kaarten: .
Antwoord
Na vier rondes: 1, 3, 5, 7, 9. Dat kost 10 vergelijkingen; voor 100 kaarten 4950.
Klopt dit? Na elke ronde staat er één kaart meer definitief op haar plaats, dus na rondes is alles gesorteerd. Merk op dat het aantal vergelijkingen veel sneller groeit dan het aantal kaarten: 20 keer meer kaarten, bijna 500 keer meer werk. Er bestaan slimmere sorteeralgoritmen; hoe snel een algoritme is, bestudeer je op Expert-niveau.
Uitleg · 22.8

Het stroomdiagram

8/16

Een algoritme in genummerde zinnen wordt snel onoverzichtelijk zodra er keuzes en herhalingen in zitten. Daarom teken je het als stroomdiagram, met vaste symbolen die iedereen kent:

symboolbetekenisvoorbeeld
afgeronde rechthoek (ovaal)start of stopStart
rechthoekhandeling: doe ietszet de pomp aan
ruitbeslissing: een vraag met ja of neevocht < 30 %?
parallellograminvoer of uitvoer: meet, lees, toonmeet het vocht
pijlde volgorde: wat komt erna

Vijf afspraken maken een stroomdiagram leesbaar:

  1. Er is precies één Start.
  2. Uit een ruit vertrekken altijd twee pijlen, met 'ja' en 'nee' erbij.
  3. Uit een rechthoek of parallellogram vertrekt precies één pijl.
  4. Een pijl die terugloopt naar een eerder punt maakt een lus (herhaling).
  5. Lees van boven naar onder; kruisende pijlen vermijd je.
Een vraag die met ja of nee eindigt

Schrijf in een ruit altijd een vraag die je met ja of nee kan beantwoorden: 'vocht < 30 %?', niet 'vocht'. Zo zie je meteen welke pijl bij welk antwoord hoort.

Startpomp aanvocht < 30%?meet hetvochtstart / stopbegin en eindehandelingdoe ietsbeslissingja of nee?invoer / uitvoermeet, lees, toonpijlde volgorde
Vijf symbolen volstaan voor elk algoritme in dit hoofdstuk.
Uitgewerkt voorbeeld · 22.9

Raad het getal als stroomdiagram

9/16

In het spel raad het getal kiest de computer een geheim getal van 1 tot 100. De speler raadt; de computer antwoordt 'hoger', 'lager' of 'Juist!'. Teken het algoritme van de computer als stroomdiagram.

Startkies een geheim getal tussen1 en 100vraag een gokgok = geheim?jatoon 'Juist!'Stopneegok < geheim?jatoon 'hoger'neetoon 'lager'
De lus loopt terug naar de vraag; alleen het antwoord 'Juist!' leidt naar Stop.
Gegeven
  • geheim getal van 1 tot 100
  • antwoorden: 'hoger', 'lager', 'Juist!'
Gevraagd
  • stroomdiagram met de juiste symbolen
Oplossing
  1. 1
    Decompositie. Wat doet de computer? (1) een getal kiezen; (2) een gok vragen; (3) de gok vergelijken; (4) een antwoord tonen; (5) opnieuw beginnen bij (2), tot het getal geraden is.
  2. 2
    Symbolen kiezen. Kiezen is een handeling (rechthoek). Een gok vragen en een antwoord tonen zijn invoer en uitvoer (parallellogram). Vergelijken is een beslissing (ruit).
  3. 3
    Twee vragen na elkaar. Eén ruit kan maar twee uitgangen hebben, en er zijn drie antwoorden. Daarom vraag je eerst 'gok = geheim?' en pas bij 'nee' 'gok < geheim?'.
  4. 4
    De lus. Na 'hoger' of 'lager' loopt de pijl terug naar 'vraag een gok'. Het algoritme stopt alleen bij 'Juist!'.
Antwoord
Zie de figuur: Start, kies een geheim getal, vraag een gok, twee beslissingen na elkaar, drie mogelijke uitvoeren, en een lus terug naar de vraag tot het getal geraden is.
Klopt dit? Speel het na met een geheim getal, bijvoorbeeld 71 en de gokken 50 en 71: 50 → nee → 50 < 71 → ja → 'hoger' → terug; 71 → ja → 'Juist!' → Stop. Elke pijl uit een ruit heeft een label, en er is geen pad dat nergens heen gaat.
Uitgewerkt voorbeeld · 22.10

Naspelen met een trace-tabel: slim raden

10/16

Er bestaat een slimme manier om te raden: gok telkens het midden van wat nog mogelijk is. Speel die strategie na voor het geheime getal 71. Hoeveel pogingen heb je nodig? En hoeveel hoogstens, voor elk getal van 1 tot 100?

Gegeven
  • ondergrens 1, bovengrens 100
  • gok = midden van onder- en bovengrens (naar beneden afgerond)
  • bij 'hoger': ondergrens = gok + 1; bij 'lager': bovengrens = gok − 1
Gevraagd
  • trace-tabel voor het geheime getal 71
  • het grootste aantal pogingen voor 1 tot 100
Oplossing
  1. 1
    Maak een tabel met een kolom voor elke variabele (een naam met een waarde die kan veranderen): ondergrens, bovengrens en gok. Na elke stap schrijf je de nieuwe waarden op een nieuwe rij.
  2. 2
    Poging 1: , dus 50. Het antwoord is 'hoger': de ondergrens wordt 51.
  3. 3
    Poging 2: , dus 75: 'lager', de bovengrens wordt 74. Zo verder, zie de tabel.
  4. 4
    Elke poging halveert (ongeveer) het aantal getallen dat nog kan: 100, 50, 25, 12, 6, 3, 1. Na 7 halveringen blijft er één getal over. Omgekeerd: is het eerste tweemacht groter dan 100.
  5. 5
    pogingondergrensbovengrensgok = middenantwoord
    11100(1 + 100) : 2 → 50hoger
    251100(51 + 100) : 2 → 75lager
    35174(51 + 74) : 2 → 62hoger
    46374(63 + 74) : 2 → 68hoger
    56974(69 + 74) : 2 → 71juist!

    Geheim getal: 71. Bij een oneven som rond je naar beneden af.

Antwoord
Voor 71: vijf pogingen (50, 75, 62, 68, 71). Voor elk getal van 1 tot 100 volstaan hoogstens 7 pogingen. Wie gewoon 1, 2, 3, ... probeert, heeft er soms 100 nodig.
Klopt dit? De onder- en bovengrens komen na elke rij dichter bij elkaar en het geheime getal ligt er altijd tussen: 71 ligt tussen 51 en 100, tussen 51 en 74, tussen 63 en 74, tussen 69 en 74. Dit slimme raden heet binair zoeken; het zit in elke computer die snel iets opzoekt in een gesorteerde lijst.
Uitleg · 22.11

Fouten zoeken: debuggen op papier

11/16

Een fout in een algoritme heet een bug, het zoeken en verbeteren debuggen. De krachtigste methode kost niets: speel het algoritme na met een trace-tabel en kijk waar het iets anders doet dan je verwacht. Vijf fouten komen steeds terug:

soort foutvoorbeeldzo vind je ze
verkeerde volgordeeerst pompen, dan metenvraag bij elke stap: weet ik al wat ik hier nodig heb?
ontbrekende stapde teller nooit op 0 zettenkijk of elke variabele een beginwaarde krijgt
oneindige lusde voorwaarde om te stoppen wordt nooit waarkijk of de lus de variabele in de juiste richting verandert
verkeerde vergelijking< waar ≤ moest, of een grensgeval vergetentest precies op de grens: wat gebeurt er bij 30 %?
pijl die nergens heen gaateen ruit met maar één uitgangtel de pijlen: twee uit elke ruit

In de figuur moet het algoritme aftellen van 10 naar 0. Speel het links na: n wordt 10, 11, 12, 13 ... en de vraag 'n = 0?' is nooit ja. Het algoritme stopt nooit: een oneindige lus. Rechts is één teken verbeterd: n = n − 1. Nu toont het 10, 9, ..., 1 en stopt het bij 0.

De computer doet wat je bedoelt

Nee: hij doet wat je schrijft. Een computer ziet niet dat 'n = n + 1' een vergissing is. Hij telt vrolijk verder, miljoenen keren per seconde. Daarom test je elk algoritme met gewone gevallen, met grensgevallen (precies 30 %) en met rare gevallen (een lege lijst, een sensor die 0 geeft).

fout: telt op in plaats van afStartn = 10n = 0?jaStopneetoon nn = n + 1juist: telt af tot 0Startn = 10n = 0?jaStopneetoon nn = n − 1
Links een oneindige lus: n wordt nooit 0. Rechts de verbetering met één ander teken.
Uitgewerkt voorbeeld · 22.12

Habitat: het algoritme 'water geven'

12/16

De meetkas moet zelf water geven. Er is een bodemvochtsensor in een van de bakjes, een pompje dat 8,0 mL/s levert (hoofdstuk 4) en een reservoir met een vlotter die meldt of het leeg is. Het water heeft na het gieten een tijd nodig om naar de sensor te zakken. Ontwerp het algoritme en speel een ochtend na.

Startmeet het bodemvocht vv < 30 %?neejareservoirleeg?jarode led aan: waterbijvullenneepomp 30 s aan (240 mL)wacht 15 min: het waterzakt inaltijdopnieuw
Het algoritme dat de meetkas zal uitvoeren. In hoofdstuk 23 simuleer je het, in hoofdstuk 25 draait het op een microcontroller.
Gegeven
  • drempel: water geven onder 30 % bodemvocht
  • pompje 8,0 mL/s
  • vlotter: reservoir leeg ja/nee
  • na het gieten 15 min wachten voor je opnieuw meet
Gevraagd
  • stroomdiagram
  • hoeveel water per beurt als de pomp 30 s draait
  • trace van een ochtend
Oplossing
  1. 1
    Decompositie. Meten, beslissen, reservoir controleren, pompen, wachten, opnieuw.
  2. 2
    Abstractie. Twee gegevens: het vocht en 'reservoir leeg ja/nee'.
  3. 3
    Volgorde. Eerst meten, dan beslissen. Het reservoir controleer je vóór je pompt, anders draait de pomp droog (in de kas beveiligt een vlotterschakelaar in serie met de pomp dat ook elektrisch, hoofdstuk 18).
  4. 4
    Pompbeurt. , verdeeld over 12 bakjes: 20 mL per bakje. Voor 1,8 L per dag zijn dat beurten per dag.
  5. 5
    De lus. Na elke beslissing wacht het algoritme 15 minuten en begint het opnieuw. Deze lus stopt met opzet nooit: de kas werkt dag en nacht. Een eindeloze lus is hier dus geen bug.
  6. 6
    Trace van een ochtend. In dit voorbeeld daalt het vocht ongeveer 1 procentpunt per kwartier; een pompbeurt maakt de grond ongeveer 16 procentpunten natter.
  7. 7
    tijdv (%)v < 30 %?reservoir leeg?actie
    07:0032nee(niet gevraagd)wacht 15 min
    07:1531nee(niet gevraagd)wacht 15 min
    07:3030nee(niet gevraagd)wacht 15 min
    07:4529janeepomp 30 s, wacht 15 min
    08:0044nee(niet gevraagd)wacht 15 min
Antwoord
Zie het stroomdiagram: meet, vergelijk met 30 %, controleer het reservoir, pomp 30 s (240 mL), wacht 15 min, opnieuw. Om 07:45 zakt het vocht onder 30 % en pompt de kas één keer.
Klopt dit? Test de grensgevallen: bij precies 30 % is 'v < 30 %?' nee, dus geen water; bij 29 % wel. Test ook het rare geval: reservoir leeg en grond droog → de rode led gaat aan en de pomp blijft uit. Zonder de wachttijd zou de kas bij 29 % meteen opnieuw meten, nog geen verschil zien en blijven pompen tot de bakjes overlopen.
Uitleg · 22.13

Een vaste regel of leren uit voorbeelden?

13/16

Tot nu toe schreef een mens de regel: 'geef water als het vocht lager is dan 30 %'. Maar waar komt die 30 % vandaan? Misschien weet een ervaren tuinier het niet als getal, maar ziet hij het wel aan de plant. Dan kan je het ook anders aanpakken: laat de computer de regel leren uit voorbeelden.

De tuinier meet zeventien keer het bodemvocht en zegt telkens of de plant op dat moment water nodig had. Zo'n voorbeeld met het juiste antwoord erbij heet een gelabeld voorbeeld. De computer probeert dan elke mogelijke drempel en telt hoeveel voorbeelden de regel 'water als vocht < drempel' fout voorspelt. Hij houdt de drempel met de minste fouten. Dat is machinaal leren in zijn eenvoudigste vorm.

In de grafiek zie je het resultaat: met een drempel van 10 % zijn er 8 fouten (alle droge planten krijgen geen water), met 60 % zijn er 9 (alle natte planten krijgen toch water). Het minimum, 2 fouten, ligt tussen 29 en 31 %: de computer kiest het midden, 30 %. Twee voorbeelden blijven fout: een plant die bij 38 % toch dorst had (ze stond in de volle zon) en een die bij 19 % nog niet klaagde. Geen enkele drempel krijgt alles juist.

Testen. Of de geleerde regel deugt, weet je pas met nieuwe voorbeelden die de computer nooit gezien heeft. Van zes nieuwe metingen (15, 27 en 32 % met dorst; 34, 45 en 50 % zonder) voorspelt de regel er vijf juist: de plant met dorst bij 32 % krijgt geen water.

bodemvocht (%)0102030405060water nodiggeen water nodiggeleerde drempel: 30 %foutfout
Rood: de plant had water nodig; groen: niet. De drempel van 30 % scheidt ze het best, met twee fouten.
051015202530354045505560012345678910drempel (%)aantal fouten30 %minste fouten: 2fouten op de 17 voorbeelden
Leren is hier zoeken: voor elke drempel het aantal fouten tellen en de laagste kiezen.
vast algoritmeEen mens bedenkt deregel: water als vocht< 30 %De computer voert deregel uitnieuwe meting: 26 % →water gevenleren uit voorbeeldenVoorbeelden met hetjuiste antwoord (vaneen tuinier)De computer zoekt dedrempel met de minstefoutengeleerde regel: water alsvocht < 30 %gebruik: zoals hierboven
Twee wegen naar dezelfde regel: bedenken of leren. Gebruikt wordt ze op dezelfde manier.
Uitleg · 22.14

Wat AI wel en niet is

14/16

Artificiële intelligentie (AI) is een verzamelnaam voor computersystemen die taken doen waarvoor mensen hun verstand gebruiken: een gezicht herkennen, een tekst vertalen, een route voorspellen. Bijna alle moderne AI werkt met machinaal leren, zoals de drempel hierboven, maar dan met duizenden tot miljarden getallen tegelijk, geleerd uit enorme hoeveelheden voorbeelden.

vast algoritmesysteem dat leert uit voorbeelden
wie maakt de regel?een mensde computer, uit voorbeelden met het juiste antwoord
wat heb je nodig?kennis van het probleemveel goede, gelabelde voorbeelden
kan je uitleggen waarom?ja, de regel staat erbij één drempel wel; bij grote AI-systemen vaak niet
wanneer het beste?als je de regel kent en ze eenvoudig isals de regel te ingewikkeld is om op te schrijven (een ziek blad herkennen op een foto)
typische fouteen vergeten geval in de regelslechte of eenzijdige voorbeelden: het systeem leert de fout mee

Drie dingen om te onthouden:

  • Een lerend systeem is zo goed als zijn voorbeelden. Zijn de voorbeelden slordig of eenzijdig (allemaal uit de zomer, allemaal van één soort plant), dan leert het die fout mee.
  • Het maakt fouten, ook als het zeker lijkt. Ook de beste drempel had hier 2 fouten op 17. Een AI-systeem zegt zelden 'ik weet het niet'.
  • Het begrijpt niet wat het doet. De computer weet niet wat een plant of water is; hij zoekt een getal dat de voorbeelden zo goed mogelijk scheidt. Een mens blijft verantwoordelijk voor wat er met de uitkomst gebeurt.
AI denkt zoals een mens

Een AI-systeem dat een ziek blad herkent op een foto, heeft geleerd welke patronen van pixels vaak samengaan met het label 'ziek'. Het weet niets van schimmels of plantencellen. Het kan daardoor dingen zien die een mens mist, maar ook domme fouten maken die een mens nooit zou maken, bijvoorbeeld als de foto van een andere camera komt dan de voorbeelden.

Voor de meetkas is de vaste regel de beste keuze: ze is eenvoudig, uit te leggen en te controleren. Lerende systemen komen terug in Intermediate (een beslisboom die voorspelt of de planten water nodig hebben) en in Expert (neurale netwerken).

Een ziek blad herkennen is moeilijk als vaste regel te schrijven: hier kan een lerend systeem helpen, als de voorbeelden goed zijn.
Een ziek blad herkennen is moeilijk als vaste regel te schrijven: hier kan een lerend systeem helpen, als de voorbeelden goed zijn.
Naslag · 22.15

Overzicht: computationeel denken

15/16

De gereedschappen, de symbolen en de regels om een algoritme na te spelen en te verbeteren.

gereedschapvraag die je steltresultaat
decompositieUit welke deelproblemen bestaat dit?een boom van kleine taken
patroonherkenningWat komt telkens terug?één oplossing die je vaker gebruikt (een lus)
abstractieWelke gegevens veranderen de beslissing?een eenvoudig model
algoritmeWelke stappen, in welke volgorde?een stappenplan of stroomdiagram
symboolbetekenispijlen eruit
ovaalstart of stopStart: 1; Stop: 0
rechthoekhandeling1
ruitbeslissing (ja/nee-vraag)2, met 'ja' en 'nee'
parallellograminvoer of uitvoer1
naspelen met een trace-tabeldebuggen
één kolom per variabele (en eventueel voor de uitvoer)speel na en vergelijk met wat je verwacht
één nieuwe rij na elke stap die iets veranderttest gewone gevallen, grensgevallen en rare gevallen
schrijf elke waarde op, ook als ze niet verandertverander één ding tegelijk en test opnieuw
Het geheel · 22.16

Waar computationeel denken naartoe leidt

16/16

Dit hoofdstuk is het begin van de leerlijn programmeren en computationeel denken. Alles wat volgt, van blokken tot Python en C++, is een manier om een algoritme op te schrijven voor een machine. Het raakt ook de leerlijn wiskundig modelleren (abstractie is modelleren; tweemachten tellen de stappen van binair zoeken) en de leerlijn data en AI: je zag hoe een regel geleerd wordt uit gelabelde voorbeelden, en waarom goede voorbeelden zo belangrijk zijn.

Systeemdenken: invoer, proces, uitvoer en terugkoppeling, de basis van elk algoritme dat iets bestuurt.

Debuggen is onderzoeken: één ding veranderen, testen, besluiten.

Schakelaars in serie en parallel zijn EN en OF: dezelfde logica als twee ruiten na elkaar.

Van stroomdiagram naar blokprogramma: raad het getal en een simulatie van de kas in Scratch.

Het algoritme 'water geven' draait echt, met een sensor, een relais en een pomp.

Dezelfde algoritmen in tekst: if, while en for in Python.

Trainen en testen, een beslisboom die leert of de planten water nodig hebben, en bias in data.

Hoe snel is een algoritme? Sorteren en zoeken met de O-notatie.

Machinaal leren met veel kenmerken tegelijk, en hoe je meet hoe goed een model is.

HabitatHet algoritme 'water geven' is het hart van de automatische meetkas: meet het bodemvocht, geef 30 s water (240 mL) als het onder 30 % zakt en het reservoir niet leeg is, en wacht 15 minuten. In hoofdstuk 23 test je het in een simulatie, in hoofdstuk 24 bouw je het statuslampje, en in hoofdstuk 25 draait het op de microcontroller. Opdracht 22.12 voegt een foutdetectie toe.
Samenvatting

In het kort

Begrippen

Wat je nu kent

computationeel denken
Een probleem zo opdelen, vereenvoudigen en beschrijven dat een computer (of een mens) het met een stappenplan kan oplossen.
decompositie
Een groot probleem opdelen in kleinere deelproblemen die je apart kan oplossen.
patroonherkenning
Zien welke stappen of situaties telkens terugkomen, zodat je één oplossing vaker kan gebruiken.
abstractie
Alleen de gegevens overhouden die voor het probleem tellen, en de rest weglaten.
algoritme
Een eindig, eenduidig stappenplan dat bij dezelfde invoer altijd tot dezelfde uitkomst leidt.
stroomdiagram
Tekening van een algoritme met vaste symbolen: ovaal (start/stop), rechthoek (handeling), ruit (beslissing), parallellogram (invoer/uitvoer) en pijlen.
lus
Een deel van een algoritme dat herhaald wordt, tot een voorwaarde bereikt is (of altijd).
trace-tabel
Tabel waarin je bij het naspelen van een algoritme na elke stap de waarde van de variabelen noteert.
bug
Een fout in een algoritme of programma; debuggen is die fout opsporen en verbeteren.
machinaal leren
Een computer zoekt zelf een regel uit voorbeelden waarvan het juiste antwoord gegeven is (gelabelde voorbeelden).
artificiële intelligentie (AI)
Verzamelnaam voor computersystemen die taken doen waarvoor mensen intelligentie gebruiken; de meeste moderne AI werkt met machinaal leren.
Aan de slag in het werkboek15 opdrachten, van oefenen tot uitdagen