Naloga

Vsak bolj moderen avto ima vgrajene čuda veliko tehnike. Med drugim imajo marsikaj, da se ga ne razbije med parkiranjem, recimo ultrazvočne merilnike razdalje. Ko tak avto vozimo vzvratno, piska, ko zazna oviro na neki razdalji, in bližje ko smo,
bolj tečno piska.


Napiši program, ki meri razdaljo in primerno piska po spodaj opisanih navodilih.
  1. Dokler je ovira oddaljena več kot en meter, ne piska;
  2. ko je med 1m in 0,5m, piska s 400Hz;
  3. ko je med 0,5m in 0,25m, piska s 1000Hz;
  4. ko je bližje kot 0,25m, pa piska z 2000Hz.
Na voljo imaš naslednje sistemske funkcije/podprograme (zanje torej predpostavi, da že obstajajo in jih lahko tvoj podprogram pokliče, ko jih potrebuje):
  • void Zvocnik(int frekvenca), ki sproži piskanje s podano frekvenco; če je podana vrednost 0, ugasne piskanje;
  • long Cas(), ki pove trenutni sistemski čas v mikrosekundah od trenutka, ko se je prižgal računalnik v avtomobilu, na katerem teče tvoj program;
  • void Ping(unsigned char x), ki odda ultrazvočni pulz, namenjen meritvi. V pulz ta funkcija zakodira vrednost x (število od 0 do 255), funkcija Poslusaj pa zna to število izluščiti iz signala, ki pride nazaj po odboju.
  • int Poslusaj(), ki vrne -1, če v času od zadnjega klica ni slišala odboja nobenega ultrazvočnega merilnega pulza, oddanega s Ping; če pa je tak odboj slišala, vrne vrednost x, ki je bila ob pošiljanju tistega signala podana funkciji Ping.
Predpostaviš lahko, da je hitrost zvoka 340m/s.

Še deklaracije v drugih jezikih:

procedure Zvocnik(Frekvenca: integer); { v pascalu }
function Cas: integer;
procedure Ping(x: byte);
function Poslusaj: integer;

public static void zvocnik(int frekvenca); // v javi
public static long cas();
public static void ping(byte x);
public static int poslusaj();

def Zvocnik(frekvenca): ... # v pythonu
defCas(): ... \\
defPing(x): ... \\
defPoslusaj(): ...