Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

7 Van toestandsdiagram naar code

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.

Toestandsdiagram van led en drukknop met toggle-functie

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 OPSTARTEN

Dit 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 uit

7.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.

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 losknop ingedrukt
1-2: zet lamp aan
23-
3-4: zet lamp uit
41-

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