Functioneel Programmeren

Oplossingen zoeken op een andere manier

Voor wie

Leerlingen havo en vwo, 5e of 6e klas.

Beschikbaarheid

Sinds maart 2020

schijven voorbeeld module functioneel programmeren
Torens van Hanoi

Waarschijnlijk heb je al een beetje leren programmeren. In deze module leer je op een heel andere manier programmeren: namelijk functioneel. Het mooie van functioneel programmeren is dat je sommige problemen relatief makkelijk kunt oplossen. Denk bijvoorbeeld aan het sorteren van een rij namen. En misschien ken je het probleem van de torens van Hanoi wel: je moet de schrijven verplaatsen van pilaar 1 naar pilaar 3. Je mag echter maar één schijf per keer verplaatsen en een grotere schijf mag nooit op een kleinere schijf. Hoe pak je dat aan? Met functioneel programmeren kun je dit probleem snel oplossen.

Recursie speelt een belangrijke rol bij functioneel programmeren. Dat betekent dat je programmaatjes maakt die weer gebruik maken van het programmaatje zelf. Dat klinkt misschien wat vaag, in de module krijg je allerlei voorbeelden.

Met slechts één regel code kun je een programma maken waarmee je de Rij van Fibonnaci kunt bepalen: elk getal is de som van de vorige twee getallen:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, …

Je kunt er ook recursieve figuren mee maken, zoals de onderstaande kristal. Misschien zie je al op wat voor manier recursie is gebruikt bij het maken van deze kristal.

kristal functioneel programmeren

De module vertelt je ook welke andere vormen van programmeren er nog meer zijn. Dus als je je programmeerkennis wilt verbreden, dan is deze module wat voor jou.

Activiteiten

Dit zijn de belangrijkste activiteiten binnen de module.

  • De module neemt je stap voor stap mee in het functioneel programmeren.
  • Je moet steeds gelijk toepassen wat je leert.
  • In de module staan allerlei voorbeelden van programma’s.
  • Aan het eind van de module maak je een wat uitgebreider programma.

Locatie materiaal

De module staat online in Jupyter Notebooks: https://jupyterhub.frajaweb.com/hub/login.

Voor de docent

Opbouw

De module bestaat uit de volgende hoofdstukken:

  1. Programmeerparadigma’s: een inleiding in de verschillende manieren van programmeren die er zijn.
  2. Recursie: met allerlei voorbeelden en oefenopgaven om problemen op te lossen met recursie
  3. Basis van ELM: introductie in de functionele programmeertaal ELM
  4. Toepassingen: je maakt één of meerdere uitgebreidere toepassingen

Vereiste hard- en software

De online omgeving draait op software van Jupiter Notebook. Een voorbeeld is in te zien via het lesmateriaal. Het wordt echter aanbevolen om een eigen installatie te maken.

De leerlingen hebben een GitHub account nodig. Ze kunnen dan in de browser direct programmeren in de taal ELM.

Voorkennis

We gaan er vanuit dat je al wel een basis hebt in programmeren en bekend bent met variabelen, keuze, herhaling en functies.

Belangrijkste begrippen

De belangrijkste begrippen bij deze module zijn Programmeerparadigma’s, functioneel, recursie, staartrecursie, wederzijdse recursie, functies, lijsten, generaties programmeertalen, imperatief vs declaratief programmeren, procedureel programmeren, object georiënteerd programmeren, logisch programmeren.

Keuze en verdieping

Met de toepassingen aan het eind van de module kunnen leerlingen zich verder verdiepen.

Wijze van beoordelen

De module bevat geen toets. Beoordeling kan eventueel op basis van het afronden van één van de toepassingen aan het eind van de module.

Omvang

De module is ongeveer 40 SLU.

Docentenhandleiding

De docentenhandleiding is op aanvraag verkrijgbaar.

Geef een reactie