Nizovi i matrice u C#. . . Petlja foreach ...
( DRUGAČIJE nego u C )
Nizovi i matrice u C#
Kreiranje niza u programskom jeziku C# :
// deklarisanje niza sa dve naredbe tip[] niz; niz = new tip[duzina]; // deklarisanje niza jednom naredbom tip[] niz = new tip[duzina];Za kreiranje niza C# iza scene kreira objekat klase Array iz .NET Framework-a pa otuda i operator new u deklaraciji.
Po kreiranju niza svaki element niza se inicijalizuje na podrazumevane vrednosti zavisno od tipa elementa:
- numerički na 0
- char na '\0'
- Boolean na false
- DateTime na 01/01/0001 00:00:00
- pokazivački tip na null
Sam niz je uvek objekat pokazivačkog tipa, nezavisno od toga kojeg su tipa elementi. Na primer, sledeća naredba je ispravna:
int[] a = null;
Inicijalizacija elemenata niza:
tip[] niz1 = new tip[duzina] {vrednost1, vrednost2, vrednost3,...}; // bez navodjenja duzine tip[] niz1 = new tip[] {vrednost1, vrednost2, vrednost3,...}; // bez navodjenja tipa i duzine tip[] niz2 = {vrednost1, vrednost2, vrednost3,..., vrednostN}; // Npr. char[] samoglasnici = new char[] {‘a’,’e’,’i’,’o’,’u’}; // ili, jednostavno: char[] samoglasnici= {‘a’,’e’,’i’,’o’,’u’};
Zbog toga što su nizovi izvedeni iz klase
Array, na raspolaganju su:
- svojstvo Length koje
daje broj elemenata niza
- metoda BinarySearch(niz,
vrednost) koja daje indeks elementa određene vrednosti
- metoda
Sort(niz) koja vrši sortiranje niza u rastući
redosled
Matrice
U deklaracijama pravougaonih nizova, zarezi razdvajaju svaku dimenziju. Metoda GetLength niza vraća dužinu zadate dimenzije (počevši od 0):
int[,] matrix = new int [3, 3]; for (int i = 0; i < matrix.GetLength(0); i++) for (int j = 0; j < matrix.GetLength(1); j++) matrix [i, j] = i * 3 + j;
Inicijalizacija matrice
int[,] matrix = new int[,] { {0,1,2}, {3,4,5}, {6,7,8} };
Nazubljeni nizovi (jagged arrays)
Nazubljeni
nizovi se deklarišu pomoću uzastopnih ugaonih zagrada koje
predstavljaju svaku dimenziju niza. U sledećem primeru deklariše se
nazubljen dvodimenzioni niz čija je najveći broj redova 3
Broj kolona nije zadat u deklaraciji jer – za razliku od pravougaone matrice – svaki unutrašnji niz može biti proizvoljne dužine - broja kolona. Svaki unutrašnji niz se implicitno inicijalizuje na vrednost null a ne na prazan niz. Svaki unutrašnji niz mora se napraviti ručno:
int[][] matrix = new int[3][]; for (int i = 0; i < matrix.Length; i++) { matrix[i] = new int [3]; // Izrada unutrašnjeg niza for (int j = 0; j < matrix[i].Length; j++) matrix[i][j] = i * 3 + j; }
foreach petlja
Opšti oblik foreach petlje je:
foreach (tip promenljiva in izraz)
telo petlje
promenljiva je promenljiva koja se koristi u petlji za pristup svim elementima specificiranim u izrazu izraz.
Primer:
int[] nekiNiz = { 1, 5, 2, 7, 3 };
foreach (int element in nekiNiz)
Console.WriteLine("Element niza je = " + element);