Recnik_CPJJ.fm
|
|
- Verica Petrič
- пре 4 година
- Прикази:
Транскрипт
1
2 Reå Reånik termina abstract class apstraktna klasa Apstraktna klasa je klasa koja ne moæe da se koristi za pravàeçe objekata, ali moæe biti korisna za pravàeçe porodice povezanih klasa. Na primer, apstraktna klasa moæe definisati skup opãtih usluga koje ostale klase realizuju definisaçem funkcija. S tehniåke strane, apstraktna klasa je svaka klasa s jednom potpuno virtuelnom funkcijom (engl. pure virtual function) ili viãe takvih funkcija. Potpuno virtuelna funkcija nije definisana u klasi u kojoj je deklarisana, ali moæe biti realizovana u izvedenim klasama. Pogledajte i potpuno virtuelna funkcija (pure virtual function). abstract data types apstraktni tipovi podataka Jedan od zbuçujuñih termina teorije objektno orijentisanog programiraça jeste izraz apstraktni tipovi podataka. Teoretiåari ga vole, ostali lude od çega. 523
3 524 Reånik Pojednostavàeno, apstraktan tip podatka je onaj u kome detaài nisu definisani; oni mogu biti skriveni ili naknadno uneti. Filozofski gledano, pojam seæe do biti objektne orijentisanosti: prvo definiãete veze meœu objektima i klasama, a kasnije se pobrinete za detaàe. U praksi, on nije uvek vaæan, osim u jednom smislu: jezik kao ãto je C++ omoguñuje sakrivaçe detaàa realizacije, tako da tip podatka bude definisan onim ãto radi a ne prema tome kako je napravàen. aggregates agregati Agregati su liste konstanti koje se koriste za inicijalizaciju sloæenih tipova podataka, a pojavàuju se u dva oblika. Prvi vid je skupovni zapis. Skup sadræi elemente koji mogu biti proste vrednosti ili drugi agregati (kao ãto je znakovni niz). Naredna sintaksa znaåi da se skup definiãe vitiåastim zagradama unutar kojih se moæe navesti proizvoàan broj elemenata. {element,[element,]...} Drugi oblik agregata je znakovni literal i on se koristi za inicijalizaciju niza znakova. Sintaksa za neposredno zadavaçe vrednosti znakovnog niza je: "tekst" Na primer, sledeñi iskaz inicijalizuje niz pokazivaåa tipa char*: char *macke[3] = {"Cica", "Cuca", "Ceca"}; U ovom sluåaju, svaki od tri pokazivaåa je inicijalizovan tako da ukazuje na razliåit znakovni niz. U sledeñem primeru nisu inicijalizovani svi pokazivaåi. char *macke[5] = {"Cica", "Cuca", "Ceca"}; To ñe napraviti niz macke od pet pokazivaåa tipa char*; prva tri biñe inicijalizovana tako da pokazuju na znakovne nizove a posledça dva elementa niza podrazumevano ñe dobiti vrednost NULL. Kada se ugneæœeni skupovi koriste za inicijalizaciju sloæenih struktura, svaki ugneæœeni skup inicijalizuje jednu logiåku celinu. Primera radi, sledeña deklaracija inicijalizuje sva tri reda matrice matrica, ali samo prvu polovinu svakog reda. Neinicijalizovani elementi podrazumevano dobijaju vrednost 0. int matrical[3][6] = { {, 2, 3}, {4, 5, 6}, {7, 8, 9} }; Agregati imaju posebnu ulogu u inicijalizaciji nizova bez indeksa. Tada agregat odreœuje koliko prostora treba dodeliti nizu. Na primer, naredna deklaracija zauzima memorijski prostor za ãest elemenata: int brojevi[] = {, 5, 2, 27, 33, 40};
4 Reånik 525 anonymous unions anonimne unije Anonimna je ona unija kojoj nije dodeàeno ime. ANSI standard za C++ dopuãta çihovo koriãñeçe. Kada pristupate ålanu takve unije, ime ålana oznaåava da je on çen deo. Na primer, u deklaraciji: struct paket { char ime[20]; union{ char znaci[20]; double broj; }; } pak; moæe se direktno pristupati elementima pak.znaci i pak.broj, bez navoœeça imena unije. Ograniåeçe ove moguñnosti je ãto koriãñeçe anonimne unije ne sme da dovede do bilo kakve dvosmislenosti. U navedenom sluåaju nema dvosmislenosti, jer je ime razliåito i od znaci i od broj. Detaànija objaãçeça o unijama potraæite na strani 30. argument argument Argument je vrednost prosleœena funkciji ili ãablonu. Na primeru funkcije fact, fact(4) vraña faktorijel broja 4, a fact(5) faktorijel broja 5. Drugim reåima, brojevi 4 i 5 su argumenti. U definiciji funkcije fact, argument moæe biti definisan kao n: long fact (int n) { //... } U nekim kçigama o programiraçu razliåito se koriste termini parametar i argument, da bi se napravila razlika izmeœu deklaracije argumenta (u ovom sluåaju n) i vrednosti prosleœene funkciji (u istom primeru 4 ili 5). U drugima se za to koriste termini formalni argument i stvarni argument. U ovoj kçizi se, radi pojednostavàeça, u oba sluåaja koristi termin argument. Razlikovaçe deklarisanog argumenta i vrednosti argumenta ponekad jeste korisno, ali ima sluåajeva kada ta razlika sve nepotrebno komplikuje. array niz Niz je skup elemenata istoga tipa, u kome se svakom elementu pristupa po indeksu. Deklarisaçem niza moæete i viãe puta da ponovite isti tip. Indeksiraçe nizova je primer dobre upotrebe petài.
5 526 Reånik Deklaracija niza u obliku tip ime[n] pravi niz od ime[0] do ime[n-]. Na primer, ako je deklarisano: int brojevi[3]; to ñe definisati sledeñe elemente u memoriji, od kojih ñe svaki biti ekvivalentan pojedinaånoj promenàivoj tipa int: brojevi[0] brojevi[] brojevi[2] U jeziku C++, kao i u C-u, izmeœu nizova i pokazivaåa postoji bliska veza. Viãe informacija o tome pronañi ñete u poglavàu 3. Zapamtite da je ime niza konstanta. U prethodnom primeru, brojevi je konstanta jednaka adresi elementa brojevi[0]. (Ime niza je konstanta, jer se adresa ne moæe meçati, iako se podaci u nizu mogu izmeniti. Ime niza se izjednaåava sa ovom adresom i stoga ne moæe biti promeçeno. Meœutim, pokazivaå na podatke u nizu moæe se proizvoàno meçati.) Pogledajte i multidimensional array viãedimenzionalni niz. assignment operators operatori dodele Dodela smeãta vrednost u promenàivu (kao u izrazu x=). U jezicima C i C++ postoji veliki broj operatora dodele. Veñina çih, poput += i -=, izvrãavaju neke druge operacije pre dodele. Izuzetak je uobiåajeni operator dodele (=), koji se, u nedostatku boàeg imena, moæe nazvati jednostavna dodela. C i C++ nemaju posebnu vrstu iskaza koja se koristi iskàuåivo za dodelu, veñ je dodeàivaçe samo joã jedna vrsta izraza i moæe se pojaviti unutar veñeg izraza. Od dodeàivaça, kao i od svih izraza, moæete da napravite iskaz dodavaçem taåke i zareza. x = y; Svim operatorima dodele zajedniåko je to ãto meçaju vrednost levog operanda. Zato taj operand mora biti lvrednost : to je izraz, poput zasebne promenàive, koji ima posebnu, vaæeñu adresu u memoriji. (Pogledajte odrednicu lvalue lvrednost.) Lvrednost je obiåno promenàiva, ali moæe biti i element niza ili podatak ålan objekta. U poglavàu 2 pronañi ñete viãe informacija o dodeli. U tabeli 2 na strani 44 nabrojani su svi operatori dodele. association asocijativnost Asocijativnost operatora odreœuje redosled izvrãavaça operacija kada su operatori istoga prioriteta. (Pogledajte objaãçeçe termina precedence prioritet.)
6 Reånik 527 Na primer, poãto sabiraçe (+) i oduzimaçe (-) imaju isti prioritet, zapitañete se kako da izraåunate sledeñi izraz: kolicina = n Po sintaksi, sabiraçe i oduzimaçe su asocijativni sleva nadesno (krañe: levo asocijativni), pa je stoga ovaj izraz ekvivalentan izrazu: kolicina = (0 5) + n ãto daje drugaåiji rezultat od izraza: kolicina = 0 (5 + n) // kolicina = 5 + n // kolicina = 5 n Asocijativnost ñete lako i sami utvrditi. Svi operatori u C++-u su levo asocijativni, osim operatora dodele, unarnih operatora i operatora uslovàavaça (?:). Kada se dvoumite, pogledajte tabele i 2 (str. 44), u kojima su prikazani prioritet i asocijativnost operatora. Korisno je da zapamtite da su asocijativnost i prioritet u raåunarskim jezicima isti kao u aritmetici. base class osnovna klasa Osnovna klasa prenosi ålanove izvedenoj klasi. Primera radi, ako je klasa B osnovna klasa klase C, onda su svi ålanovi klase B automatski i ålanovi klase C. Ova veza je primer nasleœivaça u C++-u. Osnovna klasa se ponekad zove natklasa (engl. superclass) ili roditeàska klasa (engl. parent class). Viãe informacija o tome potraæite u poglavàu 5. base-class constructor konstruktor osnovne klase Konstruktor osnovne klase (ako postoji) moæe da se pozove iz konstruktora potklase. To je posebno korisno ako u osnovnoj klasi postoje privatni ålanovi, jer oni drugaåije ne bi mogli ni da budu inicijalizovani. Sintaksa je, uopãteno, ovakva: klasa::klasa(argumenti) : osnovna_klasa(argumenti) { iskazi } Pretpostavimo da je klasa CSportsCar izvedena iz klase CAuto. Sledeñi primer pokazuje kako se poziva konstruktor osnovne klase. U çemu su argumenti h i m prosleœeni konstruktoru klase CAuto. CSportsCar::CsportsCar(double h, CStr m, double a) : CAuto(h, 2, m) { } accel_0_60 = a; stripes = 0;
7 528 Reånik Inicijalizacione vrednosti h i m zajedno s konstantom 2 prosleœene su konstruktoru osnovne klase CAuto. Potpuniji opis ovog primera nalazi se u posledçem odeàku poglavàa 6. binary mode binarni reæim Binarni reæim je jedan od dva reæima ulazno-izlaznih operacija u kojima moæete otvoriti datoteku. Prilikom åitaça ili pisaça u binarnom reæimu, podaci se ne prevode, nego im pristupate kakvi su u datoteci. Suprotno tome, u tekstualnom reæimu se znakovni nizovi upisuju uz prevoœeçe svake oznake za kraj reda (jedan znak u memoriji) u par znakova: kraj reda/prelazak u novi red (engl. carriage-return/linefeed). Druga moguñnost binarnog reæima koju programeri obiåno (ali ne uvek) koriste jeste direktno åitaçe i pisaçe numeriåkih vrednosti, a ne kao niza tekstualnih znakova koji predstavàaju vrednost. Kada koristite funkcije biblioteke stdio, vrednosti åitate i piãete direktno koristeñi funkcije fread i fwrite (str. 74, 75). Kada koristite klase tokova, vrednosti åitate i piãete direktno, pomoñu funkcije ålanice read i write (str. 288 i 299). Na primer, ako upisujete vrednost 255 kao tekst, program snima ASCII kodove za 2, 5 i 5 u datoteku: te vrednosti su 50, 53 i 53. Ako upisujete vrednost 255 direktno, program snima 255 u datoteku (heksadecimalno 0xFF). Ukoliko je vrednost 255 kratkog celobrojnog tipa (short), u datoteku se snimaju bajtovi 0x00 0xFF. binary operator binarni operator Binarni operator kombinuje dva operanda da bi formirao veñi izraz. U jeziku C++, kao i u veñini drugih, skoro svi operatori su binarni. Uobiåajeni primeri su sabiraçe, oduzimaçe i mnoæeçe. Na primer: x + y koliåina * faktor Dodela je takoœe binarna operacija, jer ima levi i desni operand. x = y Pogledajte i unary operator unarni operator. bit field poàe bitova Poàe bitova je C/C++ tip podataka koji predstavàa podskup skupa bitova u okviru celog broja. Takvo poàe moæe da åini samo jedan bit, ali ono moæe biti ãiroko i nekoliko bitova. Kada prevodi kôd koji radi s poàima bitova, prevodilac pravi instrukcije koje izvlaåe, meçaju i upisuju vrednosti pojedinih bitova. Iako je ishod isti kao da ste direktno koristili operacije nad bitovima, poàa
8 Reånik 529 bitova se lakãe åitaju i razumeju, a u dosta sluåajeva zahtevaju maçe redova izvornog koda za istu operaciju. U posledçem odeàku poglavàa 2 nalazi se viãe detaàa o tome. Boolean values logiåke vrednosti Logiåki izraz (engl. Boolean) moæe imati dve vrednosti: true i false. Tipovi podataka po pravilu imaju mnogo viãe od dve vrednosti. Ako bi smeãtaj bio optimalan, za åuvaçe logiåke vrednosti bio bi dovoàan jedan bit. (Pogledajte prethodno objaãçeçe). Meœutim, pristupaçe bitu zahteva dodatne instrukcije, zbog åega se logiåke promenàive obiåno åuvaju kao celi brojevi. U preœaãçim verzijama C++-a nije postojao zaseban tip logiåke vrednosti; nula je predstavàala vrednost netaåno, a sve razliåito od nule vrednost taåno. Nepaæça je mogla da dovede do pogreãnih rezultata. Na primer, koçunkcija 6 i 9 nad bitovima daje 0, ãto je vrednost netaåno, iako 6 i 9 predstavàaju vrednost taåno. Jedno reãeçe je da umesto operatora nad bitovima koristite logiåke. Logiåki operatori C/C++-a na isti naåin rade sa svim vrednostima razliåitim od 0. ANSI C++ ima drugo reãeçe: koriãñeçe novog logiåkog tipa bool. Svaka vrednost razliåita od 0 dodeàena promenàivoj tipa bool automatski se pretvara u. Viãe informacija o ovom tipu podataka potraæite na strani 7. U literaturi na engleskom jeziku, reå Boolean se piãe velikim slovom jer vodi poreklo od prezimena Dæordæa Bula (George Boole), oca moderne simboliåke logike. (To je jedna od zanimàivosti koje ste moæda åuli na fakultetu, a onda zaboravili.) callback function funkcija povratnog poziva Neki pozivi funkcija traæe adresu druge funkcije koju ste veñ napisali, funkcije povratnog poziva. U suãtini, tako bar privremeno, omoguñujete tuœem kodu da vrati kontrolu vaãem kodu. Iako ovo moæda zvuåi nejasno, to je jedini naåin da dovoàno elastiåno realizujete funkcije qsort i bsearch. Kada pozivate neku od ovih funkcija, prosleœujete adresu vaãe funkcije povratnog poziva. Znaåaj ovih funkcija je i u tome ãto deklariãu adrese funkcija kao argumente. Tu se primeçuje sintaksa pokazivaåa na funkcije. Viãe informacija potraæite u objaãçeçima funkcija qsort i bsearch na str. 23 i 70. cast konverzija tipova Konverzija tipova uzima vrednost izraza, meça mu tip i rezultat prosleœuje daàe. (Pri konverziji tipova nema posledica po tip izvorne promenàive; utiåete samo na tip izraza.) U nekim sluåajevima, konverzija tipova meça i naåin
9 530 Reånik predstavàaça vrednosti u memoriji. Na primer, konverzija celobrojne vrednosti u realnu meça podatke s kojima se radi: double d = static_cast<double>(i); Ova operacija se moæe izraziti i staromodnom konverzijom tipova u C-u: double d = (double) i; U ostalim sluåajevima, konverzija tipova ne utiåe na podatke, nego meça samo naåin na koji se izraz tumaåi. Na primer, konverzija pokazivaåa tipa int* u float* ne utiåe na vrednost pokazivaåa, veñ samo na format koji se koristi za interpretaciju bitova. Prilikom konverzije tipova pokazivaåa bitno je obratiti paæçu na razliku izmeœu formata podataka. Standard ANSI C++ definiãe nove operatore konverzije tipova const_cast, dynamic_cast, reinterpret_cast i static_cast, ali podræava i staromodnu konverziju iz jezika C. Pravila i upotreba operatora moderne konverzije tipova razmatrani su u odgovarajuñem pregledu u prvom delu kçige. Pogledajte i promotion unapreœeçe tipova. class klasa Klasa je jedan od osnovnih pojmova jezika C++. Saæeto, klasa je svaki tip koji definiãe korisnik, osim niza ili tipa definisanog rezervisanom reåju typedef; tu spadaju sve strukture podataka definisane rezervisanim reåima class, struct ili union. Kada deklariãete klasu, definisaçem nove strukture tipa podataka proãirujete jezik C++. Deklarisanu klasu moæete koristiti da napravite brojne instance, ili objekte, od kojih svaka ima atribute definisane u klasi. Poglavàe 5 vas upuñuje u klase i objekte. Klase su napravàene po uzoru na strukture jezika C, koje mogu da sadræe poàa podataka, ali im je dodata podrãka za funkcije. To su funkcije ålanice: one definiãu operacije na objektu klase. Moæete da definiãete i kako ñe operatori (kao ãto su +,*,/ itd.) raditi s objektima (poglavàe 7). Druga vaæna moguñnost klasa jeste privatni pristup, koji skriva odabrane ålanove klase od ostatka sveta. (Pogledajte encapsulation kapsuliraçe.) class instance instanca klase Instanca je isto ãto i objekat. Pogledajte objaãçeçe termina instance instanca i object objekat. comments komentari Komentar je tekst koji prevodilac ignoriãe. Iako nije preveden, komentar ostaje deo izvornog koda. Teoretski, komentar moæe biti bilo ãta. Ako hoñete,
10 Reånik 53 moæete upisati Biti ili ne biti. Uobiåajeno je, naravno, da programer upiãe komentar koji ñe pomoñi onima ãto åitaju izvorni kôd. Sintaksa C++-a podræava dve vrste komentara. Najåeãñi je jednoredni komentar; prevodilac ignoriãe sav tekst od dve kose crte (//) do kraja reda. (Ovo je jedna od retkih situacija kada je u C++-u bitan prelom reda.) x = y; // ovo je komentar; x je dobio vrednost y Druga vrsta komentara, viãeredni komentar, nasleœen je iz jezika C. Prevodilac ignoriãe sav tekst izmeœu /* i */ bez obzira na prelom reda, na primer: /* ovo je viãeredni komentar u jeziku C. */ Zapamtite da u viãerednim komentarima simboli za komentare ne funkcioniãu kao zagrade. Komentare ne moæete da ugnezdite, jer prevodilac ignoriãe sav tekst od simbola za poåetak komentara (/*) do prvog simbola za kraj komentara (*/) na koji naiœe. Zbog toga sledeñi primer izaziva sintaksnu greãku. /* Ovo je spoàaãçi komentar, a /* Ovo je umetnuti komentar. */ Ovo je nastavak spoàaãçeg komentara. */ Prevodilac ñe proåitati simbol za kraj komentara (*/) na kraju drugog reda i tumaåiñe ga kao kraj komentara, a treñi red ñe pokuãati da prevede kao obiåan kôd. Da biste privremeno blokirali kôd koristite pretprocesorske komande #if i #endif, koje mogu biti ugneæœene na bilo kom nivou. Viãe informacija o ovim pretprocesorskim komandama pronañi ñete u odeàku 5 prvog dela kçige. complex data types sloæeni tipovi podataka Sloæen tip podataka je saåiçen od drugih tipova. U çega spadaju svi nizovi, klase, unije i strukture, kao i pokazivaåi. Nisu sloæeni samo prosti tipovi podataka kao ãto su int, bool i float. compound statements sloæeni iskazi Sloæeni iskaz se sastoji od jednog ili viãe iskaza unutar vitiåastih zagrada ({}). Iskazi se posmatraju kao grupa izvrãavaju se ili svi ili se ne izvrãava nijedan. Sintaksa za sloæeni iskaz je: { iskazi }
11 532 Reånik Sloæeni iskazi imaju brojne primene. Prvo, oni definiãu iskazni blok. Oblast vaæeça lokalnih promenàivih prestaje posle zavrãne zagrade (}). Druga çihova vaæna primena je s kontrolnim strukturama. Gde god moæete da stavite iskaz, moæete da stavite i sloæeni iskaz. Stoga je moguñ sledeñi if iskaz, u kome se izvrãavaju ili svi iskazi ili nijedan: if (zameni_sad) { privremeni = a; a = b; b = privremeni; } U jezicima C i C++, kraj iskaza oznaåava taåka i zarez (;), za razliku od Pascala, gde taj znak razdvaja iskaze. Zbog toga je sintaksa C++-a jednostavnija. Taåkom i zarezom ne zavrãava se jedino sloæeni iskaz; otuda se taåka i zarez ne koristi posle zavrãne vitiåaste zagrade (}) osim u sluåaju deklarisaça klase. conditional compilation uslovno prevoœeçe Uslovno prevoœeçe je tehnika za åuvaçe viãe verzija programa. Koristite je da ne biste morali ponovo da piãete program svaki put kada ga prevedete za drugaåiju ciànu platformu. Treba samo da upiãete redove specifiåne za platforme unutar blokova #if #endif. Na taj naåin, uz vrlo malo truda, moæete promeniti ono ãto ñe biti prevedeno u kodu. U odeàku 5 prvog dela nañi ñete viãe informacija o komandi #if i drugim pretprocesorskim komandama. control structure kontrolna struktura Kontrolna struktura je iskaz koji moæe da meça tok izvrãavaça programa ili da donosi odluke. (Iako je raåunar Deep Blue pobedio Kasparova, joã uvek je sporno mogu li raåunari stvarno donositi odluke. Kontrolna struktura, u stvari, samo izvrãava jednostavne numeriåke testove i sledi instrukcije.) U kontrolne strukture spadaju naredbe if-else, while, do, for i switch. Funkcije i naredba goto takoœe meçaju tok izvrãavaça. Viãe informacija o tome potraæite u odeàku 4 prvog dela. constant konstanta Konstanta je vrednost koja se ne meça. U C++-u postoji nekoliko vrsta konstanti. Numeriåke konstante kao ãto su 00, 4.5, 0xFF i 08. (Posledçe dve koriste heksadecimalni i oktalni format.) Simboliåke konstante definisane komandom #define. Zovu se i makroi (engl. macros).
12 Reånik 533 Konstante definisane rezervisanom reåju enum. Znakovni literali, na primer "Ovo je znakovni niz". Ime niza, koje je konstanta jednaka prvom elementu niza. (Imena nizova su konstante, ali pokazivaåi i elementi niza nisu.) Bilo koja promenàiva deklarisana rezervisanom reåju const. Posledça kategorija se bitno razlikuje od ostalih. Promenàiva deklarisana kao const i daàe je promenàiva, iako je i konstanta. Ona zauzima prostor u toku rada programa, poput svake druge promenàive, a moæe biti bilo kog osnovnog tipa, imati bilo kakvu oblast vaæeça i biti smeãtena u bilo koju klasu. Prve dve kategorije razlikuju se od promenàivih sa oznakom const po tome ãto çihove konstante postoje samo u vreme prevoœeça. Te konstante se, zavisno od prevodilaca, mogu zameniti tokom prevoœeça. Na primer, izraz verovatno ñe biti zameçen sa 4. Viãe informacija o numeriåkim konstantama potraæite u poglavàu 2, a o znakovnim nizovima u poglavàu 3. Komanda #define je opisana na strani 45, a rezervisane reåi enum i const na stranama 84 i 76. constructor konstruktor Konstruktor je funkcija za inicijalizaciju klase. Kad god pravite objekat izvrãi se konstruktor klase tog objekta. Konstruktor je logiåno mesto za inicijalizovaçe vrednosti podataka ålanova i izvrãavaçe drugih inicijalnih zadataka. On se uvek zove jednako kao klasa i nema povratni tip, åak ni void. Ista klasa moæe imati viãe konstruktora, ali svaki od çih mora da ima jedinstvenu listu argumenata. Lista argumenata konstruktora mora da odgovara argumentima koriãñenim za inicijalizaciju objekta te klase (ako ih je bilo). Ukoliko nikakve vrednosti nisu koriãñene za inicijalizaciju objekta, izvrãava se podrazumevani konstruktor klase. (Pogledajte odrednicu default constructor podrazumevani konstruktor.) Viãe detaàa o konstruktorima predoåeno je u poglavàu 6. Pogledajte i copy constructor konstruktor za kopiraçe. conversion functions funkcije konverzije C++ dozvoàava konverziju izmeœu tipova na dva naåina. Klasa C moæe definisati ulazne konverzije tipa T putem koriãñeça konstruktora oblika C(T). Ulazna konverzija definiãe kako sadræaj tipa T moæe biti dodeàen objektu klase C (kao kod c_obj = t_obj). Operatori konverzije definiãu izlazne konverzije. Na primer, ako klasa C ima funkciju konverzije za tip T, ta funkcija ñe definisati kako se instance klase C dodeàuju instancama klase T (kao kod t_obj = c_obj). Sintaksa operatora konverzije razmatrana je u odeàku Pisaçe funkcije konverzije, na strani 436 poglavàa 7.
13 534 Reånik Konstruktori i funkcije konverzije ne definiãu samo kako ñe se izvrãiti dodela veñ definiãu i posredne konverzije. Primera radi, ako klasa CStr definiãe konverziju u char*, onda moæete da prosledite instancu klase CStr gde god funkcija zahteva argument tipa char*. copy constructor konstruktor za kopiraçe Konstruktor za kopiraçe poziva se svaki put kada program inicijalizuje nov objekat pomoñu drugog objekta iste klase. Kada se objekat prosleœuje funkciji po vrednosti, program automatski pravi kopiju argumenta ovim konstruktorima i prosleœuje je daàe. Drugi sluåaj kada se ovaj konstruktor koristi jeste funkcija åija povratna vrednost je objekat, ali se ne koristi ni pokazivaå ni referenca. Konstruktor za kopiraçe automatski pravi trajnu kopiju koju funkcija vraña pozivaocu. (Poãto je to neefikasno, åesto se koriste pokazivaåi i reference.) Svaka klasa ima jedan konstruktor za kopiraçe. Ako ga sami ne napiãete, prevodilac ñe automatski definisati podrazumevani konstruktor za kopiraçe. On pojedinaåno kopira podatke ålanove objekta. To je prihvatàivo u mnogim situacijama, ali moæe biti neprikladno ako klasa sadræi pokazivaåe. Parametar konstruktora za kopiraçe je referenca na objekat iste klase. (Pogledajte objaãçeçe termina reference referenca.) C(const C&) Konstruktor za kopiraçe ima sliånosti s operatorom dodele (dodela vrednosti jednog objekta drugom objektu iste klase), ali oni nisu istovetni. Konstruktor za kopiraçe inicijalizuje potpuno nov objekat. Viãe detaàa o konstruktorima potraæite u poglavàu 6. data abstraction apstrakcija podataka Apstrakcija podataka je umetnost definisaça tipova na osnovu onoga ãto rade, a ne prema çihovoj unutraãçoj strukturi. Dok uåite C++, nemojte obrañati mnogo paæçe na ovaj termin pomalo je nejasan. Pogledajte i abstract data types apstraktni tipovi podataka. data member podatak ålan objekta Podaci ålanovi su promenàive u deklaraciji klase. Po pravilu, oni definiãu poàa podataka za svaki objekat klase. Postoji jedan izuzetak: podatak ålan deklarisan rezervisanom reåju static nije povezan s poàem podataka unutar pojedinaånog objekta, veñ statiåne podatke ålanove dele svi objekti iste klase ãto znaåi da nemaju mnogo veze s pojedinaånim objektima.
14 Reånik 535 data type tip podataka Pogledajte objaãçeçe termina type tip. declaration deklaracija Deklaracija je iskaz koji opisuje promenàivu, klasu ili funkciju. Takav opis daje informacije o tipu, tj. saopãtava programu sa åime se radi. Neke deklaracije definiãu promenàivu ili kôd funkcije; one se zovu definicije. Na primer: int x,y,z; // Deklariãe x, y i z kao celobrojne // promenàive. Ostale vrste deklaracija pruæaju informacije za tumaåeçe isturenih i spoàaãçih referenci (engl. forward reference i external reference). To ukàuåuje prototipe funkcija i deklaracije rezervisanom reåju extern. C++ je stroæi od mnogih drugih jezika. Funkcija mora biti deklarisana pomoñu definicije ili putem prototipa pre nego ãto je pozovete. Da biste razumeli sloæene deklaracije C/C++-a, morate da koristite obrnutu logiku. Zapitajte se: ãta znaåi kada se ovaj izraz pojavi u izvrãnom kodu? Primera radi, razmotrite sledeñu deklaraciju: char *niz[00]; Da biste je razumeli, primenite pravila prioriteta i asocijativnosti. Buduñi da su unarni operatori asocijativni zdesna nalevo (desno asocijativni), deklaracija je ekvivalentna ovoj: char *(niz[00]); Pretpostavite da se izraz *(niz[n]) pojavio u kodu, u kome n dobija vrednosti od 0 do 99. To znaåi da je element uzet s indeksom od 0 do 99, a onda dereferenciran da dobije vrednost tipa char. Stoga se niz sastoji od 00 pokazivaåa na char. Suprotno tome, char (*pokazivac)[00]; pokazivaå pokazuje na niz od 00 elemenata tipa char. Sliånom logikom moæete shvatiti zaãto se i po åemu razlikuju naredna dva izraza. Prvi je prototip funkcije, a drugi pokazivaå na funkciju: int (*pfn)(void); // funkcija vraña pokazivaå // na celobrojni tip int *pfn2(void); // pokazivaå na funkciju // koja vraña celobrojni tip Da biste razumeli ove deklaracije, vaæno je da zapamtite da pfn2 mora biti dereferencirano u izvrãnom kodu pre nego ãto se pozove funkcija.
15 536 Reånik decorating obeleæavaçe imena Obeleæavaçe imena je postupak koji koristi prevodilac C++-a da bi uz ime napravio informaciju o tipu. Na primer, ako deklariãete promenàivu Pera tipa int, u datoteke.obj ili.o neñe se samo snimiti ime Pera, veñ i dodatne oznake uz ime, pa je rezultat duæe ime koje identifikuje Pera kao promenàivu tipa int. Dva su glavna razloga za obeleæavaçe imena. Jedan je podræavaçe povezivaça bezbednog za tipove (engl. type-safe linkage). Program za povezivaçe razlikuje promenàive razliåitog tipa, åak i ako imaju isto ime. Time se spreåavaju neke greãke pri povezivaçu. Druga svrha obeleæavaça imena jeste omoguñavaçe preklapaça funkcija. Postupak obeleæavaça imena razlikuje se od prevodioca do prevodioca. Pogledajte i overloading, function preklapaçe funkcija. default argument value podrazumevana vrednost argumenta Svakom argumentu u definiciji funkcije moæe biti dodeàena podrazumevana vrednost. Ako funkcija oåekuje argument, a pozvana je bez argumenta, koristiñe se podrazumevana vrednost. Primera radi, pretpostavite da ste definisali sledeñu funkciju, koja ima jedan traæeni argument i jedan sa podrazumevanom vrednoãñu: void postavi(char* ime, int iznos = 0); Ako se postavi poziva sa samo jednim argumentom, pretpostavàa se da je iznos 0. postavi("mika Peric"); Meœutim, ako se postavi poziva s oba argumenta, iznos ñe dobiti zadatu vrednost. postavi( "Mika Peric", 5) C++ nameñe neka ograniåeça podrazumevanim vrednostima. Prvo, svi argumenti s podrazumevanom vrednoãñu nalaze se na kraju liste. Ovo ograniåeçe je neophodno jer se vrednosti dodeàuju argumentima sleva nadesno. Na primer, ako pozovete funkciju i navedete tri argumenta, prva tri argumenta imañe zadate vrednosti; preostali argumenti dobiñe podrazumevane vrednosti. Sledeñe ograniåeçe se odnosi na preklapaçe funkcija. (Pogledajte odrednicu overloading, function preklapaçe funkcija.) Kada je ime funkcije preklopàeno, potpisi funkcija se moraju razlikovati po bar jednom argumentu koji nema podrazumevanu vrednost.
16 Reånik 537 default constructor podrazumevani konstruktor Podrazumevani konstruktor je funkcija inicijalizacije koja nema argumente. Kad god za pravàeçe objekta nisu koriãñene vrednosti za çegovu inicijalizaciju, poziva se podrazumevani konstruktor klase tog objekta. Potpis podrazumevanog konstruktora za klasu C je: C(); Ako ne napiãete konstruktore za svoju klasu, prevodilac ñe napraviti skriveni podrazumevani konstruktor koji ñe svim podacima ålanovima dodeliti vrednost 0; meœutim, ako definiãete bilo kakav konstruktor, to se neñe desiti. Zbog toga bi bilo dobro da napiãete podrazumevani konstruktor za svaku klasu, iako on niãta neñe raditi. Moæda vam izgleda neobiåno ãto prevodilac sam pravi podrazumevani konstruktor, ali ga uklaça åim vi napiãete neki drugi. Premda na to liåi, ovo nije deo zavere da bi vam se æivot oteæao. C++ pruæa automatske podrazumevane konstruktore da bi bio kompatibilan sa strukturama preuzetim iz jezika C. Kada poånete da piãete klase, ne bi trebalo da se oslaçate na konstruktor prevodioca. Viãe informacija o podrazumevanom konstruktoru i ostalim vrstama konstruktora potraæite u poglavàu 6. definition definicija Definicija formira promenàivu ili kôd funkcije. U velikom i sloæenom projektu, funkcija ili promenàiva moæe biti deklarisana mnogo puta, ali samo jednom definisana. (Izuzetak: virtuelna funkcija moæe biti definisana drugaåije u razliåitim klasama.) Definicija promenàive je mesto u kodu programa gde se promenàiva pravi i gde moæe biti inicijalizovana. Primer: int i; Definicija funkcije sadræi iskaze koji treba da se izvrãe po pozivu funkcije. Evo kratkog primera. (Da, to je joã jedan primer funkcije faktorijel!) long fakt(int n) { long vrednost; for (vrednost = ; n > ; n--) vrednost *= n; return vrednost; } Definicije su vrsta deklaracije, ali postoje i deklaracije koje nisu definicije. Na primer, deklaracije extern ne definiãu promenàivu.
17 538 Reånik dereference dereferenciraçe Dereferenciraçe s adresnog izraza daje sadræaj sa te adrese. Primera radi, ako je vrednost adresnog izraza numeriåka vrednost 055, onda ñe se dereferenciraçem izraza dobiti sadræaj s adrese 055. Drugaåije bi se to reklo ovako: dereferenciraçem pokazivaåa dobija se ono na ãta pokazivaå ukazuje. Na primer: int n = 5; int *p = &n; // Stavàa adresu od n u p. cout «*p // Prikazuje ono na ãta p pokazuje (n). Zvezdica (*), primeçena kao unarni operator, jeste operator dereferenciraça ili operator indirekcije (engl. indirection operator). Kada se koristi za definisaçe podataka, kao gore u drugom iskazu, ona pravi pokazivaå. Kada se, pak, koristi u izvrãnom iskazu, dereferencira pokazivaå. Pokazivaåi koji ukazuju na druge pokazivaåe i viãedimenzionalni nizovi malo komplikuju stvari. Adresni izraz mora biti potpuno dereferenciran da bi se dobili podaci s çegove adrese. Na primer, ako pokazivaå pp ima vrednost 055 ali je tipa int**, on mora biti dereferenciran dvaput da bi se dobila celobrojna vrednost: int matrica[2] [2] = {{, 2}, {3,4}}; int **pp = matrica; // Pokazuje na poåetak matrice. cout «**pp; // Prikazuje prvi element matrice. Zapamtite da primena indeksa dereferencira pokazivaå, isto ãto i * radi. derived class izvedena klasa Izvedena klasa nasleœuje neke ili sve svoje ålanove od druge klase, koja se zato zove osnovna klasa. Na primer, ako je klasa C izvedena iz osnovne klase B, onda su svi ålanovi klase B automatski i ålanovi klase C. (U izvedenu klasu C mogu da se dodaju i novi ålanovi.) Izvedena klasa se ponekad imenuje kao potklasa (engl. subclass) ili klasa potomak (engl. child class).viãe informacija o tome pronañi ñete u poglavàu 5. destructor destruktor Destruktor je suprotnost konstruktoru. Konstruktor se izvrãava åim se objekat napravi, a destruktor pre nego ãto se objekat ukloni iz memorije. Destruktor se skoro nikada ne poziva direktno. On se automatski poziva kada neka akcija, kao ãto je koriãñeçe operatora delete, izaziva uniãteçe objekta. (Ne zaboravite da se sav kôd objekta nalazi u çegovoj klasi.) Iako se destruktor ne mora napisati za svaku klasu, takva funkcija moæe biti korisna prilikom åiãñeça objekata i izvrãavaça zadataka vezanih za
18 Reånik 539 çihovo uniãtavaçe. Na primer, destruktor moæete upotrebiti da zatvorite datoteke povezane s objektom neke klase. Suprotno od konstruktora, destruktori su jedinstveni: postoji samo po jedan za svaku klasu. Za svaku zadatu klasu C, deklaracija destruktora je: ~C (); Viãe detaàa o tome potraæite u poglavàu 5, u odeàku Æivot i smrt objekta: konstruktori na strani 402. Uprkos surovom imenu (destruktor) i sintaksi (moæe postojati samo jedan), destruktori su ponekad korisni. directive pretprocesorska komanda Pretprocesorska komanda je specijalna komanda prevodiocu koja se izvrãava pre nego ãto je ostatak programa preveden i pokrenut. Za razliku od iskaza, pretprocesorska komanda se nikada ne prevodi u izvrãni kôd, pa sve ãto postignete ovim komandama nimalo ne smaçuje brzinu izvrãavaça. Jedna od korisnijih pretprocesorskih komandi jeste #define, koja definiãe simboliåku konstantu: #define PI U odeàku 5 prvog dela kçige nañi ñete potpun spisak pretprocesorskih komandi propisanih ANSI specifikacijom, zajedno s çihovim opisima. empty statement prazan iskaz U jezicima C i C++ dozvoàeno je koriãñeçe praznog iskaza, tj. nepopuçenog iskaza koji se zavrãava taåkom i zarezom (;). Dobra strana te moguñnosti je ãto obiåno ne bivate kaæçeni ako vam prst sklizne, pa otkucate taåku i zarez viãe. Sledeñi kôd je, na primer, potpuno ispravan: int i = ;;; Tehniåki, ovo nije jedan iskaz, veñ deklaracija za kojom slede dva prazna iskaza. Prazni iskazi su korisni bar u jednom sluåaju: kao pomoñ pri obezbeœivaçu odrediãta iskaza goto. Ako biste hteli da skoåite na kraj procedure, morali biste da skoåite na oznaku praznog iskaza. U protivnom, oznaka ne bi prethodila nijednom iskazu i bila bi nedozvoàena. i = m * 2; if (i == j) goto kraj; //... kraj: ; }
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
Sadrzaj_RAZW.fm
vi I PHP....................................... 9 1 Kratak kurs PHP-a............................ 11 Upotreba PHP-a.............................................12 Probna aplikacija: Bobovi auto-delovi..............................
01_O03N.fm
Deo I Upoznavanje s paketom Microsoft Office M U ovom delu icrosoft Office 2003 izgleda kao monstrum koji proædire megabajte s vaãeg diska, a çegove moguñnosti su takve da obara s nogu åak i najokorelije
Uvod_E03N.fm
Uvod D obro doãli u Excel 2003 za neupuñene, knjigu namenjenu svima vama koji nemate ambicije da postanete baã velemajstori tabela za proraåune. U njoj se nalazi sve ono ãto vam treba da isplivate iz svakodnevnih
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,
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
Microsoft PowerPoint - Bitovi [Compatibility Mode]
Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)
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
Sadrzaj_A2ZP.fm
viii SADRÆAJ Uvod xv Poglavàe 1 Ãta je novo u Accessu 2002 1 Kratka istorija Accessa 2 Access 2002 5 Novine u paketu Microsoft Office XP Developer 7 Saæetak 8 Poglavàe 2 Razvijaçe viãekorisniåkih aplikacija
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
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
01_NSTN.fm
Deo I Nostradamuse, ovo je tvoj æivot! U ovom delu... Nadam se da vam je pasoã pri ruci, jer uskoro kreñete na putovaçe po Nostradamusovom svetu. Moæda ñete se u poåetku oseñati neobiåno, ali ne brinite
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
Microsoft Word - 02 Elementi programskog jezika Pascal
Elementi programskog jezika Pascal Osnovni elementi jezika Osnovni simboli U programskom jeziku Pascal sve konstrukcije se grade od skupa osnovnih simbola jezika koji čine slova, cifre i specijalni znaci.
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
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
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
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
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
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*
Uvod u PHP
Uvod u PHP Marijan Šuflaj FER, 2018 Sadržaj PHP Općenito Sintaksa Osnove Kontrola toka Zadatci Resursi Općenito Naziv od PHP Hypertext Preprocessor Obično koristi ekstenziju.php Tipovi su dinamički Trenutno
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
PowerPoint Presentation
Python tutorijal - praktični primeri - Sadržaj: 1. Upoznavanje sa razvojnim okruženjem - Python proširenje (PTVS) za Visual Studio 2015 - Druga razvojna okruženja 2. Osnovi Python jezika - Sintaksa i konvencije
untitled
vii Uvod... 1 O kçizi...1 Konvencije koriãñene u kçizi...2 Ãta ne morate åitati...2 Polazne pretpostavke...3 Kako je kçiga organizovana...3 Sliåice koriãñene u kçizi...5 Odakle poåeti...5 Deo I: Alatke
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
Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата
Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности података и операције над њима Дефиниција класе садржи само
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
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
untitled
vii Poglavàe 1: Predgovor...xv Zahvalnica... xxiii O autoru... xxiii Sistemi za upravàaçe sadræajem i uvod u sistem Joomla!... 1 Ãta je CMS?... 2 Statiåke Web stranice... 2 Web stranice sa CSS naredbama...
P1.2 Projektovanje asemblera
ПРОЈЕКТОВАЊЕ АСЕМБЛЕРА Асемблер Модули асемблера 1 Дефинисање новог лингвистичког нивоа превођењем Потребан преводилац алат који преводи програм написан на једном језику (на једном лингвистичком нивоу)
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
untitled
v Uvod... 1 O kçizi...1 Kako se koristi ova kçiga...2 A ãta je s vama?...3 Kako je kçiga organizovana...3 Sliåice iz ove kçige...5 Kojim putem daàe...5 Deo I: Ono ãto svi misle da veñ znate o Windows Visti...
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
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 - 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
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.
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
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
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
P11.3 Analiza zivotnog veka, Graf smetnji
Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи
Slide 1
Funkcionalno programiranje Interoperabilnost jezika Scala i Java, 2019. Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući
Microsoft PowerPoint - Datoteke [Compatibility Mode]
Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније
Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj
Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite
P1.3 Projektovanje makroasemblera
ПРОЈЕКТОВАЊЕ МАКРОАСЕМБЛЕРА Макроасемблер Потребна проширења асемблера 1 МАКРОАСЕМБЛЕР Макроасемблер преводи полазни програм написан на макроасемблерском језику у извршиви машински програм. Приликом израде
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
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
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
1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost
1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar. 1.. Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred. 1.7. Bodovna vrijednost (ECTS) 7 1.3. Suradnici 1.8. Način izvođenja nastave
Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.
Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B. The only way to learn a new programming language is by writing programs in it. Kernighan & Ritchie... and it is well
Microsoft PowerPoint - 07-DinamickeStrukturePodataka
Динамичке структуре података листа, стек, ред Програмирање 2: глава 6 Динамичке структуре података Динамичка алокација и динамичке структуре података Најзначајније динамичке структуре података листе и
Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005
Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 2 Sadržaj 1 5 1.1 Specifikacija sintakse programskih
Microsoft Word - 1.Operacije i zakoni operacija
1. Operacije i zakoni operacija Neka je S neprazan skup. Operacija dužine n skupa S jeste svako preslikavanje : n n f S S ( S = S S S... S) Ako je n = 1, onda operaciju nazivamo unarna. ( f : S S ) Ako
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
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 Ψ,
Microsoft PowerPoint - JavaP9_2019
Programski jezik JAVA PREDAVANJE 9 2019 www.etf.ac.me Datoteke u Javi U paketu java.io nalaze se klase za rad sa datotekama i direktorijumima. Funkcionalnost koju omogućavaju te klase sastoji se od kreiranja,
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
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
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,
3.Kontrlne (upravlja~ke) strukture u Javi
Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ
Microsoft Word - MySQL_3.doc
7. Data Manipulation Language (DML) Jezik za rad sa podacima (Data Manipulation Language (DML)) služi za umetanje, brisanje i ažuriranje podataka u bazi. 7.1. Umetanje novih redova u tabelu INSERT sintaksa
Microsoft Word - Lekcija 11.doc
Лекција : Креирање графова Mathcad олакшава креирање x-y графика. Треба само кликнути на нови фајл, откуцати израз који зависи од једне варијабле, например, sin(x), а онда кликнути на дугме X-Y Plot на
P9.1 Dodela resursa, Bojenje grafa
Фаза доделе ресурса Ова фаза се у литератури назива и фазом доделе регистара, при чему се под регистрима подразумева скуп ресурса истог типа. Додела регистара променљивама из графа сметњи се обавља тзв.
ALIP1_udzb_2019.indb
Razmislimo Kako u memoriji računala prikazujemo tekst, brojeve, slike? Gdje se spremaju svi ti podatci? Kako uopće izgleda memorija računala i koji ju elektronički sklopovi čine? Kako biste znali odgovoriti
KDP
Региони Региони Програмска парадигма за приступ критичној секцији Увођење посебне синтаксе за експлицитно означавање критичних секција Обезбеђивање међусобног искључивања процеса Условни критични регион
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
untitled
Dodatak A Instaliraçe i podeãavaçe AutoCAD-a U ovom dodatku govorimo o naåinu instaliraça AutoCAD-a 2006 i o sistemskim parametrima koje bi trebalo definisati da biste AutoCAD podesili tako da vam odgovara.
8 2 upiti_izvjesca.indd
1 2. Baze podataka Upiti i izvješća baze podataka Na početku cjeline o bazama podataka napravili ste plošnu bazu podataka o natjecanjima učenika. Sada ćete izraditi relacijsku bazu u Accessu o učenicima
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
01_PS24.fm
DEO I Poåetak rada LEKCIJA 1 Osnove 3 LEKCIJA 2 Otvaranje i snimanje 21 LEKCIJA 3 Naåini izbora 35 LEKCIJA 4 Transformacije 53 LEKCIJA 5 Reæimi rada s bojama i modeli boja 69 LEKCIJA 6 Podeãavanje boja
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)
Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71
Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { public static void main(string[] args) { obrada(2.7182818284590452354); private static void obrada(double
PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji
PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji podrška za IBM DB2, Oracle, Ingres, MySQL, PostgreSQL,
COMARC/A Format
COMARC/A 856 856 ELEKTRONSKA LOKACIJA I PRISTUP Polje možemo da koristimo u normativnim zapisima za obezbeđivanje dodatnih (elektronskih) informacija o entitetu za koji je zapis kreiran. Polje sadrži podatke
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
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
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
P2.1 Formalne gramatike
Превођење Полазни језик? Одредишни језик 1 Превођење Полазни језик? Одредишни језик Како знање неког језика стиче и складишти човек, а како рачунар? 2 Два аспекта језика Синтакса Семантика значење То су
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..........................
23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi
3. siječnja 0. od 3:00 do 4:00 RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovitelji Sadržaj Zadaci. 4.... Zadaci 5. 0.... 3 od 8 Zadaci. 4. U sljedećim pitanjima na pitanja odgovaraš upisivanjem
Mathcad - MCADMod MCD
Mathcad Modul # 2 Operatori i funkcije Relacioni i logicki operatori - (funkcija if) Korisnicki definisane funkcije Globalne promenljive 1) Operatori i funkcije: U Mathcadu se razlikuju operatori i funkcije,
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
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 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
NIZOVI
NIZOVI II gimnazije NIZOVI su složeni tip podatka u koji se može smjestiti više varijabli(podataka) JEDNODIMENZIONALNI DVODIMENZIONALNI VIŠEDIMENZIONALNI Milenko Soldat 2 JEDNODIMENZIONALNI NIZOVI Sintaksa:
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
Classroom Expectations
АТ-8: Терминирање производно-технолошких ентитета Проф. др Зоран Миљковић Садржај Пројектовање флексибилних ; Математички модел за оптимизацију флексибилних ; Генетички алгоритми у оптимизацији флексибилних
Програмирај!
Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком
Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime
Test ispravio: () () Ukupan broj bodova:. veljače 04. od 3:00 do 4:00 Ime i prezime Razred Škola Županija Mentor Sadržaj Upute za natjecatelje... Zadaci... Upute za natjecatelje Vrijeme pisanja: 60 minuta
Повезивање са интернетом
Драгана Стопић Сваки рачунар на интернету има своју адресу која је јединствена у свету. Ове адресе се називају IP адресе јер их користи IP протокол (интернет ниво) из фамилије TCP/IP. IP адресе представљају
Microsoft Word - X-Lite_EUnetUputstvo_Mart11.doc
VOIP Sadržaj: 1 COUNTERPATH X-LITE... 3 1.1 Preuzimanje programa... 3 1.2 Instalacija CounterPath X-Lite -a... 3 1.3 Podešavanje korisničkog naloga... 3 1.4 Upućivanje poziva... 5 1.4.1 Pozivanje korisnika
УНИВЕРЗИТЕТ У НИШУ ПРИРОДНО-МАТЕМАТИЧКИ ФАКУЛТЕТ Департман за рачунарске науке Писмени део испита из предмета Увод у рачунарство 1. [7 пое
УНИВЕРЗИТЕТ У НИШУ ПРИРОДНО-МАТЕМАТИЧКИ ФАКУЛТЕТ Департман за рачунарске науке 30.06.2018. Писмени део испита из предмета Увод у рачунарство 1. [7 поена] Методом МакКласкија минимизарити систем прекидачких
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;
Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7
Programiranje 2 7. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/75 Sadržaj predavanja Tipovi i složene deklaracije:
PowerPoint Presentation
V Unos i prikaz podataka Programi čitaju i ispisuju podatke sa spoljašnjih uređaja Postoji prolazni U/I (tastatura i monitor) i trajni U/I podataka (fajlovi) printf i scanf pišu/čitaju na monitor ili sa
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
Upitni jezik SQL
Šta je SQL? SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.
Sveucilište u Zagrebu
Proširivanje Pythona programskim jezicima C/C++ Ivo Majić Mentor: Doc. dr. sc. Domagoj Jakobović Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Ak. god. 2011/12 Ivo Majić (FER) Sveučilište
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
Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]
Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба