---
tags: algoritmisch denken
---
:::success
**Wat moet je kennen en kunnen na dit deel?**
:heavy_check_mark: Weten wat een deelprobleem is
:heavy_check_mark: Zelf een simpel algoritme kunnen opstellen
:::
# Algoritme opstellen
## Ons probleem opsplitsen in deelproblemen
<img src="https://i.imgur.com/2vHVLnf.png" width="30%" style="float: right;">
Als je probleem wat groter is dan maak je niet 1 groot algoritme maar deel je het probleem op in kleinere stukken. Deze noemen deelproblemen.
Als je terugdenkt aan de video die in de [inleiding](https://hackmd.io/@scheppersinstituut/r1m3miUvL/https%3A%2F%2Fhackmd.io%2FWzR7Xbh_Sr2b8bmiKBuxUA) staat (waar ik noedels maak).
Dan had ik dit algoritme ontworpen:
1. Ik zoek eten
1. Ik bereid het eten
1. Ik eet het eten op
Maar stap 2 is veel te vaag beschreven want ik wist niet hoe ik de noedels moest bereiden.
Stap 2 is dus een deelprobleem waarvoor dus een stappenplan moet worden gemaakt.
## Een stappenplan (algoritme) opstellen voor elk deelprobleem
<img src="https://i.imgur.com/SJJvVEc.png" width="30%" style="float: right;">
Je gaat nu voor elk deelprobleem stap voor stap uitleggen hoe je dit deelprobleem kan oplossen.
Voor stap 2 in het noedelprobleem waren dit de stappen:
1. Doe 200ml water in een pannetje
1. Doe de kruiden erbij
1. Wacht tot het water kookt
1. Voeg dan de noedels toe
1. Wacht tot het water is weggekookt
Nu weten we exact hoe we de noedels moeten bereiden.
Het volledige algoritme voor de video is dus dit:
1. Ik zoek eten
1. **Ik bereid het eten**:
1. Doe 200ml water in een pannetje
1. Doe de kruiden erbij
1. Wacht tot het water kookt
1. Voeg dan de noedels toe
1. Wacht tot het water is weggekookt
3. Ik eet het eten op
## Deelproblemen in deelproblemen
Het kan zijn dat in een deelprobleem nog andere deelproblemen zitten (En daarin nog eens enz..).
Hiervoor moet dan ook een algoritme worden opgesteld.
Stel dat ik niet wist hoe ik 200 ml water in het pannetje moest doen, dan had dit het volledige algoritme kunnen zijn:
1. Ik zoek eten
1. Ik bereid het eten:
1. **Doe 200ml water in een pannetje**:
1. Zoek een pannetje en een maatbeker
2. Doe water in de maatbeker tot het water even hoog staat als de 200 ml lijn.
3. Doe dit water in het pannetje
3. Doe de kruiden erbij
4. Wacht tot het water kookt
5. Voeg dan de noedels toe
6. Wacht tot het water is weggekookt
3. Ik eet het eten op
## Lego voorbeeld
**Deelproblemen**: We gaan ons lego kasteel niet in 1 keer helemaal bouwen, maar we bouwen *onderdeel per onderdeel*.
Een deelprobleem in ons kasteel zou kunnen zijn:
- Hoe bouwen we een torentje?
- Of hoe bouwen we de poort?
Dit zijn kleinere problemen binnen ons hoofdprobleem.
**Stappenplan**:
Om bijvoorbeeld een torentje te bouwen zou dit ons algoritme kunnen zijn.

## Oefeningen
### Voorbeeld
Bekijk de video voor de uitleg van de volgende oefeningen
<iframe width="100%" height="400" src="https://www.youtube.com/embed/0w_1N9GdUzs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<div style="display: flex; flex-wrap: wrap;">
<strong style="text-align: center; flex: 0 50%;">Oefening</strong>
<strong style="text-align: center; flex: 0 50%;">Oplossing</strong>
</div>
<img src="https://i.imgur.com/yjcdJjG.png" style="width: 49%; float: left;">
<img src="https://i.imgur.com/ke1d6Y6.png" style="width: 49%; float: right">
Jullie moeten geen pijlen tekenen, maar moeten de oplossing insturen als tekst.
Dus voor dit voorbeeld zouden jullie het volgende insturen:
1. Naar beneden
2. Naar beneden
3. Rechts
4. Rechts
:::warning
### :pencil: Oefening
Als het formulier hieronder niet werkt kan je [hier klikken](https://forms.office.com/Pages/ResponsePage.aspx?id=JLSXj_BKa0yr-mUOSAvTJCEUifSuN9hIpxJZBBzKE0hUQkM1WFQzOVJRTVg5TU9BVjBHREY5OUtKRyQlQCN0PWcu).
<iframe width="100%" height= "3200px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=JLSXj_BKa0yr-mUOSAvTJCEUifSuN9hIpxJZBBzKE0hUQkM1WFQzOVJRTVg5TU9BVjBHREY5OUtKRyQlQCN0PWcu&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>
:::