PowerPoint Presentation

Величина: px
Почињати приказ од странице:

Download "PowerPoint Presentation"

Транскрипт

1 Објектно орјентисано програмирање Владимир Филиповић Александар Картељ

2 Колекције Владимир Филиповић Александар Картељ

3 3/90 Колекције Јава је на почетку испоручивана са малим скупом класа за најкорисније структуре података: класе Vector, Stack, Hashtable, BitSet и интерфејс Enumeration су обезбеђивали рад са структурама података. У даљем развоју Јаве је требало помирити супротстављене захтеве: библиотека за колекције треба да буде мала и да се лако може научити, да не буде сложена као што је STL код of C++, али да омогући рад са генеричким алгоритмима на начин сличан оном који је уведен код STL-а. Надаље, било је потребно да се старе, већ испоручене класе природно уклопе у нови оквир.

4 Интерфејс и имплементација 4/90 Као код свих модерних библиотека за структуре података, и овде је интерфејс одвојен од имплементације. Начин одвајања ће бити детаљније приказан на структури података ред, која се користи када елементе треба обрађивати по редоследу приспећа (енг. first in, first out - FIFO).

5 5/90 Минимална форма интерфејса за ред има следећи облик: // pojednostavljena verzija reda iz standardne biblioteke interface Queue<E> { } Интерфејс и имплементација (2) void add(e element); E remove(); int size(); Интерфејс не говори ништа о томе на који ће начин ред бити имплементиран (као кружни низ, као повезана листа или на неки трећи начин).

6 6/90 Интерфејс и имплементација (3) Свака од имплеметација је одређена класом која имплементира интерфејс Queue. class CircularArrayQueue<E> implements Queue<E> { CircularArrayQueue(int capacity) {... } public void add(e element) {... } public E remove() {... } public int size() {... } } private E[] elements; private int head; private int tail;

7 7/90 Интерфејс и имплементација (4) class LinkedListQueue<E> implements Queue<E> { LinkedListQueue() {... } public void add(e element) {... } public E remove() {... } public int size() {... } } private Link head; private Link tail;

8 8/90 Интерфејс и имплементација (5) Када програм користи колекцију, он не мора знати која је имплементација колекције стварно коришћена. Стога, има смисла да се конкретна класа користи само при креирању објекта, а да се за чување референце на објекат користи тип интерфејса. Queue<Customer> expresslane = new CircularArrayQueue<Customer>(100); expresslane.add(new Customer("Harry")); На овај начин се, чак иако дође до предомишљања, лако може користити и другачија имплементација. На пример, ако се донесе одлука да је LinkedListQueue ипак бољи избор, тада код постаје: Queue<Customer> expresslane = new LinkedListQueue<Customer>(); expresslane.add(new Customer("Harry"));

9 9/90 Интерфејс и имплементација (6) Зашто би се давала предност једној имплементацији у односу на другу? Интерфејс ништа не казује о ефикасности имплементације. Кружни низ је нешто ефикаснији од повезане листе. Међутим, како је то уобичајено, за његово коришћење треба платити додатну цену. Кружни низ је ограничена колекција и она има коначан капацитет. Ако није унапред позната горња граница броја објеката који ће бити у колекцији, тада је боље користити мање ефикасну имплементацију која је заснована на повезаној листи.

10 10/90 Интерфејс и имплементација (7) Када се прегледа API документација, уочава се да постоји још један скуп класа, чије име почиње са речи Abstract, као што је класа AbstractQueue. Ове класе треба да користе програмери који имплементирају библиотеке класа. У оним ситуацијама када програмер сам треба да имплементира своју класу за ред, то ће лакше реализовати уколико наследи класу AbstractQueue него ако одлучи да имплементира све методе интерфејса Queue.

11 Колекције и итератори 11/90 Основни интерфејс за колекцијске класе у Јави је интерфејс Collection. Овај интерфејс садржи два најважнија метода: public interface Collection<E> { } boolean add(e element); Iterator<E> iterator();... Поред њих, постоје и додатни методи у оквиру овог интерфејса и они ће бити размотрени касније. Метод add додаје елеменат у колекцију. Овај метод враће true ако је додавање eлемента заиста променило колекцију, а враће false ако је колекција непромењена. На пример, ако се додаје у скуп елеменат који се већ налази у том скупу, тада захтев за додавање нема ефекта јер скуп одбија дупликате, па метод add враће false.

12 12/90 Колекције и итератори (2) Метод iterator враће објекат који имплеметира интерфејс Iterator. Тако добијени објекат-итератор се може користити да се редом, један по један, обиђу елементи у колекцији. Интерфејс Iterator садржи три метода: public interface Iterator<E> { } E next(); boolean hasnext(); void remove(); Поновљеним позивима мeтода next, могу се један за другим посетити сви елементи у колекцији. Ипак, као се стигне до краја колекције и тада позове метод next, биће избачен изузетак типа NoSuchElementException.

13 13/90 Колекције и итератори (3) Стога је потребно да се метод hasnext позива пре позива метода next. Метод hasnext враће true ако објекат-итератор има још елемената које треба да посети. Ако треба испитати све елементе у колекцији, тада програмер креира итератор над колекцијом и потом у циклусу понавља позивање метода next све док метод hasnext враће true. Пример. Илуструје обраду елемената колекције коришћењем итератора. Collection<String> c =...; Iterator<String> iter = c.iterator(); while (iter.hasnext()) { } String element = iter.next(); //radi nesto sa elementom

14 14/90 Колекције и итератори (4) Почев од Јава 5.0, претходни циклус се може краће и елегантније записати коришћењем for each циклуса: for (String element : c) { } //ovo implicitno pravi iterator nad kolekcijom c Преводилац једноставно преводи for each циклус у циклус са итератором. Циклус for each добро функционише са сваким објектом који имплементира интерфејс Iterable, који садржи само један метод: public interface Iterable<E> { } Iterator<E> iterator();

15 15/90 Колекције и итератори (5) Како интерфејс Collection проширује интерфејс Iterable, то се циклус for each може користити са ма којом колекцијом из стандардне библиотеке. Ред посећивања елемената колекције зависи од типа колекције. Ако се итерира кроз колекцију ArrayList, тада итератор почиње од индекса 0 и у сваком кораку увећава индекс. Међутим. ако се посећују елементи у колекцији типа HashSet, они ће бити набрајани у суштински случајном редоследу. Програмер може бити сигуран да ће тоом итериарања бити побројани сви елементи колекције, али није увек исти редослед. Набројивост је општији концепт од уређења и више одговара интерфејсу Collection јер омогућава веће уопштење.

16 16/90 Колекције и итератори (6) Код Јава итератора је дохватање елемента чврсто спрегнуто са променом позиције итератор приликом позива next прелази преко елемента тј. напредује за једну позицију. Може се посматрати као да су Јава итератори на позицијама између елемената. При позиву метода next, итератор прескаче преко тог следећег елемента, и враће референцу на елеменат преко ког је управо прешао.

17 17/90 Колекције и итератори (7) Метод remove интерфејса Iterator уклања елемент враћен последњим позивом метода next. У многим ситуацијама ово има смисла - треба да се види елемент пре него што се одлучи да ли га треба уклонити. Међутим, уколико треба да се уклони елемент са задате позиције, ипак треба да се он прође итератором. Пример. Уклањање првог елемент из колекције ниски c: Iterator<String> it = c.iterator(); it.next(); // preskoci се prvi element it.remove(); // sada се ukloni Још је битније да постоји веза између позива метода next и remove. Уколико се позове remove пре next долази до избацивања изузетка IllegalStateException.

18 18/90 Колекције и итератори (8) Пример. Ако треба да се уклоне два суседна елемента, не може се просто позвати: it.remove(); it.remove(); // Greska! Уместо тога, прво се мора позвати метод next како би итератор прешао преко елемента који треба уклонити: it.remove(); it.next(); it.remove(); // OK

19 Колекцијски интерфејси 19/90 Поред претходно побројаних, у стандардној библиотеци постоје и следећи интерфејси који се односе на колекције:

20 Колекцијски интерфејси (2) 20/90 java.util.collection<e> Iterator<E> iterator() враћа итератор који се користи за приступ елементима колекције. int size() враћа број елемената у колекцији. boolean isempty() враћа true ако је колекција празна. boolean contains(object obj) враћа true ако колекција садржи објекат једнак објекту obj. boolean containsall(collection<? еxtends E> other) враћа true ако колекција садржи све елементе колекције other. boolean add(object element) додаје element у колекцију, враће true ако је успело додавање. boolean addall(collection<? еxtends E> other) додаје све елементе колекције other, враће true ако је успело додавање.

21 Колекцијски интерфејси (3) 21/90 java.util.collection <E> boolean remove(object obj) брише obj из колекције. Враће true ако је успело брисање. boolean removeall(collection<? extends E> other) брише из ове колекције све елементе other колекције. Враћа true ако је успело брисање. void clear() брише цео садржај колекције. boolean retainall(collection<? extends E> other) брише све елементе из колекције који не припадају колекцији other. Object[] toarray() враћа све елементе колекције као низ објеката java.util.iterator<e> boolean hasnext() враћа true ако има још елемената које треба посетити next() враћа следећи објекат.ако нема више елемената тј. ако је на крају избацује изузетак

22 Колекцијски интерфејси (4) 22/90 java.util.list<e> ListIterator<E> listiterator() враће итератор за приступ елементима листе ListIterator<E> listiterator(int index) враће итератор за приступ елементима листе, код које ће први позив next() вратити елемент са који је на позицији index void add(int i, E element) додаје елемент на одређену позицију i void addall(int i,collection<? Extends E> elements) додаје елементе из колекције од одређене позиције E remove(int i) брише и враћа елемент на датој позицији E set(int i, E element) замењује елемент на датој позицији са новим елементом и враћа стари int indexof(object element) враћа прву позицију на којој је пронађен дати елемент или -1,уколико исти није откривен

23 Колекцијски интерфејси (5) 23/90 java.util.list<e> int lastindexof(object element) враћа последњу позицију на којој је пронађен дати елемент или -1,уколико га нема boolean remove(object obj) брише obj из колекције. Враће true ако је успело брисање. boolean removeall(collection<? еxtends E> other) брише из ове колекције све елементе other колекције. Враћа true ако је успело брисање. void clear() брише цео садржај колекције. boolean retainall(collection<? еxtends E> other) брише све елементе из колекције који не припадају колекцији other. Object[] toarray() враћа све елементе колекције као низ објеката void add(e new Element) додаје елемент пре текуће позиције.

24 Колекцијски интерфејси (5) 24/90 java.util.listiterator<e> void set(e new Element) замењује последњи елемент посећен са next или previous са новим елементом. boolean hasprevious() враћа true ако постоји елемент ком се може приступити при итерирању уназад E previous() враћа претходни објекат.ако смо на почетку листе избацује се изузетак NoSuchElementException int nextindex() враће индекс елемента који ће вратити наредни позив метода next int previousindex() враће индекс елемента који ће вратити наредни позив метода previous

25 Колекцијски интерфејси (6) 25/90 java.util.set<e> Iterator<E> iterator() враће итератор који се користи за приступ елементима скупа. int size() враће број елемената у скупу. boolean isempty() враће true ако је скуп празан. boolean contains(object obj) враће true ако скуп садржи објекат једнак објекту obj. boolean containsall(collection<? Extends E> other) враће true ако скуп садржи све елементе колекције other. boolean add(object element) додаје element у скуп, враће true ако је успело додавање. boolean addall(collection<? Extends E> other) додаје све елементе колекције other, враће true ако је успело додавање.

26 Колекцијски интерфејси (7) 26/90 java.util.set<e> boolean remove(object obj) уклања obj из скупа. Враће true ако је успело уклањање. boolean removeall(collection<? Extends E> other) брише из скупа све елементе колекције other. Враће true ако је успело брисање. void clear() брише цео скуп. boolean retainall(collection<? Extends E> other) брише све елементе из скупа који не припадају колекцији other. Object[] toarray() враћа све елементе скупа као низ објеката

27 Уређење у колекцији 27/90 Како се одређује начин на који ће се сортирати елементи у колекцији? Обично се претпоставља да се у колекцију додају елементи који имплементирају интерфејс Comparable. public interfejs Comparable<T> { } int compareto(t other); Позив a.compareto(b) враћа: 1. 0 ако су a и b једнаки, 2. негативан цео број ако a треба да се налази испред b у сортираном поретку, 3. или позитиван цео број ако a треба да се налази иза b.

28 Уређење у колекцији (2) 28/90 Дата класа може имплементирати интерфејс само једном. Али шта ако треба да се сортира колекција елемената по различитим критеријумима? Надаље, шта да се учини ако су потребни сортирани примерци класе чији дизајнер није имплементирао интерфејс Comparable? Може се обезбедити да колекција користи различите методе поређења, тако што се конструктору колекције прослеђује објекат који имплементира интерфејс Comparator. Интерфејс Comparator декларише метод compare, који прихвата два параметра: public interfejs Comparator<T> { } int compare(t a, T b);

29 Уређење у колекцији (3) 29/90 Метод compare интерфејса Comparator се понаша исто као и и compareto метод интерфејса Comparable. На пример, за сортирање елемената по њиховом опису, једноставно се дефинише класа која имплементира Comparator интерфејс: class ItemComparator implements Comparator<Item> { } public int compare (Item a, Item b) { } String descra = a.getdescription(); String descrb = b.getdescription(); return descra.compareto(descrb);

30 Уређење у колекцији (4) 30/90 Примећује се да овако направљен компаратор нема променљивих. Он је само власник метода за поређење. Такав објекат се обично назива функцијски објекат. Функцијски објекти су обично заједнички дефинисани при креирању, као примерци анонимних унутрашњих класа: SortedSet<Item> sortbydescription = new TreeSet<Item>( new Comparator<Item>() { public int compare(item a, Item b) { String descra = a.getdescription(); String descrb = b.getdescription(); return descra.compareto(descrb); } });

31 Уређење у колекцији (5) 31/90 java.lang.comparable<t> int compareto(t other) Упоређује два објекта и враће негативну вредност ако текући објекат треба да буде испред објекта other, нулу ако се сматрају идентичним у сортираном поретку, или позитивну вредност ако текући објекат треба да буде после other-a. java.lang.comparator<t> int compare(t a, T b) Упоређује два објекта и враћа негативну вредност ако је a испред b, нулу ако се сматрају идентичним у сортираном поретку, или позитивну вредност ако је a иза b. java.util.sortedset<e> Comparator<? super E> comparator() Враће компаратор коришћен за сортирање елемената, или null ако су елементи упоређивани методом compareto интерфејса Comparable. E first() E last() Враће први или последњи елемент у сортираној колекцији.

32 32/90 Колекције у оквиру ЈДК-а Најчешће коришћене класе доступне у Јава библиотеци : LinkedList - повезана секвенца која дозвољава уметање и брисање са било ког места. ArrayList - индексирана секвенца која се смањује и расте динамички. HashSet - неповезана колекција која не прихвата дупликат (хеш скуп) TreeSet - сортирани скуп (дрвоидни скуп) PriorityQueue - колекција која дозвољава уклањање елемента са почетка (ред са приоритетима) HashMap каталог, тј. колекција структура са паровима кључ/вредност TreeMap - каталог са сортираним кључевима

33 Колекције у оквиру ЈДК-а (2) 33/90 Хијерархија апстрактних и конкретних класа у ЈДК-у:

34 Повезана листа 34/90 Постоји битна разлика између повезаних листа и обичних колекција: код повезане листе је важна позиција објекта. У пракси је често потребно додати елементе у средину листе. Коришћење итератора за додавање елемената има смисла једино код колекције са природним поретком. Тако, на пример, за разлику од листе, каталог података тј. мапа не захтева никакав редослед елемената. Према томе, нема метода add у интерфејсу Iterator, али постоји подинтерфејс ListIterator, који садржи метод add: interface ListIterator<E> extends Iterator<E>{ } void add(e element);

35 Повезана листа (2) 35/90 Metod add додаје нови елемент испред позиције итератора. Непосредно након позива next, метод remove уклања елемент лево од итератора. Међутим, ако је био позван метод previous, уклања се елемент десно. Није могуће звати remove два пута узастопно. Метод set замењује последњи елемент враћен позивом метода next или previous новим елементом.

36 Повезана листа (3) 36/90 За разлику од метода add интерфејса Collection, овај метод не враћа boolean - претпоставља се да операција add увек мења листу. Надаље, интерфејс ListIterator поседује два метода која се могу користити за обилажење листе уназад: 1. E previous() 2. boolean hasprevious() Метод listiterator класе LinkedList враћа итератор, објекат класе која имплементира интерфејс ListIterator. ListIterator<String> iter = osoblje.listiterator();

37 Повезана листа (4) 37/90

38 Повезана листа (5) 38/90 Многи корисни методи за оперисање повезаним листама декларисани су у интерфејсу Collection. Они су, већим делом, имплементирани у суперкласи AbstractCollection класе LinkedList. Повезана листа не подржава брз случајан приступ. Ако желимо да видимо n-ти елемент, морамо да пођемо од почетка и најпре пређемо преко првих n-1 елемената. Не постоји пречица.

39 Повезана листа (6) 39/90 Дакле, програмери обично не користе повезане листе у ситуацијама у којима је потребно приступати елементима коришћењем целобројног индекса. Без обзира на то, класа LinkedList поседује метод get који омогућује приступ одређеном елементу: LinkedList<String> lista = ; String obj = lista.get(n);

40 Повезана листа (7) 40/90 java.util.linkedlist<e> LinkedList() прави празну повезану листу LinkedList(Collection<?extendsE> elements) прави листу и додаје све елементе из колекције void addfirst(e element) додаје елемент на почетак листе void addlast(e element) додаје елемент на крај листе E getfirst() враће елемент са почетка листе E getlast() враће елемент са краја листе E removefirst() брише и враће елемент са поцетка листе E removelast() брише и враћа елемент са краја листе

41 Низовна листа 41/90 Интерфејс листе представља уређену колекцију у којој је позиција у листи елемента битна. Постоје два правила за приступ елементима: преко итератора, као и метода get и set за директан приступ. Други метод није препоручив за повезану листу али има смисла за низове. Ова класа, исто као LinkedList, такође имплементира интерфејс List. Низовна листа енкапсулкира низ динамички алоцираних објеката који индексирају елементе листе.

42 Низовна листа (2) 42/90 Методи size, isempty, get, set, iterator, и listiterator се извршавају за константно време. Додавање елемента дуже траје него што је то случај са LinkedList имплементацијом, али је зато бржи приступ елементу преко његовог индекса. Сваки примерак класе ArrayList има свој капацитет. Капацитет је величина низа који служи за смештај елемената листе. Он аутоматски расте током додавања елемената у ArrayList објекат.

43 Низовна листа (3) 43/90 Класе ArrayList и Vector имплементирају интерфејс RandomAccess. Јава програмери који су ветерани користе класу Vector кад год им је потребан динамички низ. Зашто би требало користити ArrayList уместо Vector? Сви методи класе Vector су синхронизовани што обезбеђује конзистенттност података у вишенитном програмирању, али успорава извршење метода. Насупрот томе, методи класе ArrayList нису синхронизовани, па их треба користиткад год није потребна синхронизација.

44 Хеш скуп 44/90 Повезане листе и низови дозвољавају убацивање елемената произвољно и притом воде рачуна о њиховом редоследу. Међутим, ако треба наћи елеменат а коме није запамћена позиција, потребно је претражити (у најгорем случају) све елементе колекције. Уколико је редослед елемената небитан, може се користити колекција која обезбеђује много бржи приступ елементима. Једино је незгодно што се тада не зна ништа о редоследу елемената, већ их та структура организује по сопственом редоследу.

45 Хеш скуп (2) 45/90 Добро позната структура за брзо проналазење елемената је хеш табела. За разлику од низова код којих су индекси цели бројеви, овде је позиција у структури одређена произвољним објектом. Ипак, имплицитно се захтева да сваком објекту буде придружен цели број тако што се рачуна његов тзв. хеш-код. Да би се конзистетно дефинисао хеш-код за неки објекат, програмер мора редефинисати две методе: hashcode и equals. Притом мора бити испуњено да ако важи a.equals(b),онда a и b морају имати исти хеш-код.

46 Хеш скуп (3) 46/90 Отворена хеш табела је обично реализована као низ повезаних листи. За проналазење места објекта у хеш табели, израчунава се хешкод и дели се по модулу са димензијом низа. Резултат је индекс члана у низу тј. индекс повезане листе која садржи дати елеменат.

47 Хеш скуп (4) 47/90 Да би се одредила позиција објекта у табели, израчунава се његов хеш-кôд и нађе остатак при дељењу са укупним бројем листи. Тако добијени број је индекс листе који садржи дати елемент. Неизбежно је да се понекад деси да има више елемената којима одговара исти индекс листе и тада долази до тзв. колизије. У том случају, нови објекат се пореди са свим објектима из листе како би се видело да ли је већ присутан. Ако хеш-кôдови имају разумну случајну дистрибуцију и број листи довољно велик, требало би да буде потребно свега неколико поређења.

48 Хеш скуп (5) 48/90 Ако се превише објеката убаци у хеш-табелу, број колизија расте, а перформансе опадају. Обично се број листи се поставља на нешто између 75% и 150% очекиваног броја елемената. Стандардна библиотека за број листи користи степене двојке, подразумевано 16. и свака вредност која се зада за број листи аутоматски бива заокружена на следећи степен двојке. Ако се хеш-табела препуни, неопходно је да буде рехеширана. Да би се табела рехеширала, неопходно је да се креира табела са већим бројем листи, а сви елементи убаце у нову табелу.

49 Хеш скуп (6) 49/90 Хеш табела се користи за имплементацију неколико важних структура података. Најједноставнија медју њима је скуп. То је колекција елемената без понављања. ЈДК садржи класу HashSet која имплементира скуп базиран на хеш табели. HashSet се користи једино кад редослед елемената у колекцији није битан. Основне методе су: 1. додавање елемента у скуп, 2. провера да ли је елемент у скупу, 3. избацивање из скупа, 4. итерирање скупа у привидно произвољном редоследу.

50 Хеш скуп (7) 50/90 java.util.hashset<e> HashSet() креира празан каталог. HashSet(Collection<? extends E> elеments) креира каталог и у њега додаје све елементе из колекције. HashSet(int initialcapacity) креира празан каталог одређеног капацитета. HashSet(int initialcapacity,float loadfactor) креира празан каталог одређеног капацитета и датог фактора пуњења (број између који одредјује проценат при поновном хеширању). java.lang.object int hashcode() враће хеш-код за објекат this. Хеш-код може бити цео, позитиван и негативан. Дефиниција equals и hashcode морају бити сагласни: ако x.еquals(y) враће true, онда x.hashcode() мора бити исти као y.hashcode().

51 Дрвоидни скуп 51/90 Дрвоидни скупови су слични хеш скуповима, али уз разлику што је дрвоидни скуп је сортирана колекција. Тто значи да се могу додавати елементе у колекцију произвољним редоследом а да се при пролазу кроз колекцију елементи аутоматски обилазе у сортираном поретку. Пример. Претпоставимо да се додају нике у дрвоидни скуп и потом се приказују елементи који су додати у колекцију. SortedSet<String> sorter = new TreeSet<String>(); sorter.add("bob"); sorter.add("amy"); sorter.add("carl"); for (String s : sorter) System.println(s); Као што се може очекивати, приказани елементи су сортирани: Amy Bob Carl.

52 Дрвоидни скуп (2) 52/90 Као што име класе говори, сортирање се извршава по принципу дрволике структуре података. Сваки пут када се елемент дода у дрво, он се поставља на одговарајућу позицију дрвета. Стога, итератори увек посећују елементе у сортираном поретку. Подразумевано, се претпоставља да се убацују елементи класе која имплементира интерфејс Comparable! Ако убацујемо сопствене објекте, тада морамо сами дефинисати поредак имплементирањем интерфејса Comparable. Алтернативно, конструктору класе TreeSet може се проследити објекат која имплементира интерфејс Comparator.

53 Дрвоидни скуп (3) 53/90 Додавање елемената дрвету је спорије од додавања хеш табели, али је много брже од постављања елемената на право место у низу или повезаној листи. Ако дрво садржи n елемената, тада је у просеку потребно log 2 n поређења да би се нашла права позиција за нови елемент. Ако дрво садржи 1000 елемената, додавање новог захтева око 10 поређења - много више него код додавања елемента у хеш скуп.

54 Дрвоидни скуп (4) 54/90 Поставља се питање да ли треба увек да се користи дрво уместо хеш скупа? Наиме, додавање елемената не изгледа да захтева много времена, а елементи се аутоматски сортирају. Одговор је да то зависи од података који се смештају у колекцију: 1. Ако нису потребни сортирани подаци, нема разлога да се троши време на сувишно сортирање. 2. Много важније, неке податке је веома тешко сортирати.

55 Дрвоидни скуп (5) 55/90 java.lang.comparable<t> int compareto(t other) пореди текући и објекат other и враћа негативну вредност ако текући објекат долази испред other, 0 ако су идентични у сортираном поретку, а позитивну вредност иначе. java.util.comparator<t> int compare(t a, T b) пореди два објекта и враћа негативну вредноста ако a долази испред b, 0 ако су идентични у сортираном поретку, а позитивну вредност иначе. java.util.sortedset<e> Comparator<? super E> comparator() враћа компаратор који се користи за сортирање елемената или null ако се елементи пореде методом compareto() интерфејса Comparable. E first() E last() враћа најмањи или највећи елемент сортираног скупа.

56 Дрвоидни скуп (6) 56/90 java.util.navigableset<e> E higher(e value) E lower(e value) враћа најмањи елемент >value или највећи елемент <value или null ако такав елемент не постоји. E ceiling(e value) E floor(e value) враћа најмањи елемент >=value или највећи елемент <=value или null ако такав елемент не постоји. E pollfirst() E polllast() уклања и враћа најмањи или највећи елемент скупа или null ако је скуп празан. Iterator<E> descendingiterator() враћа итератор који обилази скуп у опадајућем смеру.

57 Дрвоидни скуп (7) 57/90 java.util.treeset<e> TreeSet() Конструише дрво за чување Comparable објеката. TreeSet(Comparator<? Super E> c) Конструише дрво и користи дати компаратор за сортирање елемената. TreeSet(SortedSet<? extends E> elements) Конструише дрво, додаје све елементе из сортиране колекције, и користи исти компаратор као и сортирани скуп прослеђен као аргумент позива метода.

58 Ред 58/90 Редови омогућују ефикасно додавање елемената на крај и уклањање елемената са почетка. Ред са два краја, (енг. deque), омогућује ефикасно додавање и уклањање елемената и са почетка и са краја. Додавање елемената у средину није подржано. Java SE 6 уводи интерфејс Deque. Овај интерфејс имплементирају класе ArrayDeque и LinkedList, при чему обе обезбеђују колекције чија величина расте по потреби.

59 Ред (2) 59/90 java.util.queue<e> boolean add(e element) boolean offer(e element) додаје дати елемент на крај и враћа true када ред није пун. Ако је ред пун, први метод избацује IllegalStateException, а други враћа false. E remove() E poll() уклања и враћа елемент са почетка реда када ред није празан. Ако је ред празан, први метод избацује NoSuchElementException, а други враћа null. E element() E peek() враћа елемент са почетка реда не уклањајући га када ред није празан. Ако је ред празан, први елемент избацује NoSuchElementException, а други враћа null.

60 Ред (3) 60/90 java.util.deque<e> void addfirst(e element) void addlast(e element) boolean offerfirst(e element) boolean offerlast(e element) додаје дати елемент на почетак или крај када ред није пун. Ако је ред пун, прва два метода избацују IllegalStateException, а последња два враћају false. E removefirst() E removelast() E pollfirst() E polllast() уклања и враћа елемент са почетка или краја када ред није празан. Ако је ред празан, прва два метода избацују NoSuchElementException, а последња два враћају null. E getfirst() E getlast() E peekfirst() E peeklast() враћа елемент са почетка или краја реда не уклањајући га када ред није празан. Ако је ред празан, прва два метода избацују NoSuchElementException, а последња два враћају null.

61 Ред (4) 61/90 java.util.arraydeque<e> ArrayDeque() ArrayDeque(int initialcapacity) конструише неограничени deque иницијалног капацитета 16 или задатог иницијалног капацитета.

62 Ред са приоритетом 62/90 Редови са приоритетом враћају елементе у сортираном поретку мада су претходно унесени у произвољном поретку. Прeцизније, кад год се позове remove метод, добија се тренутно најмањи елемент у реду са приоритетом. Редови са приоритетом користе једну елегантну и ефикасну структуру података, која се зове гомила (енг. heap). То је самоорганизовано бинарно дрво, у ком операције add и remove проузрокују да најмањи елемент гравитира ка корену па нема потребе да се троши време на сортирање свих елемената.

63 Ред са приоритетом (2) 63/90 Редови са приоритетом могу да чувају елементе класе које су упоредиве. Типично коришење за редове са приоритетом је распоређивање послова. Сваки посао има приоритет. Послови се додају у случајном поретку. Било кад када се може започети нови посао, посао са највећим приоритетом (тј.најмањом вредношћу) се уклања из реда. java.util.priorityqueue PriorityQueue() PriorityQueue(int initialcapacity ) Конструише структуру за чување објеката који подржавају Comparable. PriorityQueue(int initialcapacity, Comparator<? super E> c ) Конструише дрвоидну структуру и користи прослеђени компаратор за упоређење елемената при смештају у дрво.

64 Каталози 64/90 Скупови су колекције уз помоћу којих се брзо проналазе постојећи елементи. Чешћа ситуација у којо се поседује нека кључна информација, и треба да се на основу ње пронађете дотични елемент. Структуре података у облику каталога служе за ту сврху. Каталози чувају парове кључ/вредност и код њих се лако може пронаћи вредност ако се наведе кључ. На пример, може се чувати табела службеника, где су кључеви ниске - службенички идентификатори, а вредности објекти типа Employee.

65 Каталози (2) 65/90 Јава библиотека подржава две главне имплементације за каталоге: HashMap и TreeMap. Обе класе имплементирају Map интерфејс. Хеш каталог не сортира кључеве, за разлику од дрвоидног каталога који користи поредак кључева. Да ли користити хеш каталог или дрвоидни каталог? Као и са скуповима, хеширање је нешто брже, и то је бољи избор уколико кључеви не морају бити сортирани.

66 Каталози (3) 66/90 Пример. Map<String,Employee> staff = new HashMap<String,Employee>(); Employee harry = new Employe( Harry Hacker ); staff.put( ,harry); Кад год се додаје објекат у каталог, мора се добро дефинисати кључ. У претходном примеру, кључ је ниска, а одговарајућа вредност је објекат типа Employee. Пример. Добијање објекта који се налази у каталогу на основу кључа се реализује на следећи начин: String s = ; e= staff.get(s);

67 Каталози (4) 67/90 Ако нема сачуване информације у каталогу за дати кључ, тада метод get враћа null. Кључеви морају бити јединствени. Не могу се сачувати две вредности са истим кључем. Ако се позове set метод два пута за исти кључ, тада друга вредност замењујепрву. Метод remove брише елемент са датим кључем из каталога. Метод size враћа број елемената у каталогу.

68 Каталози (5) 68/90 Каталог није самостална колекција у ЈДК-у, тј. састоји се из више погледа (подструктура). Постоје три погледа: скуп кључева, колекција (није скуп) вредности, те скуп парова кључ/вредност. Кључеви и парови кључ/вредност образују скуп због тога јер може бити само једна копија кључа у колекцији. Ова три претходно побројана погледа обезбеђују методе: Set<K> keyset() Collection<K> values() Set<Map.Entry<K,V>> entryset()

69 Каталози (6) 69/90 java.util.map<k, V> V get(k key) враће вредност кључа, тј. враће објекат на који показује кључ, или null ако се кључ не налази у каталогу. Кључ може бити null. V put(k key, V value) убацује у каталог пар кључ/вредност. Ако кључ већ постоји, тада нови објекат замењује стари, претходни на који је показивао кључ. Овај метод враће стару вредност за дати кључ, или null ако кључ претходно није био дефинисан. Кључ може бити null, али вредност не сме бити null. void putall(map<? extends K,? extends V> entries) убацује све елементе из спецификованог каталога entries у овај каталог. boolean containskey(object key) враће true ако је кључ већ у каталогу. boolean containsvalue(object value) враће true ако је вредност већ у каталогу. Set<Map.Entry<K, V>> entryset() враће скуп погледа објеката типа Map.Entry, парове кључ/вредност из каталога. Могу се избрисати елементп овог скупа и они ће бити избрисани из каталога, али се не могу додавати елементи.

70 Каталози (6) 70/90 java.util.map<k, V> Set<K> keyset() враће скуп свих кључева у каталогу. Могу се избрисати елементи овог скупа и кључеви и вредности на њима биће избрисани из каталога, али се не могу додавати елементи. Collection<V> values() враће вредности свих вредности у каталогу. Могу се избрисати елементи овог скупа и кључеви и вредности на њима биће избрисани из каталога, али се не могу додавати елементи. java.util.map.entry<k, V> K getkey() V getvalue() враћа кључ или вредност за ову величину. V setvalue(v newvalue) поставља вредност у елементу каталога и враћа стару вредност.

71 Каталози (7) 71/90 java.util.sortedmap<k, V> Comparator<? super K> comparator() враћа компаратор коришћен за сортирање кључева, или нулл ако су кључеви упоређени са compareto методом интерфејса Comparable. K firstkey() K lastkey() враћа најмањи и највећи кључ у каталогу. java.util.hashmap<k, V> HashMap() HashMap(int initialcapacity) HashMap(int initialcapacity, float loadfactor) конструише празну хеш мапу са наведеним капацитетом, и фактором испуњености (број између 0.0 и 1.0 који одређује када ће хеш табела бити поново хеширана у већу). Подразумевани фактор испуњености је 0.75.

72 Каталози (8) 72/90 java.util.treemap<k, V> TreeMap(Comparator<? super K> c) креира дрвоидни каталог и користи наведени компаратор за сортирање кључева. TreeMap(Map<? extends K,? extends V> entries) конструише дрвоидни каталог и додаје све entries из каталога-аргумента. TreeMap(SortedMap<? extends K,? extends V> entries) конструише дрвоидни каталог, додаје све entries из наведеног каталога и користи наведени компаратор за сортирање кључева.

73 Колекције и генерици void printcollection(collection c) { Iterator i = c.iterator(); while (i.hasnext()) { System.out.println(i.next()); } } Треба направити генерички метод који приказује све елементе колекције. 73/90 void printcollection(collection<object> c) { for (Object e: c){ System.out.println(e); } } Ово је први, наивни покушај... printcollection(stones); Не може се превести!

74 Колекције и генерици (2) Проблем је решен увођењем генеричког типа који може бити било шта, а који се назива џокер тип и означава симболом? колекција непознатих је колекција Collection<?> чији елементи могу одговарати било ком типу - џокер тип 74/90 void printcollection(collection<?> c) { for (Object e: c){ System.out.println(e); } } printcollection(stones); stone(java.awt.color[r=255,g=0,b=0]) stone(java.awt.color[r=0,g=255,b=0]) stone(java.awt.color[r=0,g=255,b=0])

75 Колекције и генерици (3) 75/90 Проблем са коришћењем колекције и џокер типа наступа зато што се не зна тип компоненте, па преводилац не може да преведе наредбу за доделу у колекцију елемената непознатог типа. String mystring; Object myobject; List<?> c = new ArrayList<String>(); // c.add("hello world"); // compile error // c.add(new Object()); // compile error ((List<String>) c).add("hello world"); ((List<Object>) c).add(new Object()); // no compile error! // String mystring = c.get(0); // compile error mystring = (String) c.get(0); myobject = c.get(0); mystring = (String) c.get(1); // run-time error!

76 76/90 Колекције и генерици (4) Понекад је потребно направити ограничење над џокер-типом. Пример. Треба направити апликацију која исцртава различите облике (кругове, провоугаонике итд.). Класе у апликацији би биле: Shape draw(canvas) Canvas draw(shape) drawall(list<shape>) Circle Rectangle Ограничено на List<Shape> и зато није добро

77 77/90 Колекције и генерици (5) Пример. Потребно је креирати метод који као аргумент прихвата колекцију са ма којом врстом облика, тј. са ма којом подкласом класе Shapе. Истовремено, треба инструисати преводилац да спречи да елементи колекције буду примерци класе која није подкласа Shapе. То се постиже на следећи начин: public void drawall(list<? extends Shape>) { } ограничени џокер У овом случају, класа Shape је горње ограничење за џокер

78 Колекције и генерици (6) 78/90 import java.util.*; public void pushall(collection<? extends E> collection) { for (E element : collection) { this.push(element); } } public List<E> sort(comparator<? super E> comp) { List<E> list = this.aslist(); } Collections.sort(list, comp); return list; Сви елементи морају бити бар типа E (тј. типа подкласе класе E) Метод за поређење мора захтевати да се извршава над типовима највише Е (тј. над типовима неке од наткласа класе Е)

79 79/90 Колекције и генерици (7) Генерички колекцијски интерфејси имају огромну предност - потребно је имплементирати своје алгоритме само једанпут. Пример. Размотримо једноставан алгоритам за израчунавање максималног елемента колекције. За највећи елемент низа: if (a.length == 0) throw new NoSuchElementException(); T largest = a[0]; for (int i = 1; i < a.length; i++) if(largest.compareto(a[i]) < 0) largest = a[i]; Налажење максимума низовне листе је незнатно другачије: if(v.size() == 0) throw new NoSuchElementException(); T largest = v.get(0); for (int i = 1; i < v.size(); i++) if(largest.compareto(v.get(i)) < 0) largest = v.get(i);

80 80/90 Колекције и генерици (8) Пример (наставак). У повезаној листи немамо ефикасан случајан приступ, али можемо користити итератор: if (l.isempty()) throw new NoSuchElementException(); Iterator<T> iter = l.iterator(); T largest = iter.next(); while(iter.hasnext()) { T next = iter.next(); if(largest.compareto(next) < 0) largest = next; } Ове петље су напорне за писање и омогућују грешке. Пожељно је да се избегне понављање тестирања и имплементација мноштва метода попут: static <T extends Comparable> T max(t[] a) static <T extends Comparable> T max(arraylist<t> v) static <T extends Comparabla> T max(linkedlist<t> l)

81 81/90 Колекције и генерици (9) Пример (наставак). Ту на сцену ступају колекцијски интерфејси. Треба осмислити минимални колекцијски интерфејс који је потребан за ефикасан алгоритам. Израчунавање максимума може се урадити просто итерирањем кроз елементе. Имплементација метода max тако да прихвата објекат ма које класе која имплементира интерфејс Collection: public static <T extends Comparable> T max(collection<t> c){ } if (c.isempty()) throw new NoSuchElementException(); Iterator<T> iter = c.iterator(); T largest = iter.next(); while (iter.hasnext()) { } return largest; T next = iter.next(); if (largest.compareto(next) < 0) largest = next;

82 ЈДК колекције и генерици Генерици су моћан концепт, који се користи у сортирању, бинарној претрази и још неким корисним алгоритмима. Како метод sort сортира листу? Алгоритми за сортирање у књигама су презентовани за низове и користе директан приступ елементима. Међутим, листа је колекција и нема случајан приступ? Имплементација у Јави просто прекопира све елементе у низ, сортира га користећи варијанту merge sort алгоритма, а затим копира сортирану секвенцу натраг у листу. Merge sort алгоритам коришћен у библиотеци је за нијансу спорији од quick sort-а, али има једну предност: стабилан је, тј. не врши размену једнаких елемената. Зашто нам је битан поредак једнаких елемената? 82/90

83 83/90 ЈДК колекције и генерици (2) Пример. Следи уобичајени сценарио. Претпоставимо да имамо листу запослених која је већ сортирана по имену. Сада сортирамо по заради. Шта се дешава са запосленима који имају исту зараду? Када је сортирање стабилно, а алгоритам сортирања је merge sort, поредак по имену бива очуван. Другим речима, излаз је листа сортирана најпре по заради, а потом по имену. Класа Collections поседује метод shuffle који случајно пермутује редослед елемената у листи. Пример. Мешање карата ArrayList<Karta> karte = ; Collections.shuffle(karte);

84 84/90 ЈДК колекције и генерици (3) Метод binarysearch класе Collections имплементира бинарну претрагу. Наравно, колекција мора претходно бити сортирана или ће алгоритам вратити погрешан резултат. i = Collections.binarySearch(c, element); i = Collections.binarySearch(c, element, comparator); Повратна вредност 0 означава индекс пронађеног елемента у складу са коришћеним поређењем. Ако је повратна вредност негативна, не постоји тражени елемент у колекцији.

85 85/90 ЈДК колекције и генерици (4) Међутим, повратна вредност се може користити за израчунавање позиције на коју треба уметнути element у колекцију како би она остала сортирана. Та позиција је: insertionpoint = -i - 1; Није просто -i јер онда би вредност 0 била двосмислена. Другим речима, операција: if ( i < 0) c.add(-i - 1, element); додаје елемент на исправну позицију. Како би имала смисла, бинарна претрага захтева случајан приступ тако да метод binarysearch проверава да ли задата листа имплементира интерфејс RandomAccess! Ако да, онда ради бинарну, а иначе линеарну претрагу.

86 ЈДК колекције и генерици (5) 86/90 java.util.collections static <T extends Comparable<? super T>> void sort(list<t> elements) static <T> void sort(list<t> elements, Comparator<? super T> c) сортира елементе листе користећи стабилни алгоритам. Временска сложеност алгоритма је O(n log n), где је n дужина листе. static void shuffle(list<?> elements) static void shuffle(list<?> elements, Random r) случајно меша елементе листе. Временска сложеност алгоритма је O(n a(n)), где је n дужина листе, док је a(n) просечно време приступа елементу. static <T> Comparator<T> reverseorder() враћа компаратор који сортира елементе у обрнутом поретку од поретка одређеног методом compareto() интерфејса Comparable. static <T> Compator<T> reverseorder(comparator<t> comp) враћа компаратор који сортира елементе у обрнутом поретку од поретка одређеног компаратором comp.

87 ЈДК колекције и генерици (6) 87/90 java.util.collections static <T extends Comprable<? super T>> int binarysearch(list<t> elements, T key) static <T> int binarysearch(list<t> elements, T key, Comparator<? super T> c) тражи кључ у сортираној листи, користећи линеарну претрагу ако elements не имплементира RandomAccess интерфејс, а бинарну у супротном. Временска сложеност алгоритма је O(a(n) log n), где је n дужина листе, док је a(n) просечно време приступа елементу. static <T extends Comparable<? super T>> T min(collection<t> elements) static <T extends Comparable<? super T>> T max(collection<t> elements) static <T> min(collection<t> elements, Comparator<? super T> c) static <T> max(collection<t> elements, Comparator<? super T> c) враћа најмањи или највећи елемент у колекцији (ограничења за типске параметре су упрошћена због једноставности).

88 ЈДК колекције и генерици (7) 88/90 java.util.collections static <T> void copy(list<? super T> to, List<T> from) копира све елементе из изворне листе на исте позиције у одредишној листи. Одредишна листа мора бити дуга бар колико изворишна. static <T> void fill(list<? super T> l, T value) попуњава све позиције у листи истом вредношћу. static <T> boolean addall(collection<? super T> c, T values) додаје све вредности у дату колекцију и враћа true ако је тиме колекција промењена. static <T> boolean replaceall(list<t> l, T oldvalue, T newvalue) замењује све елементе једнаке старој вредности новом вредношћу. static int indexofsublist(list<?> l, List<?> s) static int lastindexofsublist(list<?> l, List<?> s) враћа индекс прве или последње подлисте од l једнаке са s или -1 ако нема такве подлисте у l. static void swap(list<?> l, int i, int j) размењује елементе на датим позицијама.

89 ЈДК колекције и генерици (8) 89/90 java.util.collections static void reverse(list<?> l) обрће редослед елемената у листи. Временска сложеност алгоритма је O(n), где је n дужина листе. static void rotate(list<?> l, int d) ротира елементе листе, померајући елемент са индексом i на позицију (i + d) % l.size(). Временска сложеност алгоритма је O(n), где је n дужина листе. static int frequency(collection<?> c, Object o) враћа број елемената листе једнаких датом објекту. boolean disjoint(collection<?> c1, Collection<?> c2) враћа true ако колекције немају заједничких елемената.

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

3.Kontrlne (upravlja~ke) strukture u Javi

3.Kontrlne (upravlja~ke) strukture u Javi Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

PowerPoint Presentation

PowerPoint Presentation Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Сопствени пакети и унутрашње класе Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - 07-DinamickeStrukturePodataka Динамичке структуре података листа, стек, ред Програмирање 2: глава 6 Динамичке структуре података Динамичка алокација и динамичке структуре података Најзначајније динамичке структуре података листе и

Више

PowerPoint Presentation

PowerPoint Presentation Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Енумерисани и генерички типови Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode] OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 5 OBJEKTI U INTERAKCIJI Miloš Kovačević Đorđe Nedeljković 1 /25 OSNOVNI KONCEPTI - Abstrakcija - Modularizacija - Objektne reference - Klasni dijagram - Objektni

Више

Slide 1

Slide 1 Funkcionalno programiranje Interoperabilnost jezika Scala i Java, 2019. Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

Више

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstrirana upotreba konstruktora, svojstava, metoda klase,

Више

Računarski praktikum I - Vježbe 11 - Funktori

Računarski praktikum I - Vježbe 11 - Funktori Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 11 - Funktori v2018/2019. Sastavio: Zvonimir Bujanović Funkcijski objekti (funktori) Objekt klase

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

Више

Microsoft Word - MySQL_3.doc

Microsoft Word - MySQL_3.doc 7. Data Manipulation Language (DML) Jezik za rad sa podacima (Data Manipulation Language (DML)) služi za umetanje, brisanje i ažuriranje podataka u bazi. 7.1. Umetanje novih redova u tabelu INSERT sintaksa

Више

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Brkić SI 29/15 Zrenjanin 2018. Softversko inženjerstvo

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode] Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija

Више

Računarski praktikum I - Vježbe 06 - Standard Template Library (2)

Računarski praktikum I - Vježbe 06 - Standard Template Library (2) Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 06 - Standard Template Library (2) v2018/2019. Sastavio: Zvonimir Bujanović pair pair je generička

Више

Програмирај!

Програмирај! Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком

Више

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 07 - Podstrukture, const, reference v2018/2019. Sastavio: Zvonimir Bujanović Podstrukture Član

Више

PowerPoint Presentation

PowerPoint Presentation Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa Multitasking Multithreading Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml Životni

Више

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc Konstrukcija i analiza algoritama 2 (prvi kolokvijum, smer R) 1. a) Konstruisati AVL stablo od brojeva 100, 132, 134, 170, 180, 112, 188, 184, 181, 165 (2 poena) b) Konkatenacija je operacija nad dva skupa

Више

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa

Више

Microsoft Word - 11 Pokazivaci

Microsoft Word - 11 Pokazivaci Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Obeležene petlje Obeležene petlje Obeležavanje petlje nekim identifikatorom omogućava da se programski tok usmeri na mesto u programu specificirano tim identifikatorom. Ako se iza naredbi break ili continue

Више

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Računarski praktikum I - Vježbe 03 - Implementacija strukture string Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String

Више

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode] Osnove programiranja Nizovi Sadržaj Definicija niza Vrste i elementi nizova Deklarisanje nizova Dodele (početne) vrednosti nizovima Jednodimenzionalni nizovi Primeri dodele vrednosti Petlja foreach Nizovi

Више

P11.3 Analiza zivotnog veka, Graf smetnji

P11.3 Analiza zivotnog veka, Graf smetnji Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke od tih jezičkih razlika su: Java kod se prevodi u.class

Више

PowerPoint Presentation

PowerPoint Presentation Visoka škola strukovnih studija za informacione i komunikacione tehnologije MVC - Modeli Školska 2017/18. Dr Nenad Kojić, dipl. inž. Luka Lukić, struk. inž. Danijela Nikitin, spec.stuk.inž MVC.htaccess

Више

P9.1 Dodela resursa, Bojenje grafa

P9.1 Dodela resursa, Bojenje grafa Фаза доделе ресурса Ова фаза се у литератури назива и фазом доделе регистара, при чему се под регистрима подразумева скуп ресурса истог типа. Додела регистара променљивама из графа сметњи се обавља тзв.

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode] Организација извршног програма (Марић, Јаничић: Програмирање 1, 9.3.3) Извршавање програма После успешног превођења (претпроцесирања, компилације, повезивања) програм може да се изврши Извршавање се захтева

Више

PDO

PDO PDO Marijan Šuflaj FER, 2018 Sadržaj PDO Osnove Izvršavanje upita Ranjivosti Dohvaćanje rezultata upita PDO - PHP Data Objects Jednostavno i konzistetno sučelje za pristup bazama podataka iz PHP-a Isti

Више

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

08 RSA1

08 RSA1 Преглед ЗАШТИТА ПОДАТАКА Шифровање јавним кључем и хеш функције RSA алгоритам Биће објашњено: RSA алгоритам алгоритам прорачунски аспекти ефикасност коришћењем јавног кључа генерисање кључа сигурност проблем

Више

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni

Више

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 09 - this, static Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 09 - this, static v2018/2019. Sastavio: Zvonimir Bujanović Pokazivač this Kako funkcija članica

Више

Introduction to Programming

Introduction to  Programming SQL Indeksi Uloga Indeksa o Kako baza postaje sve veća dizajn baze postaje sve važniji o Indeksi igraju značajnu ulogu u brzini rada same baze jer pomažu DBMS da brže pronađe ono što tražimo o Slični su

Више

Рачунарска интелигенција

Рачунарска интелигенција Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic

Више

Projekti šabloni

Projekti šabloni Projekti obrasci Kreiranje objekata Uvod Enkapsuliraju znanje o tome koje konkretno klase koristi sistem Sakrivaju instanciranje objekata i načine na koji se oni povezuju i reprezentuju Ostatak sistema

Више

PROMENLJIVE, TIPOVI PROMENLJIVIH

PROMENLJIVE, TIPOVI PROMENLJIVIH PROMENLJIVE, TIPOVI PROMENLJIVIH Šta je promenljiva? To je objekat jezika koji ima ime i kome se mogu dodeljivati vrednosti. Svakoj promenljivoj se dodeljuje registar (memorijska lokacija) operativne memorije

Више

Kombinatorno testiranje

Kombinatorno testiranje Kombinatorno testiranje Uvod Na ponašanje aplikacije utiče puno faktora, npr. ulazne vrednosti, konfiguracije okruženja. Tehnike kao što je podela na klase ekvivalencije ili analiza graničnih vrednosti

Више

Upitni jezik SQL

Upitni jezik SQL Šta je SQL? SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.

Више

06 Poverljivost simetricnih algoritama1

06 Poverljivost simetricnih algoritama1 ЗАШТИТА ПОДАТАКА Симетрични алгоритми заштите поверљивост симетричних алгоритама Преглед биће објашњено: коришћење симетричних алгоритама заштите како би се заштитила поверљивост потреба за добрим системом

Више

PowerPoint Presentation

PowerPoint Presentation Tehnička škola 9. maj Bačka Palanka Programiranje III razred Tok izvršavanja programa Tok izvršavanja programa Dosadašnji kod se izvršavao praktično linearno. Nije postojala nikakva uslovna ili brojačka

Више

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama Merenja u telekomunikacionim mrežama Merenja telefonskog saobraćaja Primer 1 - TCBH Na osnovu najviših vrednosti intenziteta saobraćaja datih za 20 mernih dana (tabela), pomoću metode TCBH, pronaći čas

Више

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,

Више

Algoritmi SŠ P1

Algoritmi SŠ P1 Županijsko natjecanje iz informatike Srednja škola 9. veljače 2018. RJEŠENJA ZADATAKA Napomena: kodovi za većinu opisanih algoritama dani su u Pythonu radi jednostavnosti i lakše čitljivosti. Zbog prirode

Више

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Sadržaj 1 Pokazivači - ponavljanje 3 2 Pokazivači - veza sa nizovima 5 2 1 Pokazivači - ponavljanje 1.

Више

Problemi zadovoljavanja ogranicenja.

Problemi zadovoljavanja ogranicenja. I122 Osnove umjetne inteligencije Tema:. 7.1.2016. predavač: Darija Marković asistent: Darija Marković 1 I122 Osnove umjetne inteligencije. 2/26 (PZO) Problem zadovoljavanja ograničenja sastoji se od 3

Више

Inženjering informacionih sistema

Inženjering informacionih sistema Fakultet tehničkih nauka, Novi Sad Inženjering informacionih sistema Dr Ivan Luković Dr Slavica Kordić Nikola Obrenović Milanka Bjelica Dr Jelena Borocki Dr Milan Delić UML UML (Unified Modeling Language)

Више

PowerPoint Presentation

PowerPoint Presentation Prof. dr Pere Tumbas Prof. dr Predrag Matkovid Identifikacija i izbor projekata Održavanje sistema Inicijalizacija projekata i planiranje Implementacija sistema Dizajn sistema Analiza sistema Faze životnog

Више

Microsoft PowerPoint - C-4-1

Microsoft PowerPoint - C-4-1 Pregled iskaza u C-u Izraz; Iskaz dodele, serijski komponovani iskaz; blok Uslovni iskazi i izrazi; složeno grananje Iterativni iskazi Iskaz dodele Promena vrednosti a = Ψ; Izračunava vrednost izraza Ψ,

Више

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar 2016 1 Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova strategija rekurzivno razbija problem na 2 ili više potproblema

Више

Орт колоквијум

Орт колоквијум II колоквијум из Основа рачунарске технике I - 27/28 (.6.28.) Р е ш е њ е Задатак На улазе x, x 2, x 3, x 4 комбинационе мреже, са излазом z, долази четворобитни BCD број. Ако број са улаза при дељењу

Више

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc [Complete introduction into Java programming language] Syllabus Semestar, Godina Informacije o instruktoru Instruktor(i) Email Lokacija i dostupnost 1. Ime, prezime 2. Emir, Puška E-mail adresa emirpuska1988@gmail.com

Више

Увод у организацију и архитектуру рачунара 1

Увод у организацију и архитектуру рачунара 1 Увод у организацију и архитектуру рачунара 2 Александар Картељ kartelj@matf.bg.ac.rs Напомена: садржај ових слајдова је преузет од проф. Саше Малкова Увод у организацију и архитектуру рачунара 2 1 Секвенцијалне

Више

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме 1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме Програмирање добијања награда омогућује ученицима да

Више

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode http://www.introprogramming.info/english-intro-csharp-book/read-online/ Sadržaj Funkcije Metode Definisanje Pozivanje Povratne vrednosti Parametri Metode (1) Metoda

Више

Primenjeno programiranje - Vežbe

Primenjeno programiranje - Vežbe VISOKA POSLOVNA ŠKOLA STRUKOVNIH STUDIJA NOVI SAD Primena integrisanih razvojnih alata Java i NetBeans IDE 7.0 vežba 9 i 10 Kreiranje desktop aplikacije sa konekcijom na bazu Pokrenuti NetBeans, u kartici

Више

My_P_Red_Bin_Zbir_Free

My_P_Red_Bin_Zbir_Free БИНОМНА ФОРМУЛА Шт треба знати пре почетка решавања задатака? I Треба знати биному формулу која даје одговор на питање чему је једнак развој једног бинома када га степенујемо са бројем 0 ( ) или ( ) 0!,

Више

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odrediti njene krajeve. b) Odrediti sledeće skupove: -

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*

Више

Орт колоквијум

Орт колоквијум Испит из Основа рачунарске технике - / (6.6.. Р е ш е њ е Задатак Комбинациона мрежа има пет улаза, по два за број освојених сетова тенисера и један сигнал који одлучује ко је бољи уколико је резултат

Више

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p 1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik.

Више

Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su signaliziraju da se t

Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su signaliziraju da se t Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su s @FunctionalInterface; signaliziraju da se ta sučelja mogu koristiti za stvaranje objekata u lambda-izrazima

Више

Primenjeno programiranje - vezbe GUI i baze podataka

Primenjeno programiranje - vezbe GUI i baze podataka Primenjeno programiranje - Vežbe Java i NetBeans IDE 6.5 Kreiranje korisničkog interfejsa Primer jednostavne aplikacije: 1. Odabrati opciju File > New Project 2. Meñu kategorijama odabrati Java i podkategoriju

Више

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Računarske mreže Čas 2 Ivana Tanasijević   Matematički fakultet, Beograd 1 Računarske mreže Čas 2 Ivana Tanasijević e-mail: ivana@matf.bg.ac.rs Matematički fakultet, Beograd 1 Utvrđivanje gradiva sa prethodnog časa: popunjavanje adresne strukture, kreiranje soketa, privezivanje

Више

Classroom Expectations

Classroom Expectations АТ-8: Терминирање производно-технолошких ентитета Проф. др Зоран Миљковић Садржај Пројектовање флексибилних ; Математички модел за оптимизацију флексибилних ; Генетички алгоритми у оптимизацији флексибилних

Више

Microsoft PowerPoint - 6. Query Builder.pptx

Microsoft PowerPoint - 6. Query Builder.pptx Visokaškola strukovnihstudija za informacione i komunikacione tehnologije Query builder Query builder je sastavni deo Laravel framework-a koji pruža pouzdan interfejs za rad sa bazom podataka, kreiranje

Више

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode] Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба

Више

Studijski primer - Dijagrami toka podataka Softverski inženjering 1

Studijski primer - Dijagrami toka podataka Softverski inženjering 1 - Dijagrami toka podataka Softverski inženjering 1 Kada projektujemo sistem za obradu podataka sa brzim odzivom, možemo uočiti dve ključne grupe funkcija koje se opisuju dijagramima toka podataka: Funkcije

Више

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica dimenzije m n, b Z m, c Z n. Takođe, očekuje se da

Више

OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA

OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA UPUTSTVO ZA RAD Drage učenice i učenici, Čestitamo! Uspjeli ste da dođete na državno takmičenje iz matematike i samim tim ste već napravili veliki uspjeh Zato zadatke

Више

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU http://www.mi.sanu.ac.rs/ tanjad (tanjad@mi.sanu.ac.rs) 21. januar 2013. Tatjana

Више

Slide 1

Slide 1 Kako jednostavnije preći na višu verziju Formsa Ivan Lovrić, Vedran Latin 14.10.2009. Sadržaj prezentacije Predmet migracije Razlozi za migraciju Infrastruktura potrebna za migraciju Pilot migracija Migracija

Више

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan realan broj od 0 i 1. Na standardni izlaz ispisati

Више

NAPOMENA: Studenti na ispit donose kod urađenog zadatka

NAPOMENA: Studenti na ispit donose kod urađenog zadatka Пројекат из предмета Интернет програмирање за августовски и септембарски испитни рок школске 2018/19. године Коришћењем PHP технологије, технологије AJAX и MySQL базе података, реализовати следећу веб

Више

Model podataka

Model podataka Fakultet organizacionih nauka Uvod u informacione sisteme Doc. Dr Ognjen Pantelić Modeliranje podataka definisanje strategije snimanje postojećeg stanja projektovanje aplikativno modeliranje implementacija

Више

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe 6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe, očekuje se da su koordinate celobrojne. U slučaju

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Uvod u programiranje dr Ninoslava Savić Predavanja (3) sreda: 11:15 13:50 Učionica 16 Konsultacije sreda: 15 17 h Kabinet 43 Uvod u programiranje Fond časova: 3+3 Broj ESPB: 7 Ocena znanja (max. broj poena

Више

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71 Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { public static void main(string[] args) { obrada(2.7182818284590452354); private static void obrada(double

Више

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa. 13E114PAR, 13S113PAR 29.04.2019. DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa. U okviru svake grupe data je doall ili doacross petlja

Више

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

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

Више

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www.

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www. ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља aleksandar@masstheory.org www.masstheory.org Август 2007 О ауторским правима: Дело

Више

KATALOG ZNANJA IZ INFORMATIKE

KATALOG ZNANJA IZ INFORMATIKE KATALOG ZNANJA IZ INFORMATIKE Nacionalni savjet za obrazovanje je na 27. sjednici održanoj 17. marta 2014. godine utvrdio izmjene predmetnoga programa INFORMATIKA za I razred gimnazije. Na zahtijev Pedagoško-psihološke

Више

Microsoft PowerPoint - 6. CMS [Compatibility Mode]

Microsoft PowerPoint - 6. CMS [Compatibility Mode] Visoka škola strukovnih studija za informacione i komunikacione tehnologije Beograd WEB TEHNOLOGIJE Drupal CMS(Content Managment System) Školska 2012/13. Marko M. Spasojević, spec. inž. Dr Nenad Kojić,

Више

Microsoft Word - CAD sistemi

Microsoft Word - CAD sistemi U opštem slučaju, se mogu podeliti na 2D i 3D. 2D Prvo pojavljivanje 2D CAD sistema se dogodilo pre više od 30 godina. Do tada su inženjeri koristili table za crtanje (kulman), a zajednički jezik komuniciranja

Више

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc Zadaci za samostalno vježbanje 4. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva prva četiri predavanja i ranije stečenog predznanja na predmetu Osnove računarstva. Zvjezdicom

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti

Више

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch A1 Slanje svima preko fiksiranog razapinjućeg stabla

Више

OOP1 - domaci 2 (2004/05)

OOP1 - domaci 2 (2004/05) ЕЛЕКТРОТЕХНИЧКИ ФАКУЛТЕТ Одсеци ИР, ОС и ОФ Београд, 05.04.2019. Први домаћи задатак из Објектно оријентисаног програмирања 2 У сваком задатку: Грешке пријављивати изузецима типа класа које садрже текст

Више

Microsoft PowerPoint - JavaP9_2019

Microsoft PowerPoint - JavaP9_2019 Programski jezik JAVA PREDAVANJE 9 2019 www.etf.ac.me Datoteke u Javi U paketu java.io nalaze se klase za rad sa datotekama i direktorijumima. Funkcionalnost koju omogućavaju te klase sastoji se od kreiranja,

Више

Microsoft PowerPoint - jkoren10.ppt

Microsoft PowerPoint - jkoren10.ppt Dickey-Fuller-ov test jediničnog korena Osnovna ideja Različite determinističke komponente Izračunavanje test-statistike Pravilo odlučivanja Određivanje broja jediničnih korena Algoritam testiranja Prošireni

Више

Slide 1

Slide 1 OSNOVNI POJMOVI Naredba je uputa računalu za obavljanje određene radnje. Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Pisanje programa zovemo programiranje. Programski jezik

Више

2015_k2_z12.dvi

2015_k2_z12.dvi OBLIKOVANJE I ANALIZA ALGORITAMA 2. kolokvij 27. 1. 2016. Skice rješenja prva dva zadatka 1. (20) Zadano je n poslova. Svaki posao je zadan kao vremenski interval realnih brojeva, P i = [p i,k i ],zai

Више

PowerPoint Presentation

PowerPoint Presentation Visoka škola strukovnih studija za informacione i komunikacione tehnologije Grupisanje ruta i patterni Školska 2017/18. Dr Nenad Kojić, dipl. inž. Luka Lukić, struk. inž. Danijela Nikitin, spec.stuk.inž

Више

SKRIPTE EKOF 2019/20 skripteekof.com Lekcija 1: Brojevni izrazi Lekcija 1: Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da nau

SKRIPTE EKOF 2019/20 skripteekof.com Lekcija 1: Brojevni izrazi Lekcija 1: Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da nau Lekcija : Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da naučite sledeće: osnovni pojmovi o razlomcima proširivanje, skraćivanje, upoređivanje; zapis razlomka u okviru mešovitog

Више