Osnovni programiranja I
|
|
- Egon Vasiljević
- пре 5 година
- Прикази:
Транскрипт
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]
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ć projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,
Више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
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
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
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]
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
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 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ć 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
Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ
Више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 demonstrirana upotreba konstruktora, svojstava, metoda klase,
Више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
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
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
ПРОЈЕКТОВАЊЕ МАКРОАСЕМБЛЕРА Макроасемблер Потребна проширења асемблера 1 МАКРОАСЕМБЛЕР Макроасемблер преводи полазни програм написан на макроасемблерском језику у извршиви машински програм. Приликом израде
ВишеПрограмирај!
Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком
Више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ć 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 Š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
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]
Организација извршног програма (Марић, Јаничић: Програмирање 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 Brkić SI 29/15 Zrenjanin 2018. Softversko inženjerstvo
Више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
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]
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
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, 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 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
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]
Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)
ВишеMicrosoft PowerPoint - 03-Slozenost [Compatibility Mode]
Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба
Више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
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 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 CILJ VEŽBE Cilj ove vežbe je da se studenti kreiranjem
ВишеMicrosoft PowerPoint - Datoteke [Compatibility Mode]
Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније
Више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ć 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
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.
ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља 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 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
Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик 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 korake. Uz dobro razrađen algoritam neku radnju ćemo
ВишеP9.1 Dodela resursa, Bojenje grafa
Фаза доделе ресурса Ова фаза се у литератури назива и фазом доделе регистара, при чему се под регистрима подразумева скуп ресурса истог типа. Додела регистара променљивама из графа сметњи се обавља тзв.
ВишеMicrosoft Word - Lekcija 11.doc
Лекција : Креирање графова Mathcad олакшава креирање x-y графика. Треба само кликнути на нови фајл, откуцати израз који зависи од једне варијабле, например, sin(x), а онда кликнути на дугме X-Y Plot на
Више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_
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
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
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
УВОД Д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]
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 dimenzije m n, b Z m, c Z n. Takođe, očekuje se da
ВишеШкола Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова
Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР јединице 1. 1. Увод у информатику и рачунарство 1. 2. Oрганизација података на рачунару 1. 3. Рад са текстуалним документима 1. 4. Форматирање
Више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, 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,
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
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 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
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]
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
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 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 od tih jezičkih razlika su: Java kod se prevodi u.class
Више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
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 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 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
Пројекат из предмета Интернет програмирање за августовски и септембарски испитни рок школске 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 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
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 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 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ć
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
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
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ć 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
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: 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
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
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: http://www.srpskiarhiv.rs/ Након тога се на екрану појављује форма за пријаву на часопис
Више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
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 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
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
[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]
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
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 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 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
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 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 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
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
Избор инструкција (1/2) Машинска инструкција се може приказати као део стабла међукода, који се назива шаблон стабла (енгл. tree pattern). Избор инструкција је проблем поплочавања стабла међукода минималним
ВишеРачунарска интелигенција
Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic
Више