4. naloga

Semafor

Semafor na prehodu za pešce ima dvomestni prikazovalnik sekund do spremembe luči. Prikazuje lahko torej poljubno celo število od 0 do 99, lahko pa je tudi ugasnjen. Napiši podprogram oz. funkcijo VsakoSekundo(n), ki jo bo sistem poklical enkrat na sekundo, da mu bo pomagala upravljati s prikazovalnikom na semaforju. Prek parametra n ti sistem pove, kaj se dogaja z lučjo semaforja: če se je v zadnji sekundi stanje luči spremenilo (iz zelene v rdečo ali obratno), ti parameter n pove, koliko sekund bo luč semaforja v svojem novem stanju; če pa se v zadnji sekundi stanje luči ni spremenilo, boš dobil n = −1.

Na voljo imaš funkcijo Prikazi(n), ki jo lahko pokličeš, da na prikazovalniku prikažeš število n. Število n mora biti od 0 do 99, lahko pa je −1, če hočeš, da naj bo prikazovalnik prazen (ne prikazuje nobenega števila, niti ničle).

Deklariraš lahko tudi globalne spremenljivke in jih po svoji želji inicializiraš. Predpostavi, da bo vrednost parametra n pri prvem klicu funkcije VsakoSekundo gotovo večja od 0.

Če čas, ko bi se morala luč spremeniti, mine, sistem pa te še ni obvestil o spremembi stanja luči (in trajanju novega stanja), moraš poskrbeti, da bo prikazovalnik prazen, dokler te sistem ne obvesti o spremembi stanja luči.

Prikazovalnik na semaforju je le dvomesten, stanje luči pa včasih traja več kot 99 sekund. Zato naj tvoj podprogram poskrbi, da če je do spremembe stanja luči več kot 99 sekund, naj se prikazuje število 99, vendar naj utripa (eno sekundo gori, eno sekundo je ugasnjena).