Sign Up or Log In
Privacy and TOS
Contact Us

IceCold

06 - Funkcije

Provided by : IceCold » Folder : Programiranje » Category : Document » Tutorial

"Funkcije Kod koji smo do sada videli uglavnom je bio smešten unutar jednog bloka, eventualno sa nešto petlji da bi se deo koda ponovio, ili grananja radi uslovnog izvršavanja iskaza. Izvođenje operacije nad podacima podrazumevalo je postavljanje koda na tačno određeno mesto gde on treba da funkcioniše. Takva programska struktura je ograničena. Često ćemo nailaziti na zadatke (kao što je pronalaženje najveće vrednosti unutar niza) koji se moraju izvršiti nekoliko puta tokom izvršenja programa. Možemo postaviti identične (ili približno identične) delove koda u aplikaciju tamo gde je to potrebno, ali mogu se pojaviti problemi. Ako napravimo najmanju izmenu u takvom delu koda koji se tiče nekog standardnog postupka (npr. ispravljanje greške u kodu), taj deo koda moramo izmeniti na svim ostalim mestima unutar aplikacije. Ukoliko samo jedno od njih propustimo da ispravimo, posledice mogu biti dramatične i dovesti do toga da kompletna aplikacija ne radi. Pored toga, sama aplikacija bi bila vrlo velika. Ovaj problem rešavamo uz pomoć funkcija. Funkcije u jeziku C# predstavljaju sredstva kojima se obezbeđuje blok koda koji može biti izvršen na bilo kom mestu u aplikaciji. Funkcije određenog tipa koje se nalaze u ovom predavanju poznate su kao metode. Iako ovaj termin ima vrlo određeno značenje u .NET programiranju, za sada cento izbegavati njegovu upotrebu. Na primer, funkciju koja pronalazi maksimalnu vrednost u nizu možemo koristiti na bilo kom mestu u programu i svaki put iskoristiti iste redove koda. Potrebno je da samo jednom napišemo kod, i svaka promena koju unesemo odraziće se na sva mesta na kojima se kod izvršava. To znači da funkcija sadrži kod koji se može iznova upotrebljavati. Prednost funkcija je u tome što čine kod čitljivijim, a takođe ih možemo koristiti za grupisanje međusobno povezanog koda. Koristeći funkcije smanjujemo glavni deo koda u aplikaciji, zato što se sporedni delovi izvršavaju izvan glavnog. To podseća na sabijanje velikih delova koda u VS-u unutar prozora outline view, a daje i logičniju struktura aplikaciji. Funkcije se takođe mogu koristiti pri pravljenju višenamenskog koda, jer one mogu izvršiti iste operacije nad različitim podacima. Funkciju možemo snabdeti potrebnim informacijama u obliku parametara, a rezultate funkcija možemo dobiti u obliku povratnih vrednosti. Za gornji primer, parametar bi bio niz koji se pretražuje, dok bi povratna vrednost bila maksimalna vrednost unutar niza. To znači da istu funkciju možemo koristiti za rad sa različitim nizovima. Parametri i povratne vrednosti funkcije zajedno definišu potpis funkcije. U ovom predavanju ćemo videti na koji način se definišu proste funkcije koje niti primaju niti vraćaju podatke. Zatim ćemo videti kako se podaci prenose u funkciju i iz nje. Nakon toga, obradićemo temu opsega važenja promenljive. Ova tema se bavi načinom na koji se podaci u C#-u lokalizuju u posebne delove koda - što dobija na značaju kada delimo kod na vise različitih funkcija. Upoznaćemo se sa vrlo važnom funkcijom u C# aplikacijama - Main(). Videćemo kako da iskoristimo već ugrađene modele ove funkcije, da bismo iskoristili argumente iz komandne linije, koji nam dozvoljavaju transfer informacija u aplikacije kada se one pokrenu. Pogledaćemo dodatne mogućnosti struktura pomoću kojih funkcije predstavljamo kao članove struktura. Na kraju ćemo upoznati dve naprednije teme: preopterećivanje funkcije i delegate. Preopterećivanje funkcije je tehnika koja se koristi za stvaranje različitih funkcija sa istim imenom ali različitim potpisom. Delegat je tip promenljive koji nam dozvoljava indirektno korišćenje funkcije. Jedan delegat se može koristiti za pozivanje bilo koje funkcije koja ima određeni potpis, što nam omogućava da biramo između različitih funkcija u toku izvršenja programa. 1 Definisanje i korišćenje funkcija U ovom delu ćemo videti kako da aplikaciji dodamo funkciju i zatim je koristimo (pozivamo) iz koda. Počećemo od osnova, sa prostom funkcijom koja ne menja podatke sa kodom koji je poziva; zatim ćemo videti napredniju upotrebu funkcija. Vežba br. 9. Napravite novi projekat konzolne aplikacije birajući File | New | Project... iz menija: Izaberite Visual C# Projects direktorijum unutar prozora Project Types: i tip projekta Console Application u okviru prozora Templates: (za ovo ćete morati malo da pomerite prozor na dole). U okviru za tekst Location;promenite putanju u C:\Temp\SoftIng\LecturesCode\Vezba9 (ovaj će direktorijum biti automatski napravljen ukoliko već ne postoji), i ostavite podrazumevani tekst u okviru za tekst Name: PrimerFunkcije1 Dodajte sledeći kod u Class1.cs: Pokrenite program birajući Debug | Start Without Debugging 2 Kako to radi Sledeća četiri reda vašeg koda definišu funkciju pod imenom Write() : Ovaj kod jednostavno ispisuje tekst u konzolni prozor. Od toga su trenutno bitniji mehanizmi koji stoje iza definicije, kao i upotrebe funkcije.Definicija funkcije se sastoji iz sledećeg: dve ključne reči - static i void, imena funkcija koje prate zagrade Write(), bloka koda koji se izvršava uokviren zagradama. Kod koji definiše funkciju Write() vrlo je sličan dragim redovima koda u aplikaciji: static void Main (string [] args) { ........ ........ } Sav kod koji smo do sada napisali (izuzev definicija tipova) bio je deo jedne funkcije. Funkcija Main() je ulazna tačka za konzolnu aplikaciju. Kada se C# aplikacija izvršava, poziva se funkcija koja sadrži ulaznu tačku. Kada se ta funkcija izvrši, aplikacija se završava. Sav izvršni kod u jeziku C# mora imati ulaznu tačku. Jedina razlika između funkcije Main() i funkcije Write() (izuzev redova koda koji se nalaze u njima) jeste u tome što unutar zagrada posle imena funkcije Main postoji neki kod. Na taj način se navode parametri o kojima ćemo uskoro detaljnije govoriti. Kako je gore pomenuto, Main () i Write () su definisane uz pomoć ključnih reči static i void. Ključna reč static odnosi se na objektno orijentisane koncepte. Za sada jedino treba zapamtiti da sve funkcije koje ćemo ovde koristiti u aplikacijama mogu koristiti ovu ključnu reč. Sa druge strane, ključnu reč void je mnogo jednostavnije objasniti. Ona ukazuje na to da funkcija ne vraća nikakvu vrednost. Kasnije ćemo videti šta treba navesti ukoliko funkcija vraća neku vrednost. Kod koji poziva funkciju je sledeći: Write() ; Jednostavno unesemo ime funkcije sa praznim zagradama. Kada se u toku izvršenja programa naiđe na ovu tačku, izvršava se kod funkcije Write (). Upamtite da su zagrade koje se koriste na oba mesta, prilikom definicije funkcije i dok je pozivamo, obavezne. Ukoliko ih uklonite, kod se neće kompajlirati. 3 Povratne vrednosti Najjednostavniji način za razmenu podataka sa funkcijom jeste korišćenje povratne vrednosti. Funkcija koja ima povratnu vrednost izračunava je na isti način na koji se unutar izraza izračunava vrednost promenljive. Povratne vrednosti, kao i promenljive, imaju svoj tip. Na primer, možemo imati funkciju sa imenom getString() čija je povratna vrednost tipa string. To možemo koristiti u kodu na sledeći način: string mojString; mojString = getString() ; Možda ćemo imati funkciju pod imenom getVal() koja vraća vrednost tipa double, koju možemo koristiti u matematičkim izrazima: double mojVal; double multipler = 5.3; mojVal = getVal() * multipler; Kada funkcija vraća vrednost moramo je izmeniti na dva načina: Moramo navesti tip povratne vrednosti u deklaraciji funkcije, umesto ključne reči void. Moramo koristiti ključnu reč return da bismo završili funkciju i preneli povratnu vrednost u pozivajući kod. Prikazano preko koda za tip funkcije konzolne aplikacije koju smo već videli, to izgleda ovako: Static <returnType> <functionName>() { .......... .......... return <returnValue>; } Jedino ograničenje je u tome da <returnValue> mora biti vrednost koja je tipa <returnType>, ili može biti implicitno konvertovana u taj tip. Pa ipak, <returnType> može biti bilo koji tip, uključujući komplikovanije tipove koje smo već videli. To može biti jednostavno, kao na primer: static double getVa() { return 3.2; } Međutim, povratne vrednosti su obično rezultat proračuna izvedenog unutar funkcije, jer se to jednostavno može postići sa promenljivom tipa const. Kada dođe do iskaza return, izvršenje programa se momentalno vraća na pozivajući kod. Redovi unutar funkcije koji se nalaze iza ovog iskaza neće biti izvršeni. To ipak ne znači da se return mora postaviti na kraj funkcije. Iskaz return možemo koristiti pre toga, možda nakon izvršenja nekog logičkog grananja. 4 Postavljanje iskaza return u for petlju, blok if, ili neku sličnu struk-turu, dovodi do trenutnog završetka strukture i funkcije. Na primer: static double getVal() { double checkVal; // checkVal je dodeljena vrednost kroz neku logiku if (checkVal < 5) return 4.7; return 3.2; } Ovde može biti vraćena jedna od dve vrednosti, zavisno od vrednosti u checkVal. Jedino ograničenje je da iskaz return mora biti izvršen pre nego što se dostigne krajnja oznaka funkcije }. Sledeće nije dozvoljeno: static double getVal() { double checkVal; // checkVal je dodeljena vrednost kroz neku logiku if (checkVal < 5) return 4.7; } Ako je checkVal >= 5, onda se iskaz return neće izvršiti, što nije dozvoljeno. Sve putanje kroz funkciju se moraju završiti jednim iskazom return. Iskaz return se može koristiti u funkcijama koje se deklarišu pomoću ključne reči void, koje nemaju povratnu vrednost. Ako to uradimo, funkcija će se zaustaviti. Kada koristimo iskaz return na ovaj način, pogrešno je navesti povratnu vrednost između ključne reči return i tačke-zareza iza nje. Parametri Kada funkcija treba da prihvati parametre, moramo navesti sledeće: listu parametara koje funkcija prihvata, zajedno sa njihovim tipovima unutar definicije funkcije, odgovarajuću listu parametara u svakom pozivu funkcije. Podrazumeva se sledeći kod: Static <returnType> <functionName>(<paramType> <paramName>, ...) { ........ ........ return <returnValue>; } Ovde možemo imati proizvoljan broj parametara, svaki sa tipom i imenom. Parametri su odvojeni zarezima. Svakom od parametara se može pristupiti unutar funkcije kao promenljivoj. 5 Na primer, prosta funkcija može imati dva parametra tipa double i vratiti njihov proizvod: static double product (double param1, double param2) { return param1 * param2; } Pogledajmo malo složeniji primer. Vežba br. 10. Napravite novi projekat konzolne aplikacije birajući File | New | Project... iz menija: Izaberite Visual C# Projects direktorijum unutar prozora Project Types: i tip projekta Console Application u okviru prozora Templates: (za ovo ćete morati malo da pomerite prozor na dole). U okviru za tekst Location; promenite putanju u C:\Temp\SoftIng\LecturesCode\Vezba10 (ovaj će direktorijum biti automatski napravljen ukoliko već ne postoji), i ostavite podrazumevani tekst u okviru za tekst Name: PrimerFunkcije2 Dodajte sledeći kod u Class1.cs: Pokrenite program. 6 Kako to radi Ovaj kod sadrži funkciju koja radi ono čemu smo se nadali u primeru funkcije u uvodu ovog predavanja: prihvata niz celih brojeva kao parametre i vraća najveću vrednost tog niza. Definicija funkcije je sledeća: Funkcija MaxVrednost() ima samo jedan definisani parametar - niz tipa int pod imenom intArray. Takođe ima povratnu vrednost tipa int. Izračunavanje maksimalne vrednosti je jednostavno. Lokalnoj promenljivoj maxProm tipa int dodeljena je prva vrednost u nizu, a zatim se ova vrednost poredi sa svakim sledećim elementom u nizu. Ako element sadrži veću vrednost od maxProm, ova vrednost zamenjuje trenutnu vrednost u maxProm. Kada se petlja završi, maxProm sadrži najveću vrednost u nizu i vraća se pomoću iskaza return. Kod u funkciji Main() deklariše i inicijalizuje prost celobrojni niz koji koristimo u funkciji maxVrednost(): int[] mojArray = (1, 8, 3, 6, 2, 5, 9, 3, 0, 2}; Poziv funkcije maxVrednost() se koristi da bi se dodelila vrednost promenljivoj maxProm tipa int maxProm = maxVrednost (mojArray); Sledeći korak je ispisivanje ove vrednosti na ekran korišćenjem komande Console.WriteLine(): Console.WriteLine(“Maksimalna vrednost u nizu mojArray je {0}“, maxProm); Slaganje parametara Kada pozivamo funkciju moramo složiti parametre tačno kao što je navedeno u definiciji funkcije, odnosno moramo složiti tipove parametara, njihov broj i redosled. To znači da se sledeća funkcija: Static void myFunction(string myString, double myDouble) { ..... ..... } ne može se pozvati sa: myFunction(2.6, "Hello"); 7 Ovde pokušavamo da prosledimo vrednost tipa double kao prvi parametar, a vrednost tipa string kao drugi, što nije redosled po kome su parametri navedeni u definiciji funkcije. Takođe ne možemo koristiti: myFunction("Hello"); Ovde prosleđujemo samo jedan parametar tipa string, a zahtevaju se dva. Ako pokušamo da koristimo bilo koji od ova dva poziva, doći će do greške pri kompajliranju, jer nas kompajler primorava da složimo parametre u funkcijama koje koristimo. Ako se vratimo našem primeru - to znači da funkciju maxVrednost() možemo koristiti samo za dobijanje maksimalne vrednosti u nizu celih brojeva. Ako zamenimo kod u funkciji Main() sledećim kodom: kod se neće kompajlirati zato što je tip parametra pogrešan. Kasnije u ovom predavanju, u delu koji se bavi preopterećenjem operatora, videćemo tehniku koja zaobilazi ovaj problem. Nizovi parametara C# nam dozvoljava da definišemo jedan (i samo jedan) poseban parametar za funkciju. Ovaj parametar, koji mora biti zadnji u listi parametara u definiciji funkcije, poznat je kao niz parametara. Nizovi parametara dozvoljavaju nam da pozivamo funkcije koristeći promenljivu količinu parametara, a definisani su ključnom reči params. Nizovi parametara mogu biti korisni za pojednostavljivanje koda, jer ne moramo prosleđivati nizove iz našeg pozivajućeg koda. Umesto toga, prosleđujemo nekoliko parametara istog tipa, koji se nalaze u nizu koji možemo koristiti unutar funkcije. Sledeći kod je potreban da bi se definisala funkcija koja koristi niz parametara: static <returnType> <functionName>(<p1Type><p1Name>, . . . , params <type> [] <name>) { ..... ..... return <returnValue>; } Ovu funkciju možemo pozvati sa: <functionName>(<p1>,...,<val1><val2>,...) 8 Ovde su <val1>, <val2> i tako dalje, vrednosti tipa <type> koji je korišćen da bi se inicijalizovao niz <name>. Ne postoji ograničenje u broju parametara koje možemo navesti; jedino ograničenje je da su svi tipa <type>. Cak i ne moramo navoditi parametre. Poslednja stavka čini nizove parametara posebno korisnim za navođenje dodatnih informacija koje će funkcije koristiti tokom izvršenja. Na primer, imamo funkciju pod imenom getWord (), koja uzima vrednost tipa string kao prvi parametar i vraća prvu reč u nizu znakova: string firstWord = getWord("Ovo je rečenica."); Ovde će promenljivoj firstWord biti dodeljena vrednost "Ovo" . Možemo dodati parametar params u funkciju getWord(), što nam dozvoljava da vratimo alternativnu reč po njenom indeksu: string firstWord = getWord("Ovo je rečenica.",2); Ako pretpostavimo da smo počeli brojanje od 1 za prvu reč, rezultat će biti to da je promenljivoj firstWord dodeljena vrednost "je". Takođe, možemo dodati mogućnost ograničenja broja znakova koji se vraćaju preko trećeg parametra, kojem se takođe može pristupiti preko parametra params: string firstWord = getWord("Ovo je rečenica.",3,3); Ovde će promenljivoj firstWord biti dodeljen string "reč". Vežba br. 11. Napravite novi projekat konzolne aplikacije birajući File | New | Project... iz menija: Izaberite Visual C# Projects direktorijum unutar prozora Project Types: i tip projekta Console Application u okviru prozora Templates: (za ovo ćete morati malo da pomerite prozor na dole). U okviru za tekst Location; promenite putanju u C:\Temp\SoftIng\LecturesCode\Vezba11 (ovaj će direktorijum biti automatski napravljen ukoliko već ne postoji), i ostavite podrazumevani tekst u okviru za tekst Name: PrimerParametara. Dodajte sledeći kod u Class1.cs: 9 Pokrenite program Kako to radi U ovom primeru je funkcija sumProm() definisana pomoću ključne reči params, tako da prihvati proizvoljan broj parametara tipa int (i nijedne drage): static int sumProm (params int[] vals) { ....... ....... } Kod u ovoj funkciji iterativno prolazi kroz vrednosti u nizu vals, sabira vrednosti zajedno, vraćajući rezultat. U funkciji Main() pozivamo funkciju sa pet celobrojnih parametara: int sum = sumProm(1, 5, 2, 9, 8); Međutim, ovu funkciju smo mogli pozvati bez i jednog, sa jednim, dva, ili stotinu celobrojnih parametara - ne postoji ograničenje u količini parametara koje možemo navesti. Prenos parametara po referenci i vrednosti Funkcije koje smo do sada naveli koristile su prenos parametara po vrednosti. Podrazumeva se da smo, koriste parametre, prosleđivali njihove vrednosti u promenljive koje koristi funkcija. Bilo koja promena nad promenljivom unutar funkcije nema nikakvog efekta na parametre navedene u pozivu funkcije. Na primer, razmotrite funkciju koja udvostručuje i prikazuje vrednost prosleđenog parametra: static void DupliranaVred(int prom) { prom *=2; Console.WriteLine("duplirana promenljiva = (0)", prom); } Ovde je parametar prom udvostručen unutar funkcije. Ako je pozovemo na sledeći način: int mojBroj = 5; Console.WriteLine("mojBroj = {0]", mojBroj); DupliranaVred (mojBroj) ; Console.WriteLine("mojBroj = (0) ", mojBroj); - na konzoli će se pojaviti tekst: mojBroj = 5 duplirana promenljiva = 10 mojBroj = 5 10 Pozivanje funkcije DupliranaVred() sa promenljivom mojBroj kao parametrom, ne utiče na vrednost mojBroj unutar bloka Main(), iako je parametar val koji joj je dodeljen udvostručen. Ako poželimo da se vrednost promenljive mojBroj promeni, eto problema. Možemo koristiti funkciju koja vraća novu vrednost za mojBroj, a pozivamo je sa: int mojBroj = 5; Console.WriteLine{"mojBroj = {0)", mojBroj); mojBroj = DupliranaVred(mojBroj) ; Console.WriteLine("mojBroj = (0)", mojBroj); Ovaj kod teško da je intuitivan i neće se izboriti sa promenom vrednosti za vise promenljivih koje se koriste kao parametri (jer funkcija ima samo jednu povratnu vrednost). Umesto toga, želimo da prosledimo parametar po referenci. To znači da će funkcija raditi sa potpuno istom promenljivom kao u pozivu funkcije, a ne samo sa promenljivom koja ima istu vrednost. Sve promene koje se dešavaju toj promenljivoj odraziće se na promenljivu koja se koristi kao parametar. Da bi se ovo uradilo, treba jednostavno upotrebiti ključnu reč ref za navođenje parametra: static void DupliranaVred (ref int prom) { prom *= 2; Console.WriteLine("duplirana promenljiva = (0)", prom); } Ponovimo to u pozivu funkcije (to je obavezno, jer je parametar tipa ref deo potpisa same funkcije): int mojBroj = 5; Console.WriteLine("mojBroj = (0)", mojBroj); DupliranaVred (ref mojBroj); Console.WriteLine("mojBroj = (0}", mojBroj); Tada bi izlazni tekst na konzoli bio sledeći: mojBroj = 5 duplirana promenljiva = 10 mojBroj = 10 Ovoga puta je promenljiva mojBroj izmenjena od strane funkcije DupliranaVred(). Postoje dva ograničenja u vezi sa promenljivom koja se koristi kao ref parametar. Prvo - funkcija može prouzrokovati promenu vrednosti u referentnom parametru, tako da moramo koristiti promenljivu koja nije konstanta u okviru poziva funkcije. Zbog toga nije dozvoljeno sledeće: const int mojBroj = 5; Console.WriteLine("mojBroj = (0)", mojBroj); DupliranaVred (ref mojBroj) ; Console.WriteLine("mojBroj = (0)", mojBroj); Drago - promenljiva koju koristimo mora"biti inicijalizovana. Jezik C# nam ne dozvoljava pretpostavku da će parametar ref biti inicijalizovati u funkciji koja ga upotrebljava. Sledeći kod nije dozvoljen: int mojBroj Duplira..."

You need to upgrade your Flash Player , or try to enable javascript in order see this document properly.

06 - Funkcije

06 - Funkcije...
more

File Name: 06_-_Funkcije.pdf
Provided by: IceCold
Folder: Programiranje (Tutorijali, kursevi, skripte, etc)
Category: Document » Tutorial
Size: 1146.79 kb
Extension: pdf
Rating: 0
Views: 567
Downloads: 68
Uploaded: 10/11/07 21:07
Tags: 06 - Funkcije


Embed:
Link:
Forum:

Submit to digg
digg stumble reddit Submit to del.icio.us delicio furl facebook
comments Comments : 0
No comments yet..

Add comment: (Sing Up or Log In)

MCR - 06 House Of Wolves  Projekt Revolution (wmv video)
MCR - 06 House Of Wolves Projekt Revolution
MCR - 06 House Of Wolves Projekt Revolution
wmv video From: realestnig...
Vratice se Rode 06. epizoda (flv video)
Vratice se Rode 06. epizoda
Vratice se Rode 06. epizoda
flv video From: gagic
Vratice se Rode 06. epizoda (2) (flv video)
Vratice se Rode 06. epizoda (2)
Vratice se Rode 06. epizoda (2)
flv video From: gagic
Vratice se Rode 06. epizoda (3) (flv video)
Vratice se Rode 06. epizoda (3)
Vratice se Rode 06. epizoda (3)
flv video From: gagic
Vratice se Rode 06. epizoda (4) (flv video)
Vratice se Rode 06. epizoda (4)
Vratice se Rode 06. epizoda (4)
flv video From: gagic
Vratice se Rode 06. epizoda (5) (flv video)
Vratice se Rode 06. epizoda (5)
Vratice se Rode 06. epizoda (5)
flv video From: gagic
[UFC 88] Dong Hyun Kim interview (2008-09-06)  (flv video)
[UFC 88] Dong Hyun Kim interview (2008-09-06)
[UFC 88] Dong Hyun Kim interview (2008-09-06) watch and download
flv video From: AbsZero
[UFC 88] Weigh-In (2008-09-06)  (flv video)
[UFC 88] Weigh-In (2008-09-06)
[UFC 88] Weigh-In (2008-09-06) watch and download
flv video From: AbsZero
Kathy Griffin  Leaves Beso in Hollywood. 01 06 09 (flv video)
Kathy Griffin Leaves Beso in Hollywood. 01 06 09
Kathy Griffin Leaves Beso in Hollywood. 01 06 09
flv video From: DejanG
2006-06 ADC Cornwall, UK Scuba Diving (flv video)
2006-06 ADC Cornwall, UK Scuba Diving
2006-06 ADC Cornwall Trip Scuba Diving organised by Ashford Dive Club....
flv video From: sintetik
Felguk - GOA TRANCE - 07-06-2008 (flv video)
Felguk - GOA TRANCE - 07-06-2008
Felguk - GOA TRANCE - 07-06-2008 REBOLATION MODE ON!!!!
flv video From: Lenjivica
federer srichaphan basel 06 (flv video)
federer srichaphan basel 06
federer srichaphan basel 06 by the great erichman
flv video From: emilex
federer soderling - madrid 06 3R (flv video)
federer soderling - madrid 06 3R
federer soderling - madrid 06 3R from http://www.tennis4you.com
flv video From: emilex
Divlje Jagode - Mrak za dvoje (Live SKC 15.06.2007) (flv video)
Divlje Jagode - Mrak za dvoje (Live SKC 15.06.2007)
Divlje Jagode - Mrak za dvoje (Live SKC 15.06.2007)
flv video From: Lenjivica
Divlje Jagode - Turski Mars (Live SKC 15.06.2007) (flv video)
Divlje Jagode - Turski Mars (Live SKC 15.06.2007)
Divlje Jagode - Turski Mars (Live SKC 15.06.2007)
flv video From: Lenjivica
Divlje Jagode - Sampioni & Motori (Live SKC 15.06.2007) (flv video)
Divlje Jagode - Sampioni & Motori (Live SKC 15.06.2007)
Divlje Jagode - Sampioni & Motori (Live SKC 15.06.2007)
flv video From: Lenjivica
Divlje Jagode - Sejla (Live SKC 15.06.2007) (flv video)
Divlje Jagode - Sejla (Live SKC 15.06.2007)
Divlje Jagode - Sejla (Live SKC 15.06.2007)
flv video From: Lenjivica
PRISON BREAK Soundtrack - 06. T-Bag's Coming For Dinner (flv video)
PRISON BREAK Soundtrack - 06. T-Bag's Coming For Dinner
PRISON BREAK Soundtrack - T-Bag's Coming For Dinner The 06 song ...
flv video From: DejanG
Arkellian - Show 17/06/07 - Deep Purple - Burn (flv video)
Arkellian - Show 17/06/07 - Deep Purple - Burn
Show da Arkellian, que ocorreu no dia 17/06/07, Parte 2/6, Deep Purple...
flv video From: Lenjivica
Top 10 NHL shootout goals 2005-06 (flv video)
Top 10 NHL shootout goals 2005-06
Top 10 NHL shootout goals 2005-06
flv video From: JuicerNS

© 2009 Fliiby LLC