Showing posts with label jagged. Show all posts
Showing posts with label jagged. Show all posts

Thursday, March 19, 2020

Nizovi u C# programskom jeziku


Već ste učili kako se deklarišu i prave promenjive i konstante i kako da iste mogu da budu različitih tipova podataka. Ukoliko se ne sećate baš najbolje te teme, možete se podsetiti na ovom postu. Znači promenjive i konstante su odlične kada imate potrebu za manje podataka, ali šta da radite ako vam na primer treba 1000 promenjivih ili čak da vi ne znate koliko će vam tačno biti potrebno promenjivih? Nećete valjda deklarisati 1000 promenjivih, na šta bi taj vaš kod ličio? Zbog takvih situacija u C# programskom jeziku ali definitivno i u svim drugim programskim jezicima postoji nešto što zovemo nizovi. U informatičkoj literaturi piše da je Array – niz fiksan broj promenjivih koje zovemo elementi. To bi se tako moglo reći samo kad je niz definisan određenim brojem elemenata. Ako mene pitate, najjednostavnije rečeno, niz vam je indeksiran skup podataka istog tipa. Sintakse nizova u C# programskom jeziku su sledeće:

Jednodimenzionalan niz:
tip [] naziv_niza;

Dvodimenzionalni niz:
tip [ , ] naziv_niza;

Višedimenzionalan niz:
tip [ , , … ] naziv_niza;

Ortogonalni niz:
tip [ ] [ ] naziv_niza:
     

Nizovi nisu ograničeni samo na osnovne tipove podataka nego se mogu deklarisati i kao klase, strukture, numeracije ili neki tip podataka kojeg ste sami napravili. Broj elemenata koji može biti u nizu zavisi od vašeg procesora ali i operativnog sistema. Negde oko 4 biliona, ali imajte u vidu da Linux operativni sistem to više ograničava nego Windows 10 operativni sistem. Moj savet vam je da nikad ne pravite tako velike nizove gde se to može izbeći. Bolje napraviti više nizova.  


( Nizovi u C# programskom jeziku prikazani mapom uma )

Ukoliko ste vi neko ko poznaje C++ programski jezik, treba da imate na umu da i pored iste svrhe nizovi u C# programskom jeziku nisu isto što i nizovi u C++ programskom jeziku, niti je njihova deklaracija ista. Ukoliko vas interesuje na koji način funkcionišu nizovi u C++ programskom jeziku pogledajte ovde. Vi što ste nekada učili Visual Basic programski jezik, sećate se da je niz predstavljao promenjiva tipa SAFEARRAY, što znači da je rad sa nizom podrazumevalo izvesno angažovanje sistema, ali je olakšavao rad sa nizovima. I ono je bolje nego što su to nizovi u CC++  programskim jezicima. Jednostavno, C# programski jezik je prevazišao neke nedostatke koje nizovi imaju i sada nizove tretira kao svaki objekat sa vlastitim metodama i svojstvima što vama olakšava rad sa nizovima. C# programski jezik podržava čak nizove u formi izričitog različitog tipa. Niz u C# programskom jeziku je sam po sebi referentni tip, čak i kad su njegovi elementi vrednosti tipovi. To znači da promenjiva niza ukazuje na neprekidan blok memorije koji sadrži elemente niza u hip memoriji kao što je to slučaj sa klasama. Međutim da sada ne bismo vas plašili i otišli previše daleko pogledajte praktičan primer kako se lako koriste nizovi.

Jednodimenzionalni nizovi

Tuesday, December 01, 2015

Nizovi u C# programskom jeziku


Najjednostavnije rečeno, niz vam je indeksiran skup podataka istog tipa. Indeks nizova uvek počinje od 0. Nizovi se dele na jednodimenzionalne i višedimenzionalne nizove. Kad pravite nizove u C# programskom jeziku, vama oni izgledaju slično kao u C ili C++ programskom jeziku ali oni to definitivno nisu. Nizove u C++ programskom jeziku možete pogledati ovde. U C i C++ programskom jeziku ime nekog niza samo predstavlja pokazivač memorijske adrese, dok indeks niza predstavlja samo relativnu poziciju navedene adrese. I pored toga što su nizovi u C i C++ programskom bili fleksibilni, lako su pravili greške jer nisu pratile veličinu niza što je dovodilo i do oštećenja podataka. U programskom jeziku Visual Basic, niz je čak u osnovi predstavljao promenjivu tipa SAFEARRAY, što znači da rad sa nizom je podrazumevao izvesno angažovanje sistema ali zato je olakšavao rad sa nizovima. I ono je bilo bolje nego nizovi u C i C++ programskom jeziku. Zato je C# prevazišao nedostatke programskog jezika C i C++ i nizove od starta tretira kao objekte sa metodama i svojstvima uključujući i granice. Ali i na taj način opet podržava nizove u formi izričitog različitog tipa.


( Nizovi u C# programskom jeziku prikazani mapom uma )

Za razliku od nizova u C i C++ programskom jeziku, u C# programskom jeziku prilikom deklarisanja niza se u pozadini pravi primerak .NET bazne klase System.Array. Znači, C# kompajler vaš kod prevodi u razne pozive metoda klase System.Array i zbog toga nizovi u C# programskom jeziku imaju neke dodatne funkcije koje u drugim navedenim jezicima nisu postojale. Sintaksa niza u C# je sledeća:

Jednodimenzionalan niz:
tip [] naziv_niza;

Dvodimenzionalni niz:
tip [ , ] naziv_niza;

Višedimenzionalan niz:
tip [ , , … ] naziv_niza;

Ortogonalni niz:
tip [ ] [ ] naziv_niza:


Nemojte mešati nizove u C# programskom jeziku sa nizovima u C i C++ programskom jeziku.



int[] array; // it is not like as in C/C++ … int array[];

Rad sa jednodimenzionalnim nizom