Ga naar hoofdinhoud

Opgaves

Opgave 1.1

Ga samen zitten met een andere persoon, en doe de volgende opgave. Neem vier speelkaarten met verschillende waardes. Schud ze, en leg ze met de voorkant naar beneden op tafel. Eén van jullie moet ze sorteren, van laag naar hoog. Deze persoon mag de kaarten verplaatsen, maar mag niet kijken naar de voorkant van de kaarten. Hij of zij mag wel twee kaarten aanwijzen, die de ander dan oppakt, bekijkt, en terug legt, aangevend welke van de twee hoger is. Houd bij hoeveel van die vergelijkingen nodig zijn. Als de eerste persoon denkt dat de kaarten gesorteerd zijn, draai je ze om en controleert of het correct gedaan is.

De eerste persoon vervult de rol van het programma, dat instructies uitvoert zonder ze te begrijpen. De tweede persoon speelt de rol van processor, die bepaalde handelingen kan uitvoeren voor het programma, zoals, in dit geval, het vergelijken van getallen.

Als je niet in staat bleek de kaarten te sorteren, denk dan na over hoe je de taak kunt uitvoeren onder de gegeven omstandigheden, en probeer het dan nog eens. Als het je wel is gelukt, maar je had meer dan zes vergelijkingen nodig, denk dan na over hoe je het met zes kunt doen. Als je precies zes nodig had, denk dan na over of het ook kan met minder dan zes. Als je het met minder dan zes deed, bedenk dan of je aanpak inderdaad garandeert dat de kaarten gesorteerd worden.

Opgave 1.2

Nadat je de eerste opgave hebt gedaan, schrijf dan samen met je partner instructies die in gewoon Nederlands uitleggen hoe je onder de gegeven omstandigheden kaarten kunt sorteren. Haal er dan een derde persoon bij, en vraag die persoon de instructies te volgen, terwijl een van de eerste twee de rol van processor op zich neemt. Zeg dat de derde persoon de instructies zo exact mogelijk moet volgen, zonder ze te interpreteren. Deze oefening is het meest illustratief als de derde persoon geen idee heeft van wat de bedoeling van de instructies is. Als de poging tot sorteren gedaan is, controleer je of het resultaat correct is.

De tekstuele instructie is vergelijkbaar met een programma. Als de derde persoon de stappen niet kan volgen, lijkt dat op een syntax fout. Als de derde persoon de stappen kan volgen maar het resultaat is niet wat het moet zijn, is er een functionele fout gemaakt. Beide soorten fouten kom je tegen als je computers programmeert.

Opmerking: Het is best lastig dergelijke instructies te schrijven. Gelukkig is dit gemakkelijker in een computertaal, omdat syntax en semantiek van een computertaal strak gedefinieerd zijn. Het Nederlands is, net als iedere andere menselijke taal, niet geschikt om ondubbelzinnige instructies te schrijven.