Uitwerking opdracht a)

Hieronder volgt een mogelijke uitwerking van opdracht a) over de lichtregulering.

Het begint met het proberen te bepalen welke toestanden er zijn. In de opdrachtomschrijving staat dat de lamp in drie standen kan staan. Het ligt voor de hand dat we die gebruiken voor de toestanden:

  1. Lamp is uit
  2. Lamp is half aan
  3. Lamp is helemaal aan

Die toestanden kunnen we vast tekenen, als drie bollen

Belangrijk om te weten is welke gebeurtenissen er zijn, op basis daarvan kun je de toestandsovergangen bepalen. Als je de tekst van de opdracht leest blijkt dat er twee knoppen zijn. Dat zijn de gebeurtenissen, er zijn er dus twee:

Voor elke toestand (dat zijn er drie) en elke gebeurtenis (dat zijn er twee) kunnen we bepalen wat de toestandsovergang wordt (3 x 2 = 6). Elke toestandsovergang teken je als een pijl. Dan krijg je zoiets als hieronder.

A betekent: knop A wordt ingedrukt, B betekent: knop B wordt ingedrukt.

Nu moeten de acties er nog bij. Bijvoorbeeld, wat moet er gebeuren als de lamp in toestand 2 is en op knop B wordt gedrukt? Dan moet de lamp uit gaan. Een actie zet je altijd bij een toestandsovergang (dus niet bij een toestand). Je krijgt dan dit:

Je ziet, niet bij iedere toestandsovergang hoeft een actie te staan.

We zijn nog niet helemaal klaar, begintoestand moet er bij. Dat is de initiele toestand waar het systeem in begint. Het lijkt logisch dat de lamp eerst uit is, we kiezen daarom toestand 1 als begintoestand. En om het toestandsdiagram overzichtelijk te houden, laten we de toestandsovergangen die naar zichzelf verwijzen en geen actie hebben weg. Dan krijg je dit.

We houden de teksten kort in het diagram om het overzichtelijk te houden. Het nadeel is dat misschien niet helemaal helder is wat er wordt bedoeld. Bijvoorbeeld, de pijl van toestand 1 naar toestand 2 waar bij staat A: lamp half aan zou beter kunnen zeggen:

(gebeurtenis) knop A wordt ingedrukt -> (actie) zet de lamp met halve intensiteit aan.

 

Je kunt het toestandsdiagram voor jezelf testen en daarmee controleren of het klopt. Bijvoorbeeld, wat gebeurt er is als ik op A, B en dan weer B druk? Klopt dit met wat het systeem zou moeten doen?

Probeer nu eerst zelf opdracht b) te doen voordat je de uitwerking bekijkt.