Za nalogo napišite aplikacijo za preprosto urejanje besedil (teksta), ki bo podobna Windows Notepad (beležnica). Aplikacija naj ima prilagodljivo velikost okvirja skupaj z vsemi gradniki (resizeable), menu in vnosno polje za vnašanje teksta. Omogoča naj:
- nalaganje
- shranjevanje
- spreminjanje tekstovnih datotek (.txt)
- kopiranje teksta (copy)
- lepljenje teksta (paste). Obe operaciji naj bosta dosegljivi preko menuja!
- možnost nalaganja večih datotek naenkrat in prikaz vsake v svojem zavihku (tabbed environment).
V vsakem zavihku naj bo mogoče spreminjanje in shranjevanje besedila neodvisno od drugih zavihkov, operaciji kopiranja in lepljenja pa naj delujeta tudi med posameznimi zavihki.
Program napišite v programskem jeziku C#.
V programskem jeziku C# napišite aplikacijo, s katero bo mogoče pregledovati slike na disku. Zahteve za aplikacijo so:
- omogoča naj pregledovanje slik v formatu JPG, BMP in GIF.
- omogoča naj nalaganje ene ali večih slik hkrati.
- omogoča naj odstranjevanje izbrane slike iz seznama slik ali večih slik iz seznama slik hkrati (ne iz diska!!).
- v seznamu slik naj bodo zapisana samo IMENA slik (brez končnic in/ali poti do slike).
- omogoča naj prikaz osnovnih informacij o sliki: dolžina in višina slike v pikah (dimenzije), format slike, velikost slike v KB, datum in ura spremembe slike.
- omogoča naj shranjevanje in nalaganje seznama izbranih slik iz datoteke (seznam ‘priljubljenih’ oz. MojaGalerija).
- omogoča naj pisanje in prikazovanje poljubnega komentarja k vsaki naloženi oz. prikazani sliki. Komentarji se naj shranijo skupaj s seznamom priljubljenih slik (v MojaGalerija).
- omogoča naj prikaz naloženih slik v seznamu po imenih in s prikaznimi sličicami (‘thumbnail’).
- omogoča naj dva različna načina predogleda slike: v naravni velikosti in prilagojeno glede na velikost prikazne površine.
- program naj bo preprost za uporabo, prijazen do uporabnika in vizualno zanimiv!
Pri izdelavi programa boste potrebovali:
- znanje iz predhodnih nalog
- razred ListView (za prikaz seznama slik)
- razred FileInfo (informacije o slikah)
- razred Image (za delo s slikovnimi podatki)
- razred PictureBox (gradnik za prikaz slik)
- preostale razrede in grafične elemente po vaši lastni presoji!!
Za opise razredov in pripadajočih metod uporabite pomoč iz MSDN!
Zaradi praznikov (in enkratne odsotnosti profesorja) smo imeli pred tem kolokvijem predavanja le 2-krat.
Tako so prišle v upoštev naslednja poglavja (kot so zapisana v knjigi Borut Žalik: Algoritmi računalniške geometrije):
V funkciji testiraj_filtre.m izračunajte vektorja a in b s filtri cheby1, cheby2, butter za visoko-prepustno sito. Izberite enako lomno frekvenco in enake rede filtra. Narišite amplitudi frekvenčnih odzivov za vsak filter posebej. Vsi grafi naj bodo popolnoma označeni (x os, y os, itd.) ter prikazani na eni sliki (uporabite ukaz subplot). V komentar programa za vsak filter napišite, kako se obnaša njegova frekvenčna karakteristika. Napišite tudi, kakšne razlike med njimi opazite.
Gotovo vsi poznate tonski način izbiranja številke na telefonu (DTMF – Dual Tone Multiple Frequency). V bistvu za vsako pritisnjeno tipko telefon pošlje kratek zvočni signal sestavljen iz dveh čistih sinusov po naslednjem sistemu.
Najprej preizkusite generator signalov DTMF:
SIS:Vaja09:Digitalni filtri:generateDTMF - Naložil: Narmotur
, ki je napisan v Matlabu. Funkcija vrne vektor zvočnega signala, ki ga lahko poslušate s funkcijo sound (vzorčevalna frekvenca je 8000 Hz).Napišite program zaporedje=razpoznaj_DTMF(x), ki bo z uporabo pasovno prepustnih filtrov poskušal prepoznati, kakšno zaporedje telefonskih tipk je bilo pritisnjeno v vhodnem signalu x. Uporabite 7 pasovno prepustnih filtrov (tipe in rede filtrov izberite sami), ki bodo prepuščali le bolj ali manj ozko frekvenčno okolico zgoraj navedenih frekvenc (697 Hz, 770 Hz , 852 Hz, itd.). V kolikor amplituda pri dveh filtriranih signalih presega določeni prag, vemo katera tipka je bila pritisnjena. Namesto funkcije filt uporabite funkcijo filtfilt, ki izniči vpliv zakasnitve filtrov.
Signal, ki ga dobite z generatorjem signalov DTMF, ne vsebuje nikakršnega šuma. V realnosti pa lahko vaš program vsebuje tudi govor ali šum. Testni program na sistemu bo preizkusil vaš program z različnimi stopnjami šuma. Šum se ponavadi naredi tako, da signalu prištejemo naključne vrednosti. Nivo dodanega šuma merimo s faktorjem SNR (razmerje signal/šum), ki ga merimo v decibelih (dB). Nižja, ko je vrednost SNR, močneje je šum prisoten. Pri SNR = 20 dB je šum po moči stokrat šibkejši od signala. Pri SNR = 10 dB je šum po moči desekrtat šibkejši od signala. Ko je SNR=0 dB, je moč šuma enaka moči signala.
Na sistemu za vaje se bo signalu iz generatorja DTMF šum dodal s funkcijo awgn:
signalPlusSum = awgn(signal,10,'measured')
.
Število doseženih točk bo bo pri tej nalogi odvisno od robustnosti vašega programa s testnimi primeri. Za pravilo delujoč program, ki dela pri šumu 20 dB dobite 15 točk. 20 dodatnih točk pa bo mogoče doseči z odpornostjo na šum – najboljša rešitev bo nagrajena z 10 dodatnimi točkami (skupaj torej 25 točk), druga najboljša z 9, tretja z 8 in tako naprej, dokler ne zmanjka točk.
Pozor! Naloga morate rešiti v časovnem prostoru.
Po vzoru primera 36 iz predavanj, zapišite lastni primer redefiniranja in prekrivanja
metod. Zapišite vsaj dva primera metod tako za prekrivanje kot redefiniranje.
V nalogi uporabite tudi manipulatorje nad izpisom v datoteko!
Nalogo 11.1 dopolnite z naslednji tremi izjemami:
Prikažite uporabo izjem.
Razširite nalogo 9.1 tako, da:
Po vzoru primera 29 iz predavanj napišite lasten program iz področja generiËnega programiranja. Naloga naj obsega naslednje:
Primer 30 iz predavanj popravite tako, da boste lahko prejeli parametre poljubne dolžine v funkciji mediana(…). Funkcija mediana vrne srednjo vrednost (natanko enako elementov je manjših in večjih od vrednosti mediane).
Nalogo si lahko poenostavite tako, da so parametri ob klicu funkcije mediana urejeni po velikosti!