Dodatak: različiti načini definisanja nizova, višedimenzionalni nizovi i nazubljeni nizovi - teorija sa primerima
1.1. Definisanje nizovnih promenljivih u C#
U C# jeziku niz (array) predstavlja kolekciju elemenata istog tipa. Elementima se pristupa pomoću indeksa, a prvi indeks je 0.
Niz možemo deklarisati na više načina.
Napomena: Deklaracija znači da smo definisali promenljivu niza, dok inicijalizacija znači da smo nizu dodelili početne vrednosti ili rezervisali prostor za njegove elemente.
1.1.1. Deklaracija niza bez inicijalizacije
U ovom slučaju navodimo tip elemenata i uglaste zagrade, ali još ne pravimo niz.
int[] brojevi;
string[] imena;
double[] cene;
U ovom trenutku promenljive nisu inicijalizovane i ne mogu se koristiti za pristup elementima.
Da bismo ih koristili, potrebno je na primer:
int[] brojevi;
brojevi = new int[5];
Sada je napravljen niz od pet elemenata tipa int.
1.1.2. Deklaracija i kreiranje niza pomoću new
Možemo istovremeno deklarisati promenljivu i kreirati niz određenog broja elemenata.
int[] brojevi = new int[5];
Ovaj izraz znači:
-
int[]– niz celih brojeva; -
brojevi– naziv promenljive; -
new int[5]– kreira niz sa pet elemenata.
Dodeljivanje vrednosti elementima
int[] brojevi = new int[3];
brojevi[0] = 10;
brojevi[1] = 20;
brojevi[2] = 30;
1.1.3. Deklaracija niza sa početnim vrednostima – skraćeni oblik
Ako unapred znamo vrednosti elemenata, možemo ih navesti između vitičastih zagrada.
int[] brojevi = { 10, 20, 30, 40 };
Kompajler će na osnovu navedenih vrednosti da određuje koji je broj elemenata niza.
Primeri:
int[] ocene = { 5, 4, 3, 5, 4 };
double[] cene = { 120.5, 250.0, 99.9 };
string[] imena = { "Ana", "Marko", "Jelena" };
char[] slova = { 'A', 'B', 'C' };
Broj elemenata možemo proveriti pomoću svojstva Length:
int[] ocene = { 5, 4, 3, 5, 4 };
Console.WriteLine(ocene.Length);
Rezultat:
5
1.1.4. Deklaracija niza pomoću new i inicijalizatora
Početne vrednosti možemo navesti i uz eksplicitno korišćenje new.
int[] brojevi = new int[] { 10, 20, 30 };
Isto se može napisati kraćim oblikom:
int[] brojevi = { 10, 20, 30 };
Oba oblika daju niz sa istim elementima.
Još primera:
string[] imena = new string[] { "Ana", "Marko", "Jelena" };
double[] cene = new double[] { 10.5, 20.5, 30.5 };
Napomena: new int[] { ... } i int[] {
...
} nisu dve različite vrste nizova. Razlika je samo u načinu pisanja inicijalizacije.
1.1.5. Implicitno određivanje tipa pomoću var
C# omogućava da se lokalna promenljiva deklariše pomoću ključne reči var. Kompajler tada određuje tip na osnovu izraza sa desne strane.
var brojevi = new int[] { 10, 20, 30 };
Tip promenljive brojevi je int[].
Još primera:
var imena = new string[] { "Ana", "Marko" };
var cene = new double[] { 10.5, 20.5 };
var ne znači da promenljiva može naknadno promeniti tip. Tip je određen prilikom kompajliranja.
Na primer:
var broj = 10;
// broj = "tekst"; // Greška: broj je tipa int
Za one koji žele da znaju više: 1.1.6. Deklaracija niza pomoću Array klase
U C# jeziku niz je objekat, pa se može čuvati i u promenljivoj tipa Array.
Array brojevi = new int[] { 10, 20, 30 };
Ovde je promenljiva brojevi deklarisana kao Array, ali objekat koji je kreiran jeste niz celih brojeva.
Za početnike je važno razlikovati:
int[] brojevi = { 10, 20, 30 };
od:
Array brojevi = new int[] { 10, 20, 30 };
U prvom primeru promenljiva je tipa int[], a u drugom je tipa Array.
Uobičajeno je koristiti konkretan tip niza (int[], double[], string[]) kada želimo da jasno navedemo tip elemenata.
1.1.7. Deklaracija niza pomoću izraza sa eksplicitnim tipom
Moguće je navesti tip niza i odvojeno dodeliti vrednosti pomoću inicijalizatora:
int[] brojevi;
brojevi = new int[] { 10, 20, 30 };
Ovo je korisno kada promenljivu prvo deklarišemo, a zatim je inicijalizujemo u nekom drugom delu programa.
Primer:
string[] imena;
imena = new string[] { "Ana", "Marko", "Jelena" };
1.1.8. Deklaracija višedimenzionalnog niza
Pored jednodimenzionalnih nizova, C# podržava i višedimenzionalne nizove.
Dvodimenzionalni niz – matrica
int[,] matrica = new int[2, 3];
Ovaj niz ima dva reda i tri kolone.
Vrednosti možemo postaviti ovako:
matrica[0, 0] = 1;
matrica[0, 1] = 2;
matrica[0, 2] = 3;
matrica[1, 0] = 4;
matrica[1, 1] = 5;
matrica[1, 2] = 6;
Pristup elementu:
Console.WriteLine(matrica[1, 2]);
Rezultat:
6
Inicijalizacija dvodimenzionalnog niza:
int[,] matrica =
{
{ 1, 2, 3 },
{ 4, 5, 6 }
};
1.1.9. Niz nizova – jagged array
C# podržava i niz čiji su elementi drugi nizovi.
int[][] brojevi = new int[2][];
Zatim možemo definisati pojedinačne nizove:
brojevi[0] = new int[3];
brojevi[1] = new int[2];
Primer inicijalizacije:
int[][] brojevi =
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 }
};
Pristup elementu:
Console.WriteLine(brojevi[0][1]);
Rezultat:
2
Razlika:
-
int[,]– pravougaoni višedimenzionalni niz. -
int[][]– niz čiji su elementi nizovi; unutrašnji nizovi mogu imati različite dužine.
Ovo je dodatni sadržaj i može se ostaviti za kasniju lekciju o višedimenzionalnim nizovima.
1.1.10. Poređenje načina deklaracije
| Način | Primer | Objašnjenje |
| Deklaracija | int[] brojevi; |
Samo definiše promenljivu. |
| Kreiranje po veličini | new int[5] |
Kreira niz sa 5 elemenata. |
| Inicijalizacija | int[] a = { 1, 2, 3 }; |
Kreira niz sa početnim vrednostima. |
Eksplicitni new |
new int[] { 1, 2, 3 } |
Kreira niz uz navođenje tipa. |
var |
var a = new int[5]; |
Kompajler određuje tip promenljive. |
| Dvodimenzionalni niz | int[,] a = new int[2,3]; |
Kreira matricu. |
| Jagged array | int[][] a = new int[2][]; |
Kreira niz nizova. |