2. naloga

Svetilka


Žepna baterijska svetilka je lahko ugasnjena ali pa sveti v dveh možnih načinih: sveti stalno ali pa utripa tako, da vsako sekundo posveti za eno desetinko sekunde (in je potem devet desetink sekunde ugasnjena). Za preklop med temi tremi stanji služi tipka.

Takoj ko pritisnemo tipko (t.j. ob začetku pritisnjenosti tipke) naj se svetilka vklopi: če je bila prej ugasnjena, naj se vklopi v stalni način, če je bila v stalnem načinu, naj se preklopi v utripanje, in če je utripala, naj se preklopi v stalni način. Če je tipka pritisnjena tri sekunde ali več, naj se po teh treh sekundah svetilka izklopi.

Podana je funkcija Luc(vklop), s katero lahko program upravlja svetilo: vrednost true vklopi svetilo, false ga izklopi.

Napiši naslednji dve funkciji, ki ju bo operacijski sistem malega računalnika v svetilki avtomatsko klical takole:

  • Tiktak() — ta funkcija bo poklicana vsako desetinko sekunde;
  • Tipka(pritisnjena) — ta funkcija bo poklicana vsakokrat, ko se bo stanje pritisnjenosti tipke spremenilo; vrednost argumenta bo true, če je bila tipka pravkar pritisnjena (t.j. začetek pritiska), in false, če je bila tipka pravkar spuščena.
Za ohranitev stanja programa lahko uporabiš poljubne globalne spremenljivke in jih tudi po svoje inicializiraš. Na začetku delovanja programa je luč ugasnjena, tipka pa spuščena.

Glede na to, da nimamo možnosti merjenja časa z večjo ločljivostjo od desetinke sekunde, ne bo nič narobe, če ob preklopu na utripanje prvi blisk ne traja točno eno desetinko sekunde, prav tako lahko trosekundni interval (za ugašanje svetilke) odstopa za malenkost.

Če si želiš poenostaviti nalogo, lahko opustiš stanje utripanja in poskrbiš le za vklop in izklop svetilke — pri tem boš dobil največ polovico točk naloge.