Објектно орјентисано

програмирање

Владимир Филиповић

vladaf@matf.bg.ac.rs

Александар Картељ

kartelj@matf.bg.ac.rs

Низови у програмском

језику Јава

Владимир Филиповић

vladaf@matf.bg.ac.rs

Александар Картељ

kartelj@matf.bg.ac.rs

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 3 /

  • Низ се дефинише као група променљивих истог типа које се појављују под заједничким именом.
  • Низовни тип података у Јави има следећа својства:
    1. садржи линеарно уређен, унапред познат, број чланова,
    2. сви чланови су истог типа и имају заједничко име; чланови могу бити примитивног или објектног типа,
    3. сваком члану приступа се помоћу заједничког имена низа и индекса члана,
    4. сви индекси су целобројног типа,
    5. сви чланови низа се третирају као посебне променљиве (називају се и индексним променљивим ).

Низови у Јави

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 4 /  Синтакса низовног типа се дефинише на следећи начин:  Низовни тип у Јави је увек објектни тип, тј. низ је увек објекат.

Низови у Јави (2)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 5 /  Низовна променљива се декларише у делу програма за декларацију.  При томе се могу задати и вредности члановима низа.

Низови у Јави (3)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 6 /

  • Додељивање почетних вредности (иницијализација) члановима низа врши се у делу декларације названом nizInit.
  • Синтакса наредбе за алокацију меморије је следећа:

Низови у Јави (4)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 7 /  Елементима низа (индексним променљивима) приступа се помоћу индекса.  Са индексним променљивима оперише се на исти начин као и са променљивима без индекса.  Дакле, вредности индексних променљивих се могу мењати помоћу наредбе додељивања и користити у изразима.

Низови у Јави (5)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 8 /  Једнодимензионални за приступ елементима користи тачно један индекс. 53 - (^7 563) ……. 37 a[0] a[1] a[2] ……. a[99] “Ana” “Pera” “Mila”

…
nis[0] nis[1] nis[20]

Једнодимензионални низ

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 9 / Декларисање низова (постоје два начина): Пример. int pozicija []; String niska []; Knjiga naslov []; // Iste deklaracije na drugi način int [] pozicija ; String [] niska ; Knjiga [] naslov ; Уочава се разлика између ове две врсте декларација: int [] a , b , zzz ; // sve 3 promenljive a, b i zzz se deklarisu kao //nizovne int a , b , zzz []; // samo zzz se deklarise kao nizovna promenljiva

Једнодимензионални низ (2)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 10 /

Креирање низова

  • Постоје два начина: (1) помоћу оператора new, (2) набрајањем чланова
Пример.
Point [] tacke = new Point [ 20 ]; // prvi nacin
int [] brojac = new int [ 100 ]; // prvi nacin
// Sledi drugi nacin kreiranja
String godDoba [], s = “mika” ;
godDoba ={ “prolece” , s , “leto” , “jesen” , “zima” };
int celi [] = { 23 , 46 , - 123 , 17 , 36 , - 12 };

Једнодимензионални низ (3)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 11 / Приступ члановима низа

  • Нумерисање чланова низа увек почиње од 0.
  • Члановима низа се приступа помоћу: ImeNiza[indeks]
  • ImeNiza – име које се појављује у декларацији
  • indeks – целобројни литерал или израз
Пример.
int [] brojac = new int [ 100 ];
String [] godDoba ={ “prolece” , “leto” , “jesen” , “zima” };
...
brojac [ 50 ]= 2 ; // Ne bi valjalo: brojac[100] = 3;
a = brojac [ i + j ];
x = godDoba [ 3 ];

Једнодимензионални низ (4)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 12 /  Дводимензионални низ чине елементи истог типа и сваком од њих приступа се помоћу имена низа и два индекса.  Више једнодимензионалних низова се могу поређати један испод другог као на следећој слици:

Дводимензионални низ

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 13 /  Индексирање употребом два индекса.  Дводимензионални низ представља једнодимензионални низ чији елементи су једнодимензионални низови.

Дводимензионални низ (2)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 14 /

  • Декларацију имена низа можемо да извршимо на два начина: int m , a [][]; // prvi nacin int [][] c , b ; //drugi nacin
  • Након декларације низовне променљиве, креирамо низовни објекат, тј. вршимо резервисање меморијског простора за смештање чланова низа: a = new int [ 50 ][ 100 ];
  • Овом наредбом је резервисано 5000 целобројних локација у меморији.
  • Декларацију низовне променљиве и резервисање меморијског простора могли смо извршити једном наредбом, тј. могли смо писати: int a [ ][ ] = new int [ 50 ][ 100 ];

Дводимензионални низ (3)

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 15 /

  • Дводимензионални низови представљају један, најчешће коришћен, случај вишедимензионалних низова.
  • За низове чији је број димензија већи од два, принцип рада је потпуно исти као и са дводимензионалним низовима.
  • Дакле, као што су формирани дводимензионални низови, на исти начин се могу формирати тродимензионални, четвородимензионални итд.
  • Већ смо уочили да оперисање са матрицама можемо свести на оперисање са једнодимензионалним низовима, то важи и за све вишедимензионалне низове.

Вишедимензионални низ

Математички факултет (^) {vladaf, vladaf@matf.bg.ac.kartelj}@matf.bg.ac.rs rs 16 /

Захвалница

Велики део материјала који је укључен у ову презентацију је
преузет из презентације коју је раније (у време када је он
држао курс Објектно орјентисано програмирање) направио
проф. др Душан Тошић.
Хвала проф. Тошићу што се сагласио са укључивањем тог
материјала у садашњу презентацији, као и на помоћи коју ми
је пружио током конципцирања и реализације курса.