Osnovni programiranja I

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

Download "Osnovni programiranja I"

Транскрипт

1 Objektno orjentisano programiranje Uvod u objektno orjentisano programiranje (OOP) Koncepti OOP. Razlike C i C++.

2 Softver Obični korisnik Porast procesorske moći računara i pojeftinjenje komponenti omogućili su da niskobudžetni korisnici mogu da priušte sebi računare za posao i zabavu. Softveri za obične korisnike morali su da budu pisani na osnovu strategije odbrambenog programiranja (trebalo je predvidjeti korektivnu akciju za svaku glupost koji ovi korisnici pokušaju) i morali su da se izvršavaju interaktivno (na osnovu nekih intuitivnih predstava) jer se ovi korisnici nijesu mogli natjerati da pamte naredbe ili složene procedure (ili nijesu htjeli da plate za takve softvere). Da stvar bude gora, obični korisnici su kada su shvatili moć računarskih sistema počeli da postavljaju sve veće i veće zahtjeve.

3 Softver Proizvođač softvera Da bi proizvođač softvera zaradio mora da izađe u susret zahtjevima korisnika (u suprotnom, preoteće mu ih drugi proizvođač). To znači da su softverske firme morale da brzo proizvode nove verzije softvera. Brzo iz dva razloga: da bi što prije izašle u susret korisničkim zahtjevima i da bi što manje platile programere (na zapadu programeri rade po satnici). Kako su softveri bivali sve komplikovaniji i komplikovaniji to su nove verzije morale polaziti od koda stare verzije i na osnovu prepravki se dolazilo do nove verzije.

4 Softver - Sadržaj Programski moduli koji su sačinjavali softvere su prevashodno bile funkcije. Podaci nad kojima su funkcije operisale bili su po pravilu strukture (samo struktura može da predstavi složeniji podatak: radnika, studenta, prozor u grafičkom okruženju, grafik itd.). Svaka funkcija koja je radila sa strukturama morala je da zna na koji je način struktura napravljena (od čega se sastoji). E tu leži zec...

5 Softver - Prepravke Prepravke softvera su bile komforne dok se prepravljaju funkcije, ali kada se prepravi jedna struktura, to je značilo da se moraju prepraviti sve funkcije koje komuniciraju sa tom strukturom, tj. koriste je. Svaka prepravka funkcije se morala testirati. Najveći problem je to što prepravka strukture dovodi do nelokalizovanih prepravki programa, odnosno najvjerovatnije indukuje prepravku kompletnog programa! Jedna prepravka indukuje mnoštvo drugih prepravki, a svaka prepravka znači mnogo testiranja. Programeri su svoje korisno vrijeme trošili, ne na pisanje programa, već na njihovo testiranje!!!

6 Softverska kriza Da bi zaradile, softverske kuće su na tržište iznosile programe koji nijesu bili dovoljno testirani i ti programi su imali mnogo grešaka (bugs). Kupci nijesu željeli da kupuju takve softvere ili su tražili povraćaj uloženog novca. Mnoštvo softverskih firmi je propalo. Postalo je jasno da uskoro nijedna firma neće moći da proizvede iole ispravan softver za dato vrijeme. Ovaj događaj se naziva softverskom krizom. Krajem 80-tih jedna grupa programera na čelu sa Bjarne Stroustrupom dobila je zadatak da prepravi softver za telefonsku centralu.

7 Rješenje softverske krize Grupa je radila za AT&T Bell. Stroustrup je uočio da zadatak prepravke softvera (pisan u C-u, kao i 90% sistemskog softvera tada) nije moguće obaviti u datom vremenu, na datom kompajleru i sa datim ljudstvom. Stoga je potražio nove koncepte na kojima bi se softver mogao realizovati. Tada su već postojali (više od 10 godina) objektno-orjentisani (OO) jezici (primjer je Smalltalk), ali nijesu bili popularni zbog složenosti. Stroustrup je došao na spasonosnu ideju: nakalemiti OO koncepte na postojeći (C) kompajler. Dobio je kombinaciju jednostavnosti i moći alatke kojom je riješio svoj problem (pišući novi kompajler), ali i čitavu softversku krizu.

8 OOP (programiranje) - Koncepti Stroustrup je postigao da OOP nije zamjena za strukturno programiranje, već njegovo proširenje. Tokom vremena ćemo naučiti da je ovo proširenje ogromno i da zasjenjuje mnogo toga što smo do sada učili. Ovdje ćemo pomenuti samo osnovne koncepte OOP koje ćemo na primjeru programskog jezika C++ učiti do kraja kursa. Enkapsulacija. Ovo je najvažniji OO koncept. Ovaj koncept omogućava da se način realizacije djelova koda (zapravo, korisničkih tipova podataka) sakrije od korisnika (u kapsulu koja se naziva klasa). Prepravke unutar klase nemaju uticaj na ostatak koda, jer ostatak koda nije nikada znao kako je klasa bila realizovana. Na ovaj način, prepravljanje koda je lokalizovano, čime se podržava reusability (ponovno korišćenje) programa.

9 OOP - koncepti Ponekad se kaže da su u programiranju najvažnije tri stvari: reusability, reusability i reusability, odnosno mogućnost ponovnog korišćenja koda. Apstrakcija. Ovo je prvi koncept po svojoj logici. Apstrakcija je modelovanje dijela problema razmatranjem odgovarajućeg tipa podataka. Npr. ako je program vezan za rad studentske službe, Student je dio problema i taj problem treba riješiti modelovanjem Studenta. Taj model se kreira kao tip podataka (klasa), odnosno tip podataka nam je dio rješenja problema. Ovo je jedan od elemenata OOP veliki dio problema se rješava u okviru modela podataka.

10 OOP Koncepti Nasljeđivanje. Kreirali smo jednu klasu, recimo -Student. Međutim, sistem posjeduje i podatke tipa Diplomac, koji su različiti unekoliko od ove klase. Jedan način rješavanja problema je da realizujemo dvije klase sa gotovo istim operacijama koje se sa njima mogu vršiti. Ovo je loše, jer ako je bilo koja operacija loše realizovana mi prepravke moramo obaviti na više mjesta u kodu, čime se gube neke dobre strane OOP, a to je lokalizovano prepravljanje grešaka. Umjesto toga, mi možemo reći da klasa Diplomac (naziva se izvedenom klasom) nasljeđuje sve iz klase Student (naziva se osnovnom klasom) uz neke dopune i izmjene.

11 OOP Koncepti Prijateljstvo. Više klasa može da radi na rješavanju istog problema. Ponekad postoji potreba da one na neki način razmjenjuju podatke. Da bi se izbjeglo ugrožavanje enkapsulacije (odnosno situacija da klasa svima dozvoli uvid u svoju realizaciju) uvodi se koncept prijateljstva, po kome klasa samo određenim klasama (i funkcijama) može dozvoliti pristup svojoj realizaciji. Preklapanje operatora. OOP i C++ dozvoljavaju da se značenje standardnih operatora predefiniše za klasne tipove podataka. Nema potrebe da naglašavamo koliko je pogodnije i prihvatljivije zapisati sabiranje vektora kao a+b nego preko uvođenja funkcije koja bi ovo sabiranje obavila.

12 OOP Koncepti Polimorfizam. Ovo je jedan od najsloženijih (i najmoćnijih) koncepata OOP. Jedan dio koda u OOP može da se ponaša različito u zavisnosti od toga na kakve se podatke primjenjuje. Koncept je složen i realizuje se preko: preklapanja funkcija, nasljeđivanja (posebno koncepta virtuelnih funkcija) i preko šablona klasa i funkcija. Koncept ćemo detaljno razmatrati kad za to dođe vrijeme. Izuzeci. U programiranju, izuzetak je događaj koji se može predvidjeti, a ne može izbjeći (nema papira, djeljenje sa nulom, itd.). OOP i C++ dozvoljavaju obradu izuzetaka tako što definišu mogućnost postojanja programske prečice između mjesta gdje nastaje izuzetak i mjesta gdje se on obrađuje.

13 Organizacija II dijela kursa Nakon ovog kratkog uvoda, prelazimo na izučavanje koncepata koje je C++ dodao na programski jezik C (naročito na verzije prije 1999), a koji nijesu strogo objektne prirode. Nakon toga učimo koncepte OOP u programskom jeziku C++. Računske i laboratorijske vježbe prate predavanja.

14 Razlike C i C++ neobjektne prirode Gornji naslov nije baš najprecizniji, jer ćemo uvesti i neke objektne koncepte koje tako nećemo predstaviti. Takođe, nakon neke od navedenih razlika su inkorporirane u C. C++ posjeduje sve ključne riječi C-a. Može se shvatiti kao prošireni ili poboljšani C. Svaki ispravno napisan C program može se kompajlirati na svakom C++ kompajleru. Prva razlika koju uvodimo je kod deklaracije promjenljivih. C++ doživljava programsku petlju kao ispravan početak bloka naredbi, tako da je dozvoljeno deklarisati promjenljivu u programskoj petlji, npr.: for(int i=0;i<100;i++) /*...*/ Doseg ovako uvedene promjenjive je do kraja tijela for petlje {}. Napomena: Većina C++ kompajlera dozvoljava deklaraciju promjenljive bilo gdje u bloku naredbi prije prve upotrebe promjenljive (ne ekskluzivno na vrhu kao u C-u), ali ne treba zloupotrebljavati ovu mogućnost.

15 Razlike kod funkcija Neobjektne razlike C-a i C++ su najveće u dijelu priče o funkcijama. Postoje tri dodatka koja čine funkcije u C++ fleksibilnijim i na neki način boljim od onih u C-u: Inline funkcije (prije C99); Podrazumijevani argumenti Preklopljanje funkcija (function overloading) Vidjeli smo da u izvršavanju programa učestvuju: alokacioni zapis (koji čuva podatke o tekućoj aktivaciji dijelu koda koji se trenutno izvršava) i stek (na kom se nalaze podaci o aktivacijama koje su pozvale aktivni dio koda). Snimanje podataka na stek i preuzimanje podataka sa steka traje neko vrijeme koje može da bude duže od vremena izvršavanja jednostavnih funkcija.

16 Inline funkcije od C99 Da bi se izbjeglo gubljenje vremena na izvršavanje kratkih funkcija, u C++ je uveden koncept inline funkcije (funkcije ugrađene direktno u kod programa): inline int zbir(int a,int b) {return a+b;} Prethodni primjer predstavlja zaista jednu kratku funkciju čiji bi poziv (i povratak iz funkcije) odnio više vremena nego izvršavanje. Stoga je dodata ključna riječ inline koja znači da se umjesto poziva funkcije vrši postavljanje koda funkcija na svakom mjestu gdje se funkcija poziva. Ovo dovodi do bržeg izvršavanja, ali nešto veće EXE verzije programa. Da se EXE verzija ne bi nepotrebno uvećavala, kao inline se deklarišu samo relativno kratke funkcije.

17 Poboljšanja kod funkcija Ako kompajler iz nekog razloga ne može da kreira inline funkciju, odnosno da je ugrađuje u kod, kreiraće je kao standardnu funkciju. Ostala pravila kod inline funkcija su ista kao i kod standardnih funkcija. Drugi važan koncept uveden kod funkcija u C++, a koji ne postoji u C-u, su podrazumijevani argumenti. Pretpostavimo jednostavan program koji treba da računa težinu tijela na osnovu njegove mase: float tezina(float masa) {return 9.81*masa;} To će dobro raditi u našoj zemlji, ali što ako nam se desi da ponekad proračun vršimo za neku drugu lokaciju (recimo, Meksiko Siti gdje je gravitaciono ubrzanje manje ili za neki treći grad)?

18 Podrazumijevani argumenti f-ja Prethodni problem se može riješiti pisanjem mnoštva funkcija, gdje bi svaka radila sa svojim g ili pisanjem jedne funkcije koja bi imala dva argumenta - masa i g. Drugi način je bolji, ali ne i idealan, jer bi stalno funkciju pozivali kao tezina(m,9.81), odnosno u većini slučajeva se nepotrebno zamarali sa pisanjem 9.81, koje je uobičajeno. C++ dozvoljava sljedeći oblik f-je: float tezina(float masa,float g=9.81) {return g*masa;} Poziv f-je: tezina(m) vraća 9.81*m, a ako se pozove tezina(m,g) vraća g*m. Podrazumijevani (default) argument.

19 Default argumenti - Pravila Dakle, ako se izostavi podrazumijevani argument, onda se uzima podrazumijevana vrijednost iz zaglavlja f-je. Funkcija može imati više podrazumijevanih argumenata, ali svi moraju biti na kraju. Npr. int fun(int a,int b=2,int c=3) {return a+b*c;} Poziv fun(x) se tretira kao fun(x,2,3), a poziv fun(x,y) se tretira kao fun(x,y,3). Najveće unaprijeđenje u pogledu f-ja C++ je ostvario preklapanjem (eng. overloading) imena funkcija.

20 Preklapanje funkcija Mnoge funkcije rade prirodno slične stvari. Recimo, maksimum dva cijela broja je slična funkcija kao maksimum dva realna broja, a ova je slična kao maksimum niza realnih brojeva. U programskom jeziku C smo realizovali funkcije po pravilu jedan problem - jedna funkcija, odnosno (što je gora formulacija) više sličnih problema - više sličnih funkcija. C++ nam dozvoljava da više funkcija koje rade slične stvari nazovemo istim imenom. Taj koncept se naziva preklapanje imena funkcija function overloading. Koja od preklopljenih funkcija će se izvršiti zavisi od argumenata sa kojima je pozvana.

21 Preklapanje imena f-ja - Primjer Kreirajmo tri preklopljene f-je: int max(int a,int b) {return (a>b)? a : b;} float max(float a,float b){return (a>b)? a : b;} float max(float *a,int n) { int max=a[0]; for(int i=1; i < n; i++) return max;} if(a[i]>max) max=a[i]; Poziv max(3,5) poziva prvu funkciju jer postoji potpuno slaganje argumenta, max(2.4,3.1) poziva drugu, dok kod: float x[50]; int n; /*...neke naredbe...*/ max(x,n); poziva treću. Tip podatka float se mnogo manje koristi u C++ u odnosu na double.

22 Razrješenje poziva Prethodni primjer je demonstrirao situaciju kada postoji potpuno poklapanje argumenata pozvane funkcije sa pojedinim njenim realizacijama. Postoji problem što se dešava ako takvog poklapanja nema. Procedura koja se provodi i koja odlučuje koja se funkcija zapravo poziva naziva se razrješenje poziva. Grubo pravilo: za svaku funkciju datog imena broji se koliko ima potpunih preklapanja sa tipovima zadatih argumenata. Ako postoji jedna funkcija koja ima najviše preklapanja poziva se ona, a ako ima više od jedne sa najvećim brojem preklapanja provjerava se koja od njih ima najveći broj preostalih argumenata koji se imlicitnim konverzijama mogu prevesti u tražene argumente. Ako se nađe jedna funkcija - poziva se ona, a ako ima više od jedne sa podjednako kvalitetnim argumentima dolazi do prekida izvršavanja programa i greške usljed dvosmislenosti.

23 Razrješenje poziva Npr. poziv max(2,2.5) će dovesti do greške pošto dvije funkcije imaju po jedno potpuno poklapanje argumenta i jedno koje se standardnim implicitnim konverzijama može izvršiti. Razrješenje poziva se dodatno komplikuje ako imamo funkcije sa podrazumijevanim argumentima. Postupak razrješenja poziva je detaljno analiziran u knjizi od Milićeva na stranama Mi ćemo to ovdje preskočiti. Problem postaje dodatno usložnjen ako kompajler ne prati preporuke ANSI komiteta. Npr. naš kompajler će prilikom poziva max(2,2.5) pozvati funkciju koja prima dva cijelobrojna podatka dok će Borland pozvati funkciju sa dva float-a, jer to doživljava kao bolju situaciju u kojoj ne dolazi do odsjecanja necjelobrojnog dijela prilikom prenosa argumenta.

24 Razrješenje poziva - Savjet Najbolje je da do pomenutih problema u razrješenju poziva i ne dođe. Naime, ako veoma slične funkcije realizujemo kao što smo to uradili sa prve dvije, mi obije operacije možemo odraditi sa drugom funkcijom, koja sa standardnom konverzijom može da primi i argumente koji su cijeli brojevi i da, ako su argumenti cijeli brojevi, vrati rezultat koji je suštinski cijeli broj. Stoga bi u našem sistemu izbrisali prvu funkciju i ne bi imali problem sa razrješenjem. Brižljivim dizajnom funkcija izbjećićete problem tumačenja razrješenja poziva funkcija.

25 Razrješenje poziva Ako funkcije imaju iste argumente, a različit tip rezultata, doći će uvijek do greške u kompajliranju (ili greške u izvršavanju) pošto se te dvije funkcije ne mogu razdvojiti argumentima i nikada se ne može protumačiti koja će se pozvati!!!! Funkcije sa istim imenima moraju se razlikovati barem po jednom argumentu!!! U C-u smo vidjeli da ime funkcije može poslužiti kao njena adresa. To nije bio problem jer je funkcija morala da ima jedinstveno ime i to ime je moglo da se upotrijebi kao pristupna adresa kodu funkcije. U C++ više funkcija može da dijeli isto ime, pa se, recimo, njena adresa mora specificirati i tipom argumenata. Ako je adresa funkcije argument neke druge funkcije, onda se mora slagati po tipu pokazivača (pokazivač na cjelobrojnu funkciju se ne može implicitno konvertovati u pokazivač na neku drugu funkciju), a mora postojati i jedinstvena identifikacija argumenata funkcije. Npr. zaglavlje funkcije koja ima za argument drugu funkciju bi moglo biti: int fja(int (*max)(int,int)).

26 Komentari i konstante Pored komentara u C-u koji počinje sa /* i završava sa */ i može se prostirati preko više redova, C++ ima i komentar oblika // koji važi do kraja reda (nije postojao u C-u prije C99 kada je usvojen iz C++). Kod konstanti nema razlika u sintaksi: const int i=1; predstavlja konstantu čiji pokušaj promjene dovodi do greške u izvršavanju ili kompajliranju. Pored toga, uveli smo već konstantne pokazivače: const int *p; int * const d; const int * const t; U prvoj varijanti p je pokazivač na konstantni cijeli broj. U drugoj varijanti d je konstantni pokazivač na cijeli broj (koji se može mijenjati). U trećoj varijanti i t (pokazivač) i broj na koji t pokazuje su konstantni. Memo tehnika: ukinuti const i protumačiti deklaraciju, vratiti const i pogledati što se nalazi desno od const-a (to je zapravo konstantno).

27 Konstante - Pretprocesor Pa gdje se konstante razlikuju? U upotrebi. U C++ se mnogo više koriste da bi se umanjila upotreba pretprocesora. Ako je argument funkcije const (obično se primjenjuje kod pokazivača) onda ono na što taj argument pokazuje (ili referencira o čemu ćemo kasnije) ne može biti promijenjeno u funkciji, tj. u slučaju promjene dolazi do prekida izvršenja programa Kakve su razlike kod pretprocesora kod C-a i C++? Nikakve (ili gotovo nikakve). Razlika je samo u upotrebi. Osnovna razlika je da se znatno manje koristi makro naredba #define.

28 Upotreba #define Pretprocesorska direktiva #define u C-u je imala tri namjene: markozamjena (npr. #define MAX 100, kojom se svaka pojava MAX u kodu programa prije početka kompajliranja mijenja sa 100. Problem je bila promjena na slijepo, jer se MAXMAX mijenjalo sa , ali i to što se na ovaj način u izrazima gdje se makro MAX pojavljuje ne može vršiti provjera ispravnosti tipova. Umjesto ovoga koristiti globalnu konstantu: const int MAX=100;). makrorazvoj (npr. #define zbir(a,b) a+b koji je svako pojavljivanje makro zbir mijenjao sa odgovarajućim zbirom. Ovo je bio model jednostavne funkcije koja se kompajlirala bez provjere tipova i nosila je niz sitnih problema tipa zbir(x,y)/2 koje je mijenjano sa x+y/2. Umjesto ovoga koristiti inline funkcije koje pored ostalog daju i kontrolu upotrebe tipova podataka: inline int zbir(int a,int b) {return a+b;}

29 Upotreba #define Treća upotreba #define je preživjela: makrodefinicija tipa #define _MAX. Na ovaj način se u program uvodi ime _MAX. Nije pravilo već praksa da imena makroa počinju sa podvlakom. Obično se navodi u biblioteci klasa ili funkcija. Npr. napravimo biblioteku klasa ili funkcija koja koristi prvu biblioteku. Zatim pišemo program koji uključuje obije biblioteke preko naredbe #include. Programer koji koristi biblioteke ne mora da zna kako su one kreirane. Međutim, pošto su funkcije ili klase prve biblioteke uključene i u drugu biblioteku došlo bi do prekida programa jer imamo dva puta definisane funkcije sa istim imenom i istim argumentima (ili dvije klase sa istim nazivom), što nije dozvoljeno.

30 Korišćenje definisanih makroa Programi često imaju pitanja tipa: #ifndef _MAX #include <bibl_sa_max.h> #endif #define ima još neke primjene koje mogu da se koriste i u savremenim C kompajlerima, a standardizovane su tek nakon pojave C++. To su tzv. specijalni tipovi makrorazvoja. Ako makro _MAX nije definisan do sada uključi biblioteku. Selekcije u ovom dijelu uvijek završavaju sa #endif. Podsjetite se i drugih makroselekcija tipa #ifdef (ako je definisan makro), #undef kojom neki makro prestaje da bude definisan itd.

31 Specijalni tipovi makrorazvoja Prvi specijalni tip makrorazvoja je: #define napisistring(x) puts(#x) U programu: napisistring(ssss) se mijenja sa naredbom puts( ssss ). Drugi specijalni tip makrorazvoja je: #define abc(x) R##x##C Kao konačni dodatak priči o pretprocesoru kažimo da savremeni Taraba zapravo znači da se argument makrorazvoja tretira kao string. Argument makroa može služiti za formiranje različitih identifikatora, recimo R1C, R2C itd. kompajleri dozvoljavaju i korišćenje određenih ugrađenih makrokonstanti: DATE (tekući datum; da, u pravu ste, makrou prethodi i za njim slijede dvije podvlake), TIME (tekuće vrijeme), LINE (linija koda), FILE (fajl koji se izvršava).

32 Stringovi Programski jezik C++ dozvoljava neke neobične operacije kod stringova. Npr. dozvoljeno je napisati abc što će rezultirati konkatenacijom stringova abc123. Pored toga, string se tretira kao pravi podatak, a ne samo kao pokazivač na niz karaktera. Ovaj detalj ipak ima dosta veze sa OO orjentacijom C++, ali o tome kasnije. Mnogi kompajleri potiskuju korišćenje niza karaktera kao tzv. stringa sa terminacionim simbolom u korist klasa koje realizuju stringove, ali to ćemo moći da obradimo kasnije u našem kursu.

33 Formatizovani I/O C i C++ imaju osobinu da ulaz/izlaz nijesu sastavni dio definicije programskog jezika. U C-u smo intenzivno koristili stdio.h biblioteku sa naredbama printf i scanf. Ako u C++ radimo sa konzolskim aplikacijama (vjerujte mi da je ozbiljno programiranje 90% rad na konzoli) i dalje možemo da koristimo ovu biblioteku, ali se zbog OO orjentacije preporučuje korišćenje iostream.h. Napominjemo da po standardu C++ nije potrebno naglašavati.h za najčešće korišćene biblioteke u pretprocesorskoj direktivi #include, ali da veći broj kompajlera.h podržava, a neki na tome još uvijek insistiraju.

34 iostream.h Naredbe (nijesu naredbe, ali ih za početak možemo tako zvati) za formatizovani ulaz/izlaz u biblioteci iostream.h su: cin (čita se si-in) i cout (čita se si-aut). cin se koristi za standardni ulaz: cin>>a>>b>>c; Na ovaj način se ono što se unese sa tastature smiješta redom u promjenljive a, b, c koje mogu biti bilo kog tipa podataka uključujući i string (pokazivač na niz karaktera). Znači, ne koristimo adresu kao kod scanf-a i ne objašnjavamo kojeg je tipa podatak ( %d ).

35 Naredba cout Naredba cout se koristi za standardni izlaz: cout<<a<< Neki tekst <<2<<a+2<< \n <<endl; Na ovaj način smo odštampali promjenljivu a, zatim string Neki tekst, broj 2, vrijednost izraza a+2, prešli u novi red i konačno sa endl ponovo prešli u novi red (endl je skraćenica od kraj linije - end of line). Za nekoliko nedjelja shvatićemo da cin i cout nijesu naredbe i da >> i << imaju sasvim specifično značenje.

36 Alokacija i dealokacija Niko nam ne brani da i dalje koristimo naredbe malloc i free iz standardnog zaglavlja alloc.h. Međutim, programski jezik C++ posjeduje naredbe (u stvari operatore ugrađene u jezik za čije korišćenje nije potrebna programska biblioteka ) koje bolje podržavaju OO metodologiju: new (za alokaciju) i delete (za dealokaciju). int *p = new int; //zauzima memoriju za jedan cijeli //broj na koji pokazuje p int *p=new int(3); //isto kao gore, uz inicijalizaciju broja na //koji pokazuje p na cijeli broj 3 int *p=new int[50]; //alocira memoriju za 50 cijelih brojeva, //a p pokazuje na početak niza

37 Alokacija i dealokacija Alokacija je, školski rečeno, obavezno praćena provjerom alokacije, ali, grubo govoreći, savremeni C++ kompajleri dozvoljavaju adresiranje ogromnog adresnog prostora i ako alokacija ne uspije, nema šanse ni da vam ostatak koda dobro radi, jer su vjerovatno gotovo svi sistemski resursi potrošeni. Ipak, uvijek vršite provjeru ispravnosti alokacije. Dealokacija se vrši sa: delete p; //ako je u pitanju podatak na koji pokazuje p delete [] p; //ako je u pitanju niz Često se p postavlja na NULL (ili 0) nakon dealokacije da bi sugerisao ostatku koda da u tom trenutku ne pokazuje na podatak i da ne bi pamtila adresu memorije koja je upravo oslobođena.

38 Reference Naučuli smo: funkcija se može pozvati po vrijednosti (call by value) i po referenci. Naučili smo: programski jezik C ne posjeduje referencu, pa se poziv po referenci simulira preko pokazivača. Stariji programski jezici (recimo Pascal) posjeduju referencu. Programski jezik C++ pored pokazivača posjeduje referencu. Pa što je onda referenca?

39 Referenca u C++ Referenca je drugo ime za neki memorijski objekat (ponekad se naziva alijas, npr. Muhamed Ali alijas Kasijus Klej). Referenca se može koristiti i u dijelu glavnog programa: int &j = i; j = 3; Nakon ovog koda j=3, ali i i=3, jer su to samo dva imena za isti objekat. Uočimo da referenca mora biti inicijalizovana!!! nekim memorijskim objektom, za razliku od pokazivača koji ne mora. Dalje, pristup referenci ne zahtjeva navođenje operatora (nijesmo pisali &j=3).

40 Reference i pokazivači Referenca ne može da promijeni objekat na koji se odnosi, niti da pokaže na NULL objekat. Npr. int i=3; int &j = i, k = 2; //j=3 jer je isto kao i j = k; //i=2 jer je isto što i j i=4; //j=4, ali k i dalje ostaje 2, jer nije to j Referenca se rijetko koristi u programu (jedino ako jedan dio programera koji rade na programu neku promjenljivu zovu na jedan način, a drugi dio na drugi način) već je prevashodna primjena kod funkcija.

41 Reference i funkcije Npr. dio glavnog programa: int a = 2, b = 3; fun(a,b); Neka je funkcija: void fun(int i,int &j) {i++; j++} Očigledno je da se pokazivač i referenca mogu koristiti za slične namjene. Postoje sljedeća pravila: j je u funkciji samo drugo ime za promjenljivu b iz glavnog programa, stoga promjena j u funkciji ima uticaj na promjenu b u glavnom programu. b=4 nakon izvršavanje fun Ako promjenljiva može da pokaže na NULL ili može da promjeni promjenljivu na koju ukazuje koriste se pokazivači. Ako je objekat memorijski zahtjevan treba koristiti referencu jer ne dolazi do kopiranja objekta za potrebe funkcije, već funkcija samo koristi drugo ime za isti objekat da bi mu pristupila. Štedi se i u dealokaciji ovakvih objekata.

42 Referenca kao rezultat funkcije Funkcija može da vrati rezultat koji je referenca. Npr. int &f(int &i) {return i;} Primjer glavnog programa: void main(){int x; f(x)=1;} Ova oznaka znači da funkcija vraća kao rezultat memorijski objekat koji mora biti alociran u pozivajućem modulu (recimo u glavnom programu). Ovo je nevjerovatan poziv. Suprotno onome što smo do sada učili, funkcija (njen rezultat) može biti na lijevoj strani ako funkcija vraća referencu. U ovom slučaju funkcija vraća argument funkcije (x) i to stvarni objekat tako da je rezultat ove operacije x=1;. Za sada je ovo samo atrakcija, ali ćemo ovo upotrebljavati dosta kasnije u našem kursu. Već za nekoliko nedjelja koristićemo rezultat koji je referenca da bi uštedjeli na kopiranju objekata prilikom vraćanja rezultata.

43 Reference Dodatna pravila Ne može se deklarisati: referenca na referencu; referenca na polje bitova; referenca na void; pokazivač na referencu.

44 switch-case - enum U C-u, argument naredbe switch mogao je biti samo cijeli broj (ili cjelobrojni izraz ili nešto što se može konverzijama dovesti do cijelog broja). U C++ argument naredbe switch može biti bilo koji tip podatka. Nabrajanje (enumeracija) ima istu strukturu i ista pravila kao u C-u. Npr. enum color {bijelo=0, crno=7, zeleno=3, plavo=1}; Osnovna razlika je da ime nabrajanja koje po pravilu nijesmo ni navodili ni koristili u C-u (u ovom slučaju color) ovdje po pravilu navodimo i često koristimo. Naime, color je sada pored skupine cjelobrojnih konstanti i pravi tip podatka (moguće je deklarisati color a;) koji može uzeti samo navedene vrijednosti i koji može biti argument i rezultat funkcije: color fun(color x,int a){/**/}.

45 exit i abort Funkcija exit (standardno zaglavlje stdlib.h) zatvara sve otvorene fajlove i vraća cjelobrojnu konstantu kao rezultat operativnom sistemu. U C++ ova funkcija pored prekidanja programa i navedenih operacija poziva funkciju atexit na koju može da utiče programer. Alternativno može se koristiti funkcija abort koja prekida izvršavanje programa bez mogućnosti intervencije i bez obavještavanja OS-a. Ovim smo završili pregled razlika prevashodno neobjektne prirode između C-a i C++-a. Od naredne nedjelje uplovljavamo u vode OOP.

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

Више

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,

Више

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

Више

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 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

Више

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*

Више

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

Више

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

Више

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

Више

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

Више

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 Александар Картељ

Више

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

Више

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 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

Више

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

Више

070-ALIP2-udzbenik.indb

070-ALIP2-udzbenik.indb 0. U uvodnom ćemo poglavlju ponoviti osnove programskog jezika C s kojima smo se susreli u. razredu. U kratkom pregledu navedeni su operatori (aritmetički, relacijski i logički), neke od funkcija iz biblioteka

Више

P1.3 Projektovanje makroasemblera

P1.3 Projektovanje makroasemblera ПРОЈЕКТОВАЊЕ МАКРОАСЕМБЛЕРА Макроасемблер Потребна проширења асемблера 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

Више

Grananje u programu predavač: Nadežda Jakšić

Grananje u programu predavač: Nadežda Jakšić Grananje u programu predavač: Nadežda Jakšić u okviru linijske strukture izvršavaju se sve naredbe u okviru razgranate strukture uvek se ispituje neki uslov; u zavisnosti od toga da li je uslov ispunjen

Више

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

Више

Računarski praktikum I - Vježbe 01 - Uvod

Računarski praktikum I - Vježbe 01 - Uvod Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović Gradivo i način polaganja Gradivo: osnove jezika

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

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

Више

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

Више

Programski jezik C

Programski jezik C SPR, 2016 Rad sa datotekama Komunikacija sa OS Rad sa datotekama Vrste datoteka Otvaranje / zatvaranje datoteka Pristup datotekama za upis / čitanje Funkcije za rad sa datotekama Ulazno / izlazni tokovi

Више

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)

Више

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

Више

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

Више

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, 5.06.019. godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekstenzija se najčešće koristi za tekstualne datoteke? a)

Више

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.

Више

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

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

Више

Programski jezik C

Programski jezik C Pojam funkcije Deklaracija i definicija funcije Poziv funkcije Memorijske klase promjenljivih Primjeri. Za kompajliranje koda koristen DEV-C++ 4.9.9.2 Compiler!!!! Moze is koristiti I bilo koji drugi standardni

Више

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode] Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)

Више

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

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

Више

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

Више

Pojačavači

Pojačavači Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici dr Dejan S. Aleksić, vanredni profesor Kabinet 307 (treći sprat), lab. za elektroniku

Више

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

Више

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera CILJ VEŽBE Cilj ove vežbe je da se studenti kreiranjem

Више

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode] Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније

Више

P1.0 Uvod

P1.0 Uvod Системска програмска подршка у реалном времену 1 Миодраг Ђукић miodrag.djukic@rt-rk.uns.ac.rs www.rt-rk.uns.ac.rs 1 Системска програмска подршка у реалном времену 1 програмска подршка = софтвер Системски

Више

Strukture predavač: Nadežda Jakšić

Strukture predavač: Nadežda Jakšić Strukture predavač: Nadežda Jakšić složeni tip podatka; kolekcija promenljivih različitog tipa koje su sakupljene radi lakše manipulacije sintaksa: struct [oznakastrukture] navede { definicija člana strukture;

Више

PowerPoint Presentation

PowerPoint Presentation II Karakteristike C jezika Programski jezik C je viši programski jezik opšte namene. Tesno je povezan sa UNIX OS uz koji je razvijan. Razvio ga je Dennis Ritchie 1970 u Bell Telephone Laboratories, Inc.

Више

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

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

Више

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1. I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz 3 2 1 4 5 14 Analiza: 1. Odredimo zbir svih 5 unesenih brojeva (i sačuvamo u

Више

P11.3 Analiza zivotnog veka, Graf smetnji

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

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

P9.1 Dodela resursa, Bojenje grafa

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

Више

Microsoft Word - Lekcija 11.doc

Microsoft Word - Lekcija 11.doc Лекција : Креирање графова Mathcad олакшава креирање x-y графика. Треба само кликнути на нови фајл, откуцати израз који зависи од једне варијабле, например, sin(x), а онда кликнути на дугме X-Y Plot на

Више

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

Више

LAB PRAKTIKUM OR1 _ETR_

LAB PRAKTIKUM OR1 _ETR_ UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET STUDIJSKI PROGRAM: ELEKTRONIKA, TELEKOMUNIKACIJE I RAČUNARI PREDMET: OSNOVE RAČUNARSTVA 1 FOND ČASOVA: 2+1+1 LABORATORIJSKA VJEŽBA BROJ 1 NAZIV: REALIZACIJA

Више

Algoritmi i arhitekture DSP I

Algoritmi i arhitekture DSP I Univerzitet u Novom Sadu Fakultet Tehničkih Nauka Katedra za računarsku tehniku i međuračunarske komunikacije Algoritmi i arhitekture DSP I INTERNA ORGANIACIJA DIGITALNOG PROCESORA A OBRADU SIGNALA INTERNA

Више

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

Више

PowerPoint Presentation

PowerPoint Presentation УВОД Дa би рaчунaри нa мрежи могли међусобно да кoмуницирaју и рaзмeњују пoдaткe, пoтрeбнo je: дa сe увeду ПРOТOКOЛИ (утврђeна прaвилa и процедуре за комуникацију) да постоје АДРEСE кoje су jeдинствeнe

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

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

Више

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР јединице 1. 1. Увод у информатику и рачунарство 1. 2. Oрганизација података на рачунару 1. 3. Рад са текстуалним документима 1. 4. Форматирање

Више

Principi softverskog inženjerstva O predmetu

Principi softverskog inženjerstva  O predmetu Vežbe - IV nedelja Modeli baze podataka Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Potrebno je da: Razumete koncepte modela i njegovu svrhu Naučite kako se odnosi između

Више

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

Више

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

Више

Microsoft Word - SYLLABUS -Dinamicki

Microsoft Word - SYLLABUS -Dinamicki Univerzitet UKSHIN HOTI PRIZREN Fakultet kompjuterskih nauka Nastava na bosanskom jeziku NASTAVNI PLAN - PROGRAM SYLLABUS Akademska Nivo studija Bachelor Departament god. PREDMET Dinamički sadržaj web

Више

Programiranje za UNIX Okruženje unix procesa

Programiranje za UNIX Okruženje unix procesa Programiranje za UNIX Okruženje unix procesa Sadržaj Memorijska slika UNIX procesa Argumenti naredbenog retka i varijable okruženja Životni ciklus procesa Izlazni status procesa 2 Memorijska slika UNIX

Више

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 - 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

Више

SELECT statement basic form

SELECT statement basic form NAZIV OBJEKTA ZNANJA Uvod u JQuery PROLOG Autor * Katarina Kaplarski Klasifikacija * Težina * Osnovni nivo Ključne reči * Ko sluša * Student OAS Trajanje * Komentari autora SADRŽAJ Apstrakt Cilj * Uvodne

Више

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 2 Sadržaj 1 Programski jezik C 5 1.1 Oblast važenja lokalnih promenljivih..........................

Више

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 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 Word - ASIMPTOTE FUNKCIJA.doc

Microsoft Word - ASIMPTOTE FUNKCIJA.doc ASIMPTOTE FUNKCIJA Naš savet je da najpre dobro proučite granične vrednosti funkcija Neki profesori vole da asimptote funkcija ispituju kao ponašanje funkcije na krajevima oblasti definisanosti, pa kako

Више

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj Programiranje 1 5. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanje dodatak p. 1/60 Sadržaj predavanja dodatka Primjeri

Више

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

Више

NAPOMENA: Studenti na ispit donose kod urađenog zadatka

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

Више

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.

Више

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

Више

PASCAL UVOD 2 II razred gimnazije

PASCAL UVOD 2 II razred gimnazije PASCAL UVOD 2 II razred gimnazije Upis-ispis 1. Upis Read(a,b); --u jednom redu Readln(a,b); -- nakon upisa prelazi se u novi red 2. Ispis Write(a,b); -- u jednom redu Writeln(a,b); --nakon ispisa prelazi

Више

QFD METODA – PRIMER

QFD METODA – PRIMER QFD METODA - PRIMER PROBLEM: U kompaniji X koja se bavi izradom kompjuterskih softvera uočen je pad prodaje konkretnog softvera - Softver za vođenje knjigovodstva. Kompanija X je raspolagala sa jednom

Више

Apache Maven Bojan Tomić

Apache Maven Bojan Tomić Bojan Tomić tomicb@fon.rs Kako se pravi Java projekat (build) Osnovni koraci (skraćena procedura bez testiranja) 1)Preuzimanje *.java fajlova sa početne destinacije (obično src folder) 2)Preuzimanje odgovarajućih

Више

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

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

Више

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 Ψ,

Више

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

Више

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić 1. temperatura u stepenima Celzijusa i stepene Farenhajta tf=1.8*tc+32 2. pretvoriti inče u centimetre 1 inč=2.54cm 3. vreme učitano

Више

PowerPoint Presentation

PowerPoint Presentation NAREDBE U PHP-U Naredbe if else elseif/else if while do-while for foreach break continue switch return require include require_once include_once goto If-else if (izraz) uradi 1 else uradi 2 ili if (izraz)

Више

Broj: 01-12/2014 Datum: Direktor preduzeća Phoneco doo, Marko Burgić dipl. Oecc., objavljuje OPŠTE USLOVE USTUPANJA PRAVA NA KORIŠĆENJE POS

Broj: 01-12/2014 Datum: Direktor preduzeća Phoneco doo, Marko Burgić dipl. Oecc., objavljuje OPŠTE USLOVE USTUPANJA PRAVA NA KORIŠĆENJE POS Broj: 01-12/2014 Datum: 01.12.2014 Direktor preduzeća Phoneco doo, Marko Burgić dipl. Oecc., objavljuje OPŠTE USLOVE USTUPANJA PRAVA NA KORIŠĆENJE POSLOVNOG SOFTVERA KONTAKT CENTAR, POSLOVNO INFORMACIONI

Више

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University

Више

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

Више

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese:   Након УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: http://www.srpskiarhiv.rs/ Након тога се на екрану појављује форма за пријаву на часопис

Више

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University

Више

POSLOVNI INFORMACIONI SISTEMI I RA^UNARSKE

POSLOVNI INFORMACIONI SISTEMI  I RA^UNARSKE ZNAČAJ RAČUNARSKIH KOMUNIKACIJA U BANKARSKOM POSLOVANJU RAČUNARSKE MREŽE Računarske mreže su nastale kombinacijom računara i telekomunikacija dve tehnologije sa veoma različitom tradicijom i istorijom.

Више

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

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Datoteke nastavak Funkcija fgets Funkcija koja učitava podatke iz datoteke, liniju po liniju, je char *fgets(char *str, int n, FILE *fp); gdje su str pokazivač na dio memorije (string) u koji će ulazna

Више

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

Више

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

Више

Slide 1

Slide 1 predmet Inženjerska informatika Operativni sistem dr Anica Milošević Koji operativni sistemi postoje? Microsoft Windows Linux Suse Red Hat Ubuntu Unix 26.1.2018. 2 Šta je Windows operativni sistem? Operativni

Више

Programski jezici i strukture podataka

Programski jezici i strukture podataka Programski jezici i strukture podataka 7 ULAZ, IZLAZ I DATOTEKE Ulazno izlazne operacije Programi moraju imati mogućnost da upisuju podatke u datoteke ili da ih ispisuju na izlazni uređaj poput ekrana

Више

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p Programiranje IEEE prikaz brojeva sažetak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog 208, IEEE prikaz brojeva sažetak p. /4 Sadržaj predavanja IEEE standard

Више

PowerPoint Presentation

PowerPoint Presentation Programski jezici i strukture podataka UVOD Izvođači nastave Srđan Popov (JUG 215) Petar Marić (JUG 105) Milena Počuča (JUG 215) Milica Milutinović (JUG 215) Termini konsultacija naknadno Cilj vežbi Sticanje

Више

Objektno orjentirano programiranje

Objektno orjentirano programiranje Objektno orjentirano programiranje Predavanje 1 Uvod Ciljevi Prvi program Konstante i varijable Sadržaj Način provođenja nastave Obaveze studenata Sadržaj kolegija Oblik provođenja ispita Toni Jakovčević

Више

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun Konstrukcija i analiza algoritama Nina Radojičić februar 2018. 1 Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne funkcije od argumenta n iz skupa N prirodnih brojeva.

Више

Teorija skupova - blog.sake.ba

Teorija skupova - blog.sake.ba Uvod Matematika je jedan od najomraženijih predmeta kod većine učenika S pravom, dakako! Zapitajmo se šta je uzrok tome? Da li je matematika zaista toliko teška, komplikovana? Odgovor je jednostavan, naravno

Више

P11.2 Izbor instrukcija, IBURG

P11.2 Izbor instrukcija, IBURG Избор инструкција (1/2) Машинска инструкција се може приказати као део стабла међукода, који се назива шаблон стабла (енгл. tree pattern). Избор инструкција је проблем поплочавања стабла међукода минималним

Више

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

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

Више