3.4.2 Van toestandsdiagram naar programma deel 2

Als je het toestandsdiagram eenmaal hebt, dan is het maken van een programma dat kan worden uitgevoerd op bijvoorbeeld de Microbit, Arduino of Lego Mindstorms eenvoudig. Dit zijn de stappen:

  • Gebruik een variabele van het type integer om bij te houden wat de huidige toestand is van het systeem. Zorg dat deze variabele bij de start van het programma de waarde krijgt van de starttoestand.
  • Binnen een eindeloze herhaling maak je voor elke toestandsovergang een if-statement, zoiets als in de pseudocode hieronder:

toestand wordt 1

REPEAT:

IF (toestand is gelijk aan 1 AND de toestandsovergang vindt plaats)

toestand wordt 2
voer een eventuele actie uit

IF (toestand is gelijk aan 2 AND de toestandsovergang vindt plaats)

toestand wordt 1
voer een eventuele actie uit

  • De toestandsovergangen die naar dezelfde toestand leiden EN geen actie hebben hoef je niet om te zetten in een if-statement, die kun je achterwege laten.
  • De volgorde van deze overgangen-code in de loop is niet van belang: elke overgang is onafhankelijk van de andere overgangen.

Als voorbeeld maken we een start met het programma dat hoort bij het volgende toestandsdiagram van de hotelschakeling.

Er zijn dus vier toestanden (SA = Schakelaar A, SB = Schakelaar B)

  1. SA uit, SB uit, lamp uit
  2. SA aan, SB uit, lamp aan
  3. SA uit, SB aan, lamp aan
  4. SA aan, SB aan, lamp uit

Dit zijn de mogelijke toestandsovergang:

  • schakelaarA (SA) is aan
  • schakelaarA (SA) is uit
  • schakelaarB (SB) is aan
  • schakelaarB (SB) is uit

Dit zijn de mogelijke acties:

  • zet lamp aan
  • zet lamp uit

Je kunt voor het overzicht een tabel maken met alle toestandsovergangen. Als er een streepje staat (-), dan is er geen toestandsovergang en geen actie. Hieronder hebben we vast een begin gemaakt.

Toestands-
overgang
Toestand
SA is aan SA is uit SB is aan SB is uit
1 2
zet lamp aan
2 1
zet lamp uit
3
4

3.4.2.1 Opdracht: maak tabel compleet