Showing posts with label kurs. Show all posts
Showing posts with label kurs. Show all posts

14.10.21

Java - HashSet

Besplatni Java kurs - 49. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

HashSet bi se moglo prevesti kao skup heš vrednosti ili heš skup. Heš vrednosti su vrednosti koje nastaju primenom heš funkcija na ulazne vrednosti. Heš funkcije su tema za sebe i potrebo je više prostora za opisivanje svih pojedinosti koje su neophodneza potpuno razumevanje, ali pokušaću da objasnim ukratko, samo osove koje su neophodne za razumevanje heš skupova.

Heš funkcije

Kao i svaka druga matematička funkcija, heš funkcija (f) preobražava ulaznu vrednost (x) u izlaznu vrednost (y). Jedna od najjednostavnijih heš funcija je ostatak pri deljenju. Uzmimo za primer da je naša heš funcija ostatak pri deljenju brojem 10. Hajde da primenimo našu funkciju na nekoliko ulaznih vrednosti:

1. slučaj
f = ostatak pri deljenju brojem 10
x = 15
f(x) = f(15) = ostatak deljenja broja 15 brojem 10 = 5
znači rešenje je:
y = 5

2. slučaj
f = ostatak pri deljenju brojem 10
x = 23
f(x) = f(23) = ostatak deljenja broja 23 brojem 10 = 3
i rešenje je:
y = 3

3. slučaj
f = ostatak pri deljenju brojem 10
x = 195
f(x) = f(195) = ostatak deljenja broja 195 brojem 10 = 5
rešenje je (ponovo):
y = 5

Iz primera se može zaključiti nekoliko stvari:
  • heš funkciju je moguće primeniti na beskonačan broj ulaznih vrednosti
  • heš funkcija može dati isti rezultat za različite ulaze (u našem primeru prvi i treći slučaj imaju isto rešenje: i za x = 15 i za x = 195 rešenje je 5)
  • nemoguće je zaključiti koja vrednost je bila ulazna vrednost heš funkcije na osnovu rezultata (u našem primeru, kada imamo rešenje 5 ne možemo znati da li je na ulazu bilo 15, 195 itd.)

Ove tri osobine treba imati na umu pri radu sa heš skupovima, ali i pri radu sa bilo kojom drugom heš kolekcijom - kako u Javi, tako i u drugim programskim jezicima.

Skupovi heš vrednosti predstavljaju Java kolekcije koje sadrže jedinstvene elemente i veoma su brzi za pretragu. Java skupovi heš vrednosti se koriste upotrebom metoda klase HashSet.

30.9.21

Java - EnumSet

Besplatni Java kurs - 48. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

EnumSet bi u prevodu na naš jezik značilo skup nabrajanja. Skupovi nabrajanja su Java kolekcije koje mogu sadržati nijedan, jedan ili više elemenata nabrajanja. Java skupovi nabrajanja se stvaraju upotrebom metoda klase EnumSet.

Java EnumSet - Upotreba

Najpre je neophodno uvesti EnumSet iz paketa java.util na sledeći način:

import java.util.EnumSet;

Zatim je potrebno napraviti nabrajanje. Iskoristićemo primer iz prethodnog dela kursa:

enum DanUNedelji {
    PONEDELJAK,
    UTORAK,
    SREDA,
    CETVRTAK,
    PETAK,
    SUBOTA,
    NEDELJA
}

Konačno sve je spremno za stvaranje skupova nabrajanje od nabrajanja DanUNedelji

Stvaranje skupa nabrajanja

Ako je potrebno napraviti skup koji će sadržati sve elemente nabrajanja DanUNedelji, koristi se metoda allOf():

EnumSet<DanUNedelji> sviDaniUNedelji;
sviDaniUNedelji = EnumSet.allOf(DanUNedelji.class);

13.7.21

Java - Enums

Besplatni Java kurs - 47. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Enums ili enumeracije(nabrajanja) su posebna vrsta Java kolekcija koja predstavlja grupu konstanti. Java enumeracije se stvaraju upotrebom ključne reči enum nakon koje slede naziv i konstante.

Enums - Upotreba

Java nabrajanja se mogu koristiti neposredno, bez uvođenja paketa:

Stvaranje Enumeracije

Nabrajanja se mogu koristiti za grupisanje konstanti, npr. naziva dana u nedelji:

enum DanUNedelji {
    PONEDELJAK,
    UTORAK,
    SREDA,
    CETVRTAK,
    PETAK,
    SUBOTA,
    NEDELJA
}

Konstantne vrednosti iz enumeracije se se mogu mogu dodeljivati promenljivama čiji je tip data enumeracija, bez upotrebe ključne reči new:

DanUNedelji dan = DanUNedelji.PETAK;


Pročitaj i nastavak:

Besplatni Java kurs - 48. deo - EnumSet

30.6.21

Java - ArrayDeque

Besplatni Java kurs - 46. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Array Deque je Java kolekcija iz paketa java.util koja predstavlja niz - red sa dva kraja, otuda i naziv (na engleskom: Array Double Ended Queue). Kao što se iz naziva može zaključiti, ArrayDeque je red koji omogućava dodavanje i uklanjanje članova na oba kraja.

Korišćenje ArrayDeque

Pre upotrebe potrebno je uvesti paket u kome se nalazi ArrayDeque:

import java.util.ArrayDeque;

Stvaranje ArrayDeque

Red sa dva kraja se stvara pomoću ključne reči new:

ArrayDeque<String> mojiOmiljeniStraniJezici = new ArrayDeque<String>();

29.6.21

Java - LinkedList

Besplatni Java kurs - 45. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Linked List je još jedna od često korišćenih Java kolekcija iz paketa java.util. Na našem jeziku, linked list se može prevesti kao povezana lista. Povezane liste su linearna struktura podataka čiji članovi nisu uskladišteni u neprekidnom nizu memorijskih adresa, već mogu biti skladišteni na različitim mestima. Svaki član povezane liste sadrži dva dela: podatak i adresu narednog člana. Kao što je već pomenuto, LinkedList je deo java.util paketa koji se prvo mora uvesti i tek onda je moguće koristiti ArrayList.

Uvođenje LinkedList

Najpre je potrebno uvesti paket u kome se nalaze povezane liste. Nije nužno uvesti ceo paket, već samo LinkedList:

import java.util.LinkedList;

Stvaranje LinkedList

Nova povezana lista se stvara pomoću ključne reči new:

LinkedList<String> mojiOmiljeniSportovi = new LinkedList<String>();

31.5.21

Java - ArrayList

Besplatni Java kurs - 44. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

ArrayList je jedna od najčešće korišćenih Java kolekcija. Po svoj prirodi, ArrayList je niz promenljive dužine. To je ujedno i najbitnija razlika u odnosu na osnovne, ugrađene Java nizove. Za razliku od ugrađenih nizova koji se mogu koristiti bez dotatnih priprema, ArrayList je deo java.util paketa koji se prvo mora uvesti i tek onda je moguće koristiti ArrayList.

Uvođenje ArrayList u program

Pre svega, prvo je potrebno uvesti paket. Da bi bilo moguće koristiti ArrayList nije neophodno uvesti ceo paket, već samo ArrayList na sledeći način:

import java.util.ArrayList;

Stvaranje ArrayList

Slično nizu, novi ArrayList objekat se stvara pomoću ključne reči new:

ArrayList<String> mojeOmiljeneDestinacije = new ArrayList<String>();

17.10.20

Java - Nizovi u petljama

Besplatni Java kurs - 43. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Petlje su veoma pogodne za rad sa nizovima. Upotrebom petlji olakšava se i automatizuje pristup članovima niza, njihovo stvaranje i izmena. Koriščenje petlji posebno ima smisla kada se radi sa velikim nizovima koji imaju mnogo članova i/ili više dimenzija. Za početak, biće objašnjeno kako se radi sa jednodimenzionalnim nizovima unutar petlji.

Jednodimenzionalni nizovi u petljama

Za jednostavniji rad sa jednodimenzionalnim nizovima dovoljna je jedna petlja. Sledeći primer služi za ispis brojeva koji su smešteni u jednodimenzionalni niz tipa int:

int loto[] = {21, 37, 22, 30, 18, 39, 12};
String ispis = "";
for(int i = 0; i < 7; i++){
    ispis = ((i+1) + ". broj je: " + loto[i]);
    System.out.println(ispis);
}

Rezultat izvršavanja je:

1. broj je 21
2. broj je 37
3. broj je 22
4. broj je 30
5. broj je 18
6. broj je 39
7. broj je 12

Hajde da analiziramo šta se zapravo dešava u petlji.

20.7.20

Java - Višedimenzionalni nizovi

Besplatni Java kurs - 42. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Višedimenzionalni nizovi su nizovi nizova. Ukupan broj nizova određuje dimenzionalnost. Npr. ako postoji samo jedan niz unutar drugog, ukupno ih ima dva i cela struktura se zove dvodimenzionalni niz. Ako se unutar niza nalazi drugi niz u kome se nalazi treći - takav niz se zove trodimenzionalni itd.

Dvodimenzonalni nizovi

Dvodimenzonalni nizovi se deklarišu navođenjem tipa i identifikatora(naziva) i dva para uglastih zagrada [ ][ ]. Sledeći primer predstavlja dvodimenzionalni niz tipa int:

int niz_2d[][];

Drugi način deklarisanja dvodimenzionalnog niza je navođenjem uglastih zagrada pre naziva:

int [][] niz_2d;

Drugi način je pogodniji kada je potrebno deklarisati više od jednog niza istovremeno jer je dovoljno napisati samo jedan par uglastih zagrada:

byte niz_2dA[][], niz_2dB[][], niz_2dC[][];
byte [] niz_2dA, niz_2dB, niz_2dC;

2.6.20

Java - Nizovi

Besplatni Java kurs - 41. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Nizovi su uređena grupa podataka istog tipa kojima se pristupa momoću zajedničkog naziva. Java nizovi mogu sadržati i druge nizove i tada se zovu višedimenzionalni nizovi. U ovom postu biće obrađeni samo jednodimenzionalni nizovi, tj. nizovi koji ne sadrže druge nizove već samo sadrže vrednosti istog tipa.

Jednodimenzonalni nizovi

Nizovi se deklarišu navođenjem tipa podataka koji će sadržati, identifikatora (naziva) niza i uglastih zagrada [ ]. Sledeći primer predstavlja jednodimenzionalni niz tipa int:

int niz_brojeva[];

Alternativno, uglaste zagrade mogu se navesti pre naziva, a posle tipa:

int [] niz_brojeva;

Oba načina su ravnopravna, jedina razlika je što je na drugi način lakše deklarisati više od jednog niza istovremeno jer je u tom slučaju dovoljno napisati samo jedan par uglastih zagrada:

byte nizA[], nizB[], nizC[];
byte [] niz1, niz2, niz3;

1.6.20

Java - Ugnježdene petlje

Besplatni Java kurs - 40. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Petlje se mogu koristiti unutar drugih petlji. Takav način korišćenja petlji naziva se ugnježdavanje petlji. Može se ugnježdavati proizvoljan broj petlji. U svakom krugu spoljne petlje izvršiće se svi krugovi unutrašnje petlje pre nego što se pređe na izvršavanje sledećeg kruga spoljne petlje.

Sledeći primer predstavlja dve petlje od kojih je jedna ugnježdena u drugu. Spoljna petlja će se izvršiti tri puta, a unutrašnja tri puta za svaki krug spoljne petlje:

for(int s = 1; s <= 3; s++){
    System.out.println("Spoljni krug: " + s);
    for(int u = 100; u <= 300; u += 100){
        System.out.println("Unutrašnji krug: " + u/100);
        System.out.println("s = " + s + ", u = " + u);
    }
}

Rezultat izvršavanja petlje biće:

Spoljni krug: 1
Unutrašnji krug: 1
s = 1, u = 100
Unutrašnji krug: 2
s = 1, u = 200
Unutrašnji krug: 3
s = 1, u = 300
Spoljni krug: 2
Unutrašnji krug: 1
s = 2, u = 100
Unutrašnji krug: 2
s = 2, u = 200
Unutrašnji krug: 3
s = 2, u = 300
Spoljni krug: 3
Unutrašnji krug: 1
s = 3, u = 100
Unutrašnji krug: 2
s = 3, u = 200
Unutrašnji krug: 3
s = 3, u = 300


Pročitaj i nastavak:

Besplatni Java kurs - 41. deo - Nizovi

17.5.20

Java - naredbe za izlazak iz petlji

Besplatni Java kurs - 39. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Za izlazak iz petlji koriste se naredbe break i continue.

break

Naredba break koristi se da bi se trajno prekinula petlja.

Sledeća petlja će se izvršiti samo tri puta, uprkos tome što je uslov i < 10, zato što će kada i bude bilo 3 naredba break prekinuti dalje izvršavanje petlje:

for(int i = 1; i <= 10; i++){
    System.out.println("Krug: " + i);
    if(i == 3)
        break;
}

Rezultat izvršavanja petlje biće:

Krug: 1
Krug: 2
Krug: 3

13.5.20

Java - for petlja

Besplatni Java kurs - 38. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

for petlja se ponavlja prema zadatom pravilu, tačno određeni broj puta.

Uslov za izvršavanje for petlje navodi se u zagradi posle naredbe for, kao drugi od tri izraza razdvojenih tačkom-zarezom. Prvi izraz zapravo predstavlja deklaraciju i inicijalizaciju iteracione promenljive koja se najčešće označava sa i. Poslednji, treći izraz služi da bi se promenila vrednost iteracione promenljive, a to najčešće znači uvećanje za 1 (i++).

Sledeća petlja će se izvršiti tri puta:

for(int i = 0; i < 3; i++){
    System.out.println("Krug: " + (i + 1));
}

Rezultat izvršavanja petlje biće tri ispisa:

Krug: 1
Krug: 2
Krug: 3

Navedena petlja radi na sledeći način:

Samo pre prvog izvršavanja biće deklarisana i inicijalizovana iteraciona promenljiva (int i = 0). Zatim, pre prvog kruga, kao i pre svakog sledećeg, proveriće se uslov (i < 3) i samo ako je ispunjen uslov - izvršiće se telo petlje. Prvi put i će imati vrednost 0 što zadovoljava uslov da je manje od 3 i telo petlje će biti izvršeno. Na kraju prvog kruga, kao i na kraju svakog sledećeg, biće izvršeno uvećanje promenljive i za jedan.

Isto se ponavlja za svaki krug.


Pročitaj i nastavak:

Besplatni Java kurs - 39. deo - Naredbe za izlazak iz petlji

12.5.20

Java - do while petlja

Besplatni Java kurs - 37. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

do while petlja jako liči na while petlju, sa bitnom razlikom: uslov izvršavanja se proverava na kraju petlje, a ne na početku.

do while petlja se uvek izvršava bar jednom, a zatim pre sledećeg izvršavanja ispituje da li je uslov zadovoljen. Samo u slučaju da je uslov zadovoljen izvršiće se kôd. Posle svakog izvršavanja uslov će ponovo biti ispitan i opet, samo ako je uslov zadovoljen ponoviće se izvršavanje. To će se ponavljati sve dok god uslov za izvršavanje petlje ostane zadovoljen.

Npr, sledeća petlja će se izvršiti tri puta:

int k = 1;
do {
    System.out.println("Krug: " + k);
    if (k == 3)
        k = 0;
    k++;
} while(k > 1);

Rezultat izvršavanja petlje biće tri ispisa:

Krug: 1
Krug: 2
Krug: 3


Pročitaj i nastavak:

Besplatni Java kurs - 38. deo - for petlja

11.5.20

Java - while petlja

Besplatni Java kurs - 36. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

while petlja uvek pre izvršavanja ispituje da li je uslov zadovoljen. Samo u slučaju da je uslov zadovoljen izvršiće se kôd. Posle svakog izvršavanja uslov će ponovo biti ispitan i opet, samo ako je uslov zadovoljen ponoviće se izvršavanje. To će se ponavljati sve dok uslov za izvršavanje petlje ne bude nezadovoljen.

Npr, sledeća petlja će se izvršiti tri puta:

int k = 1;
while(k <= 3){
    System.out.println("Krug: " + k);
    k++;
}

Rezultat izvršavanja petlje biće tri ispisa:

Krug: 1
Krug: 2
Krug: 3

U prvom krugu k će imati vrednost 1, u drugom imaće vrednost 2, u trećem vrednost 3. Posle trećeg kruga k će imati vrednost 4 što neće zadovoljiti uslov ponovnog ulaska u petlju - da je k manje ili jednako 3. Zato neće biti četvrtog prolaska kroz petlju, već će se ovaj deo programa završiti. Vrednost k se menja zahvaljujući liniji kôda k++;, kojom se svaki put pri prolasku kroz petlju k uvećava za 1 (k = k + 1).

7.5.20

Java - Petlje

Besplatni Java kurs - 35. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Za uslovno ponavljanje izvršavanja dela programa koriste se petlje.

Postoje tri vrste petlji u programskom jeziku Java:

  • while petlje
  • do-while petlje
  • for petlje

Kada nije poznato koliko puta bi trebalo da se ponovi izvršavanje dela kôda koriste se uglavnom while ili do-while petlje. Kada je unapred poznato koliko puta je potrebno da se ponovi izvršavanje dela kôda koriste se najčešće for petlje.

U narednim postovima biće objašnjene sve tri vrste petlji. U suprotnom bi ovaj post bio preopširan.

Za sada ću samo objasniti kako rade na visokom nivou. Sve petlje ispituju određene uslove na osnovu kojih će se utvrditi koliko puta će se izvršiti. Petlje se i razlikuju upravo po načinu na koji se posmatraju ti uslovi.

6.5.20

Java - Naredbe uslovnog grananja - else

Besplatni Java kurs - 34. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Za uslovno izvršavanje dela programa u slučaju da nije zadovoljen zadati uslov koristi se naredba else.

else naredba

Da bi se deo programa izvršio samo ako nije ispunjen uslov za izvršavanje naredbe if koristi se naredba else. Naredba else se koristi isključivo tako što se navede posle naredbe if na koju se odnosi. Zatim se navede i kôd koji je potrebno izvršiti, npr:

if (false)
    System.out.println("Ovo se ne ispisuje jer je uslov uvek false.");
else
    System.out.println("Ovo se ispisuje!");

Prilikom izvršavanja navedenog kôda biće izvršen ispis "Ovo se ispisuje!" jer je kao uslov stavljen literal false. Primer nema mnogo smisla, jer je uslov uvek neistinit. Pravi primer bi bio sledeći kôd koji će ispisati "Ovo se ispisuje kada je islov istina." samo ako je promenljiva uslov istinita, u suprotnom ispisaće "Ovo se ispisuje kada uslov nije istina.":

if (uslov)
    System.out.println("Ispisuje se kada je uslov istina.");
else
    System.out.println("Ispisuje se kada uslov nije istina.");

5.5.20

Java - Naredbe uslovnog grananja - if

Besplatni Java kurs - 33. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Za uslovno izvršavanje dela programa koristi se if naredba.

if naredba

Da bi se deo programa izvršio pod nekim uslovom, koristi se naredba if. Naredba if se koristi tako što se u zagradi posle naredbe navede uslov, a zatim i kôd koji je potrebno izvršiti, npr:

if (true)
    System.out.println("Uslovni pozdrav!")

Prilikom izvršavanja navedenog kôda biće izvršen ispis "Uslovni pozdrav!" jer je kao uslov stavljen literal true. Ovaj primer nema mnogo smisla, jer je uslov uvek istinit. Pravi primer bi bio sledeći kôd koji će ispisati "Uslovni pozdrav!" samo ako je promenljiva uslov istinita:

if (uslov)
    System.out.println("Uslovni pozdrav!")

4.5.20

Java - blokovi naredbi

Besplatni Java kurs - 32. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Blokovi naredbi služe za grupisanje više naredbi u logičke celine.

Blokovi naredbi se grade pomoću vitičatih zagrada, npr:

{
    System.out.println("Zdravo")
    System.out.println("Svete")
}

Teško je objasniti svrhu blokova naredbi bez pominjanja nekih drugih elemenata programskog jezika Java, ali biće sve jasnije u narednih nekoliko postova.

Blokovi naredbi mogu biti imenovani

Imenovanje blokova naredbi vrši se tako što se pre bloga stavi ime po želji posle koga slede dve tačke. Da bi ime bilo ispravno trebalo bi ga odabrati po istim pravilima kao i za promenljive. Npr:

mojBlok : {
    System.out.println("Pozdrav iz")
    System.out.println("imenovanog bloka")
}

3.5.20

Logički operatori za dodelu uz logičku operaciju

Besplatni Java kurs - 31. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Logički operatori za dodelu uz logičku operaciju služe za istovremeno vršenje logičke operacije i dodelu rezultata te logičke operacije.

Logički operatori za dodelu uz logičku operaciju su:

  • &= logički operator dodele uz konjukciju
  • |= logički operator dodele uz disjunkciju
  • ^= logički operator dodele uz isključivu disjunkciju
  • ?: ternarni operator uslovne dodele

Logički operatori za dodelu uz logičku operaciju rade po istom principu kao i logički operatori, uz razliku što istovremeno vrše i dodelu vrednosti.

2.5.20

Java - Logički operatori

Besplatni Java kurs - 30. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Logički operatori služe za poređenje istinitosti operanada. Ekskluzivno, operatori jednakosti i nejednakosti služe i za poređenje vrednosti.

Logički operatori su:

  • ! unarni logički operator negacije
  • & logički operator konjukcije
  • && logički operator kratkospojene konjukcije
  • | logički operator disjunkcije
  • || logički operator kratkospojene disjunkcije
  • ^ logički operator isključive disjunkcije
  • == logički operator jednakosti
  • != logički operator nejednakosti

Logički operatori rade po istom principu kao i logički operatori za bitove, ali za razliku od njih vrše operacije nad vrednostima, ne nad bitovima. Zato neću detaljno opisivati logiku operatora. Za detalje pogledaj objašnjenje za istoimene operacije na nivou bita.