Zelf algoritmes ontwerpen
Inleiding
Wat moet je kennen en kunnen na dit deel?
- Weten wanneer en waarom we een diagram gebruiken om een algoritme voor te stellen.
- Weten wat een Nassi-Shneiderman diagram is
- Weten dat een Nassi-Shneiderman diagram uit verschillende types blokken bestaan
Gewone algoritmes kunnen we nog gewoon met wat tekst beschrijven. Maar vanaf dat het wat ingewikkelder gebruiken we best een gestructureerde manier om ons algoritme te beschrijven.
Door een complex algoritme als een diagram te tekenen wordt het makkelijker te verstaan.
Er zullen ook minder verwarringen voorkomen als iemand anders je diagram leest.
Nassi-Shneiderman diagram
Één zo’n type diagram is een Nassi-Shneiderman diagram.
Dit is een voorbeeld van een Nassi-Shneiderman diagram waar alle mogelijke blokken gebruikt zijn.
Blokken
Een Nassi-Shneiderman diagram is samengesteld uit verschillende blokken die elk hun eigen betekenis hebben.
Deze blokken worden dan met elkaar gecombineerd om een algoritme te bouwen.
Proces blok
Selectie blok
Iteratie blok
In de volgende stukken zullen we elk blokje bekijken, uitleggen wat hun doel is en hoe we ze kunnen gebruiken.
Proces blok
Wat moet je kennen en kunnen na dit deel?
- Weten wat een procesblok in een diagram betekent
- Zelf een diagram kunnen opstellen door procesblokken te gebruiken
Het eerste, en simpelste blokje dat je kan gebruiken in een Nassi-Shneiderman diagram is het procesblok.
Dit duid eigenlijk gewoon een stap aan die moet worden uitgevoerd.
Het ziet er uit als een rechthoek met daarin tekst.
De tekst duid aan wat er moet gebeuren in deze stap.
Blokken combineren
In een algoritme is de volgorde van de stappen belangrijk.
De volgorde waarin je de blokken plaatst is dus ook belangrijk!
De blokken worden van boven naar beneden uitgevoerd.
Omelet voorbeeld
Het algoritme om een omelet te bakken uit het onderdeel “Wat is een algoritme?” kan dus zo getekend worden als een Nassi-Shneiderman diagram:
Hoe proces blokken tekenen?
Om onze diagrammen te tekenen zullen we gebruik maken van draw.io.
Hierin kunnen we digitaal diagrammen tekenen en deze opslagen als afbeeldingen op de computer.
Oefeningen
Volg bij het uitvoeren de stappen 1-3 van probleemoplossend denken.
Je schrijft dus de probleemdefinitie en de analyse uit.
Nadien ontwerp je dan je diagram in draw.io
Oefening 1. Noedels maken
Teken een NSD (Nassi–Shneiderman diagram) uit dat de stappen bevat die je moet uitvoeren om een pakket noedels klaar te maken.
De verschillende stappen kan je hieronder op de achterkant van het noedelpakket aflezen.
Gebruik alleen de nuttige tekst.
Je mag ook stappen opdelen als dit het algoritme makkelijker maakt.
Klik op de afbeelding voor een grotere versie.
Oefening 2. Geld afhalen van een bankautomaat
Beeld je in dat je iets wilt gaan kopen waarvoor je cash geld nodig hebt.
Maar je doet je portefeulle open en je ziet dat hij leeg is.
Teken een algoritme uit om dit probleem op te lossen.
Oefening 3. Een boterham met muizenstrontjes smeren
Teken een algoritme uit in een NSD dat uitlegt hoe je een boterham met muizenstrontjes (hagelslag) maakt.
In één van je stappen moet je boter smeren.
Oefening 4. Croque monsieur maken
Teken een algoritme uit in een NSD dat uitlegt hoe je een Croque monsieur (of tosti) maakt.
Een croque monsieur bevat meestal de volgende ingredienten: Brood, ham, kaas.
Oefening 5. Schoenen knopen
Teken een algoritme uit in een NSD dat de stappen toont om schoenveters te knopen.
Oefening 6. Papieren vliegtuig vouwen
Teken een algoritme uit in een NSD dat de stappen toont hoe je een papieren vliegtuigje kan vouwen.
Je kan een van de stappenplannen hieronder gebruiken, of je kan je eigen favoriete vliegtuig uitleggen.
Zweeftopper
Origami vliegtuig 2
Meer vliegtuigplannen vind je hier.
Selectie blok
Wat moet je kennen en kunnen na dit deel?
- Weten wat een selectieblok in een diagram betekent
- Zelf een diagram kunnen opstellen waarin een selectieblok gebruikt wordt.
- Het selectieblok gebruiken in combinatie met procesblokken of andere selectieblokken
Het tweede blokje is het selectie blok.
Deze duidt aan dat er een keuze moet gemaakt worden in je algoritme.
Op basis van deze keuze ga je dan sommige dingen wel of net niet doen.
Op deze plek krijg je dan een splitsing. Je zult dan 2 kolommen van proces blokken naast elkaar zien.
Hieronder is de selectieblok in het vet aangeduid:

De selectieblok staat dus tussen andere blokken in.
De blokken worden nog steeds van boven naar beneden uitgevoerd.
In dit voorbeeld is dit de volgorde waarop de blokken worden uitgevoerd:
- Zoek iets om te eten
- Dan wordt de selectieblok uitgevoerd
- Eet de boterham op
Hoe de selectieblok werkt zien we hieronder.
Selectie met 2 keuzes
De simpelste selectieblok heeft maar 2 keuzes, zoals in dit voorbeeld:

Groene driehoek: De keuze die gemaakt moet worden.
Blauw: De eerste keuzemogelijkheid. (Choco in dit geval)
Rood: De tweede keuzemogelijkheid. (Hagelslag in dit geval)
Als je choco kiest dan word de procesblok onder de blauwe driehoek uitgevoerd.
“Smeer de choco op het brood”.
De procesblokken onder de keuze Hagelsag worden niet uitgevoerd.
Maar als je hagelslag kiest dan worden de blokken onder de rode driehoek uitgevoerd.
2 blokken dus: “Smeer border op het brood” en “Strooi hagelslag over de boter”.
Maar de procesblok “Smeer de choco op het brood” wordt niet uitgevoerd, omdat die niet onder de rode driehoek staan.
Meer dan 2 keuzes
Een selectieblok kan ook méér dan 2 keuzes hebben.
Bekijk onderstaande video.
Selectieblokken in selectieblokken
Onder de keuzes in een selectieblok kan je dus andere blokken zetten om uit te voeren.
Je kan daar eender welk type blok zetten.
Tot nu toe hebben we enkel maar procesblokken onder de keuzes gezet, maar je kan er ook nog eens een selectieblok onder zetten!
Zo krijgen we dus een selectieblok in een selectieblok.
Een voorbeeld:
Hier moeten we dus eerst kiezen of we choco willen of hagelslag.
Als we voor hagelslag kiezen moeten we ook nog eens kiezen of we boter willen of niet.
Deze video legt het verder uit:
Hoe een selectieblok tekenen
Oefeningen
Volg de stappen in deze oefening.
Nadien kan je onderaan deze pagina zien naar een mogelijke oplossing.
Oefening 1: Een ei koken
Teken het NSD (Nassi–Shneiderman diagram) om een ei te koken.
In je diagram moet je de keuze kunnen maken tussen een hardgekookt of zachtgekookt ei.
Ter informatie:
- Om een zachtgekookt ei te hebben moet een ei 4,5 minuten koken
- Om een hardgekookt ei te hebben moet een ei 8 minuten koken
Oefening 2: Thee maken
1. Diagram om een simpele thee te maken
Bedenk even de situatie waarbij iemand een tas thee bestelt in een café.
Hoe zou het NSD voor het maken van de thee er kunnen uitzien?
Teken dit diagram. (In dit diagram moet je dus nog geen keuze maken)
2. Een keuze toe voegen
In een café kan je normaal gezien eerst kiezen welke thee je juist wilt.
Bijvoorbeeld zwarte thee, fruitthee, muntthee, …
Welke stap in ons diagram zou dan veranderen?
Voeg een stap toe in je diagram waarin je kunt kiezen welke thee je wil.
3. Nog een keuze
Sommige mensen hebben graag suiker in hun thee.
Voeg een stap toe aan je diagram waarin je de keuze kan maken om wel of geen suiker toe te voegen aan de thee.
4. Nog meer keuzes
Voeg ook stappen toe in je diagram voor de volgende keuzes:
- Of je melk in je thee wilt
- Of je citroen in je thee wilt
Oefening 3: De juiste trein nemen
Als je een trein wil nemen naar ergens moet je natuurlijk zien dat je de juiste trein neemt op het juiste perron.
Maak een NSD waarin een persoon kan kiezen om naar een bepaalde stad te gaan.
Dit NSD moet deze persoon dan begeleiden naar het juiste perron.
Hieronder een voorbeeld van mogelijke steden en perrons:
Iteratie blok
Wat moet je kennen en kunnen na dit deel?
- Weten wat een iteratieblok in een diagram betekent
- Zelf een diagram kunnen opstellen waarin een iteratie gebruikt wordt.
- Het iteratieblok gebruiken in combinatie met procesblokken, selectieblokken en andere iteratieblokken
Het woord iteratie betekent hetzelfde als het woord herhaling.
In de iteratie blok zullen we dus bepaalde andere blokken blijven herhalen.
Bekijk de video hieronder voor een uitleg.
Het deel dat in groen is aangeduid hierboven bevat een voorwaarde (of controle) waarvan het resultaat waar of niet waar is.
Zolang de voorwaarde waar is zullen alle blokken rechts van de groene haak herhaald worden.
In dit geval is dat de procesblok die in het blauw is aangeduid. "Giet water in het glas".
We blijven dus water gieten zo lang het glas niet vol is.
Nadien, als de voorwaarde niet meer waar is, wanneer het glas vol is, dan drinken we het water op.
Deze laatste procesblok zit niet in het iteratieblok en wordt dus niet herhaald.
Oefeningen
Maak een tekening van het diagram voor elke oefening.
Nadien kan je onderaan deze pagina de mogelijke oplossingen bekijken.
Oefening 1: fietsband
Tijdens het fietsen krijgen we een een platte fietsband.
We repareren de band en moeten deze nadien opblazen met onze fietspomp.
Hoe zou een NSD er kunnen uitzien voor deze fietsband op te blazen?
We gaan er van uit dat onze fietspomp een drukmeter heeft en dat de bandendruk 4 bar moet zijn.
Oefening 2: autostrade
Beeld je in dat je op de autostrate aan het rijden bent naar ergens.
Je moet blijven rijden tot je aan je bestemming aankomt.
Maar als je op de autostrade een afrit tegen komt moet je wel de keuze maken of je er af rijd of niet.
Hoe zou je dit opstellen in een NSD?
Denk er aan dat je bepaalde blokken in andere blokken kunt steken.
Oefening 3: kleren sorteren
Stel, je hebt een wasmand vol met kleren die gewassen moeten worden.
Elk kledingstuk in de wasmand moet eerst gesorteerd worden in een hoop van witte kleren en gekleurde kleren.
Hoe zou je dit voorstellen in een NSD?
Oefening 4: verkeerslicht
Een verkeerslicht loopt telkens door de zelfde volgorde van kleuren.
Eerst groen, dan oranje, dan rood. (En dan weer groen)
Stel dit algoritme voor in een NSD.
Bewerk je algoritme zodat het ook de situatie behaldelt wanneer een voetganger op het knopje heeft geduwd om over te gaan.