7.1Inleiding¶
Een toestandsdiagram geeft de werking van een systeem weer. Als je een toestandsdiagram maakt voordat je het systeem echt gaat bouwen of programmeren, kun je jezelf een hoop fouten besparen. Uit het toestandsdiagram kun je namelijk opmaken of het systeem werkt zoals het moet werken. Als je ziet dat er een fout in zit, pas je eerst het toestandsdiagram aan. Dat kost veel minder tijd dan het aanpassen van een programma. Begin daarom altijd eerst met het maken van een toestandsdiagram.
Als je denkt dat het toestandsdiagram goed is kun je het programma gaan maken. Gelukkig is het omzetten van een toestandsdiagram naar een programma redelijk eenvoudig, in dit hoofdstuk leggen we uit hoe dat moet.
Ondersteuning: klassikale unplugged opdrachten¶
Doe ter voorbereiding op het werken met logische operatoren en met if-then-else structuren de volgende unplugged activiteiten met de klas.
7.2Van plaatje naar pseudocode¶
Als je het toestandsdiagram eenmaal klaar hebt, dan is het maken van een programma dat kan worden uitgevoerd op de Microbit eenvoudig. We laten dat zien aan de hand van het volgende toestandsdiagram voor een systeem bestaande uit een lamp en een drukknop. Als de drukknop wordt ingedrukt (en weer losgelaten) gaat de lamp aan. Wordt de drukknop nogmaals ingedrukt (en weer losgelaten) gaat de lamp uit. Je hebt dit toestandsdiagram al gezien in het vorige hoofdstuk.

Figure 1:Toestandsdiagram van led en drukknop met toggle-functie
Om een toestandsdiagram om te zetten in een programma gebruik je ALS-DAN-constructies. De toestand sla je op in een variabele. Hieronder zie je een uitwerking in pseudo-code. Het bestaat uit twee delen:
EENMALIG BIJ OPSTARTENDit deel wordt één keer uitgevoerd. Hierin kun je bijvoorbeeld de starttoestand aangeven.
HERHAAL:Alles wat hier staat wordt steeds weer opnieuw uitgevoerd, zolang het systeem aan is.
Alle toestanden krijgen een nummer: 1 - Lamp is uit, knop is los 2 - Lamp is aan, knop is ingedrukt 3 - Lamp is aan, knop is los 4 - Lamp is uit, knop is ingedrukt
EENMALIG BIJ OPSTARTEN:
toestand wordt 1
HERHAAL:
ALS (toestand is 1) DAN
ALS (de drukknop is ingedrukt) DAN
toestand wordt 2
zet lamp aan
ANDERS ALS (toestand is 2) DAN
ALS (de drukknop is losgelaten) DAN
toestand wordt 3
lamp blijft aan
...Zie je de relatie tussen het toestandsdiagram en de pseudo-code?
Solution to Exercise 3
EENMALIG BIJ OPSTARTEN:
toestand wordt 1
HERHAAL:
ALS (toestand is 1) DAN
ALS (de drukknop is ingedrukt) DAN
toestand wordt 2
zet lamp aan
ANDERS ALS (toestand is 2) DAN
ALS (de drukknop is losgelaten) DAN
toestand wordt 3
lamp blijft aan
ANDERS ALS (toestand is 3) DAN
ALS (de drukknop is ingedrukt) DAN
toestand wordt 4
zet lamp uit
ANDERS ALS (toestand is 4) DAN
ALS (de drukknop is losgelaten) DAN
toestand wordt 1
lamp blijft uit7.3Pseudocode controleren met een tabel¶
Om er zeker van te zijn dat je hebt nagedacht over alle toestandsovergangen is het goed om een tabel maken met alle mogelijke combinaties. Neem het toetstandsdiagram uit Figure 1 van de vorige paragraaf.
Toestand 1: schakelaar los, lamp uit
Toestand 2: schakelaar ingedruk, lamp aan
Toestand 3: schakelaar los, lamp aan
Toestand 4: schakelaar ingedrukt, lamp uit
Hieronder zie je een tabel met alle mogelijke toestandsovergangen. Voor elke combinatie moet er staan wat de nieuwe toestand wordt en welke actie wordt uitgevoerd. Als er een streepje staat (-), dan is er geen toestandsovergang en geen actie.
| Toestand ↓ / Toestandsovergang → | knop los | knop ingedrukt |
|---|---|---|
| 1 | - | 2: zet lamp aan |
| 2 | 3 | - |
| 3 | - | 4: zet lamp uit |
| 4 | 1 | - |
Controleer of de pseudocode uit de vorige paragraaf past bij de tabel. Begin bij toestand 1, kijk of alle acties kloppen en kijk of alle overgangen kloppen. Ga daarna door met toestand 2 en zo verder tot je de hele tabel gehad hebt.
7.4Van pseudocode naar programma¶
Bekijk je pseudocode uit Exercise 3 nog eens en maak dan volgende opdracht.
Solution to Exercise 4
