Standardne C++ biblioteke

Size: px
Start display at page:

Download "Standardne C++ biblioteke"

Transcription

1 Datum: Vježbe 12 Standardne C++ biblioteke Ukoliko ste aktivno pratili i izučavali dosadašnje nastavne materijale trebali biste posjedovati značajnu količinu znanja o programiranju i programskom jeziku C++. Ipak, treba prihvatiti činjenicu da, barem kada je u pitanju područje programiranja, postoji još mnogo toga čime biste trebalo ovladati. Upravo zbog toga, zadatak ovog poglavlja je da vas upozna sa osnovnim elementima Standardne C++ biblioteke koji do sada nisu baš mnogo spominjani. Standardna C++ biblioteka dolazi sa svakom C++ implementacijom, a predstavlja setove header file-ova koje programeri mogu koristiti prilikom rješavanja svakodnevnih zadataka. Na samom početku materijala će biti obrađena string klasa, a nakon toga i neki od najčešće korištenih članova STL-a (engl. Standard Template Library). String klasa Danas je gotovo nemoguće pronaći aplikaciju koja ne obavlja neku vrstu manipulacije tekstom. Upravo zbog toga, standardna C++ biblioteka posjeduje string klasu koja treba da osigura prevazilaženje ograničenja pri radu sa nizovima karaktera (alokacije, dealokacije, pretrage i sl.). Za korištenje string klase u većini slučajeva je potrebno uključiti i string biblioteku, a način korištenja se može vidjeti na sljedećem primjeru: string univerzitet("dzemal Bijedic"); string fakultet = ""; cout<<univerzitet<<endl; cout<<fakultet<<endl; Prethodni primjer jasno ukazuje na činjenicu da je korištenje objekata klase string mnogo jednostavnije u odnosu na korištenje nizova karaktera. Na početku programa kreirana su dva objekta tipa string, a to su: univerzitet i fakultet. Objekti su kreirani pozivom jednog od konstruktora string klase koji prihvata niz karaktera. Pored korištenog, string klasa posjeduje veći broj konstruktora koji će zajedno sa nekoliko drugih funkcija članica biti predstavljeni u sljedećem primjeru. string ln="\n \n"; string ustanova = "Fakultet Informacijskih Tehnologija"; //string "webadresa" se inicijalizuje sa tri w karaktera ==> www 1

2 string webadresa(3,'w');//<--jedan od konstruktora string klase //koristeci funkciju "append" u string "webadresa" se dodaje ".fit.ba" //funkcija append je slicna funkciji strcat webadresa.append(".fit.ba"); //ispisuje: cout<<webadresa<<ln; /*string "fit" se inicijalizuje vrijednoscu stringa "ustanova" tacnije svim njegovim karakterima od pocetka do kraja*/ string fit(ustanova.begin(),ustanova.end());//<--jedan od konstruktora cout<<fit<<ln; /*funkcija "insert" nam omogucava da na odredjenu lokaciju u stringu ubacimo zeljeni sadrzaj. U narednom primjeru na prvo mjesto u stringu "fit" se ubacuje kompletan sadrzaj stringa "webadresa" nakon cega se dodaje razmak i znak crtica*/ fit.insert(0, webadresa + " - " ); //ispisuje: - Fakultet Informacijskih Tehnologija cout<<fit<<ln; cout<<"maksimalna velicina stringa fit je: "<<fit.max_size()<<endl; cout<<"kapacitet stringa fit je: "<<fit.capacity()<<endl; cout<<"broj karaktera unutar stringa fit je: "<<fit.size()<<ln; //koristeci funkciju reserve() mozemo povecati kapacitet naseg stringa fit.reserve(200); cout<<"maksimalna velicina stringa fit je: "<<fit.max_size()<<endl; cout<<"kapacitet stringa fakultet je: "<<fit.capacity()<<endl; /*funkcija "compare" provjerava da li su dva stringa jednaka. Ako su jednaki funkcija vraca 0*/ string jednaki = fit.compare(ustanova)? "Ne" : "Da"; cout<<"nizovi su jednaki: "<< jednaki <<ln; Bitno je napomenuti da korištenje reserve funkcije nije obavezno jer se, u slučaju potrebe, vrši automatsko rezervisanje dodatnih memorijskih lokacija. Također, za dobivanje broja karaktera koji se nalaze u nizu, pored funkcije size, moguće je koristiti i funkciju length (funkcija length je zadržana iz ranijih implementacija string klase). Klasa string posjeduje veliki broj preklopljenih operatora koju omogućavaju vrlo jednostavnu inicijalizaciju i dodavanje vrijednosti objektima tipa string. string ln="\n \n"; string f = "Fakultet"; string i = "informacijskih"; string t = "tehnologija"; i[0]='i';//prvi karakter objekta "i" postavljamo na veliko slovo t[0]='t';//prvi karakter objekta "t" postavljamo na veliko slovo string fit = f + " " + i + " " + t; //postojecem sadrzaju stringa fit dodajemo " Mostar" fit += " Mostar"; string fit2 = fit; cout<<"nizovi su jednaki: "<< (fit.compare(fit2)?"ne":"da")<<ln; cout<<fit<<endl; cout<<fit2<<ln; 2

3 Klasa string ne bi imala baš veliki značaj u slučajevima kada korisnici ne bi bili u mogućnosti da inicijalizuju njihove vrijednosti. Slično kao i kod nizova karaktera, korištenjem komande (objekta) cin>> u objekte tipa string pohranjujemo samo onaj sadržaj koji se unese do prvog razmaka. string ustanova; cout<<"unesite naziv vaseg fakulteta: "; cin>>ustanova; cout<<ustanova<<endl; Pokrenite prethodni program, te kao ustanovu navedite: Fakultet informacijskih tehnologija. Izlaz programa bi trebao biti sljedeći: Unesite naziv vaseg fakulteta: Fakultet Press any key to continue... Budući da ne prihvata parametre tipa string, korištenje funkcije cin.getline() će prijaviti grešku. Ipak, string biblioteka posjeduje globalnu funkciju koja se naziva getline čije korištenje je prikazano na sljedećoj slici. Dakle, u prethodnom primjeru umjesto cin>>ustanova stavite getline(cin,ustanova). Pored inicijalizacije, string klasa posjeduje još mnogo drugih funkcija koje omogućavaju pretragu i modifikovanje sadržaja objekta. Neke od njih su svakako funkcije find i replace čiju upotrebu možete vidjeti u sljedećem primjeru. string ln = "\n \n"; string tacan = "Prof. Dr. Safet Krkic"; string unos; string mojtemplate = "Prof. Dr. "; //ovaj string vraca kursor 11 mjesta unazad (b-backspace) string back(11,'\b'); //sjetite se cout<< \b\b\b\b\b\b ; cout<<ln<<"unesite ime i prezime prvog dekana i osnivaca FIT-a:"<<ln; cout<<mojtemplate<<back;//ispisuje templejt i vraca kursor 11 mjesta getline(cin,unos); //pronalazi se indeks-lokacija prvog karaktera donja crta "_" int start=mojtemplate.find("_"); //karakteri donja crta u templejtu se zamijenjuju korisnikovim unosom mojtemplate.replace(start,unos.size(),unos); //krace smo mogli napisati //mojtemplate.replace(mojtemplate.find("_"),unos.size(),unos); //pored funkcije "compare" mozemo koristiti operatore == ili!= if(mojtemplate == tacan) cout<<ln<<"odgovor je tacan!"<<ln; else{ cout<<ln<<"vas odogovor je: \t"<<mojtemplate; 3

4 cout<<",\ntacan odogovor je: \t"<<tacan; cout<<ln<<"zao nam je, pokusajte drugi put..."<<ln; Za kraj priče o string klasi potrebno je pomenuti još par korisnih funkcija. Naime, ukoliko želite provjeriti da li je vaš string prazan, na raspolaganju je funkcija empty koja, u zavisnosti od sadržaja, vraća true ili false. Također, prikazana je i funkcija copy koja omogućava da se na jednostavan način kopira sadržaj string objekta u niz karaktera. Pogledajte sljedeći primjer: string fit = ""; if(fit.empty()) cout<<"string je prazan!"<<endl; else cout<<"sting nije prazan!"<<endl; int duzinastringa = fit.length(); char * niz = new char[duzinastringa + 1]; //fit.copy(destinacija, duzina, pocetak); fit.copy(niz, duzinastringa, 0); //u zavisnosti od verzije, postoji mogucnost da //kompajler prijavi gresku //posto je defaultna vrijednost pocetka 0 mogli smo napisati //fit.copy(niz, duzinastringa); //fit._copy_s(niz, duzinadestinacijskogniza, brojkarakterazakopiranje); niz[duzinastringa]='\0'; cout<<fit<<endl; cout<<niz<<endl; delete [] niz; niz = NULL; Na osnovu prethodnog primjera možete zaključiti da se korištenjem funkcije copy, odnosno _Copy_s funkcije, na kraj destinacijskog niza (niz) ne dodaje null terminirajući karakter (\0), što je urađeno naknadno. STL kontejneri i iteratori Često se pojave slučajevi u kojima programer nije siguran koliko objekata će biti kreirano prilikom izvršenja određene operacije. Jedno od mogućih rješenja svakako je kreiranje niza čija će veličina biti dovoljna za pohranjivanje maksimalnog broja objekata koji se mogu pojaviti tokom izvršenja. Ovakav pristup ima dva nedostatka. Prvi nedostatak se odnosi na mogućnost da se u programu kreira svega nekoliko objekata čime smo bespotrebno zauzeli veću količinu memorije. Drugi nedostatak je činjenica da broj kreiranih objekata može biti veći od predviđenog maksimalnog broja, pa se u programu mora voditi računa o alociranju većeg niza, te kopiranju postojećih elemenata u novokreirani niz. Za rješavanje spomenutih nedostataka obično se kreiraju odgovarajuće generičke klase ili se koriste specijalne generičke klase koje dolaze uz STL biblioteku, a nazivaju se kontejneri ili kolekcije. Kontejneri omogućavaju pohranu i čuvanje kolekcije objekata, a da se pri tom 4

5 ne mora voditi računa o alociranju potrebne količine dinamičke memorije. Postoji veliki broj različitih vrsta kontejner klasa, ali u ovom materijalu će biti riječi o vector i list kontejnerima. Vector klasa Na samom početku je bitno razumjeti se termin vector odnosi na nizove, što je donekle približno matematičkom tumačenju ovog pojma. Ukratko, za vector klasu se može reći da predstavlja mnogo sigurniju alternativu običnih nizova. Klasa vector se nalazi u istoimenoj biblioteci, a prilikom njenog korištenja primjenjuje se uobičajena template notacija. //vector<tip_podatka> nazivobjekta(broj_elemenata); vector<int> nizintegera(10); Način korištenja vector klase se može vidjeti u sljedećem primjeru: string ln="\n \n"; int max=0; cout<<ln<<"koliko studenata je izaslo na ispit: "; cin>>max; cin.ignore(); //kreiramo objekat unutar kojeg mozemo pohraniti kolekciju od max integera vector<int> ocjene(max); // kreiramo objekat unutar kojeg mozemo pohraniti kolekciju od max stringova vector<string> studenti(max); //zahvaljujuci funkciji size mozemo dobiti informaciju //o maksimalnom broju elemenata unutar objekta for(int i=0;i<studenti.size();i++){ cout<<ln<<i+1<<".student: "; getline(cin,studenti[i]); cout<<i+1<<".ocjena: "; cin>>ocjene[i]; cin.ignore(); system("cls"); cout<<ln<<"polozili su: "<<ln; for(int i=0;i<studenti.size();i++){ if(ocjene[i]>5 && ocjene[i]<=10) cout<<studenti[i]<<", "<<ocjene[i]<<endl; cout<<ln; Iz prethodnog primjera se može zaključiti da preklopljeni operator[] omogućava pristup svakom pojedinom elementu unutar vector objekta. Nakon što ste upoznali osnove korištenja vector klase, vrijeme je da se upoznate sa korištenjem nekih od njenih funkcija, a to su: insert, erase, push_back i pop_back. Pogledajte sljedeći primjer: void prikazi(vector<int> indeksi){ for(int i=0;i<indeksi.size();i++) cout<<"\t"<<i+1<<". "<<indeksi[i]<<endl; 5

6 vector<int> indeksi; //primjetite da u ovom primjeru nismo odredili broj //elemenata koje cemo pohraniti unutar objekta tipa vector //funkcija push_back() dodaje novi clan na kraj kolekcije indeksi.push_back(1000); indeksi.push_back(1001); indeksi.push_back(1002); indeksi.push_back(1004); indeksi.push_back(1005); cout<<"\nindeksi (prije dodavanja): "<<endl; prikazi(indeksi); /*funkcija insert() dodaje novi clan na definisanu lokaciju. u ovom slucaju: na trecu lokaciju (brojeci od pocetka - indeksi.begin()) dodaje broj Za funkciju begin() mozemo reci da vraca neku vrstu pokazivaca na prvu lokaciju u kolekciji */ indeksi.insert(indeksi.begin()+3, 1003); cout<<"\nindeksi (poslije insert()): "<<endl; prikazi(indeksi); //funkcija pop_back() uklanja posljednji element iz kolekcije indeksi.pop_back(); indeksi.pop_back(); cout<<"\nindeksi (poslije pop_back()): "<<endl; prikazi(indeksi); Primijetite da u prethodnom primjeru konstruktoru klase vector nije proslijeđen broj elemenata koje treba da posjeduje objekat indeksi. Nakon toga, koristeći funkciju push_back, vektoru indeksi je dodato 6 brojeva, a da se tom prilikom nije vodilo računa o memorijskoj alokaciji. Pošto je izostavljen broj indeksa 1003 funkcija insert je omogućila njegovo dodavanje na odgovarajuću lokaciju. Naime, funkcija prihvata dva parametra i to: lokaciju na koju treba pohraniti novu vrijednost, te samu vrijednost koja se dodaje. Ispis sadržaja kolekcije je prepušten funkciji prikazi koja prihvata parametar tipa vector<int>. Također, na samom kraju programa, koristeći funkciju pop_back uklonjena su dva posljednja elementa u kolekciji, te su kao dokaz izvršenja funkcije ponovo ispisani svi elementi. Pored funkcije insert, značajna je i funkcija erase koja omogućava uklanjanje elemenata koji se nalaze na određenim lokacijama. U dosadašnjim primjerima su se uglavnom koristili ugrađeni tipovi podataka. Kao ilustraciju korištenja erase funkcije, u nastavku će biti kreirana klasa Student koja će se koristiti kao argument prilikom kreiranja vector objekata. class Student{ string Ime; string Prezime; public: Student(string i,string p){ Ime=i; Prezime=p; 6

7 friend ostream & operator<<(ostream & out,student & obj); ; ostream & operator<<(ostream & out,student & obj){ out<<obj.ime<<" "<<obj.prezime<<endl; return out; string ln="\n \n"; void prikazi(vector<student> & studenti){ cout<<ln; for(int i=0;i<studenti.size();i++) cout<<"\t"<<i<<". "<<studenti[i]; //UKLONITE REFERENCU I PONOVO POKRENITE PROGRAM void izbrisivise(vector<student> & studenti){ int pocetak=0, kraj=0; cout<<ln<<"brisanje VISE STUDENATA"<<ln; prikazi(studenti); cout<<ln<<"unesite pocetnu i krajnju lokaciju koju zelite izbrisati: "; cin>>pocetak>>kraj; //stavljene su samo osnovne provjere vrijednosti pocetka i kraja //KREIRAJTE ODGOVARAJUCU KLASU KOJA CE VAM POSLUZITI ZA BACANJE I OBRADU //IZUZETAKA u slucaju da korisnik unese neku vrijednost koja nije dozvoljena if(pocetak>=0 && pocetak<kraj && kraj<studenti.size()) studenti.erase(studenti.begin()+pocetak, studenti.begin()+kraj); //UKLONITE REFERENCU I PONOVO POKRENITE PROGRAM void izbrisijedan(vector<student> & studenti){ int lokacija=0; cout<<ln<<"brisanje JEDNOG STUDENTA"<<ln; prikazi(studenti); cout<<ln<<"unesite lokaciju koju zelite izbrisati: "; cin>>lokacija; if(lokacija>=0 && lokacija<studenti.size()) studenti.erase(studenti.begin()+lokacija); string ime, prezime; char nastavak; vector<student> studenti; do{ cout<<ln<<"unesite ime: "; getline(cin,ime); cout<<"unesite prezime: "; getline(cin,prezime); //kreiramo novog studenta i dodajemo ga na kraj kolekcije Student temp(ime,prezime); studenti.push_back(temp); //skraceno smo mogli napisati: //studenti.push_back(student(ime,prezime)); cout<<"da li zelite nastaviti (d/n): "; cin>>nastavak; cin.ignore(); while(tolower(nastavak)=='d'); system("cls"); cout<<ln<<"studenti (prije brisanja): "; prikazi(studenti); izbrisijedan(studenti); izbrisivise(studenti); 7

8 cout<<ln<<"studenti (poslije brisanja): "; prikazi(studenti); Bitno je spomenuti da se prilikom manipulisanja elementima STL kontejnera veoma često koriste tzv. iteratori. Za iteratore se kaže da predstavljaju generalizaciju pokazivača ili da predstavljaju objekte za koje su definisane operacije karakteristične pokazivačima. Svaka kontejner klasa definiše odgovarajući iterator, a u zavisnosti od implementacije koju koristite, možda ćete morati uključiti i istoimenu biblioteku (#include <iterator>). Pošto ste već savladali materiju vezanu za pokazivače, razumijevanje iteratora ne bi trebao predstavljati nikakav problem. Prilikom kreiranja iteratora dovoljno je da se nakon navođenja imena klase (vector) uz scope (::) operator navede ključna riječ iterator, a nakon toga ime iteratora: vector<int>::iterator it; Identično pokazivačima, nakon kreiranja iteratora potrebno je definisati lokaciju na koju će oni pokazivati, što je prikazano u narednom primjeru: vector<int> indeksi; //kreiramo iterator vector<int>::iterator it; indeksi.push_back(1000); indeksi.push_back(1001); indeksi.push_back(1002); //iterator pokazuje na prvi element u kolekciji indeksi it = indeksi.begin(); //primjetite da elementima pristupamo identicno kao sa pokazivacima cout<<"*it = "<<*it<<endl; *it = 2000; cout<<"*it = "<<*it<<endl; it++; //iterator sada pokazuje na drugi element cout<<"*it = "<<*it<<endl; *it = 2001; cout<<"*it = "<<*it<<endl; Zahvaljujući funkcijama begin i end, iteratori se mogu koristiti prilikom ispisivanja vrijednosti elemenata koji se nalaze unutar vector objekata: vector<int> indeksi; vector<int>::iterator it; indeksi.push_back(1000); indeksi.push_back(1001); 8

9 indeksi.push_back(1002); for(it = indeksi.begin(); it!=indeksi.end(); it++) cout<<*it<<endl; Većina funkcija koje su namijenjene objektima kontejner klasa nisu definisane unutar tih samih klasa, već su definisane kao globalne funkcije. Jedna od njih je i funkcija sort koja omogućava sortiranje elemenata koji se nalaze unutar kontejnera. Za korištenje funkcije sort potrebno je uključiti algorithm biblioteku, a primjer njenog korištenja je prikazan u nastavku. #include <algorithm> vector<int> indeksi; vector<int>::iterator it; indeksi.push_back(1099); indeksi.push_back(1005); indeksi.push_back(1058); indeksi.push_back(1012); cout<<"indeksi prije sortiranja: "<<endl; for(it = indeksi.begin(); it!=indeksi.end(); it++) cout<<*it<<endl; sort(indeksi.begin(),indeksi.end()); cout<<"indeksi poslije sortiranja: "<<endl; for(it = indeksi.begin(); it!=indeksi.end(); it++) cout<<*it<<endl; Budući da se u kolekciji nalaze vrijednosti tipa int funkcija sort bez problema vrši sortiranje. Međutim, u slučaju da se unutar kolekcije nalaze objekti korisnički definisanog tipa (npr. tipa Student) onda se za tu klasu mora preklopiti operator<. Ukoliko vam smetaju sortirani elementi, na raspolaganju je funkcija random_shuffle koja će sa zadovoljstvom napraviti nered u vašoj kolekciji. #include <algorithm> class Student{ int indeks; string ImePrezime; public: Student(int i,string ip){ indeks = i; ImePrezime = ip; bool operator< (Student & obj){ if(indeks < obj.indeks) return true; return false; 9

10 friend ostream & operator<<(ostream & out,student & obj); ; ostream & operator<<(ostream & out,student & obj){ out<<"\t"<<obj.indeks<<" "<<obj.imeprezime; return out; vector<student> studenti; vector<student>::iterator it; studenti.push_back(student(1004,"jasmin Azemovic")); studenti.push_back(student(1000,"denis Music")); studenti.push_back(student(1003,"goran Skondric")); studenti.push_back(student(1002,"adil Joldic")); studenti.push_back(student(1001,"mohamed El-Zayat")); cout<<"studenti prije sortiranja: "<<endl; for(it = studenti.begin(); it!=studenti.end(); it++) cout<<*it<<endl; sort(studenti.begin(),studenti.end()); cout<<"\nstudenti poslije sortiranja: "<<endl; for(it = studenti.begin(); it!=studenti.end(); it++) cout<<*it<<endl; random_shuffle(studenti.begin(),studenti.end()); cout<<"\nstudenti poslije random_shuffle: "<<endl; for(it = studenti.begin(); it!=studenti.end(); it++) cout<<*it<<endl; U praksi se veoma često javlja potreba za konverzijom različitih tipova podataka u tip podatka string koji služi za ispis, povratna vrijednost funkcije i sl. Mada je u okviru nastave iz predmeta Programiranje II pomenuto nekoliko funkcija za konverziju, u narednom primjeru će biti predstavljen još jednostavniji način koji zahtijeva korištenje stringstream objekta definisanog unutar sstream biblioteke. Jednostavnost korištenja objekta tipa stringstream se može vidjeti u narednom primjeru. #include <sstream> #include <algorithm> string inttostring(int broj){ stringstream obj; obj<<broj; return obj.str();//funkcija str() nam vraća string konvertovane vrijednosti //pohranjene u stringstream objektu vector<int> indeksi; vector<int>::iterator it; indeksi.push_back(1099); indeksi.push_back(1005); indeksi.push_back(1058); indeksi.push_back(1012); cout<<"indeksi prije sortiranja: "<<endl; 10

11 for(it = indeksi.begin(); it!=indeksi.end(); it++) cout<<*it<<endl; sort(indeksi.begin(),indeksi.end()); cout<<"indeksi poslije sortiranja: "<<endl; for(it = indeksi.begin(); it!=indeksi.end(); it++) cout<<*it<<endl; string indeksistring = ""; for(it = indeksi.begin(); it!=indeksi.end(); it++) indeksistring += inttostring(*it) + ", "; cout<<"indeksi unutar tipa string: "<<indeksistring<<endl; Za kraj priče o vektorima, spomenut ćemo template iterator ostream_iterator koji omogućava jednostavan ispis elemenata nekog kontejnera. Korištenje ovog iteratora se vrši na sljedeći način: ostream_iterator<int, char> out_iter(cout, "\n"); Prvi formalni argument int označava tip elemenata koji se nalaze u kontejneru, a char tip elemenata koji će se koristiti prilikom ispisa. Naziv iteratora je out_iter nakon čega se kao parametar navodi objekt koji se koristi prilikom ispisa (u ovom slučaju cout, a također je to mogao biti i objekt za upis u fajl i sl.). Kao posljednji argument, koristi se delimiter tj. argument kojim se definiše aktivnost poslije ispisa svakog od elemenata u kontejneru (u našem slučaju program prelazi u novi red). Nakon kreiranja iteratora, dovoljno je samo pozvati funkciju copy koja prihvata tri argumenta: prvi argument označava početak, drugi argument označava kraj ispisa, te se kao posljednji argument navodi ime ostream_iterator, što je prikazano u narednom primjeru: #include <algorithm> vector<int> indeksi; vector<int>::iterator it; indeksi.push_back(1099); indeksi.push_back(1005); indeksi.push_back(1058); indeksi.push_back(1012); ostream_iterator<int, char> out_iter(cout, "\n"); cout<<"indeksi prije sortiranja: "<<endl; copy(indeksi.begin(),indeksi.end(), out_iter); sort(indeksi.begin(),indeksi.end()); cout<<"indeksi poslije sortiranja: "<<endl; copy(indeksi.begin(),indeksi.end(), out_iter); Kako biste bili sigurni da u potpunosti razumijete način korištenja ostream_iterator iteratora, prethodni primjer prilagodite na način da se putem funkcije copy ispišu svi podaci koji se nalaze u vektoru mojistudenti (vector<student> mojistudenti). 11

12 List klasa Template klasa list koja je definisana unutar istoimene biblioteke ne predstavlja ništa drugo nego povezanu listu elemenata. Naime, svaki element u listi, osim prvog i posljednjeg, je povezan sa svojim prethodnim i narednim elementom. Glavna razlika između vector i list klase jeste u činjenici da vector pruža efikasniji način pristupa pojedinim elementima, dok liste posjeduju efikasniji način dodavanja i izbacivanja elemenata. Također, za razliku od vektora, elementima liste nije moguće pristupiti koristeći operator[]. Način korištenja liste je dosta sličan korištenju vektora, što se može vidjeti iz sljedećeg primjera: #include <list> //kreiramo iterator ostream_iterator<string,char> out(cout,"\n"); //kreiramo listu list<string> godinestudija; //dodajemo elemente na kraj liste godinestudija.push_back("treca"); godinestudija.push_back("cetvrta"); //dodajemo elemente na pocetak liste godinestudija.push_front("druga"); godinestudija.push_front("prva"); //ispisujemo elemente liste godidenstudija copy(godinestudija.begin(),godinestudija.end(),out); Zbog velike sličnosti sa klasom vector, liste neće biti detaljnije pojašnjavane. U nastavku je prikazan primjer sa najčešće korištenim funkcijama list klase. #include <list> ostream_iterator<string> list_iterator(cout,"\n"); //kreiramo listu fit od 3 elemenata cija je vrijednost FIT list<string> fit(3, "FIT"); cout<<"\noriginal: "<<endl; copy(fit.begin(),fit.end(),list_iterator); //kreiramo niz od 3 stringa sa imenima gradova string lokacije [] = {"Mostar", "Sarajevo","Bihac"; //na kraj liste fit dodajemo sve gradove iz niza lokacije fit.insert(fit.end(),lokacije, lokacije + 3); cout<<"\nposlije insert lokacija : "<<endl; copy(fit.begin(),fit.end(),list_iterator); //iz liste uklanjamo sve elemente koji imaju vrijednost FIT fit.remove("fit");//u listi ostaju samo lokacije tj. imena gradova cout<<"\nposlije remove FIT elemenata: "<<endl; copy(fit.begin(),fit.end(),list_iterator); //posto su u listi fit ostali samo nazivi gradova koristimo je za 12

13 //kreiranje nove liste lokacija2 list<string> lokacije2(fit); //kreiramo novu listu sa drugim gradovima koju cemo u nastavku //koristiti za premijestanje u drugu listu list<string> lokacije3; lokacije3.push_back("zenica"); lokacije3.push_back("prozor"); lokacije3.push_back("gorazde"); //komanda splice premijesta elemente sa destinacije na definisanu lokaciju //nakon ovoga lista lokacija3 ce biti prazna lokacije2.splice(lokacije2.begin(),lokacije3); cout<<"\nposlije koristenja funkcije splice(destinacija, izvor): "<<endl; copy(lokacije2.begin(),lokacije2.end(),list_iterator); //namjerno dodajemo elemente koji vec postoje lokacije2.push_front("mostar"); lokacije2.push_back("mostar"); lokacije2.push_back("sarajevo"); cout<<"\nposlije dodavanja novih elemenata: "<<endl; copy(lokacije2.begin(),lokacije2.end(),list_iterator); //funkcija za sortiranje liste lokacije2.sort(); //funkcija za uklanjanje dupliranih elemenata lokacije2.unique(); cout<<"\nposlije koristenja funkcija sort() i unique(): "<<endl; copy(lokacije2.begin(),lokacije2.end(),list_iterator); Regular expressions U svakodnevnom razvoju aplikacija veoma često se javlja potreba za različitim vrstama manipulacije tekstom. U tom kontekstu, sa C++ 11 implementacijom dolazi jedan vrlo efikasan mehanizam koji se koristi i u drugim programskim jezicima, a poznat je pod nazivom regex (regular expression). Pomenuti mehanizam dolazi u okviru STL-a (biblioteka regex), a definiše set pravila (gramatiku) zahvaljujući kojima se, na jednostavan način, može izvršiti kompleksna pretraga i zamjena tekstualnog sadržaja. Kao najjednostavniji primjer korištenja regex gramatike može se navesti specifikacija opsega: [a - z] //znak u opsegu od a do z [a - z0-9]//znak u opsegu od a do z ili od 0-9 Definisanju opsega se veoma često pridružuju operatori koji omogućavaju definisanje broja ponavljanja znakova unutar opsega: * (označava nijedno ili više ponavljanja), + (označava jedno ili više ponavljanja), te? (označava nijedno ili jedno ponavljanje). [a - z]+ //znakovi u opsegu od a do z koji se pojavljuju jednom ili više puta Prethodno definisani opseg zadovoljava bilo koju od sljedećih kombinacija: fit fitt 13

14 unmofit Definisanje opsega je prvenstveno zasluga uglastih zagrada što se može vidjeti iz sljedećih pravila: fit+ //zadovoljava: fit fitt ffittt (fit)+ //() - formira grupu // zadovoljava: fit fitfit fitfitfit f[a-z]*t // zadovoljava: ft fit fakultet fleksibilnost Ukoliko je potrebno ograničiti broj ponavljanja znakova iz određenog opsega na raspolaganju je sintaksa {n, m npr: f[a-z]{1,3t // zadovoljava: fit fiat Pored opsega, moguće je navesti tačan broj ponavljanja {n ili koristeći {n, naznačiti da može biti n ili više ponavljanja. Pošto ste savladali osnove pojmove gramatike regular expressions-a vrijeme je da provjerimo njihovu praktičnu primjenu. Na samom početku je potrebno kreirati objekat tipa regex, te mu dodijeliti pravilo prema kome će se vršiti pretraga. Najjednostavniji način da se uradi pretraga tekstualnog sadržaja je korištenje funkcije regex_search, a ako određeni tekst u potpunosti mora odgovarati definisanom formatu onda je na raspolaganju funkcija regex_match. #include <regex> string crt = "\n \n"; string tekst1 = "fakultet fit mostar"; string tekst2 = "fit"; string tekst3 = "fiat"; string tekst4 = "fakultet"; string pravilo = "f[a-z]{1,3t"; smatch odgovarapravilu; regex reg(pravilo); //objekat odgovarapravilu smo testirali samo u prvoj pretrazi //zbog toga sto tekst1 ima vise od jedne rijeci if (regex_search(tekst1, odgovarapravilu, reg)){ cout <<tekst1<< " zadovoljava pravilo: "<<pravilo << endl; cout << "Pronadjno: " << odgovarapravilu.str() << crt; if (regex_search(tekst2, reg)) cout << tekst2 << " zadovoljava pravilo: " << pravilo << crt; if (regex_search(tekst3, reg)) cout << tekst3 << " zadovoljava pravilo: " << pravilo << crt; if (regex_search(tekst4, reg)) cout << tekst4 << " zadovoljava pravilo: " << pravilo << crt; 14

15 Zanimljiva je upotreba objekta tipa smatch koga je potrebno proslijediti prilikom poziva funkcije regex_search, a koji je zadužen da čuva informaciju o pronađenom dijelu teksta koji zadovoljava postavljeno pravilo. Pronalaženje svih dijelovi teksta koji odgovaraju postavljenom pravilu je omogućeno korištenjem iteratora o kojima je bilo mnogo riječi u prethodnom dijelu materijala. #include <regex> #include <iterator> void main() { string tekst = "fakultet fit se nalazi u mostaru. fiat je oficijelno vozilo studenata fit-a ;)"; //da li regex razlikuje velika i mala slova? string pravilo = "f[a-z]{1,4t"; smatch odgovarapravilu; regex reg(pravilo); //prefiks s označava da se radi o regex iteratoru koji je namijenjen za string //da se radi o običnom nizu karaktera onda bismo kreirali regex_iterator sregex_iterator it_poc(tekst.begin(), tekst.end(), reg); //it_kraj se kreira koristeci defaultni konstruktor i postavlja na vrijednost //kraja kontejnera, te nam sluzi prvenstveno za potrebe izvrsenja while petlje sregex_iterator it_kraj; while (it_poc!= it_kraj) { cout << "Pronadjeno " << it_poc->str() <<" na lokaciji " << it_poc->position()<< endl; it_poc++; Pored osnovnih pravila gramatike na raspolaganju je i čitav set specijalnih karaktera, kvatnifikatora, te karakter klasa koji omogućavaju kreiranje vrlo kompleksnih provjera tekstualnog sadržaja. Karakter klase omogućavaju da se na jednostavan način definišu čitave kategorije karaktera. Nazivi pojedinih klasa su pominjani u okviru predmeta Programiranje II, tačnije u okviru lekcije pod nazivom Manipulisanje nizovima karaktera, što je vidljivo iz naredne tabele. Klasa [:alnum:] brojevi ili karakteri [:alpha:] karakteri [:digit:] brojevi [:lower:] mala slova [:punct:] interpunkcijski znak [:space:] prazan prostor [:upper:] velika slova Opis Specijalni karakteri imaju posebno značenje u gramatici jer omogućavaju opisivanje određenih dijelova teksta koje bi bilo jako teško predstaviti običnim karakterima. Karakter Opis. bilo koji znak osim znaka za prelazak u novu liniju 15

16 \t tabulator \n novi red \0 NULL \d broj, isto kao [:digit:] \D negacija broja, suprotno od [:digit:] \s prazan prostor \S negacija praznog prostora \karakter karakter [klasa] klasa karaktera (opisana u prethodnoj tabeli) [^klasa] negacija klase karaktera Gramatika predviđa mogućnost korištenja tvrdnji kojima se opisuju uslovi koji moraju biti ispunjeni prije ili poslije traženih karaktera, pa se početak označava znakom ^, a kraj znakom $. Alternative ili mogućnost pretrage po većem broju kriterija se odvajaju koristeći znak pipe ( ). Postoje i granične tvrdnje \b i \B koje omogućavaju definisanje da se traženi dio nalaziti samostalno (npr: \bvod\b odgovara samo riječi vod, ali ne i riječi vodovod) ili u okviru nekih drugih znakova (npr: \Bvod\B ne odgovara riječi vod ali odgovara i riječi odvodi). Treba još pomenuti način na koji se može definisati slijeđenje ili relacija između dva tražena dijela, pa će tako tvrdnji fit(?=\s+mostar) odgovarati svi slučajevu u kojima nakon riječi fit dolazi jedan ili više praznih prostora (\s+) nakon čega slijedi riječ mostar. Negacija prethodne tvrdnje se dobije jednostavnom zamjenom operatora jednakosti (=) sa dvotačkom (:). Kao podsjetnik, važno je napomenuti da se za dobijanje obrnute kose crte unutar navodnika trebaju navesti dvije obrnute kose crte (\\ rezultira \). Naredni veoma jednostavan primjer od korisnika zahtijeva da unese ime, prezime i lozinku koja u sebi ne smije sadržavati ime ili prezime. #include <regex> int main(){ string crt = "\n \n"; string ime, prezime, korinsnickoime, lozinka, pravilo; cout << crt << "\t::registracijska FORMA::" << crt; cout << "Unesite ime: "; getline(cin, ime);//denis cout << "Unesite prezime: "; smatch odgovara; getline(cin, prezime);//music //automatski generisano korisnicko ime korinsnickoime = ime + "." + prezime; cout << "Korisnicko ime: "<<korinsnickoime<<crt; cout << "LOZINKA NE SMIJE SADRZAVATI IME ILI PREZIME"; pravilo = "(?:(" + ime + " " + prezime + "))"; //u slucaju da unesemo ime:denis i prezime:music //pravilo = "(?:(denis music))"; //mada nam u ovom primjeru slijedjenje i nije //previse bitno jer pokusavamo pronaci ime ili prezime bilo gdje u sadrzaju do{ cout << crt << "Unesite lozinku: "; getline(cin, lozinka); while (regex_search(lozinka, regex(pravilo))); cout << crt << "Registracija uspjesna!" << crt; return 0; 16

17 U narednom zadatku će biti implementiran veći broj zahtjeva koji se odnose na kreiranje lozinke korisnika. int main(){ string crt = "\n \n"; string ime, prezime, korinsnickoime, lozinka, pravilo; cout << crt << "\t::registracijska FORMA::" << crt; cout << "Unesite ime: "; getline(cin, ime); cout << "Unesite prezime: "; smatch odgovara; getline(cin, prezime); //automatski generisano korisnicko ime korinsnickoime = ime + "." + prezime; cout << "Lozinka mora sadrzavati:"; cout << "\n - najmanje 7 znakova";//(?=.{7,) cout << "\n - velika slova";//(?=.*[a - Z]) cout << "\n - mala slova";//(?=.*[a - z]) cout << "\n - brojeve";//(?=.+\\d) cout << "\n - najmanje 2 ponavljanja jednog "; cout<<"od sljedecih znakova: '@','*','_'";//(?=.*[@*_]{2) pravilo = "(?=.{7,)(?=.+\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@*_]{2)"; do{ cout << crt << "Unesite lozinku: "; getline(cin, lozinka); while (!regex_search(lozinka, regex(pravilo))); cout << crt << "Registracija uspjesna!" << crt; cout << "Korisnicko ime: " << korinsnickoime << crt; cout << "Lozinka: " << lozinka << crt; return 0; U nastavku je prikazan primjer u okviru koga se od korisnika zahtijeva da unese broj telefona u definisanom formatu. int main(){ string crt = "\n \n"; string tel, pravilo; cout << crt << "::PRETRAGA PO TELEFONSKOM BROJU::" << crt; cout << "Podrzani formati unosa:" << crt; cout << " " << crt; cout << " " << crt; cout << "+387(61)222333" << crt; cout << "+387(61) " << crt; cout << "+387(61) " << crt; /* (\\+)? - opcionalan znak + na pocetku (nijedna ili jedna) (\\d{3) - tri broja (npr. 387) (\\()? - opcionalna lijeva zagrada "(" (\\d{2) - dva broja (npr. 61) (\\))? - opcionalna desna zagrada ")" ([-.])? - opcionalni znak tačka "." ili crtica "-" (\\d{3) - tri broja (npr. 222 ) ([-.])? - opcionalni znak tačka "." ili crtica "-" (\\d{3) - tri broja (npr. 333) */ pravilo = "(\\+)?(\\d{3)(\\()?(\\d{2)(\\))?([-.])?(\\d{3)([-.]?)(\\d{3)"; do{ cout << "Unesite broj telefona: "; getline(cin, tel); while (!regex_match(tel, regex(pravilo))); 17

18 cout << crt << "PRETRAGA U TOKU..." << crt; return 0; Jedini dio pravila iz prethodnog primjera koji je možda potrebno pojasniti jeste onaj koji definiše opcionalno navođenje zagrada: (\\()?. Naime, već je pojašnjeno da se znakom? označava jedno ili nijedno pojavljivanje onoga što je navedeno unutar zagrada tj. onog dijela koji se nalazi unutar ()?.Također je pojašnjeno da je za dobijanje jedne obrnute kose crte potrebno navesti dvije obrnute kose crte, pa tako (\\)? rezultira (\)?. Nakon toga je preostalo samo da se doda znak koji se treba pojaviti jednom ili nijednom, a to je zagrada (\\()?. Pretraga teksta dobija svoju puni smisao samo u slučaju kada je pronađeni sadržaj moguće zamijeniti nekim drugim (odgovarajućim) sadržajem. Zamjenu teksta je na veoma jednostavan način moguće izvršiti koristeći funkciju regex_replace koja kao povratnu vrijednost vraća zamijenjeni, a ne originalni tekstualni sadržaj. #include <regex> int main(){ string crt = "\n \n"; //pronadji duplirane riječi i zamjeni ih jednom (npr. Apple Apple -> Apple) string pravilo = "([A-Za-z]+) \\1"; /*([A-Za-z]+)\\ pronalazi dupla slova unutar rijeci, a posto je koristenjem zagrada formirana grupa, onda se broj 1 odnosi na prvu grupu tj. njeno ponavljanje (ako se pronadje rijec Apple ona ce predstavljati grupu, onda bi nakon nje opet trebala doci rijec Apple) posto se zagradama moze definisati vise grupa*/ regex reg(pravilo); string zamijenisa; //tekst za vjezbu string tekst = "FIT Univerziteta " "\"Dzemal Bijedic\" u Mostaru je postao oficijalni Pearson VUE Testing centar." "Pearson VUE (Pearson Virtual University Enterprise) vodeca je medjunarodna" "organizacija za polaganja industrijskih certifikata cije usluge koriste mnoge " "poznate firme i organizacije kao sto su Adobe, Apple Apple IT, Cisco, C++ Institute," "VMware, Symantec, Oracle, Novell, Nokia Solutions and networks, Linux Professional" "Institute, Juniper Networks, CompTIA, Citrix i mnogi drugi."; //zamijeni duple rijeci sa jednom tekst = regex_replace(tekst, reg, "$1"); cout<<crt << tekst << crt; pravilo = "\\bfit\\b";//pronadji rijec FIT reg = pravilo; cout << crt << tekst << crt; //FIT zamijeni sa tekst = regex_replace(tekst, reg, ""); cout << crt << tekst << crt; do{ cout << "Unesite pravilo: "; getline(cin, pravilo); reg = pravilo; cout << "Pronadjeno mijenjate sa: "; getline(cin, zamijenisa); tekst = regex_replace(tekst, reg, zamijenisa); system("cls"); cout << crt << tekst << crt; while (pravilo!= "STOP"); return 0; 18

19 Za vježbu 1. Implementirajte korištenje regular expression-a za definisanje pravila koja će se koristiti prilikom provjere validnosti adrese korištene kao atribut klase. 2. Implementirajte korištenje regular expression-a kako biste sljedeći string-a očistili od html tag-ova i dobili samo tekst. string htmlpage = "<html><head><title>page Title</title></head><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>"; 19

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

Algoritmi i strukture podataka 2. Čas, Uvod u C++

Algoritmi i strukture podataka 2. Čas, Uvod u C++ Algoritmi i strukture podataka 2. Čas, Uvod u C++ Aleksandar Veljković 2017/2018 1 Uvod Jezik C++ je jezik koji pripada objektno orijentisanoj paradigmi, ipak, u okviru ovog kursa naglasak neće biti na

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java 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

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

NIZOVI.

NIZOVI. NIZOVI LINKOVI ZA KONZOLNI C# OSNOVNO http://www.mycity.rs/net/programiranje-u-c-za-osnovce-i-srednjoskolce.html http://milan.milanovic.org/skola/csharp-00.htm Niz deklarišemo navođenjem tipa elemenata

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

4.1 Učitavanje podatka tipa string Učitavanje brojčanih vrijednosti Rad sa dinamičkim objektima... 7

4.1 Učitavanje podatka tipa string Učitavanje brojčanih vrijednosti Rad sa dinamičkim objektima... 7 Java zadaci Zadaci 1. Priprema novog projekta... 1 2. Organizacija klasa u fajlove... 2 3. Ispis vrijednosti u konzolni prozor... 3 4. Učitavanje vrijednosti sa konzolnog prozora... 4 4.1 Učitavanje podatka

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi Ograničenja Ciljevi Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi Generisati i održavati ograničenja u bazi podataka Uvod

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom NISKE (stringovi) u C-u: podsećanje 1. Primer programa koji uvodi niske karaktera terminisane nulom #include main() /* Poslednji bajt niske karaktera s se postavlja na '\0' tj. 0 char s[] = 'a',

More information

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

/*#include <iostream> // Prvi zadatak sa integralnomg ispita /*#include // Prvi zadatak sa integralnomg ispita 27.01.2015 #include using std::setw; using std::cout; const int red(5), kolona(4); void unos(int[]); void ispis(int[][kolona]); float

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Konverzija tipova Konverzija tipova Prilikom komunikacije aplikacije sa korisnikom, korisnik najčešće unosi ulazne podatke koristeći tastaturu.

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } 1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI 1. Enkapsulacija je podataka. skrivanje apstrakcija nasledivanje 2. Unutar deklaracije klase navode se: definicije funkcija clanica prototipovi (deklaracije) funkcija

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

Nizovi. Programiranje 1

Nizovi. Programiranje 1 Nizovi Programiranje 1 VB Nizovi Zamislite da imate 10,000 šešira i da morate svakome od njih dati jedinstvenu oznaku. Kako biste to napravili? Bilo bi razumno svakom šeširu dati njegov broj. Sada možete

More information

Programski jezik JAVA PREDAVANJE

Programski jezik JAVA PREDAVANJE Programski jezik JAVA PREDAVANJE 8 2018 www.etf.ac.me Polja za potvrdu i Radio tasteri Polja za potvrdu i radio tasteri nijesu uzajamno isključivi, što znači da ako imate pet polja za potvrdu u jednom

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB 10 th International Scientific Conference on Production Engineering DEVELOPMENT AND MODERNIZATION OF PRODUCTION KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama 8. NIZOVI Niz je indeksirani skup podataka - elemenata niza. Niz se deklarira imenom iza kojeg se u uglatim zagradama zapisuje broj elemenata niza, a ispred imena se zapisuje tip elemenata. // deklaracija

More information

Zadaci za Tutorijal 2.

Zadaci za Tutorijal 2. Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Tutorijal 2 Zadaci predviđeni za rad na laboratorijskim vježbama uz pomoć tutora Akademska godina 2013/14 Zadaci za Tutorijal 2. NAPOMENA:

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/

Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Razmotrimo malo pažljivije generičku funkciju IspisiNiz čiji je cilj podrška ispisa na ekran elemenata niza proizvoljnog tipa elemenata (pod uvjetom da se ti elementi mogu ispisivati na ekran), a koju

More information

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end; {*Na Evroviziji je ucestvovalo n izvodjaca. Koji od njih je osvojio najvise glasova publike?*} program Evrovizija; glasovi:array[1..50] of integer; max,k:integer; writeln('unosi se broj izvodjaca:'); writeln('unose

More information

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME I PISMENI ZADATAK III6 I GRUPA IME I PREZIME 1.1.Pronaci najveći i najmanji element unete matrice dimenzija n x m i mesto na kome se nalaze. Korististi 2.1. Na osnovu unete matrice A (nxn) celih brojeva

More information

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb,

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, Case Study Hrvatska pošta: Korisničko iskustvo iz snova Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, 27.12.2018. Sadržaj Hrvatska pošta prije projekta Izazovi projekta Tehnologije korištene

More information

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2 Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe,

More information

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Stipe Gorenjak, Kineziološki fakultet Sveučilišta u Zagrebu e-mail: stipe.gorenjak@kif.hr Sponzori Ugasite mobitele. Hvala.

More information

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju Staša Vujičić Čas 9 Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju sve od početka. Odgovarajuće funkcije

More information

16. Sigurnije programiranje

16. Sigurnije programiranje 16. Sigurnije programiranje 16.1 Pretvorba tipova Pretvorba realnog broja u cijeli broj se može izvršiti naredbama: int i; double d; ili: i = (int) d; i = int(d); U cilju bolje kontrole pretvorbe tipova

More information

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I 1. Definicija svake klase sadrzi kljucnu rec iza koje se navodi ime klase: class public extends 2. Kada je funkcija clanica definisana izvan

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom U ovoj vježbi trebate dodati sljedeće view-ove u OnlineVrijednosnice aplikaciju: Details view za Graf model objekte ovaj view će prikazivati

More information

[] znači opciono; znači ili. Strana 3 od 5

[] znači opciono; znači ili. Strana 3 od 5 Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 2-1 Columns Characters and Rows Concatenation (pridruživanje) stanje povezanosti kao kod lanca; unija

More information

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme INFOTEH-JAHORINA Vol. 12, March 2013. Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme Igor Dujlović Elektrotehnički fakultet Banja Luka Banja Luka, BiH dujlovic@gmail.com Zoran Đurić Elektrotehnički

More information

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n. Rekurzivne metode Rekurzivan metod je onaj metod koji u nekoj svojoj instrukciji sadrži poziv samog sebe. Svakako prilikom kreiranja rekurzivnog metoda moramo voditi računa da ne dodje do beskonačne rekurzije

More information

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA SPECIFIKACIJA BAZE PODATAKA ZA PROJEKAT NAZIV_PROJEKTA Veb knjižara - Specifikacija baze podataka 1 10.04.2017. Verzija V 1.0 Datum: 20. mart 2017. Istorija

More information

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje. Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje Milica Ćirić Ciklična algoritamska struktura Ciklična struktura (petlja)

More information

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Uputa za instaliranje programske potpore za operativni sustav WINDOWS ZABA SignErgy Desktop aplikacija Uputa za instaliranje programske potpore za operativni sustav WINDOWS SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE

More information

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5

Lab. vježba PROGRAMIRANJE ZA INTERNET. Upute za laboratorijske vježbe. (izradio: Marin Bugarić) HTML5 Lab. vježba 5 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić) HTML5 P R O G R A M I R A N J E Z A I N T E R N E T Općenito HTML5 je posljednja verzija HyperText Markup

More information

... ; ako je a n parno. ; ako je a n neparno

... ; ako je a n parno. ; ako je a n neparno Zadaci vezani za ciklus sa preduslovom (WHILE) Zad. Napisati program za izračunavanje n_tog stepena broja a. Zad2. Napisati program za izračunavanje sume S kvadrata parnih i kubova neparnih prirodnih brojeva

More information

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu: Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 7-1 Oracle Equijoin and Cartesian Product Prethodna sekcija se bavila upitima preko više od jedne tabele

More information

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici 7-8 Definicija, inicijalizacija promenljivih 2/21 u C-u Program napisan u programskog

More information

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Packages Reference objekata Inheritance nasljeđivanje Exceptions Packages API Application Programmer Interface Sve klase ponuđene u sklopu Java jezika, uključujući i kompajler

More information

Nasleđivanje i izvedene klase u jeziku C++

Nasleđivanje i izvedene klase u jeziku C++ Tema 08 Nasleđivanje i izvedene klase u jeziku C++ dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za informatiku i računarstvo - Tehnički fakultet OBJEKTNO ORIJENTISANO PROGRAMIRANJE 2016/2017

More information

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end. For 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} for i:=1 to 5do writeln(i); 2) program ispis; {ispisuje brojeve od 5 do 1 jedan ispod drugog} for i:=5 downto 1 do writeln(i); 3) program

More information

Instalacija i podešavanje računara, sa WindowsXP OS-om, za pristup Internetu preko modemskih linija RCUB-a

Instalacija i podešavanje računara, sa WindowsXP OS-om, za pristup Internetu preko modemskih linija RCUB-a Instalacija i podešavanje računara, sa WindowsXP OS-om, za pristup Internetu preko modemskih linija RCUB-a Podešavanje Dial-Up Networking-a Ovo podešavanje se vrši iz Control panel-a (Start - Settings

More information

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

public static void main(string []args) { System.out.println(Hello World); /* prints Hello World */ Java Uvod Hello world primer Java program predstavlja skup objekata koji prozivaju jedni drugima metode i tako komuniciraju. Izvorni kod se uvek čuva u datotekama sa ekstenzijom.java. Ispod je predstavljen

More information

TEHNIKA I INFORMATIKA U OBRAZOVANJU

TEHNIKA I INFORMATIKA U OBRAZOVANJU TEHNIKA I INFORMATIKA U OBRAZOVANJU Konferencija 32000 Čačak 9-11. Maja 2008. UDK: 004 : 371 Stručni rad VEZA ZAVISNOSTI ACCESS Momčilo Vujičić 1, Munir Šabanović 2 Rezime: U radu je opisana veza zavisnosti

More information

PROGRAMIRANJE. Objekt-orjentirano programiranje (OOP)

PROGRAMIRANJE. Objekt-orjentirano programiranje (OOP) PROGRAMIRANJE Amir Hajdar 2 Objekt-orjentirano programiranje (OOP) Objekt je kolekcija podataka i operacija koje se mogu vršiti nad istim Klasa je opis (specifikacija) objekta abstraktni pojam! Objekti

More information

PRIJEMNI ISPIT IZ INFORMATIKE

PRIJEMNI ISPIT IZ INFORMATIKE PRIRODNO-MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Petak,04.09.2015 PRIJEMNI ISPIT IZ INFORMATIKE PITANJA I ZADACI IZ INFORMATIKE 1. Kombinacija tastera Ctrl+C koristi se u Windows aplikacijama

More information

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera 6 8 Cloud usluge 6 9 Aktivni servisi koji nijesu u

More information

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena. Dežurni nastavnik: Elektrotehnički fakultet u Beogradu Katedra za računarsku tehniku i informatiku Predmet: Testiranje Softvera (SI3TS) Nastavnik: doc. dr Dragan Bojić Asistent: dipl. ing. Dražen Drašković

More information

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne. 1. MATLAB UVOD Matlab predstavlja vrlo razvijen skup alata za računanje (matrice, kompleksni brojevi, simbolička matematika), vizualiziranje (2D i 3D), modeliranje, simulaciju i programiranje. Karakterizira

More information

Cjenovnik usluga informacionog društva

Cjenovnik usluga informacionog društva Cjenovnik usluga informacionog društva Verzija: 01/2018 Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera

More information

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ URL: nikola.milikic.info

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ   URL: nikola.milikic.info RDF, RDFS i JSON-LD NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: nikola.milikic.info Linked Data Linked Data predstavlja mrežu podataka koji su opisani na način da ih mogu razumeti mašine (koristeći

More information

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE) Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE) SISTEMI ZA PODRŠKU ODLUČIVANJU dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za računarstvo i informatiku 2013/2014 Tema 8:

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

Rad sa MySQL bazom podataka

Rad sa MySQL bazom podataka 13. PHP 4.dio Rad sa MySQL bazom podataka M. Zekić-Sušac 1 Što je MySQL? MySQL je relacijska baza podataka. Relacijski model podrazumijeva određenu strukturu podataka, pohranjenu u tablice. Jedna baza

More information

Korisničko uputstvo za instalaciju i podešavanje securew2 programa za pristup eduroam servisu

Korisničko uputstvo za instalaciju i podešavanje securew2 programa za pristup eduroam servisu Korisničko uputstvo za instalaciju i podešavanje securew2 programa za pristup eduroam servisu Termin supplicant se koristi u IEEE 802.1X standardu. U širem značenju, ovaj termin predstavlja entitet (korisnik

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi Miljan Milošević C++ FUNKCIJE, STRINGOVI, IMENSKI PROSTOR, UPRAVLJANJE MEMORIJOM I FAJLOVI 01 02 03 04 Uvod Reference Funkcije u

More information

BAZE PODATAKA. SQL Opis podataka. Neđeljko Lekić Irena Orović

BAZE PODATAKA. SQL Opis podataka. Neđeljko Lekić Irena Orović BAZE PODATAKA SQL Opis podataka Neđeljko Lekić Irena Orović www.etf.ac.me U OVOJ LEKCIJI SQL SQL jezik SQL, relacioni model i E/R diagram CREATE TABLE Kolone Primarni ključevi Spoljnji ključevi DROP TABLE

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

HTML, CSS i JavaScript

HTML, CSS i JavaScript Tehnologije za Web HTML, CSS i JavaScript HTML, CSS i JavaScript su jezici koji se koriste pri pravljenju interaktivnih web sajtova. Ovi jezici dopunjuju jedan drugog, i zbog toga se često koriste zajedno.

More information