• Apgrejdovali smo forum na XenForo 2.1.1, ukoliko imate predloga vezanih za izgled ili funkcionalnost foruma, ili ukoliko naletite na neki problem, javite nam OVDE

    DEFINISALI SMO PRAVILA FORUMA. Pročitajte ih, pojaviće se automatski kada krenete da čitate nešto!

XNA Programiranje Igara | Tutorijal #07.01 | Uvod u Kolekcije

Uni

PCAXE Addicted
Učlanjen(a)
31.08.2018.
Poruka
2.469
Rezultat reagovanja
984
Moja konfiguracija
PC / Laptop Name:
Lenovo ThinkPad X250 - i5 5300U/8GB/256GB EVO 860/6 Cell
Mice & keyboard:
Bloody V7M & Stock Thinkpad X250 Keyboard
OS & Browser:
Windows 10 + Microsoft Edge | ArcoLinux + i3 + Mozilla Firefox Quantum
Pre svega, kao i uvek, apelujem na vas da, ukoliko ste propustili iti jedan tutorijal iz serije ovih, iščitate dotične, pošto se svi nadovezuju jedni na druge. Ovo možete učiniti unosom "#xna-gwid" bez navodnika u polje foruma "Pretraga...". :)

Šta ćemo danas obraditi?
Kada programiramo, želimo da smestimo više vrednosti u jedan skup, kao što su učenici jednog odeljenja. Danas ćemo saznati kako je to moguće učiniti u C#-u pomoću jednodimenzionih nizova. Ako ste spremni, 'ajde da počnemo!

Nizovi
Kada je reč o skupu promenljivih čiji je broj tačno određen, kao što je četiri kriminalca, koristimo nizove, tj. kolekcija podataka striktno određenog broja. Nizovi prihvataju samo deklarisani tip podataka, tako da u jednom standardnom nizu nije moguće smestiti i brojeve i reči, ili nešto slično.

Inicijalizacija
Pri inicijalizaciji nizova koristimo sledeći oblik :
tip[] naziv = new tip[broj];
U ovom zapisu, tip označava tip podatka koji ćemo smestiti u nizu, koga slede uglaste zagrade (male zagrade) što označava da je reč o nizu. Naziv simbolizuje naziv ispisan u Camel Case formatu. Primetićete da je reč new označena roze bojom, čime naglašavam da je to jedna od rezervisanih reči u C#-u. Nakon toga sledi još jedan par uglastih zagrada, unutar kojih se iskazuje broj promenljivih koje smeštamo.
U praksi bi to izgledalo ovako :
int[] brojevi = new int[4];
Važno je znati da kao i svaki tip, svaka vrednost pri inicijalizaciji ima deklarisanu vrednost "null" ili podrazumevanu vrednost tipa kao što je za Int32 to 0.

Pozivanje elemenata
Elementi niza se pozivaju po njihovom rednom broju. Ovo se obavlja nevođenjem naziva niza, koga prate uglaste zagrade unutar kojih je naveden tzv. indeks. Indeks označava redni broj vrednosti u nizu, a počinje od 0. U prethodnom primeru, indeks prve vrednosti bio bi 0, a poslednje 4, što znači da taj niz ima 4+1=5 elemenata. Razmotrimo sledeći primer :
int[] brojevi = new int[4];
Console.WriteLine(brojevi[3]);
Povratan vrednost metode WriteLine, klase Console, bila bi 0. Ovo se dešava jer su svim elementima niza "brojevi" dodeljene podrazumevane vrednosti 0, pa bismo nezavisno od indeksa dobili istu povratnu vrednost. Ako bismo probali da indeks zamenimo sa vrednošću manjom od najveće inicijalizovane ili manjom od najmanje inicijalizovane, program se ne bi izvršio već bi izbacio grešku "IndexOutOfRange Exception" ili "IndexOutOfBounds Exception" u zavisnosti od tipa koji koristimo.

Dodeljivanje vrednosti
Naravno da ne želimo da naši elementi imaju povratne vrednosti 0, null ili prazan tekst, već želimo da im nađemo realnu primenu. Dodeljivanje se vrši slično kao i pozivanje, navođenjem naziva niza, indeksa, znaka jednakosti i nove vrednosti. Pogledajte sledeći primer :
int[] brojevi = new int[4];
brojevi[0] = 2;
Sada je povratna vrednost prvog elementa niza "brojevi" jednaka 2, pa bi pozivanjem te vrednosti kompajler izbacio vrednost 2.
Ako želimo da dodelimo sve vrednosti niza, to možemo učiniti old school metodom dodeljivanja svake vrednosti pojedinačno, ali je to moguće izvesti velikom uštedom vremena, korišćenjem blokova. To se čini pri samoj deklaraciji tipa, kao u sledećem primeru :
int[] brojevi = new int[] {2, 45, 23, 1, 2};
Ova komanda takođe kreira niz od pet elemenata, čije su vrednosti, redom : 2, 45, 23, 1 i 2. Vidite da možete u istom nizu ponoviti istu vrednost, jer su to zapravo dva zasebna broja.

Šta dalje?
Kao što ste primetili, ovaj tutorijal će se sastojati iz više delova, najverovatnij 6-8 u kojima ćemo obraditi jednodimenzione, višedimenzionenizove i zupčaste nizove, liste, foreach petlju, skupove i rečnike :)
Oprostite što malo neredovnije pišem tutorijale, krećemo od danas punom parom :)
 
Vrh