Низовни тип

Научили смо да саберемо два броја као две променљиве одређеног типа или да оперишемо са неколико вредности. Замислите сада да пишете програм који врши обраду великог броја података. Велики бrој података би захтевао постојање исто тако великог броја променљивих да би сместити њихове вредности, што никако није практично.

Слика 10.1. Гомиле

Како би се онда снашли са таквом гомилом ?
За решавање оваквих проблема су погодни низовски типови података, које смо раније споменули у оквиру 4. теме нашег курса. Сада ћемо се детаљније упознати са њима.

Дефиниција: Низ је колекција сличних елемената,а редни број одређеног елемента се назива ИНДЕКС.

Да бисмо у програм унели онолико података колико желимо, користећи само једну променљиву и да би их једноставније учитали и обрадили, потребни су нам НИЗОВИ. Углавном ћемо се бавити једнодимензионим низовима.

Низови се у C# декларишу, тако што се испред имена променљиве ставе угласте заграде.


//Tip niza brojevi je int
int [] brojevi ;
  

Низ тек треба да се дефинише (креира). Низовска променљива brojevi је само локација у меморији,која може да чува адресу низа,што ће бити објашњено касније. За креирање самог низа мора се задати његов тип и колико ће елемената садржати.

Да би дефинисали низ користимо кључну реч new:


//Naredba kreira niz koji ce sadrzati 5 clanova tipa int
int [] brojevi = new int[5] ;
  

На овај начин смо резервисали део меморије за 5 узастопних елемената нашег низа.
Још треба унети те елементе!

Почетне вредности елемената (које се касније могу мењати по потреби) можемо унети на разне начине.
Можемо извршити директну доделу вредности што је непрактично за огромне низове.


//Navodjenje elemenata
int [] brojevi = {1,2,3,4,5}; 
  

Или:

int [] brojevi = new  int[5] ;
//Svakom elementu niza brojevi dodeljujemo vrednost pojedinacno
brojevi[0]=1;
brojevi[1]=2;
......
brojevi[4]=5; 
  
  

За пролажење кроз низ користимо неку од петљи, нпр. for, па на овај начин најчешће и уносимо елементе низа.

int [] brojevi = new  int[5];

//Niz brojevi popunjavamo redom vrednostima 1,2,3,4,5
for (int i = 0; i < 5; i++)
{
    //Kako brojac krece od nule,njegovu vrednost svaki put uvecavamo za 1
    brojevi[i] = i+1; 
  
} 

  

Можемо искористити for петљу и на овај начин, ако хоћемо да корисник уноси елементе са стандардног улаза.

//Definisemo prostor u memoriji za najvise 5 elemenata niza brojevi
int[] brojevi = new  int[5];
  
Console.WriteLine("Unesi elemente niza:";);
//Unosimo clanove niza sa tastature, pri cemu se ucitava element po element
for (int i = 0; i < 5; i++)
{
    brojevi[i] = int.Parse(Console.Readline());
}
 

  • ТИП низа може бити било који тип: int,float,double,string,...
  • Индекс низа мора бити цео број и њиме је једнозначно одређен елемент који се налази на том редном броју!
    Ако је brojevi[3] = 5; индекс је 3, што значи да је на четвртом месту у низу brojevi елемент вредности 5.
  • Индекси се увек крећу од 0 до n-1, где је n произвољан број елемената низа.
    Ако случајно покушамо да приступимо елементу чији је индекс ван овог интервала програм ће избацити грешку!
    
    int[] brojevi = new int[5];
    //Prvi element niza od 5 elemenata
    brojevi[0] = 2; 
    //Poslednji element niza od 5 elemenata   
    brojevi[4] = 5;     
    
  • Низови могу бити: једнодимензиони, дводимензиони и вишедимензиони.

Слика 10.2. Температуре



Ево још неких примера дефинисања једнодимензионих низова:

//Promenljiva niz sadrzi najvise 50 elemenata realnog tipa double
double [] niz = new double[50];         
//Osmi element niza je 12 tj. na 8. mestu je vrednost 12
niz[7] = 12;                           
//Niz karaktera
char[] slova = {'a','b','c','d','h'};  
//Niz stringova
string [] imena= {'Mira','Jovana','Marko','Sreta'}; 
/*Promenljiva parni_niz ukazuje na 40 rezervisanih mesta u memoriji za elemente
 tipa int*/
int parni_niz[40];