FFundamental · deel F6 · Programmeren en automatiseren
Oplossingen · hoofdstuk 22Computationeel denken
Denken als een programmeur, nog voor je één regel code schrijft
Uitgewerkte oplossingen bij de 15 opdrachten van het werkboek. Voor de leerkracht, en voor wie zichzelf wil verbeteren nadat hij het eerst zelf probeerde.
Eerst denken, dan programmeren: het algoritme van de meetkas groeit op het bord.
Voor de leerkrachtDeze pagina bevat de antwoorden. Druk het werkboek af zonder deze pagina.
Oefenen
Oefenen
één stap, direct toepassen
22.1
Welk gereedschap?
Oefenen1Begrijpen8 min
Welk gereedschap van computationeel denken wordt hier vooral gebruikt?
a
Je splitst 'een fietstocht plannen' op in route kiezen, eten meenemen en de fiets nakijken.
Adecompositie
Bpatroonherkenning
Cabstractie
Dalgoritme
Decompositie: één groot probleem in drie deelproblemen.
b
Je merkt dat drie huiswerktaken telkens met dezelfde stappen beginnen.
Adecompositie
Bpatroonherkenning
Cabstractie
Dalgoritme
Patroonherkenning: hetzelfde begin komt telkens terug; je kan het één keer goed uitdenken.
c
Een metrokaart toont de stations op rechte lijnen, zonder straten.
Adecompositie
Bpatroonherkenning
Cabstractie
Dalgoritme
Abstractie: straten en echte afstanden zijn weggelaten omdat ze voor de reiziger niet tellen.
d
Een recept voor pannenkoeken met genummerde stappen.
Adecompositie
Bpatroonherkenning
Cabstractie
Dalgoritme
Algoritme: een stappenplan in een vaste volgorde.
e
Voor het water geven let je alleen op het vocht en het reservoir, niet op de soort plant.
Adecompositie
Bpatroonherkenning
Cabstractie
Dalgoritme
Abstractie: alleen de gegevens die de beslissing kunnen veranderen, blijven over.
22.2
Symbolen van het stroomdiagram
Oefenen1Begrijpen8 min
Een stroomdiagram gebruikt vaste vormen.
Vier symbolen, genummerd 1 tot 4.
a
Wat betekent elk symbool? 1: 2: 3: 4:
1: start of stop; 2: handeling; 3: beslissing; 4: invoer of uitvoer.
b
Welk symbool gebruik je voor 'Is de knop ingedrukt?', voor 'toon: klaar', voor 'zet de pomp aan' en voor 'Stop'?
'Is de knop ingedrukt?': ruit (3). 'toon: klaar': parallellogram (4). 'zet de pomp aan': rechthoek (2). 'Stop': ovaal (1).
c
Hoeveel pijlen vertrekken er uit symbool 3? Wat schrijf je erbij?
Twee pijlen, met 'ja' en 'nee' erbij.
22.3
Thee zetten in de juiste volgorde
Oefenen2Begrijpen10 min
De stappen van het algoritme 'thee zetten' zijn door elkaar geraakt. A: giet het water in de tas. B: vul de waterkoker. C: wacht tot het water kookt. D: hang een theezakje in de tas. E: zet de waterkoker aan. F: haal het zakje eruit na 3 minuten.
a
Zet de letters in een juiste volgorde.
B, E, C, D, A, F (of B, E, D, C, A, F).
b
Welke twee stappen mogen van plaats wisselen zonder dat het resultaat verandert?
D kan op elk moment vóór A (terwijl het water opwarmt, of zelfs helemaal eerst). Niet elke stap hangt van de vorige af.
c
Welke stap is eigenlijk een lus met een beslissing? Schrijf ze als een ja/nee-vraag.
C: 'wacht tot het water kookt' is een lus: 'Kookt het water?' nee → wacht even → opnieuw kijken; ja → verder.
22.4
Een eerste trace
Oefenen2Rekenen10 min
Speel dit algoritme na. (1) Zet x op 3 en s op 0. (2) Herhaal 4 keer: s = s + x, daarna x = x + 2. (3) Toon s.
a
Vul de trace-tabel in (waarden aan het einde van elke ronde).
Ronde 1: s = 3, x = 5. Ronde 2: s = 8, x = 7. Ronde 3: s = 15, x = 9. Ronde 4: s = 24, x = 11.
b
Wat toont het algoritme?
Het toont 24.
c
Wat telt het algoritme eigenlijk op? Beschrijf het in één zin.
De som van de eerste vier oneven getallen vanaf 3: 3 + 5 + 7 + 9 = 24. Let op de volgorde: eerst optellen, dan x verhogen; omgekeerd zou je 5 + 7 + 9 + 11 = 32 krijgen.
22.5
Een klasfeest opdelen
Oefenen2Tekenen12 min
Je klas organiseert een feest op de laatste schooldag. Dat is een groot probleem.
a
Teken een decompositieboom met minstens drie deelproblemen, elk opgesplitst in minstens twee taken.
Duid één taak aan die je nog verder zou opdelen. Waarom?
Bijvoorbeeld 'geld inzamelen': hoeveel per leerling, wie houdt de lijst bij, wanneer. Een taak is klein genoeg als je ze in één zin met een werkwoord kan beschrijven en weet hoe je ze doet.
Toepassen
Toepassen
meerdere stappen, in een context
22.6
Een stroomdiagram lezen: de kasverlichting
Toepassen2Analyseren12 min
De microcontroller van de meetkas voert dit algoritme uit.
De ledstrip van de meetkas met een lichtsensor en een klok. L: hoe groter, hoe lichter.
a
Is de ledstrip aan of uit bij L = 150 en u = 20? En bij L = 150 en u = 23? En bij L = 500 en u = 12?
L = 150, u = 20: donker en tussen 6 en 22 uur → aan. L = 150, u = 23: donker, maar na 22 uur → uit. L = 500, u = 12: licht genoeg → uit (de tweede vraag wordt niet eens gesteld).
b
Waarom staat de tweede ruit er? Wat zou er gebeuren zonder?
Zonder de tweede ruit brandt de ledstrip de hele nacht (het is dan altijd donker). Planten hebben een nachtrust nodig, en het kost energie (hoofdstuk 21).
c
Stopt dit algoritme ooit? Is dat een bug?
Nee, na elke keuze loopt de pijl terug naar het meten. Dat is geen bug: een verlichting moet blijven werken.
22.7
Teken het: een wekker met sluimerknop
Toepassen3Tekenen20 min
Een wekker gaat af. Druk je op de stopknop, dan is hij uit. Druk je op sluimeren, dan is hij 5 minuten stil en gaat hij opnieuw af. Na 3 keer sluimeren werkt de sluimerknop niet meer: dan helpt alleen de stopknop.
a
Welke variabele heb je nodig? Welke beginwaarde krijgt ze?
Een teller s voor het aantal keer sluimeren, met beginwaarde 0 (vóór het eerste alarm).
b
Teken het stroomdiagram met de juiste symbolen.
Zie de figuur. Na 'alarm gaat af' eerst de vraag 'stopknop?' (ja → Stop). Bij nee: 'sluimer en s < 3?'. Ja → s = s + 1, wacht 5 min, terug naar het alarm. Nee (geen knop, of al 3 keer gesluimerd) → het alarm blijft klinken: terug naar 'stopknop?'.
c
Speel het na: je sluimert 4 keer en drukt dan op stop. Hoe vaak gaat het alarm af?
Het alarm gaat 4 keer af (het begin plus 3 keer na sluimeren). De vierde druk op sluimeren doet niets meer (s = 3); het alarm blijft klinken tot de stopknop.
22.8
Sorteren naspelen
Toepassen3Rekenen15 min
Sorteer de kaarten 8, 3, 6, 1 met selectiesorteren: zoek in het ongesorteerde deel de kleinste en wissel hem met de eerste kaart van dat deel.
a
Schrijf de rij na elke ronde.
Ronde 1: 1 3 6 8 (1 en 8 wisselen). Ronde 2: 1 3 6 8 (3 staat al goed). Ronde 3: 1 3 6 8 (6 staat al goed; 8 blijft over).
b
Hoeveel keer vergelijk je twee kaarten in totaal?
3 + 2 + 1 = 6 vergelijkingen. Het algoritme weet niet dat de rij al na ronde 1 gesorteerd is: het vergelijkt toch verder.
c
Hoeveel vergelijkingen zijn er voor 10 kaarten? Welk patroon zie je?
9 + 8 + 7 + ... + 1 = 45. Patroon: voor n kaarten is het (n − 1) + (n − 2) + ... + 1 = n · (n − 1) / 2. Voor 100 kaarten al 4950.
22.9
Bugs in het tellen van droge bakjes
Toepassen3Analyseren20 min
Een leerling tekende dit algoritme. De eerste drie bakjes hebben 25 %, 40 % en 28 % vocht.
Dit algoritme moet tellen hoeveel van de 12 bakjes te droog zijn (d).
a
Speel het na voor de eerste drie bakjes. Waar loopt het mis?
b = 1: 25 % → ja → d = d + 1 (maar d heeft geen waarde!) → b = 2. Bakje 2: 40 % → nee → de pijl gaat nergens heen: het algoritme loopt vast.
b
Er zitten twee fouten in. Welke?
Fout 1: d krijgt geen beginwaarde (d = 0 ontbreekt). Fout 2: de nee-pijl van 'v < 30 %?' gaat nergens heen; ook bij een nat bakje moet b met 1 verhogen, anders bekijk je altijd hetzelfde bakje.
c
Beschrijf hoe je het stroomdiagram verbetert.
Maak de eerste handeling 'd = 0 en b = 1'. Laat de nee-pijl van 'v < 30 %?' naar 'b = b + 1' lopen (voorbij 'd = d + 1'). Zo wordt b bij elk bakje verhoogd en telt d alleen de droge.
22.10
Hoe slim is halveren?
Toepassen3Rekenen15 min
Je raadt een geheim getal met de strategie 'gok telkens het midden' (zie handboek).
a
Maak de trace-tabel voor het geheime getal 37.
Poging 1: 1 en 100 → 50 → lager. Poging 2: 1 en 49 → 25 → hoger. Poging 3: 26 en 49 → 37 → juist. Drie pogingen.
b
Hoeveel pogingen heb je hoogstens nodig voor een getal van 1 tot 1000? Leg uit met tweemachten.
Elke poging halveert wat overblijft. 29=512 is te weinig, 210=1024 is genoeg: hoogstens 10 pogingen.
c
Een vriend raadt gewoon 1, 2, 3, ... Hoeveel pogingen heeft hij hoogstens nodig voor 1 tot 1000? Hoeveel gemiddeld?
Hoogstens 1000, gemiddeld ongeveer 500. Halveren is voor 1000 getallen honderd keer sneller dan gewoon tellen.
22.11
Jij bent de computer: een drempel leren
Toepassen3Analyseren20 min
De ledstrip moet aan als het te donker is voor de planten. Een tuinier heeft twaalf keer de lichtwaarde L gemeten en telkens gezegd of het te donker was. Te donker: 80, 120, 150, 210, 260, 330. Niet te donker: 240, 310, 380, 420, 500, 640. De regel is 'ledstrip aan als L < drempel'.
a
Tel voor de drempels 200, 300 en 400 hoeveel voorbeelden fout voorspeld worden.
200: fout zijn 210, 260 en 330 (te donker maar niet onder 200) → 3 fouten. 300: fout zijn 330 en 240 → 2 fouten. 400: fout zijn 240, 310 en 380 → 3 fouten.
b
Welke drempel 'leer' je? Test ze op vier nieuwe metingen: 180 en 290 (te donker), 350 en 450 (niet te donker).
300 heeft de minste fouten. Test: 180 → aan (juist), 290 → aan (juist), 350 → uit (juist), 450 → uit (juist): 4 van de 4.
c
Waarom kan geen enkele drempel alle twaalf voorbeelden juist krijgen?
Het voorbeeld 240 (niet te donker) ligt lager dan 260 en 330 (wel te donker). Een drempel die 240 juist krijgt, maakt 260 of 330 fout. Het oordeel hangt blijkbaar ook van iets anders af dan L alleen (het tijdstip, het weer), of de tuinier was niet consequent.
Uitdagen
Uitdagen
transfer, open problemen, leerlijnen combineren
22.12
Habitat: water geven met een foutdetectie
Uitdagen4Habitat40 min
Het algoritme 'water geven' uit het handboek heeft een zwakke plek. Als de slang losschiet of de sensor stuk is, stijgt het vocht na het pompen niet, en de kas blijft elke 15 minuten 240 mL pompen, de hele nacht door, tot het reservoir leeg is. Maak het algoritme slimmer: na drie beurten na elkaar waarbij het vocht onder 30 % blijft, stopt de kas met pompen en geeft ze een alarm.
a
Welke variabele voeg je toe? Wanneer verhoog je ze, en wanneer zet je ze terug op 0?
Een teller f (mislukte beurten na elkaar), beginwaarde 0. Na elke pompbeurt f = f + 1. Meet je daarna 30 % of meer, dan werkt alles: f = 0.
b
Teken het verbeterde stroomdiagram.
Zie de figuur: meet v; v < 30 %? nee → f = 0 → wacht. Ja → f = 3? ja → alarm (geen pompbeurt). Nee → reservoir leeg? ja → rode led; nee → pomp 30 s, f = f + 1 → wacht 15 min → opnieuw meten.
c
Speel het na: de slang is los, het vocht blijft op 27 %. Hoeveel water gaat er verloren voor het alarm komt?
Meting 1: 27 %, f = 0 → pomp, f = 1. Meting 2: 27 %, f = 1 → pomp, f = 2. Meting 3: 27 %, f = 2 → pomp, f = 3. Meting 4: 27 %, f = 3 → alarm, geen pomp. Er gaat 3×240=720mL verloren in plaats van het hele reservoir.
d
Waarom mag je de teller niet op 0 zetten bij elke meting? Test je algoritme ook op een gewone dag: gaat het alarm nooit onterecht af?
Op een gewone dag stijgt v na een beurt boven 30 % (bv. 44 %): de nee-tak zet f op 0. Zou je f bij elke meting op 0 zetten, dan kan f nooit 3 worden en komt het alarm nooit. Grensgeval: bij een heel droge grond (bv. 10 %) kan het na één beurt nog onder 30 % zijn; dan telt f door. Drie beurten (720 mL) is ruim genoeg om een droge kas boven 30 % te krijgen, dus een onterecht alarm is onwaarschijnlijk.
e
Portfolio: noteer je stroomdiagram en de getallen (drempel 30 %, 30 s pompen, 15 min wachten, alarm na 3 mislukte beurten).
Bijvoorbeeld: 'Water geven: drempel 30 %, 30 s = 240 mL per beurt, 15 min wachten, alarm na 3 beurten zonder resultaat (720 mL).'
Zo wordt dit beoordeeld
Variabele
Een teller met beginwaarde 0, verhoogd na elke beurt, terug op 0 als het vocht weer boven de drempel is.
Stroomdiagram
Juiste symbolen, twee gelabelde pijlen uit elke ruit, alarm vóór het pompen, lus terug naar het meten.
Trace
Drie beurten van 240 mL (720 mL), dan alarm en geen pompbeurten meer.
Test
Ook een gewone dag nagespeeld: na een geslaagde beurt gaat f terug op 0.
22.13
Debat: mag de kas zelf leren?
Uitdagen4Argumenteren30 min
Een bedrijf biedt een 'slimme kas' aan: een AI die uit de metingen van duizenden kassen geleerd heeft wanneer planten water nodig hebben. Je hoeft geen drempel meer te kiezen. Het bedrijf zegt niet welke regel het systeem gebruikt.
a
Geef twee voordelen van het lerende systeem tegenover de vaste regel van 30 %.
Bijvoorbeeld: het kan rekening houden met veel gegevens tegelijk (temperatuur, licht, plantensoort, seizoen); het is geleerd uit veel meer ervaring dan één tuinier heeft.
b
Geef twee risico's. Denk aan de voorbeelden, de uitleg en de verantwoordelijkheid.
Bijvoorbeeld: de voorbeelden kunnen van heel andere kassen komen (ander klimaat, andere planten); je weet niet waarom het beslist en kan een fout moeilijk vinden; het maakt fouten zonder te waarschuwen; wie is verantwoordelijk als de planten doodgaan?
c
Welke vragen stel je aan het bedrijf voor je het systeem vertrouwt?
Bijvoorbeeld: uit welke kassen komen de voorbeelden? Hoe vaak is het systeem fout bij nieuwe kassen (testresultaat)? Kan ik de beslissingen zien? Wat gebeurt er als een sensor stukgaat? Kan ik zelf een grens instellen?
d
Neem een standpunt in voor de meetkas en verdedig het in drie zinnen.
Bijvoorbeeld: 'Voor de meetkas kies ik de vaste regel: ze is eenvoudig, ik kan ze controleren en een fout vinden. Een lerend systeem is pas zinvol als ik veel eigen gegevens heb en het kan testen op nieuwe metingen. Wel kan ik de drempel van 30 % laten bijsturen met mijn eigen metingen, zoals in het handboek.'
Zo wordt dit beoordeeld
Voordelen
Minstens twee concrete voordelen (bv. rekening houden met meer gegevens, per plantensoort).
Risico's
Minstens twee, gekoppeld aan de voorbeelden, de uitleg of de verantwoordelijkheid.
Standpunt
Duidelijk, met argumenten uit het handboek, en met aandacht voor het tegenargument.
22.14
Ontwerp: het droogste bakje vinden
Uitdagen4Ontwerpen30 min
In de meetkas staan 12 bakjes. Je wil weten welk bakje het droogst is (het laagste vocht), zodat je daar de sensor zet. Je kan het vocht van één bakje per keer meten.
a
Ontwerp het algoritme in genummerde stappen. Welke variabelen gebruik je?
(1) Meet bakje 1; laagste = dat vocht; nummer = 1. (2) Voor b = 2 tot 12: meet het vocht v van bakje b; als v < laagste, dan laagste = v en nummer = b. (3) Toon nummer en laagste. Beginwaarde: het eerste bakje (niet 0, want dan is niets lager).
b
Speel je algoritme na voor vijf bakjes met 34, 29, 41, 26 en 31 %.
b = 1: 34 → laagste 34, nr 1. b = 2: 29 < 34 → 29, nr 2. b = 3: 41 → blijft 29, nr 2. b = 4: 26 < 29 → 26, nr 4. b = 5: 31 → blijft 26, nr 4. Uitkomst: bakje 4 (26 %).
c
Hoeveel vergelijkingen heb je nodig voor 12 bakjes? Kan het met minder?
11 vergelijkingen (elk bakje behalve het eerste één keer). Minder kan niet: een bakje dat je niet vergelijkt, kan net het droogste zijn.
Zo wordt dit beoordeeld
Variabelen
Een variabele voor het laagste vocht tot nu en een voor het nummer van dat bakje, met een goede beginwaarde.
Stappen
Lus over alle bakjes, vergelijking met het laagste tot nu, bijwerken als het lager is, uitvoer op het einde.
Trace
Correct nagespeeld; uitkomst bakje 4 met 26 %.
22.15
Scheve voorbeelden
Uitdagen4Analyseren20 min
Een school laat een computer de drempel voor water geven leren, zoals in het handboek. Alle gelabelde voorbeelden komen uit juli, van tomatenplanten in een warme kas. De geleerde drempel is 38 %. In november gebruiken ze dezelfde regel voor slaplantjes in een koele kas.
a
Waarom leerde de computer in juli een hogere drempel dan 30 %?
In een warme kas verdampen de planten veel water; de tuinier zag ze al bij een hoger vocht dorst krijgen, en dat heeft de computer overgenomen.
b
Wat gaat er in november waarschijnlijk mis? Is de computer 'fout'?
In een koele kas verdampen de slaplantjes weinig; bij 38 % hebben ze nog genoeg. De kas geeft te veel water: natte voeten, schimmel, verspild water. De computer deed precies wat hij moest: de beste drempel voor de voorbeelden die hij kreeg. De voorbeelden waren eenzijdig.
c
Hoe verbeter je het leren? Geef twee manieren.
Voorbeelden verzamelen uit alle seizoenen en van alle plantensoorten; een extra gegeven toevoegen (temperatuur of plantensoort) zodat de regel kan verschillen; en altijd testen op nieuwe metingen uit de situatie waarin je het systeem gebruikt.
d
Geef een voorbeeld buiten de kas waar een AI-systeem hetzelfde probleem kan hebben.
Bijvoorbeeld een gezichtsherkenning die vooral met foto's van één groep mensen geleerd heeft en anderen slechter herkent, of een systeem dat ziektes herkent op foto's van één ziekenhuis en faalt op foto's van een ander toestel. Dit heet bias in de data (Intermediate, hoofdstuk 39).