1. naloga

Budilka

Napiši tri podprograme (funkcije), ki jih bo sistem klical, da mu bodo pomagali upravljati z budilko. Tvoji podprogrami naj bodo takšne oblike:
  • void NastaviBudilko(int t) — sistem ga pokliče, ko želi uporabnik nastaviti, naj zvoni vsak dan ob času t. Če je bila budilka pred tem nastavljena na zvonjenje ob drugem času, naj se stari čas pobriše. Čas je podan kot celo število v minutah od polnoči (torej od 0 do 24 · 60 − 1 = 1439).
  • bool JeCasZaAlarm() — sistem ga pokliče vsako minuto točno ob začetku minute. Če naj budilka to minuto zvoni, naj ta funkcija vrne true, sicer false.
  • void Dremez() — sistem ga pokliče, ko pritisne uporabnik tipko za dremež. Če se to zgodi manj kot pet minut po originalnem zvonjenju, naj tvoj program poskrbi, da bo budilka še enkrat zazvonila pet minut po originalnem zvonjenju. Morebitne nadaljnje klice tega podprograma ignoriraj (prav tako tudi klice, ki nastopijo več kot pet minut po originalnem zvonjenju) — z drugimi besedami, poskrbeti moraš, da bo učinek takih klicev enak, kot če se podprogram takrat sploh ne bi klical. Nova nastavitev (s podprogramom NastaviBudilko) hkrati tudi prekliče trenutno aktivno funkcijo dremeža.
Poleg teh podprogramov lahko tvoja rešitev uporablja tudi globalne spremenljivke, ki jim lahko tudi določiš začetne vrednosti.

Predpostavi, da se bo tvoj program začel izvajati točno opolnoči in da bo takrat sistem najprej poklical tvoj podprogram JeCasZaAlarm. Ob začetku izvajanja naj se program obnaša tako, kot da budilka ni nastavljena.

Še deklaracije v pythonu:

def NastaviBudilko(t: int) −> None: . . .
def JeCasZaAlarm() −> bool: . . .
def Dremez() −> None: . . .