You are on page 1of 72

Sadraj:

0. Uvod:................................................................................................................................................3 1. Programski jezici .............................................................................................................................4 1.1 Programska podrka...................................................................................................................4 1.2 Naredbe - program......................................................................................................................4 1.3 Programski jezik kljune rijei................................................................................................4 1.4 Programski jezik - sintaksa.........................................................................................................4 1.5 Prevoenje u binarni oblik..........................................................................................................4 1.6 Programski jezici - podjela.........................................................................................................5 1.7 Strojni jezik................................................................................................................................5 1.8 Simboliki jezik niske razine......................................................................................................5 1.10 Simboliki jezici visoke razine.................................................................................................5 1.11 C...............................................................................................................................................5 2. Algoritam..........................................................................................................................................7 2.1 Elementi algoritma.....................................................................................................................7 2.2 Dijagram tijeka...........................................................................................................................7 2.3 Osnovne algoritamske strukture.................................................................................................7 2.4 Slijedni algoritam.......................................................................................................................8 2.5 Grananje.....................................................................................................................................8 2.6 Petlja...........................................................................................................................................8 3. Nastanak programa...........................................................................................................................9 3.1 Objekti........................................................................................................................................9 3.2 Objektno orijentirani program....................................................................................................9 3.3 C++.............................................................................................................................................9 3.4 Borland C++ Builder..................................................................................................................9 3.5 Nastanak programa...................................................................................................................10 3.6 Izvorni kod................................................................................................................................10 3.7 Izvrni oblik..............................................................................................................................10 3.8 Biblioteke.................................................................................................................................10 3.9 Poveziva..................................................................................................................................11 3.10 Izvrna datoteka......................................................................................................................11 3.11 Projekt.....................................................................................................................................11 3.12 Pogreke.................................................................................................................................11 3.13 Provjera programa..................................................................................................................12 3.14Borland C++ Builder...............................................................................................................12 3.15 C++ datoteka izvornog koda..................................................................................................12 ...........................................................................................................................................................14 4. C++ podaci.....................................................................................................................................15 4.1 Podaci.......................................................................................................................................15 4.2 Memorijske adrese ...................................................................................................................15 4.3 Varijable...................................................................................................................................15 4.4 Oznaka tipa podatka.................................................................................................................16 4.5 Pridruivanje vrijednosti..........................................................................................................16 4.6 Tipovi podataka........................................................................................................................17 4.7 Brojevi......................................................................................................................................17 4.8 Cijeli brojevi - int.....................................................................................................................17 4.9 Broj bez predznaka...................................................................................................................17 4.10 Realni brojevi - float...............................................................................................................17 4.11 Eksponencijalni prikaz broja..................................................................................................17 4.12 Realne varijable......................................................................................................................18 4.13 Znakovi - char.........................................................................................................................18

4.14 Znakovni niz...........................................................................................................................19 4.15 Konstante................................................................................................................................20 5. C++ osnovna struktura programa...................................................................................................21 5.1 Funkcije....................................................................................................................................21 5.2 Deklaracija funkcije..................................................................................................................21 5.3 Definicija funkcije....................................................................................................................21 5.4 Kraj naredbe.............................................................................................................................21 5.5 Primjer funkcije........................................................................................................................22 5.6 Funkcija main...........................................................................................................................23 5.7 Deklaracija funkcije main.........................................................................................................23 5.8 Pretprocesorske naredbe...........................................................................................................23 5.9 Biblioteka.................................................................................................................................24 5.10 Ulazni i izlazni tokovi............................................................................................................24 5.11 iostream..................................................................................................................................24 5.12 cout.........................................................................................................................................25 5.13 endl.........................................................................................................................................25 5.14 cin...........................................................................................................................................27 5.15 Pogreke pri unosu podataka..................................................................................................28 5.16 Pogreke pri uitanju..............................................................................................................28 6. C++ operatori..................................................................................................................................30 6.1 Aritmetiki operatori................................................................................................................30 6.2 Binarni aritmetiki operatori....................................................................................................30 6.3 Unarni aritmetiki operatori.....................................................................................................30 6.4 Tip podatka operanada i rezultata...........................................................................35 6.5 Komentari.................................................................................................................................38 6.6 Operatori obnavljajueg pridruivanja.....................................................................................38 6.7 Logiki tip podataka - bool.......................................................................................................39 6.8 Logiki operatori......................................................................................................................40 6.9 Logiki I...................................................................................................................................40 6.10 Logiki ILI..............................................................................................................................40 6.11 Usporedba...............................................................................................................................42 6.12 String......................................................................................................................................43 7. C++ Grananje.................................................................................................................................45 7.1 Grananje...................................................................................................................................45 7.2 Blok naredbi.............................................................................................................................45 7.3 Naredbe grananja......................................................................................................................46 7.4 Grananje naredbom if...............................................................................................................46 7.5 Grananje dvije neovisne grane..............................................................................................47 7.6 Naredba goto............................................................................................................................49 7.7 Ulanana if naredba..................................................................................................................50 7.8 Ugnjeivanje if naredbi..........................................................................................................51 7.9 Uvjetna naredba kratki oblik.................................................................................................52 7.10 Grananje naredbom switch.....................................................................................................53 8. C++ petlje.......................................................................................................................................54 8.1 Petlja.........................................................................................................................................54 8.2 for petlja....................................................................................................................................54 8.3 Beskonana petlja.....................................................................................................................58 8.4 Ugnijeene for petlje..............................................................................................................61 8.5 while petlja...............................................................................................................................64 8.7 Naredba break...........................................................................................................................68 8.8 Naredba continue......................................................................................................................69 9. Zakljuak........................................................................................................................................71 2

10. Literatura......................................................................................................................................72

0. Uvod:
U danasnje doba, zivot nam postaje skoro nezamisliv bez racunala. Svjedoci smo ogromnom tehnoloskom napretku. Velik trud se ulaze u tehnoloski napredak, no pritom se zaboravlja na moc koju on donosi, te potrebnu pripadajucu mu sigurnost. Ovim kratkim tekstom zagrebsti cu povrsinu racunalne sigurnosti, odnosno pokusat cu vam objasniti kako pristupiti izradi programa sa sigurnoscu na pameti.

1. Programski jezici

1.1 Programska podrka Raunalo moe rjeavati razliite zadatke uz pomo programske podrke. Programska podrka je skup svih programa koji se mogu izvravati na raunalu. Dio programa korisnik obino kupuje pri nabavi sklopovlja, a ostale nabavlja ovisno o svojim potrebama.

1.2 Naredbe - program Raunalo moe rijeiti postavljeni zadatak samo ako dobije uputstvo (niz naredbi) kako to uiniti. Kombinacijom naredbi nastaje program. Programer piui program nie naredbe u smislenom redoslijedu. Naredbe moraju biti u obliku u kojem e ih raunalo razumjeti.

1.3 Programski jezik kljune rijei Programski jezici su jezici kojima se piu raunalni programi. Svaki programski jezik koristi vlastiti, ogranieni skup rijei koje imaju posebna znaenja. Takve emo rijei nazivati kljunim rijeima.

1.4 Programski jezik - sintaksa Za svaki su programski jezik propisana pravila slaganja kljunih rijei u naredbe. Takva se pravila nazivaju sintaksa. Ako se ne zadovolji propisana sintaksa, program e biti neispravan i nee se moi izvriti.

1.5 Prevoenje u binarni oblik Sredinja jedinica za obradu (procesor) razumije samo programe napisane u strojnom (binarnom) obliku. Svaki drugi oblik zapisa programa potrebno je prije izvoenja prevesti u binarni oblik. Program u binarni oblik prevodi program prevodioc (npr. kompajler).

1.6 Programski jezici - podjela Postoji mnogo programskih jezika, a svaki od njih ima svoje prednosti i nedostatke. Programski jezici se mogu podijeliti na: strojne jezike, simbolike jezike niske razine, simbolike jezike visoke razine.

1.7 Strojni jezik Strojni jezik je najnia razina prikaza programa. Program pisan strojnim jezikom je u binarnom obliku. Strojni je jezik vezan uz grau raunala. Svaki tip sredinje jedinice za obradu (procesora) ima sebi svojstven strojni jezik. Pisanje programa u strojnom jeziku je vrlo sloeno i zahtijeva dobro poznavanje grae raunala. Pisanjem programa strojnim jezikom bave se usko specijalizirani strunjaci.

1.8 Simboliki jezik niske razine Simboliki su jezici nastali kako bi ljudima olakali programiranje jer ljudi lake pamte simbole nego binarne brojeve. Asembler (engl. assembler) je siboliki jezik u kome je svaka binarna naredba strojnog jezika predoena odgovarajuim simbolom. Naredbe strojnog jezika predouju se simbolima koji se najee sastoje od kombinacije nekoliko slova, npr.: ADD, SUB, CMP. Svaka od tih kombinacija slova obino je kratica engleskog opisa naredbe pa se lako pamti. Program napisan u asembleru mora biti preveden u binarni oblik da bi ga sredinja jedinica za obradu razumjela. Simbole u binarni oblik prevodi program prevoditelj. 1.9 Simboliki jezik (asembler) Programi pisani u asembleru su neto itljiviji i laki za razumijevanje od binarnog zapisa, ali ih je jo uvijek vrlo teko pisati i ispravljati. I oni ovise o vrsti i unutarnjoj grai raunala (procesoru) pa se u naelu mogu izvravati samo na procesoru za koji su pisani.

1.10 Simboliki jezici visoke razine Da bi se jo vie olakalo programiranje i da bi se isti program mogao izvravati na razliitim raunalima (procesorima) stvoren je niz simbolikih jezika visoke razine. Kod simbolikih jezika visoke razine se vie naredbi strojnog jezika predouje jednom simbolikom naredbom. Programi napisani u nekom od viih programskih jezika u naelu su neovisni o raunalu (tonije o procesoru) na kome se izvravaju. Naredbe viih programskih jezika mnogo su vie nalik govornom jeziku, lake su za pamenje i upotrebu od naredbi simbolikih jezika nie razine. Simboliki jezici visoke razine. Simboliki jezici visoke razine mogu biti jezici ope namjene ili jezici prilagoeni odreenoj vrsti problema. U drugoj polovini 20.-og stoljea nastaju programski jezici FORTRAN, COBOL, BASIC, PASCAL, programski jezik C i mnogi drugi.

1.11 C C jezik (autor Denis M. Ritchie) je jezik ope namjene, velikih mogunosti, u naelu neovisan o raunalu na kojem se izvodi. Postigao je vrlo velik uspjeh jer su njime razvijani razliiti operacijski 5

sustavi i namjenski programi (programi namijenjeni rjeavanju odreenih zadataka izravno zanimljivih korisniku). Programski jezik C nema mnogo kljunih rijei, prema ANSI (engl. American National Standard Institute) C standardu samo 32. C je modularan jezik jer omoguava podjelu programskog zadatka na manje cjeline koje se mogu neovisno rjeavati i provjeravati, a po zavretku ugraditi u glavni program.

2. Algoritam
Raunalo zadatak moe rijeiti samo ako dobije upute kako to uiniti. Takve se upute nazivaju algoritmom. Algoritam je popis radnji (operacija, uputstava) koje treba izvriti u navedenom redoslijedu da bi se dobilo rjeenje postavljenog zadatka. Mnoge radnje u svakodnevnom ivotu izvravamo prema unaprijed nauenom algoritmu (npr. slanje SMS poruke mobilnim telefonom). Promjena poretka izvravanja osnovnih radnji algoritma najee dovodi do neeljenih rezultata (algoritam se mora izvriti tono prema uputstvu).

2.1 Elementi algoritma ULAZ


(ulazni podaci)

OBRADA
(algoritam)

IZLAZ
(rezultat)

Algoritam treba provjeriti sa to vie ulaznih podataka za koje je poznata izlazna vrijednost. Veina zadataka se moe rijeiti na vie razliitih naina pa je za njihovo rjeenje mogue napisati vie razliitih algoritama. Autor algoritma redovito nastoji pronai algoritam koje najbre, najuinkovitije i najsigurnije dovodi do rezultata. Zadatak je mogue rijeiti pomou raunala ako se algoritam predoi naredbama odabranog programskog jezika (napie program).

2.2 Dijagram tijeka Algoritam se moe prikazati grafiki. Grafiki prikaz algoritma naziva se dijagram tijeka. Takav je prikaz koristan jer pregledno prikazuje algoritam, omoguava analizu problema, laku provjeru i traenje boljih postupaka rjeavanja zadatka. Znakovi dijagrama tijeka: poetak ili kraj programa ulaz podataka donoenje odluke, grananje u programu obrada podataka izlaz podataka (jedna ili vie naredbi obrade) (ili ) (ili )

2.3 Osnovne algoritamske strukture Osnovne algoritamske strukture mogu se svrstati u tri skupine. To su: slijedni algoritam (slijed, niz), grananje, petlja. 7

2.4 Slijedni algoritam Samo u sluaju rjeavanja najjednostavnijih zadataka, algoritam je pravocrtan, tj. uvijek se izvrava u istom slijedu naredbi. Takav emo algoritam nazivati slijedni algoritam (slijed, niz). Primjer: Korisnik unosi dva broja, brojevi se zbrajaju pa se ispisuje dobiveni zbroj. (Treba uoiti da se bez obzira na ulazne brojeve naredbe uvijek izvravaju istim redoslijedom.)

Dijagram tijeka slijednog algoritma za zbrajanje dva broja:

2.5 Grananje esto je algoritam ovisan o meurezultatima ili ulaznim podacima pa se redoslijed izvravanja naredbi mijenja ovisno o tim podacima. Takva se struktura algoritma naziva grananje jer se ovisno o stanju podataka odvija jedan od moguih dijelova (grana) algoritma. Primjer: Korisnik unosi cijeli broj, rauna se apsolutna vrijednost tog broja pa se ispisuje rezultat. (Treba uoiti da redoslijed izvravanja naredbi ovisi o meurezultatu.)

Dijagram tijeka grananja za raunanje apsolutne vrijednosti broja: 2.6 Petlja esto se dijelovi algoritma trebaju ponoviti vie puta (iterirati). Takva se struktura algoritma naziva algoritamska petlja. Ponavljati se moe: unaprijed zadani broj puta, sve dok se ne ispuni odreeni uvjet. Primjer: Potrebno je ispisati prvih 100 prirodnih brojeva. (Treba uoiti da se dio naredbi izvrava opetovano sto puta.)

Dijagram tijeka petlje za ispis prvih sto prirodnih brojeva:

3. Nastanak programa
Raunalo se sastoji od mnogo komponenti. Pouzdanost i djelotvornost raunala ovisi o pouzdanosti i djelotvornosti svake od ugraenih komponenata. Kada bi se konstruktor raunala morao baviti unutarnjom graom svake od sastavnih komponenti te poboljanjima njihove kvalitete i pouzdanosti, njegov bi se posao bitno poveao, a pouzdanost raunala smanjila. Za olakanje rada konstruktoru raunala posao se dijeli, pa o grai i pouzdanosti svake od komponenti brine njen proizvoa. Proizvoa pojedine komponente tehnoloki je specijaliziran ba za tu komponentu, pa su njegovi proizvodi kvalitetni i pouzdani. Komponente su normirane pa se mogu ugraditi u razliite elektronike ureaje to omoguava proizvodnju velikih serija i snienje cijena. Konstruktor koristi gotove komponente i ne mora poznavati unutarnju grau svake od njih, dovoljno je da zna zadau koju ta komponenta obavlja i nain njezina spajanja s ostalim dijelovima raunala. To mu bitno olakava posao i omoguuje izradu pouzdanijih i djelotvornijih raunala.

3.1 Objekti Zamisao uporabe gotovih komponenti pri gradnji sloenih sustava primjenjena je i pri izradi programa. Programski se zadatak dijeli na manje dijelove koji se mogu neovisno rjeavati i provjeravati. Gotovi dijelovi programa nazivaju se objekti (engl. object). Objekti se mogu pisati i provjeravati odvojeno od cjeline i rabiti u razliitim programima.

3.2 Objektno orijentirani program Programi koji koriste objekte nazivaju se objektno orijentirani programi (engl. OOP, object oriented programs). U objektno orijentirani program ugrauju se gotovi objekti. Ovakav nain rada poveava djelotvornost programera i kvalitetu programa, a sniava cijenu izrade programa.

3.3 C++ Jezik C++ je jedan od objektno orijentiranih programa. Jezik je nastao osamdesetih godina 20.tog stoljea. Autor jezika je Bjarne Stroustrup. Na tritu postoji vie inaica prevoditelja jezika C++. Neke su komercijalne, a neke besplatne. Najpoznatije su: Microsoft Visual C++, Borland C++ Builder, Dev C++

3.4 Borland C++ Builder Osnove programiranja biti e pokazane pomou programa Borland C++buildera.

3.5 Nastanak programa Nastanak programa moe se podijeliti na: pisanje izvornog koda, prevoenje izvornog koda, povezivanje u izvrni kod, provjeravanje programa. 3.6 Izvorni kod Kombinacijom naredbi programskog jezika nastaje izvorni kod (engl. source code). Izvorni je kod mogue pisati u bilo kojem programu za ureivanje teksta (engl. text editor). Danas se uglavnom programi za pisanje izvornog koda objedinjuju u cjelinu sa prevodiocem i povezivaem (integrirana razvojna okolina, IDE). Izvorni kod programa C++ sprema se u datoteku izvornog koda pod smislenim imenom i nastavkom *.cpp 3.7 Izvrni oblik Programi se mogu izvriti na raunalu samo ako su u binarnom obliku. Takav se oblik programa naziva izvrni oblik (engl. executable). Izvorni se kod mora prevesti u izvrni. Prevodi se pomou programa koji se nazivaju prevoditelj (engl. compiler) i poveziva (engl. linker). Program prevoditelj prevodi izvorni kod iz vieg programskog jezika u strojni oblik te provjerava sintaksu napisanog izvornog koda. Ako pronae pogreke (engl. compile-time error), ispisuje poruke i upozorenja o njima. Otkrivene pogreke treba ispraviti pa ponovo pokrenuti program za prevoenje. Prevoenjem nastaje datoteka objektnog koda (engl. object code), nastavka *.obj. Objektni kod nije izvrni program i ne moe se izravno izvriti na raunalu. Objektni kod je meukorak do izvrnog koda i uz ostalo omoguava ukljuivanje gotovih dijelova programa iz drugih datoteka. 3.8 Biblioteke Datoteke koje sadravaju gotove dijelove programa nazivaju se biblioteke (engl. libraries). Takvi se gotovi dijelovi programa mogu rabiti u drugim programima. Kada se koriste biblioteke vie nije potrebno uvijek iznova zapisivati radnje (funkcije) koje se esto rabe. Takve se radnje u program ukljuuju iz postojeih biblioteka. Npr. moe postojati biblioteka formula za izraunavanje povrina geometrijskih likova ije formule mogu rabiti drugi programi. 10

3.9 Poveziva Program koji povezuje objektnu datoteku s bibliotekama i drugim potrebnim datotekama naziva se poveziva (engl. linker). Ako se pri povezivanju pojavi pogreka (engl. link-time error), bit e ispisana poruka o tome. Pogreku valja ispraviti pa ponovno pokrenuti prevoenje i povezivanje. Rezultat uspjenog povezivanja je izvrna datoteka (*.exe). U naelu, izvrnoj datoteci nisu potrebni nikakvi dodaci pa se moe izvravati i bez izvornog programa, objektnih datoteka, prevoditelja, povezivaa itd.

3.10 Izvrna datoteka Izvrna datoteka je oblik programa i moe se izravno izvriti na raunalu za koji je prevedena. Primjerice IBM i Apple raunala su meusobno nesukladna (nekompatibilna, tj. nisu udruiva), pa se izvrni program preveden za IBM PC sukladno raunalo ne moe se izvriti na Macintosh raunalu i obrnuto.

3.11 Projekt a bi se stvorila izvrna datoteka C++ programa potrebno je pokrenuti nekoliko programa (tekst editor, prevoditelj, poveziva). Kao posljedica nastaje vie datoteka koje su meusobno vezane.

Korisniku koji zadatak rijeava C++ programom nepraktino je pamtiti koje programe i kojim redoslijedom treba pokrenuti, te koje su sve datoteke potrebne za stvaranje izvrne datoteke. Stoga se korisniku posao olakava pomou takozvanog projekta (engl. project). Projekt je datoteka u kojoj su zapisane sve potrebne informacije o prevoditelju, povezivau, datotekama, bibliotekama i ostalom potrebnom za izradu izvrne datoteke. Projekt dakle brine o svemu to je potrebno uiniti da bi od izvornog koda nastala datoteka izvrnog koda.

3.12 Pogreke Tijekom rada mogu se javiti tri vrste pogreaka: sintaktike pogreke (otkriva ih program prevoditelj), pogreke povezivanja (otkriva ih program poveziva), logike pogreke (mora ih pronai korisnik sam).

11

3.13 Provjera programa Za otkrivanje logikih pogreaka (onih koje dovode do pogrenih rezultata) potrebno je provjeriti program s podacima za koje je unaprijed poznat krajnji rezultat. Ispravljanje pogreaka nastalih u ovoj fazi (engl. run-time error) je najtee. Logike pogreke otkriva i ispravlja ovjek a ne raunalni program.

3.14Borland C++ Builder Program Borland C++ builder se pokree na uobiajeni nain: Start/Programs Borland C++ Builder6 C++ builder 6 Da bi se zapoelo s radom treba birati: New U prozoru New treba birati: Console Wizard

3.15 C++ datoteka izvornog koda Da bi se stvorila nova datoteka izvornog koda potrebno je u pogledu FileView oznaiti stavku Source Files koja se nalazi pod nazivom projekta. Nakon toga FileNew, u prozoru New treba birati: Files C++ Source File. Nakon toga treba zadati ime datoteke. Stvorena je datoteka izvornog koda, nastavka *.cpp. Otvara se radno podruje za unos izvornog koda. Primjer: Unijeti sljedei kod.
#include<iostream.h> int main()

12

{ cout<<"Puno uspjeha u ucenju!<<endl;


System(pause);

return 0;

Po unosu, kod je potrebno prevesti i povezati. To moemo odabirom izbornika: BuildBuild il odabirom za to predvienog dugmeta u alatnoj traci .

Ako nije bilo pogreaka, u donjoj e se plohi pojaviti poruka ovakva oblika:

Ukoliko u programu postoje pogreke bit e ispisane poruke i upozorenja o njima. Uz svaku je pogreku ispisan, osim njenog opisa i broj retka u kojem je pogreka nastala. Sve pogreke treba ukloniti. Nakon toga je potrebno ponovno pokrenuti prevoenje i povezivanje. Krajnji je rezultat datoteka izvrnog koda. Datoteku izvrnog koda pokree se: BuildExecute ili dugmetom u alatnoj traci. Pokretanjem

izvrne datoteke otvara se DOS prozor (ili Command Prompt). U njemu se po potrebi upisuju ulazni podaci i ispisuje rezultat programa. Izvrnu se datoteku moe pokrenuti dvoklikom sa mjesta na koje je pohranjena. Moe se dogoditi da se DOS prozor u kome je ispisan rezultat zatvori prebrzo, pa korisnik ne moe proitati rezultat. Prebrzo zatvaranje DOS prozora moe se sprijeiti tako da se prethodni primjer dopuni na sljedei nain:
#include<iostream.h> #include<conio.h> int main() { cout<<"Puno uspjeha u ucenju!<<endl; getch(); return 0; }

13

Dopuna uvodi ekanje unosa znaka s tipkovnice prije nastavka izvoenja programa.

14

4. C++ podaci

4.1 Podaci Program obrauje podatke. Podaci se spremaju u memoriju raunala. Raunalo za svaki podatak predvia i rezervira mjesto u memoriji.

4.2 Memorijske adrese Raunalo rezervirana mjesta u memoriji razlikuje pomou memorijskih adresa. Korisnicima je takav nain biljeenja mjesta pohrane podataka neprikladan. Da bi se korisnicima olakao rad uvodi se pojam varijable.

4.3 Varijable Mjesto u memoriji rezervirano za pohranu podatka naziva se varijabla. Da bi se varijable meusobno razlikovale, dodjeljuju im se simbolika imena. Umjesto da korisnik rezervirana mjesta u memoriji razlikuje pomou memorijskih adresa, moe ih razlikovati na temelju njihovih simbolikih imena. Simboliko se ime naziva jo i identifikator. Simboliko ime odreuje korisnik potujui pravila: Smiju se rabiti slova engleske abecede, brojevi i znak _ (podcrtavanje). Simboliko ime mora poeti sa slovom ili sa znakom _ (podcrtavanje). Broj znakova u simbolikom imenu (duina) nije ogranien. Napomene: u simbolikom imenu ne smije se rabiti razmak. u simbolikom imenu ne smiju se rabiti nai dijakritiki znakovi (,,,,). u simbolikom imenu ne smiju se rabiti kljune rijei ili oznake operatora programskog jezika. Program razlikuje velika i mala slova: ViMslova, vimslova ovo su dva razliita imena Ako se koristi ime sastavljeno od vie rijei, rijei se odvajaju znakom za podcrtavanje, ili se rijei piu spojeno s velikim poetnim slovom.

Ispravna simbolika imena: x promjer_kruga _kon1 DatumUpisa Val23m1_X

Neispravna simbolika imena: 1Y (ne smije poeti brojem) x[1] (ne smije sadravati zagrade) Datum Upisa (ne smije sadravati razmak) cout (ne smije biti kljuna rije) broja1 (ne smije sadravati nae dijakritike znakove)

15

4.4 Oznaka tipa podatka Postoje razliite vrste podataka, npr. cijeli brojevi, realni brojevi, znakovi, nizovi itd. Stoga svakoj varijabli osim imena treba dodijeliti i oznaku tipa podatka koji e u nju biti smjeten. Dodjela oznake tipa je potrebna da bi raunalo znalo koliko mjesta u memoriji treba predvidjeti za pohranu tog podatka. Program prevoditelj e pravilno prevesti izvorni kod samo ako je za svaku varijablu prije koritenja jednoznano odreen tip podatka. Za podatak kome je dodijeljen tip raunalo zna koliko e mjesta zauzeti u memoriji, koji su mu rasponi vrijednosti, te kakve su operacije s tim podatkom mogue. Deklariranje Postupak pridjeljivanja simbolikog imena varijabli i odreivanje tipa podatka naziva se deklariranje.
int a; float b;

oznaka tipa podatka

simboliko ime podatka

(Znaenje oznaka tipa int i float objanjeno je u nastavku.) Ako je podataka vie, odvaja ih se zarezom.
int c, d, e;

Gornji se izraz moe itati ovako: odreuje se (deklarira) da su varijable c, d i e tipa int.

4.5 Pridruivanje vrijednosti Svaka se varijabla mora deklarirati. Deklariranoj varijabli se moe pridruiti vrijednost. Varijabli se moe pridruiti vrijednost pomou operatora pridruivanja. Operator pridruivanja je znak =. Ovdje se treba naviknuti na novo znaenje znaka =, koji vie ne oznaava izjednaavanje (jednakost) kao u matematici! Objektu s lijeve strane operatora pridruivanja pridruuje se vrijednost sa njegove desne strane.
a = 5 ;

Gornji se izraz moe itati kao: neka varijabla a poprimi vrijednost 5. Objekti s lijeve strane operatora pridruivanja moraju biti varijable. S obzirom na novo znaenje znaka jednakosti, u C++ ispravan je i sljedei izraz:
a=a+3;

Treba ga itati: Vrijednost varijable a uveaj za 3 (Podatku koji se nalazi u varijabli a dodaj vrijednost 3 i zatim taj zbroj pohrani u varijablu a.) U istoj se naredbi moe koristiti i vie operatora pridruivanja (smjer operacije ide s desna na lijevo).
a=b=c=5;

Treba itati: Neka varijabla c poprimi vrijednost 5, a varijabla b poprimi istu vrijednost koju ima varijabla c. Neka varijabla a poprimi istu vrijednost koju ima varijabla b.

16

4.6 Tipovi podataka Podaci se mogu podijeliti u osnovne i ostale tipove. Osnovni tipovi su: brojevi (cijeli i realni), znakovi. 4.7 Brojevi C++ razlikuje dvije osnovne vrste brojeva. To su: cijeli brojevi (engl. integer), realni brojevi (engl. floating point).

4.8 Cijeli brojevi - int Ako je podatak cijeli broj njegova oznaka tipa je int. Varijabla oznaena sa int je cjelobrojna varijabla.
int a=10;

Cjelobrojnoj varijabli moe se pridijeliti samo cijeli broj. Za pohranu cijelog broja u memoriji su predviena 4 bajta (32 bita). Prvi je bit rezerviran za predznak, pa za pohranu broja ostaje 31 bit. 31 bit omoguava pohranu brojeva iz raspona: [-231, 231-1] to jest od -2.147.483.648 do 2.147.483.647 4.9 Broj bez predznaka Sve cjelobrojne varijable mogu biti deklarirane sa ili bez predznaka. Ako se deklarira cijeli broj bez predznaka potrebno je ispred oznake tipa staviti kljunu rije unsigned.
unsigned int a;

U sluaju cijelog broja bez predznaka bit za predznak vie nije potreban. Najveu je vrijednost sada mogue prikazati sa 32 bita. Najvei broj koji se moe prikazati sa 32 binarne znamenke je 232-1=4294967295.

4.10 Realni brojevi - float Ako je podatak realni broj njegova oznaka tipa je float. Varijabla oznaena sa float je realna varijabla.
float a=4.67;

Za pohranu realnog broja u memoriji su predviena 4 bajta (32 bita). Omoguena je pohrana brojeva u rasponu: od [-3.4*1038 do -1.17*10-38] do [1.17*10-38 do 3.4*1038]

4.11 Eksponencijalni prikaz broja Realne je brojeve praktino prikazati u eksponencijalnom prikazu. Eksponencijalni prikaz broja je oblika: M10E 17

M oznaava dio broja koji se naziva mantisa, a E je eksponent broja (baze) 10. Mantisa se zapisuje tako da je prva znamenka razliita od nule lijevo od decimalne toke. 6.345 1236.345 0.000765 = = = 6.345100 1.236345103 7.6510-4

Broj se u eksponencijalnom prikazu moe zapisati i ovako:


9.11e-31

Broj iza slova e je eksponent baze. Broj ispred slova e je mantisa. (Kod dekadskih brojeva baza je 10.) Slovo e moe biti zapisano kao malo ili veliko slovo, praznine unutar zapisa broja nisu dozvoljene (prazninu prevoditelj prihvaa kao kraj broja). 6.345 1236.345 0.000765 = = = 6.345100 = 3 1.23634510 = 7.6510-4 = 6.345e0 1.236345E+3 7.65e-4

4.12 Realne varijable U realnu se varijablu sprema samo 7 decimalnih znamenki mantise. Ako se unese vie od sedam znamenki, prilikom prevoenja e biti zanemarene najmanje vrijedne decimalne znamenke (po potrebi se zaokruuje). Treba uoiti razliku izmeu broja decimalnih znamenki koje se spremaju i broja znamenki koje se prikazuju na zaslonu! Broj znamenaka prikaza na zaslonu se po potrebi moe proiriti odgovarajuom naredbom. Najmanje vrijedne decimalne znamenke (ako ih je uneseno vie od 7) se zanemaruju (zaokruenje). Uobiajeno se realni brojevi prikazuju sa do 6 znamenaka, raunajui od prve raziite od 0. Ako se broj ne moe prikazati sa toliko znamenaka bit e prikazan u eksponencijalnom prikazu. Ako navedena tonost ne zadovoljava ili ako se ele koristiti brojevi manji od 10 -38 ili vei od 1038, mogu se upotrijebiti varijable vee tonosti. To su varijable tipa: double (eksponent 308), sa tonou 15 decimalnih znamenki, long double (eksponent 4932) sa tonou 18 decimalnih znamenki.

4.13 Znakovi - char Ako je podatak znak, njegova oznaka tipa je char. Podatak tipa char je predstavljen jednim znakom unutar jednostrukih navodnika ili ASCII vrijednou tog znaka.
char slovoA = 'A'; char SLOVOA = 65;

Za pohranu znakovnog podatka je u memoriji predvien 1 bajt (8 bitova). Poto je 28 = 256, mogue je prikazati 256 razliitih znakova. Znak se pohranjuje kao broj koji predstavlja ASCII vrijednost odabranog znaka. Neke ASCII vrijednosti: zvuni signal ('\a') praznina (' ') (48 57) znamenke '0'-'9' (65 90) velika slova 'A' do 'Z' (97 122) mala slova 'a' do 'z' 18

U primjeru ja prikazano pridruivanje podatka varijabli tipa char. Prvoj je pridruen znak oznaen jednostrukim navodnicima, a drugoj dekadska ASCII vrijednost tog znaka.

#include<iostream.h> int main() { char a,b; a='A'; b=65; cout<<a<<endl; cout<<b<<endl; System(pause); return 0; }

Ako je potreban znak koji se ne moe prikazati na zaslonu, koristi se slijed koji poinje lijevom kosom crtom (engl. backslash). U primjeru je prikaz zvunog signala (engl. alert), te pomak u novi red.
#include<iostream.h> int main() { char zvuk='\a'; char novi_red='\n'; cout<<zvuk<<zvuk<<novi_red; System(pause); return 0; }

4.14 Znakovni niz Za pohranu teksta se koriste znakovni nizovi (engl. character strings). Za sada je dovoljno znati da se sadraj znakovnog niza navodi unutar para dvostrukih navodnika. Npr.: Ovo je znakovni niz Primjer ispisa znakovnog niza: Treba ispisati znakovni niz Prvi niz znakova, nakon toga znak zareza pa niz drugi niz znakova.
#include<iostream.h> int main() { cout<<"Prvi niz znakova"<<", "<<"drugi niz System(pause); return 0; }

znakova.";

19

4.15 Konstante U programima se koriste vrijednosti koje se tijekom odvijanja programa ne smiju mijenjati. Takve se vrijednosti nazivaju konstante. Konstante se mogu spremiti u rezervirana mjesta u memoriji zbog lakeg rukovanja s njima. Konstantu treba zatititi od moguih neeljenih promjena tijekom odvijanja programa. Za zatitu se koristi kljuna rije const koja se dodaje ispred oznake tipa varijable.
const float pi = 3.141593

Ako se u programu pokua promijeniti vrijednost konstante, prilikom prevoenja e program prevoditelj (engl. compiler) javiti pogreku.

20

5. C++ osnovna struktura programa

5.1 Funkcije U svakom se sloenijem programu mogu izdvojiti nizovi naredbi koji ine logike cjeline a obavljaju odreene radnje. Kada se neka od takvih radnji eli ponoviti sa drugim vrijednostima, niz naredbi treba ponovno zapisati. Kako bi se izbjeglo ponovno zapisivanje niza naredbi, taj se niz naredbi moe izdvojiti, imenovati i spremiti. Takav se izdvojeni niz naredbi koje ine logiku cjelinu naziva funkcija.

5.2 Deklaracija funkcije Svaku funkciju valja deklarirati. Pri tom treba odrediti: argumente funkcije, to jest podatke koji se predaju funkciji da ih ona obradi na eljeni nain naziv funkcije tip podatka koji funkcija vraa pozivatelju. Deklaracija funkcije je oblika:
tip_funkcije naziv_funkcije (popis argumenata)

tip podatka kojeg funkcija vraa pozivatelju

broj i tip podataka (argumenata) koji se predaju funkciji prilikom njenog poziva

Kada se u programu javi potreba za izvrenjem radnje koju moe obaviti neka funkcija, funkciju treba pozvati. Funkcija se poziva navoenjem njenog naziva i potrebnih parametara. Funkcije se ponaaju kao zasebne cjeline pa korisnik ne mora brinuti o tome kako one rade ve mora znati to one rade.

5.3 Definicija funkcije Definicija funkcije je skup naredbi koje odreuju to i kako funkcija radi. Skup naredbi od kojih je sainjena funkcija ini tijelo funkcije. Tijelo funkcije zapoinje nakon otvorene vitiaste zagrade, a zavrava zatvorenom vitiastom zagradom. Tijelo funkcije se zbog preglednosti redovito pie uvueno u odnosu na ostali izvorni kod. Svaka funkcija zavrava kljunom rijei return. Uz return je podatak kojeg funkcija kao rezultat vraa pozivatelju.

5.4 Kraj naredbe Sve to prevoditelj nae nakon znaka toka-zarez (;) smatra se sljedeom naredbom. Naredbe se mogu protezati i kroz nekoliko redaka, vano je samo da na kraju bude znak ;. Vie naredbi moe se zapisati u jednom retku ali svaka od njih mora zavriti s ;

21

5.5 Primjer funkcije


float volumen_kvadra (float a, float b, float c) { return a*b*c; }

Funkcija rauna volumen kvadra. Prikaz poziva ove funkcije iz glavnog programa:

#include<iostream.h> float volumen_kvadra (float a, float b, float c) { return a*b*c; } int main() { float a,b,c,v; cout<<"Unesi vrijednosti duljina bridova kvadra:"<<endl; cin>>a>>b>>c; v=volumen_kvadra(a,b,c); cout<<"Volumen kvadra zadanih duljina bridova iznosi <<v<<endl; System(pause); return 0; }

22

5.6 Funkcija main Programi se mogu sastojati od mnogo funkcija. Kako bi se znalo s kojom funkcijom poeti izvoenje uvodi se funkcija main. Svaki C++ program e uvijek zapoeti izvoenje tako da najprije izvri funkciju main. Funkcija main se zato naziva ulazna toka. Svaki C++ program mora imati najmanje jednu funkciju (moe ih imati i mnogo), a to je funkcija main. Svaki C++ program mora imati funkciju main. Ako nema funkcije main, program prevoditelj e javiti pogreku jer ne zna s kojom funkcijom zapoeti.

5.7 Deklaracija funkcije main Postoji vie oblika funkcije main a u ovim e se vjebama koristiti oblik:
int main()

Tip podatka kojeg funkcija main vraa pozivatelju je cijeli broj (int), a argumenata nema, tj. popis argumenata je prazan ().
main() return 0

U deklaraciji funkcije main je definirano da e rezultat funkcije biti cijeli broj, stoga se naredbom return pozivatelju mora vratiti cijeli broj. Funkcija main zavrava naredbom return 0. U sluaju da neka od naredbi funkcije main izazove prekid programa, pri izvrenju se nee stii do naredbe return 0 i ona se nee izvriti. Dakle, 0 je poruka pozivatelju (a to je obino operacijski sustav) da su sve naredbe funkcije main izvrene ispravno. Prema dogovoru funkcija main vraa 0, pa se stoga pie return 0 na kraju funkcije main. to e operacijski sustav poduzeti ako nakon return nije 0, ovisi o operacijskom sustavu. Stoga, zbog dogovora i ujednaenosti valja pisati return 0 (a ne neku drugu vrijednost) na kraju main funkcije. Prvi program
int main() { return 0; }

Ako se napie ovakav program pa se nakon toga pokrene prevoenje i povezivanje, sve e proi bez pogreke. Kada se ovakav program pokrene, na zaslonu se nee dogoditi nita jer nema tijela funkcije (izmeu vitiastih zagrada nema naredbi osim return 0).

5.8 Pretprocesorske naredbe Prije glavne, main funkcije navode se pretprocesorske naredbe. Pretprocesorske naredbe su naredbe koje se izvravaju prije poetka prevoenja. Pretprocesor dopunjuje izvorni kd te se takav dopunjeni kd prevodi. Pretprocesorske naredbe zapoinju znakom #. Opi oblik pretprocesorske naredbe je:
#naredba parametri

Za razliku od ostalih naredbi, pretprocesorske naredbe ne zavravaju znakom toka-zarez (;). 23

Jedna od pretprocesorskih naredbi je naredba include. Naredba include ima oblik:


#include <.......>

Naredbom include se u izvorni kod programa ukljuuje sadraj datoteke koja je navedena unutar znakova < i > iza naredbe include. Npr. naredba include <iostream.h> ukljuuje datoteku iostream u program. U programu se moe uporabiti proizvoljni broj naredbi include (on ovisi o broju datoteka iji se sadraj na taj nain eli ukljuiti u izvorni kod).

5.9 Biblioteka Biblioteke (engl. library) su posebne vrste datoteka koje sadre skupove funkcija. U biblioteke se pohranjuju funkcije za koje se pretpostavlja da bi mogle biti upotrebljive korisnicima koji piu programe u C++. Postoje razne biblioteke u koje su smjetene funkcije razvrstane po smislenosti. Kada programer naredbom include ukljui eljenu biblioteku, na raspolaganju su mu sve funkcije te biblioteke. Unutar znakova < i > navodi se naziv eljene datoteke biblioteke. Posljedica je ista kao da je umjesto naredbe #include <naziv_biblioteke> zapisan cjelokupni sadraj eljene datoteke biblioteke. S gledita korisnika nije bitno znati podrobnosti ukljuivanja datoteka biblioteka naredbom include. Potrebno je samo znati koja datoteka biblioteka sadri one funkcije (programe) koje korisnik eli rabiti u svome programu te kako je ukljuiti naredbom include.

5.10 Ulazni i izlazni tokovi Da bi program bio upotrebljiv mora omoguiti komunikaciju s ulazno/izlaznim ureajima (tipkovnicom, monitorom, diskom i sl.). Komunikacija s ulazno/izlaznim ureajima se u C++u ostvaruje uz pomo ulaznih i izlaznih tokova (engl. input and output streams). Izlazni tok prima podatke od programa i prosljeuje ih izlaznom ureaju. Izlazni tok brine da podaci na ispravan nain stignu do izlaznog ureaja. Ulazni tok prima podatke od ulaznog ureaja i predaje ih programu. Ulazni tok brine da podaci na ispravan nain stignu od ulaznog ureaja do programa. Svaki program prima podatke posredstvom ulazno-izlaznih tokova i rezultat predaje okolini posredstvom ulazno-izlaznih tokova. Stoga je, s gledita programa, sasvim svejedno koji se ulazni i izlazni ureaji rabe jer se svi podaci u program unose i iz programa predaju okolini na isti nain. Izlazni tok alje podatke konzoli. Izlazna konzola moe biti bilo koji izlazni ureaj ali je to praktino u svim sluajevima monitor. Ulazni tok prima podatke od konzole. Ulazna konzola moe biti bilo koji ulazni ureaj ali je to praktino u svim sluajevima tipkovnica. to e biti izlazna i ulazna konzola odreuje se naredbama operacijskog sustava. Npr. moe se odrediti da ulazna konzola bude tipkovnica, a izlazna datoteka na disku. Pri takvoj se promjeni s gledita korisnikog programa nita ne mijenja (ne treba mijenjati niti jednu naredbu).

5.11 iostream Biblioteka (datoteka) iostream sadri niz ulazno-izlaznih funkcija koje omoguavaju rukovanje ulazno-izlaznim tokovima a programer ih poziva prema potrebi u svoj program. Toan popis, nazivi i djelovanje funkcija pohranjenih u biblioteku iostream moe se nai u dokumentaciji iostream biblioteke. Dvije ulazno-izlazne funkcije koje se esto koriste su cout i cin: 24

5.12 cout Podaci se na zaslon monitora ispisuju pomou funkcije cout i operatora ispisa <<. Npr.:
cout<<13;

e ispisati broj 13 na zaslon monitora. Sa desne strane operatora ispisa moe biti bilo koji tip podataka.
#include<iostream.h> int main() { float a=56.78; cout<<34; cout<<a; cout<<"Moguc je i ispis niza znakova"; System(pause); return 0; }

5.13 endl U prethodnom primjeru su svi podaci ispisani u istome retku. Ako korisnik eli svaki od podataka ispisati u zasebnom retku, treba rabiti konstantu endl. Zadatak joj je da pokaziva ispisa pomie na poetak sljedeeg retka na zaslonu. Konstanta endl je pohranjena u biblioteci iostream. Ako se u prethodni primjer doda endl, ispis e izgledati ovako:
#include<iostream.h> int main() { float a=56.78; cout<<34<<endl; cout<<a<<endl; cout<<"Moguc je i ispis niza znakova"<<endl; System(pause); return 0; }

25

Ulanavanje operatora << Mogue je ulanavanje operatora ispisa koje se izvodi s lijeva na desno.
#include<iostream.h> int main() { float a=56.78; cout<<34<<a<<" Moguc je i ispis niza znakova"; System(pause); return 0;

Ako se pri ulanavanju operatora ispisa predugi redak eli prelomiti, to je potrebno uiniti ispred operatora ispisa. Npr:
cout<<34<<a<<" Moguc je i ispis niza znakova";

moe se prelomiti i zapisati ovako:


cout<<34<<a <<" Moguc je i ispis niza znakova";

26

5.14 cin Podaci se sa tipkovnice itaju pomou funkcije cin i operatora unosa >>. Npr.:
cin>>x

oekuje unos podatka s tipkovnice koji e biti pohranjen u prethodno deklariranu varijablu x (treba upisati podatak i pritisnuti tipku Enter). Sa desne strane ulaznog operatora moe se nai bilo koji tip podataka.
#include<iostream.h> int main() { int a; float b; cout<<upisati cijeli broj"; cin>>a; cout<<upisati realni broj; cin>>b; System(pause); return 0; }

Posljedica naredbe unosa je prekid izvrenja nastavka programa sve dok se ne unese podatak i pritisne tipka [Enter] (program eka na podatak). Ulanavanje operatora >> Mogue je ulanavanje ulaznih operatora koje se izvodi s lijeva na desno. Svaki sljedei unos se nastavlja od mjesta na kome je pretodni unos zavrio.
#include<iostream.h> int main() { int a; int b; cout<<"Upisi dva cijela broja:"<<endl; cin>>a>>b; cout<<endl<<a<<endl; cout<<b<<endl; System(pause); return 0; }

27

U ovom primjeru vie se ulaznih podataka upisuje u istome retku, odvojeni prazninama. U tome sluaju tek nakon posljednjeg unosa treba pritisnuti tipku [Enter].

5.15 Pogreke pri unosu podataka Vjerojatno je da se prilikom unosa podataka ponekad naini pogreka. Npr. jedna od moguih pogreaka je unos pogrenog tipa podatka. U tom se sluaju operacija unosa prekida. 5.16 Pogreke pri uitanju U primjeru se unose pa ispisuju dva cijela broja.
#include<iostream.h> int main() { int a,b; cout<<"Upisi dva cijela broja:"<<endl; cin>>a; cin>>b; cout<<endl<<"Pohranjeni su ovi podaci:"<<endl; cout<<"prvi podatak= "<<a<<endl; cout<<"drugi podatak= "<<b<<endl; System(pause); return 0; }

28

Nekoliko moguih pogreaka pri unosu podataka u navedenom primjeru: Umjesto prvog cijelog broja upisan je realan broj. On je uzrokovao prekid daljnjeg unosa. Dio do decimalne toke je pohranjen kao prvi broj, a zbog preostalog dijela je nastala pogreka. Umjesto drugog cijelog broja upisan je niz znakova broj. Prvi je podatak pohranjen ispravno, a zbog drugog je nastala pogreka. Umjesto drugog cijelog broja upisan je realan broj. Prvi je podatak pohranjen ispravno, a kod drugog je dio do decimalne toke pohranjen kao cijeli broj (preostali dio je odbaen).

29

6. C++ operatori
Operatori su simboli koji predstavljaju (zamjenjuju) odreene funkcije. U C++ je definirano nekoliko skupina operatora: aritmetiki operatori logiki operatori operatori usporeivanja ostali operatori.

6.1 Aritmetiki operatori Aritmetiki operatori mogu biti: binarni (djeluju na dvije varijable) unarni (djeluju na samo jednu varijablu)

6.2 Binarni aritmetiki operatori Binarni operatori za izvoenje osnovnih aritmetikih funkcija: + zbrajanje oduzimanje * mnoenje / dijeljenje % modulo (rezultat je ostatak djeljenja dvaju cijelih brojeva)

6.3 Unarni aritmetiki operatori Unarni operatori djeluju samo na jednu varijablu. Postoje sljedei unarni operatori: za promjenu predznaka, za uveavanje (inkrementiranje), za umanjivanje (dekrementiranje). a Unarni minus (mijenja predznak broja) a++ Operator za uveavanje (uveava broj za 1 nakon to se varijabla dobavi iz memorije) a Operator za umanjivanje (umanjuje broj za 1 nakon to se varijabla dobavi iz memorije) ++a Operator za uveavanje (uveava broj za 1 prije nego se varijabla dobavi iz memorije) a Operator za umanjivanje (umanjuje broj za 1 prije nego se varijabla dobavi iz memorije) Pri uporabi unarnih operatora vano je paziti na poloaj operatora (da li se nalazi prije ili poslije varijable) jer se njegovo djelovanje u jednom i drugom sluaju razlikuje. Ako je operator ispred varijable (npr. ++a) tada se u izrazu rauna s uveanom/umanjenom vrijednou varijable. U primjeru
a=1; b=++a +5;

po izvrenju naredbi, sadraj varijable b=7. (Prvo se povea vrijednost varijable a za 1 a zatim se rauna vrijednost izraza.) Ako je operator iza varijable (npr. a++) tada se vrijednost varijable uvea/umanji tek nakon izraunavanja izraza. U primjeru 30

a=1; b=a++ +5;

po izvrenju naredbi, sadraj varijable b=6. (Prvo se rauna vrijednost izraza, a nakon toga se poveava vrijednost varijable a za 1.) Zadatak 1 (binarni aritmetiki operatori): Treba izraunati zbroj, razliku, umnoak i kvocijent dvaju realnih brojeva. Ispis neka bude oblika:
Unesi prvi broj: unesi drugi broj: .... + .... = .... .... - .... = .... .... * .... = .... .... / .... = ....

Na poetku deklarirati dvije realne varijable. Aritmetiki operatori i znak = mogu se unijeti kao znakovni nizovi.

#include<iostream.h> int main() { float a,b; cout<<"Unesi prvi broj:"<<endl; cin>>a; cout<<"unesi drugi broj:"<<endl; cin>>b; cout<<a<<"+"<<b<<"="<<a+b<<endl; cout<<a<<"-"<<b<<"="<<a-b<<endl; cout<<a<<"*"<<b<<"="<<a*b<<endl; cout<<a<<"/"<<b<<"="<<a/b<<endl; System(pause); return 0; }

Upozorenje: Ako se aritmetiki izraz zapie unutar navodnika, postaje znakovni niz!
cout<<a<<"+"<<b<<"="<<a+b<<endl; cout<<a<<"-"<<b<<"="<<a-b<<endl;

Rezultat tada nee biti vrijednost aritmetikog izraza! 31

Zadatak 2 (aritmetiki operator modulo): Potrebno je izraunati cjelobrojni kvocijent i ostatak dijeljenja dvaju cijelih brojeva. Ispis neka bude oblika:
Upisi djeljenik: Upisi djelitelj: ... : ... = ...cijelih, a ostatak je ...

Deklarirati etiri cjelobrojne varijable (dvije za ulazne veliine, a dvije za pohranu rezultata).
#include<iostream.h> int main() { int a,b,ostatak,kvoc; cout<<"Upisi djeljenik:"; cin>>a; cout<<"Upisi djelitelj:"; cin>>b; kvoc=a/b; ostatak=a%b; cout<<a<<":"<<b<<"="<<kvoc cijelih, a ostatak je "<<ostatak<<endl System(pause); return 0; <<";

Ako se varijable za pohranu ulaznih podataka deklariraju kao realne, javit e se pogreka! Ako se varijable za izlazne podatke deklariraju kao realne, javit e se upozorenje.

Zadatak 3 (redoslijed izvravanja operatora): Potrebno je izraunati srednju vrijednost po volji izabrana etiri realna broja. Ispis neka bude oblika:
Unesi cetiri realna broja,

32

odvoji ih prazninama: Srednja vrijednost brojeva ...., ...., .... i .... je .....

Na poetku deklarirati pet realnih varijabli (etiri za pohranu podataka koje odabire korisnik i jednu za pohranu rezultata). Obratiti pozornost na redoslijed izvravanja operatora (osnovnih matem.operacija).
#include<iostream.h> int main() { float a,b,c,d,srvr; cout<<"Unesi cetiri realna broja,"<<endl; cout<<"odvoji ih prazninama."<<endl; cin>>a>>b>>c>>d; srvr=(a+b+c+d)/4; cout<<endl<<"Srednja vrijednost brojeva: "<<endl; cout<<a<<", "<<b<<", "<<c<<" i "<<d<<" je " <<srvr<<endl; System(pause); return 0

Ako se srednja vrijednost rauna prema ovoj formuli, rezultat nije dobar: srvr=a+b+c+d/4. Rezultat je neispravan zbog redoslijeda izvravanja operatora. Rauna se: a+b+c+(d/4). Ispravno je rjeenje dobiveno uporabom zagrada: srvr=(a+b+c+d)/4. Ako ispis nije pregledan, izmeu rijei i brojeva treba staviti razmake (potrebno ih je predvidjeti unutar znakova navodnika). Zadatak 4 (unarni operator za promjenu predznaka): Potrebno je unijeti cijeli broj, a zatim mu unarnim operatorom promijeniti predznak. Ispis neka bude oblika:
Unesi broj: Kada se broju .... promijeni predznak, on postaje ....

#include<iostream.h> int main() { int a; cout<<"Unesi broj:"; cin>>a; cout<<endl<<"Kada se broju "<<a <<" promijeni predznak, on postaje "<<-a<<endl; System(pause); return 0;

33

Zadatak 5 (unarni operator za uveavanje nakon dobave iz memorije): Potrebno je unijeti cijeli broj i pohraniti ga u varijablu a, a zatim na taj broj primijeniti unarni operator za uveavanje nakon dobave iz memorije (a++). Ispis neka bude oblika:
Unesi broj za operaciju a++: Kad operacija zavrsi x= ... Kad operacija zavrsi a= ...

#include <iostream.h> int main() { int x, a; cout<<"Unesi broj za operaciju a++: "; cin>>a; x=a++; cout<<"Kad operacija zavrsi x= "<<x<<endl; cout<<"Kad operacija zavrsi a= "<<a<<endl; System(pause); return 0; }

Zadatak 6 (unarni operator za uveavanje prije dobave iz memorije): Potrebno je unijeti cijeli broj i pohraniti ga u varijablu a, a zatim na taj broj primijeniti unarni operator za uveavanje prije dobave iz memorije (++a). Ispis neka bude oblika:
Unesi broj za operaciju ++a: Kad operacija zavrsi x= ... Kad operacija zavrsi a= ...

#include <iostream.h> int main() { int x,a; cout<<"Unesi broj za operaciju ++a: "; cin>>a; x=++a; cout<<"Kad operacija zavrsi x= "<<x<<endl; cout<<"Kad operacija zavrsi a= "<<a<<endl; System(pause); return 0; }

34

6.4 Tip podatka operanada i rezultata Tip rezultata aritmetikog izraza ovisi o tipovima operanada iz izraza. (Ako su operandi u izrazu tipa float i rezultat aritmetikog izraza je takoer tog tipa.) Kada se u izrazu nae vie razliitih tipova operanada, tip rezultata aritmetikog izraza ovisi o definiranim pravilima pretvorbe. Podaci se prvo svode na zajedniki tip, prije zadane operacije. Pravila pretvorbe razliitih tipova podataka usmjerena su prema viem tipu podataka. Primjer pokazuje moguu greku:
int a; float b float c int d = a = b * = 3.5; = 5.0; 2; c / d;

Podaci se prvo svode na zajedniki tip i to vii,float. Rezultat izraza je 8.75.Poto se rezultat pohranjuje u varijablu a koja je odreena kao cjelobrojna (int) bit e pohranjena samo vrijednost 8. Da bi se izbjegla mogua greka i neoekivani rezultati treba nastojati ne mijeati varijable razliitih tipova. Zadatak 7 (svoenje rezultata na zajedniki tip s operandima): Treba izraunati kvocijent dvaju cijelih brojeva i spremiti ga u realnu varijablu. Ispis neka bude oblika:
Unesi prvi broj: unesi drugi broj: kvocijent iznosi: ....

Varijable a i b deklarirati kao cjelobrojne (int). Deklarirati varijablu kvocijent (tip float) za pohranu rezultata dijeljenja.
#include<iostream.h> int main() { int a,b; float kvocijent; cout<<"Unesi prvi broj:"; cin>>a; cout<<"unesi drugi broj:"; cin>>b; kvocijent=a/b; cout<<"kvocijent iznosi:"<<kvocijent<<endl; System(pause);

35

return 0; }

Poto su podijeljena dva cijela broja i rezultat izraza je cijeli broj! Pridruivanjem rezultata realnoj varijabli kvocijent postignuto je samo to da se dobiveni rezultat pohrani kao realni broj. Zadatak 8 (svoenje operanada na zajedniki tip): Treba izraunati kvocijent dva broja od kojih je jedan cijeli, a drugi realan. Rezultat spremiti u cjelobrojnu varijablu. Ispis neka bude oblika:
Unesi prvi broj: unesi drugi broj: Vrijednost izraza a/b= .... Sadrzaj varijable kvocijent iznosi: ....

Jednu od varijabli deklarirati kao cjelobrojnu (int), a drugu kao realnu (float). Deklarirati varijablu kvocijent (tip int) za pohranu rezultata dijeljenja.
#include<iostream.h> int main() { int a , kvocijent; float b; cout<<"Unesi prvi broj:"; cin>>a; cout<<"unesi drugi broj:"; cin>>b; cout<<"Vrijednost izraza a/b= "<<a/b<<endl; kvocijent=a/b; cout<<"Sadrzaj varijable kvocijent iznosi:" <<kvocijent<<endl; System(pause); return 0; }

36

Zbog toga to su operandi razliitog tipa, prvo se pretvaraju u vii tip, a to je float. Po izraunu, rezultat (16.797) se pridruuje varijabli kvocijent koja je cjelobrojna.

Zadatak 9: Treba unijeti godinu roenja i tekuu godinu. Raunaju se godine starosti. Ispis neka bude oblika:
Upisi godinu svog rodjenja: Koja je godina sada? Sada imas .... godina.

#include<iostream.h> int main() { int god,god1,god2; cout<<"Upisi godinu svog rodjenja: "; cin>>god1; cout<<"Koja je godina sada? "; cin>>god2; god=god2-god1; cout<<endl<<"Sada imas "<<god<<" godina."<<endl; System(pause); return 0; }

37

6.5 Komentari U izvornom programu (kdu) korisno je opisati to program radi, to su argumenti, objasniti deklaraciju varijabli i sl. Takvi pomoni opisi se nazivaju komentari. Njihova temeljna namjena je olakati razumijevanje programa. Komentar moe biti napisan u istom redu s naredbom ili u zasebnom redu. Komentar je tekst koji zapoinje s dvostrukom kosom crtom //, a zavrava krajem reda. Komentari su obino prikazani u drugoj boji (zbog preglednosti). Pri prevoenju izvornog kda komentar se ne prevodi. Osim za opis programa komentar se ponekad rabi za privremeno iskljuivanje dijelova izvornog kda. Komentar koji se protee na vie redaka zapisujemo izmeu oznaka /* i */. Zadatak 9a: Nadopuniti izvorni kod zadatka 9 komentarima. Privremeno iskljuiti dio izvornog koda: god=god2-god1. Pokrenuti program pa uoiti posljedice uinjenog.
... //god=god2-god1; ...

Posljedica je lako uoljiva, vrijednost podatka god nije izraunata. Umjesto tonog izrauna dobit emo zapis slian sljedeem:
Sada ima -858993460 godina.

6.6 Operatori obnavljajueg pridruivanja Operatori obnavljajueg pridruivanja omoguavaju krai zapis aritmetikih izraza. Sastoje se od znaka jednakosti i odgovarajueg aritmetikog operatora. Npr. izraz a=a+8, moe se zapisati kao a+=8. Neki od operatora obnavljajueg pridruivanja: += a = a + .... = a = a .... *= a = a * .... 38 /= a = a / .... %= a = a % ....

Zadatak 10 (operatori obnavljajueg pridruivanja): Potrebno je unijeti realni broj i pridruiti ga varijabli a. Sadraj varijable a prvo treba uveati za 5, pa umanjiti za 8, na kraju pomnoiti sa 3. Koristiti operatore obnavljajueg pridruivanja. Ispis neka bude oblika:
Upisi zeljeni broj: Sadrzaj varijable a se uvecava za 5. Sada a iznosi: .... Od trenutnog sadrzaja varijable a se oduzima 8. Sada a iznosi: .... Trenutni sadrzaj varijable a se mnozi sa 3. Sada a iznosi: .... #include<iostream.h> int main() { float a; cout<<"Upisi zeljeni broj:"; cin>>a; cout<<"Sadrzaj varijable a se uvecava za 5. Sada a \ iznosi:"<<(a+=5)<<endl; cout<<"Od trenutnog sadrzaja varijable a se oduzima 8.\ Sada a iznosi:"<<(a-=8)<<endl; cout<<"Trenutni sadrzaj varijable a se mnozi sa 3.\ Sada a iznosi:"<<(a*=3)<<endl; System(pause); return 0; }

6.7 Logiki tip podataka - bool Logiki podaci su podaci koji mogu poprimiti samo jednu od dvije vrijednosti. Npr.: true/false, da/ne, istina/la, 1/0.

39

Osim do sada navedenih tipova podataka (int, float, char) postoje i mnogi drugi. Varijabla koja je pogodna za pohranu logikog podatka je tipa bool. Takav tip podataka moe poprimiti vrijednosti true ili false. Pri ispisu se true pretvara u 1, a false u 0.

6.8 Logiki operatori Logike funkcije se izvode uporabom logikih operatora. Logiki operatori mogu biti: unarni, binarni. ! Negacija (unarni operator koji 1 pretvara u 0 i obratno) && Logiki I (engl. AND) || Logiki ILI (engl. OR) Logiki se operatori uglavnom rabe u naredbama za grananje programa. Nain rada logikih operatora I i ILI najjednostavnije je prikazati strujnim krugom u kome se nalaze dvije sklopke. Stanje otvorene sklopke moe se oznaiti sa 0, a zatvorene sa 1. Stanje u kome aruljica svijetli moe se oznaiti sa 1, a kada ne svijetli sa 0.

6.9 Logiki I Nain rada logikog I moe se prikazati sa sklopkama koje su spojene serijski. aruljica e svijetliti samo kada su obje sklopke zatvorene. Kao to pokazuje tablica stanja, logiki operator I vraa jedinicu samo ako su oba uvjeta true (ispunjen uvjet, istina, 1). U ostalim stanjima rezultat je 0. A 0 1 0 1 B (A&&B) 0 0 0 0 1 0 1 1

6.10 Logiki ILI Nain rada logikog ILI moe se prikazati sa sklopkama koje su spojene paralelno. aruljica e svijetliti ako je bilo koja (ili obje) sklopke zatvorene. Kao to pokazuje tablica stanja, logiki operator ILI vraa jedinicu ako je ispunjen samo jedan od uvjeta ( true, 1) ili ako su ispunjena oba uvjeta. U situaciji u kojoj nije ispunjen niti jedan od uvjeta, rezultat rada operatora je 0. A 0 1 0 1 B 0 0 1 1 (A||B) 0 1 1 1

40

Zadatak 11 (uporaba logikih operatora): Potrebno je unijeti dva logika podatka A i B. Ispisuje se negacija od A, vrijednost (A I B) te (A ILI B). Ispis neka bude oblika:
Vrijednost logickog podatka A= Vrijednost logickog podatka B= Ako je logicki podatak A= ... tada je suprotno od A .... Za A= .... i B= .... (A I B) = .... Za A= .... i B= .... (A ILI B)= ....

Deklarirati dvije logike varijable (bool). Operator ILI (||)zapisuje se kombinacijom tipki Alt Gr + W. (a||b)
#include<iostream.h> int main() { bool a,b; cout<<"Vrijednost logickog podatka A="; cin>>a; cout<<"Vrijednost logickog podatka B="; cin>>b; cout<<endl<<"Ako je logicki podatak A="<<a <<" tada je suprotno od A="<<!a<<endl; cout<<"Za A="<<a<<" i B="<<b<<" (A I B)="<<(a&&b)<<endl; cout<<"Za A="<<a<<" i B="<<b<<" (A ILI B)="<<(a||b)<<endl; System(pause); return 0; }

Ispravna bool varijabla moe imati vrijednost samo 0 ili 1. Kod nekih se prevoditelja sve razliito od 0 smatra podatkom true, a kod nekih ne. Da bi se izbjegla mogua pogreka treba rabiti samo vrijednosti 0 i 1.

41

6.11 Usporedba Dva se broja mogu usporeivati, a rezultat usporedbe je podatak tipa bool. Ako je napisani izraz istinit, rezultat usporedbe e biti 1 (true), a ako nije rezultat e biti 0 (false). Usporeuje se upotrebom operatora usporedbe: < manje <= manje ili jednako > vee >= vee ili jednako == jednako != razliito Operatori usporedbe se najee koriste u naredbama za grananje. Zadatak 12 (operatori usporedbe): Potrebno je unijeti dva cijela broja. Nakon toga se ti brojevi usporeuju (<, >, ==, !=) i ispisuje se rezultat usporedbe. Ispis neka bude oblika:
Vrijednost prvog broja= Vrijednost drugog broja= Je li.... < .... odgovor: .... Je li.... > .... odgovor: .... Je li.... == .... odgovor: .... Je li.... != .... odgovor: .... #include<iostream.h> int main() { int a,b; cout<<"Vrijednost prvog broja="; cin>>a; cout<<"Vrijednost drugog broja="; cin>>b; cout<<endl<<"Je li"<<a<<"<"<<b<<" odgovor: "<<(a<b)<<endl; cout<<endl<<"Je li"<<a<<">"<<b<<" odgovor: "<<(a>b)<<endl; cout<<endl<<"Je li"<<a<<"=="<<b<<" odgovor: "<<(a==b)<<endl; cout<<endl<<"Je li"<<a<<"!="<<b<<" odgovor: "<<(a!=b)<<endl; System(pause); return 0; }

Svaki se od izraza usporeivanja, npr. a<b treba zapisati unutar zagrada (a<b). Ako se izraz ne zapie unutar zagrada, bit e prijavljena pogreka. 42

6.12 String Za lake baratanje znakovnim nizovima promjenjive duljine u standardnoj je biblioteci jezika C++ definiran tip podataka string. Tip podataka string brine o prostoru kojeg treba predvidjeti u memoriji, te podrava funkcije i operacije vezane uz znakovne nizove. Biblioteka string sadri niz funkcija koje omoguavaju rukovanje sa znakovnim nizovima, treba je ukljuiti pretprocesorskom naredbom #include.
#include<string.h>

Primjer ispisa znakovnog niza


#include<iostream.h> #include<string.h> int main() { string a; a = Prvi niz znakova; cout<<a<<, <<drugi niz znakova.<<endl; System(pause); return 0; }

Znakovni niz Prvi niz znakova pohranjen je u varijablu a koja je deklarirana kao string. Niz drugi niz znakova unesen je izravno u retku programa.

Zadatak 13 (koritenje podacima tipa string): Nadopuniti zadatak 9 tako da se unosi i ime korisnika programa. Ispis neka bude oblika:
Upisi svoje ime: Upisi godinu svog rodjenja: Koja je godina sada? ..... ima .... godina.

Naredbom include ukljuiti biblioteku string zbog rukovanja sa znakovnim nizom. Deklarirati jednu varijablu tipa string. Paziti na razmake kod ispisa. 43

#include<iostream.h> #include<string.h> int main() { int god, god1, god2; string ime; cout<<"Upisi svoje ime:"; cin>>ime; cout<<endl<<"Upisi godinu svog rodjenja:"; cin>>god1; cout<<endl<<"Koja je godina sada? "; cin>>god2; god=god2-god1; cout<<endl<<ime<<" ima "<<god<<" godina."<<endl; System(pause); return 0; }

44

7. C++ Grananje

7.1 Grananje Tijek programa katkad ovisi o ulaznim podacima ili o meurezultatima obrade. Struktura kod koje se ovisno o stanju podataka odvija jedan od moguih dijelova (grana) programa, naziva se grananje. Kao primjer grananja moe posluiti ovaj zadatak: Zadatak: Treba izraunati i ispisati apsolutnu vrijednost broja kojeg upie korisnik. (Uoavamo da redoslijed izvravanja naredbi ovisi o ulaznom podatku). Dijagram tijeka grananja: Dijagram toka grananja za raunanje apsolutne vrijednosti broja.

7.2 Blok naredbi Dijelovi programa koji se uvjetno izvode objedinjavaju se u blokove naredbi. Blokovi naredbi se piu uvueno (zbog preglednosti). Svaki se blok naredbi omeuje parom otvorena-zatvorena vitiasta zagrada (osim sluaja kada se blok sastoji od samo jedne naredbe, tada se zagrade mogu izostaviti).

Ako se varijable deklariraju unutar bloka, vidljive su samo unutar bloka u kome su deklarirane i u glavnoj funkciji ne postoje. Varijable deklarirane unutar bloka nazivaju se lokalne i mogu zakloniti istoimene varijable prethodno deklarirane izvan bloka. (Zbog toga unutar bloka nije uputno deklarirati varijable istog imena kakvo je koriteno izvan bloka jer to moe izazvati zabunu.) Zadatak 1 (varijabla deklarirana unutar bloka): Treba deklarirati cjelobrojnu varijablu x unutar zasebnog bloka, pa joj pridruiti vrijednost. Pokuati ispisati vrijednost te varijable u glavnoj funkciji. Ispis neka bude oblika: Upisi cijeli broj u bloku: bloku:
Vrijednost varijable iz bloka x=....

#include<iostream.h> int main(){ { int x; cout<<endl<<"Upisi cijeli broj u bloku:"; cin>>x; } cout<<endl<<"Vrijednost varijable iz bloka x="<<x<<endl;; return 0;}

45

Pri pokuaju prevoenja bit e prijavljena pogreka.

Varijable deklarirane unutar bloka vidljive su samo unutar tog bloka. U glavnoj funkciji varijabla x ne postoji. Zato se pri prevoenju javlja pogreka.

7.3 Naredbe grananja Struktura grananja se moe ostvariti naredbama: if (if else, if else if - else), switch case. 7.4 Grananje naredbom if Naredba if omoguava uvjetno grananje programa. Daljnji tijek programa ovisi o ispunjenju uvjeta navedenog iza kljune rijei if. Uvjet (logiki izraz) se upisuje unutar para okruglih zagrada. Na kraju naredbe if ne stavlja se znak ; Naredba if osnovni oblik
if (logiki izraz) { blok naredbi } naredba iza bloka

Ako je vrijednost logikog izraza istina (1), izvodi se blok naredbi koji se nalazi iza naredbe if. Ako je vrijednost logikog izraza neistina (0), blok se preskae i izvoenje se nastavlja od prve naredbe iza bloka.

Zadatak 2 (osnovni oblik naredbe if): Treba unijeti cijeli broj pa provjeriti da li je negativan ili pozitivan. U oba sluaja ispisati apsolutnu vrijednost broja. Ispis neka bude oblika:
Upisi broj: Broj...je.... Njegova apsolutna vrijednost je....

Primjer e biti rijeen pomou dvije if naredbe. Ako je (a < 0) izvrit e se blok naredbi nakon if naredbe. Ako uvjet nije zadovoljen, blok naredbi nakon prve if naredbe se preskae i izvoenje programa se nastavlja od prve naredbe iza bloka. Prva naredba iza bloka je provjera drugog uvjeta (a > 0). Ako nije ispunjen niti prvi niti drugi uvjet (tj. ako je a = 0), blok naredbi nakon druge if naredbe se preskae i izvoenje programa se nastavlja od naredbe iza drugog bloka.

46

#include<iostream.h> int main() { int a; cout<<"Upisi broj:"; cin>>a; if(a<0) { cout<<"Broj "<<a<<" je negativan. Njegova apsolutna \ vrijednost je "<<-a<<endl; } if(a>0) { cout<<"Broj "<<a<<" je pozitivan. Njegova apsolutna \ vrijednost je "<<a<<endl; } system(pause); return 0; }

Ako nije ispunjen ni prvi ni drugi uvjet, program se prekida. (a = 0)

7.5 Grananje dvije neovisne grane


if (logiki izraz) prvi blok naredbi else drugi blok naredbi naredba iza bloka

Ako je vrijednost logikog izraza istina (1), izvodi se prvi blok naredbi. Po njegovom zavretku izvoenje se nastavlja od prve naredbe iza drugog bloka. 47

Ako je vrijednost logikog izraza neistina (0), preskae se prvi blok i izvodi se drugi blok naredbi (iza else). Nakon toga se izvode naredbe kako slijede.

Zadatak 3 (oblik naredbe if else): Treba unijeti cijeli broj razliit od 0 pa provjeriti je li negativan ili pozitivan. U oba sluaja ispisati apsolutnu vrijednost broja. Ispis neka bude oblika:
Upisi broj razlicit od 0: Broj...je....Njegova apsolutna vrijednost je....

Primjer je rijeen uz pomo if else naredbe. Uneseni broj mora biti razliit od 0. Ako je (a < 0) izvrit e se prvi blok naredbi. Ako a nije manje od 0, preskae se prvi blok i izvodi se drugi blok naredbi.

#include<iostream.h> int main() { int a; cout<<"Upisi broj razlicit od 0:";cin>>a; if(a<0) { cout<<"Broj "<<a<<" je negativan. Njegova apsolutna\ vrijednost je "<<-a<<endl; } else { cout<<"Broj "<<a<<" je pozitivan. Njegova apsolutna\ vrijednost je "<<a<<endl; } System(pause); return 0; }

48

to ako korisnik ne proita uputu paljivo, pa unese broj 0? Rezultat nee biti ispravan:
Broj 0 je pozitivan. Njegova .....

Stoga bi bilo dobro izbjei takvu situaciju. Ako korisnik unese nulu, neka dobije upozorenje, pa neka ponovi unos broja koji e zadovoljiti postavljeni uvjet. Da bi se program mogao nastaviti od odabranog programskog retka (u ovome sluaju od naredbe unosa broja), potrebna je odgovarajua naredba koja e to i omoguiti.

7.6 Naredba goto Naredba goto je naredba bezuvjetnog skoka (omoguava nastavak programa od odabranog programskog retka). Opi oblik je:
goto ime_oznake;

ime_oznake je simboliki naziv odabranog programskog retka od kojeg se program eli nastaviti. Simboliki se naziv stavlja ispred naredbe na koju se eli "skoiti" (preusmjeriti program). Iza simbolikog naziva dolazi znak dvotoka (:). Naredba na koju se eli skoiti moe se nalaziti bilo gdje. Naredba goto najee smanjuje razumljivost i preglednost kda pa ju nije preporuljivo rabiti.
#include<iostream.h> int main() { int a; upis:cout<<"Upisi broj razlicit od 0:";cin>>a; if(a==0) { cout<<"Pogresan unos. Ponovi!"<<endl; goto upis; } if(a<0) System(pause); return 0; {

49

7.7 Ulanana if naredba Blokovi if naredbi se mogu ulaniti.


if (logiki izraz 1) prvi blok naredbi else if (logiki izraz 2) drugi blok naredbi ..... else zadnji blok naredbi

Ako je vrijednost logikog izraza1 logika istina (1), izvodi se prvi blok naredbi. Po njegovom zavretku izvoenje se nastavlja od prve naredbe iza zadnjeg bloka naredbi. Ako vrijednost logikog izraza1 nije logika istina (0), provjerava se vrijednost logikog izraza2 i ovisno u njegovoj vrijednosti izvodi se drugi blok naredbi ili se program nastavlja iza njega. Ako niti jedna vrijednost logikih izraza nije logika istina izvodi se zadnji blok naredbi iza naredbe else. Zadatak 4 (oblik ulanene naredbe if): Zadatak 3 treba dopuniti tako da se u sluaju unesene nule ispie odgovarajua poruka. Ispis neka bude oblika:
Upisi broj: Broj...je....Njegova apsolutna vrijednost je.... ili Unio si 0. Apsolutna vrijednost od 0 je 0.

#include<iostream.h> int main() { int a; cout<<"Upisi broj:";cin>>a; if (a==0) { cout<<"Unio si 0. Apsolutna vrijednost od 0 je 0. " <<endl; } else if (a<0) { cout<<"Broj "<<a<<" je negativan. Njegova apsolutna \ vrijednost je "<<-a<<endl; } else { cout<<"Broj "<<a<<" je pozitivan. Njegova apsolutna \ vrijednost je "<<a<<endl; } System(pause); return 0;

50

Ako se unese 0, poruka e biti:

Unio si 0. Apsolutna vrijednost od 0 je 0.

U ostalim sluajevima, provjera je ista kao u primjeru 36.

7.8 Ugnjeivanje if naredbi Mogue je ugnjeivati if naredbe jedne unutar drugih. Ugnjeivanje e biti prikazano na sljedeem primjeru. Zadatak 5 (oblik ugnjeenih naredbi if): Treba upisati cijeli broj razliit od 0. Treba provjeriti je li broj vei ili manji od 100, te je li paran ili neparan. Ispis neka bude oblika:
Upisi broj: Uneseni broj je ... od 100 i ....

Vanjska if naredba provjerava je li broj vei ili manji od 100. Ako se unese broj 100, ispisuje se odgovarajua poruka. Unutarnje if naredbe (neovisno o tome je li broj vei ili manji od 100) provjeravaju parnost broja. Parnost se provjerava operatorom modulo (ostatak dijeljenja sa 2 se usporeuje sa 0). 51

#include<iostream.h> int main() { int a; cout<<"Upisi broj razlicit od 0:"; cin>>a; if (a<100) { cout<<"Uneseni broj je manji od 100 i "; if (a%2==0) cout<<" paran je."<<endl; else cout<<" neparan je."<<endl; } else if (a>100) { cout<<"Uneseni broj je veci od 100 i "; if (a%2==0) cout<<" paran je."<<endl; else cout<<" neparan je."<<endl; } else { cout<<"Unesen je broj 100, on je paran<<endl; }
System(pause);

return 0; }

7.9 Uvjetna naredba kratki oblik Ako su uvjet (logiki izraz) i naredbe blokova kratki, umjesto if else naredbi moe se rabiti skraeni oblik zapisa.
(logiki izraz) ? (1. blok naredbi) : (2. blok naredbi)

Ovaj se oblik koristi kada logiki izraz i naredbe blokova stanu u jedan redak. 52

if (a<0) cout<<-a; else cout<<a;

(a<0)?(cout<<-a):(cout<<a)

Zadatak 6 (uvjetna naredba skraenog oblika): Treba unijeti cijeli broj razliit od 0 pa ispisati apsolutnu vrijednost broja. Ispis neka bude oblika:
Upisi broj: Apsolutna vrijednost je.... #include<iostream.h> int main() { int a; cout<<"Upisi broj:"; cin>>a; (a<0)?(cout<<"Apsolutna vrijednost je <<-a):(cout<<"Apsolutna vrijednost je "<<a); System(pause); return 0; }

7.10 Grananje naredbom switch Naredba switch case omoguava viestruko grananje. Iza naredbe switch dolazi cjelobrojni izraz u zagradi. Rezultat cjelobrojnog izraza je cjelobrojna konstanta. Ovisno o vrijednosti konstante izvodi se odgovarajui blok naredbi (grana). switch case (opi oblik)
switch (cjelobrojni izraz){ case (1. konstanta): prvi blok naredbi break; case (2. konstanta): drugi blok naredbi break; ......... default: zadnji blok naredbi }

Prvo se izraunava vrijednost cjelobrojnog izraza u zagradi (to je postavljeni uvjet). Zatim se dobivena vrijednost izraza (konstanta) usporeuje s nizom zadanih konstanti. Ako je dobivena vrijednost izraza jednaka bilo kojoj od zadanih konstanti izvrava se blok naredbi pridruen toj konstanti. Po zavretku bloka naredba break oznaava izlaz iz swith case bloka. Ako dobivena vrijednost izraza nije jednaka niti jednoj od zadanih konstanti, izvrava se blok naredbi pridruen default naredbi. Cjelokupni switch case blok zapisuje se unutar para otvorena-zatvorena vitiasta zagrada.

53

8. C++ petlje

8.1 Petlja Ponekad se dijelovi programa trebaju ponoviti vie puta (iterirati). Struktura koja to omoguava naziva se programska petlja. Ponavljati se moe: unaprijed zadani broj puta, sve dok je ispunjen odreeni uvjet. Primjer petlje Potrebno je ispisati prvih 100 prirodnih brojeva. Treba uoiti da se dio naredbi izvrava opetovano sto puta.

Primjer dijagrama toka petlje za ispis prvih sto prirodnih brojeva. Struktura petlje se moe ostvariti naredbama: for, while, do while.

8.2 for petlja for petlja se najee koristi ako se dijelovi programa trebaju ponoviti konaan broj puta. Osnovni oblik for petlje:
for (poetno stanje; uvjet; prirast) { blok naredbi }

Prvo se zadaje poetno stanje kontrolne varijable petlje. Zatim se rauna vrijednost uvjeta. Rezultat mora biti tipa bool (0 ili 1). Blok naredbi se izvrava sve dok je vrijednost uvjeta jednaka logikoj istini (1). Kad vrijednost uvjeta postane neistina (0) petlja se prekida. Na kraju se rauna prirast (prirast je najee iznos za koji se mijenja vrijednost kontrolne varijable petlje). Dijagram toka: 54

Zadatak 1: Potrebno je ispisati brojeve od 1 do 20. Ispis neka bude oblika:


Ispis brojeva od 1 do 20: 1 2 3 4 5 6 7 8 9 ..................20

Treba zadati poetnu vrijednost kontrolne varijable petlje (brojac=1), postaviti uvjet (brojac<=20) i zadati prirast (brojac++). Naredba koja se izvodi konaan broj puta je ispis trenutne vrijednosti varijable brojac. Zbog preglednosti ispisa nakon svakog broja ispisuje se jedno prazno mjesto. Na kraju ispisa kazalo prelazi na poetak novog reda.
#include<iostream.h> int main() { int brojac; cout<<"Ispis brojeva od 1 do 20:"<<endl; for (brojac=1;brojac<=20;brojac++) { cout<<brojac<<" "; } cout<<endl; System(pause); return 0; }

Zadatak 2: Potrebno je dopuniti prethodni primjer tako da se ispisuju brojevi iz raspona od M do N (raspon bira korisnik). Ispis neka bude oblika:
Ispis pocinje od broja: Ispis zavrsava brojem: Ispis brojeva od ... do ...: ... ... ... ......

...

Razlika u odnosu na prethodni primjer je odabir granica raspona brojeva koji e biti ispisani. Poetna vrijednost kontrolne varijable brojac je ovisna o unesenoj poetnoj vrijednosti raspona (M), a uvjet o unesenoj zavrnoj vrijednosti raspona (N). Izraz prirasta (brojac++) se ne mijenja.
#include<iostream.h> int main() { int brojac,m,n; cout<<"ispis pocinje od broja:"; cin>>m;

55

cout<<"ispis zavrsava brojem:"; cin>>n; for (brojac=m;brojac<=n;brojac++) { cout<<brojac<<" "; } cout<<endl; System(pause); return 0; }

Zadatak 3: Potrebno je zbrojiti prvih 100 prir.brojeva. Ispis neka bude oblika:
Zbroj prvih 100 prirodnih brojeva je ....

Treba zadati poetnu vrijednost kontrolne varijable petlje (brojac=1), postaviti uvjet (brojac<=100) i zadati prirast (brojac++). Prije ulaska u petlju treba deklarirati varijablu (npr. zbroj) u koju e se pribrajati trenutne vrijednosti kontrolne varijable petlje pri svakom prolasku kroz petlju. Naredba u bloku koja se izvodi konaan broj puta je uveavanje vrijednosti varijable zbroj (u njoj e na kraju biti konaan zbroj prvih 100 brojeva) za tekuu vrijednost kontrolne varijable petlje (broja). Petlja se ponavlja sve dok je sadraj varijable brojac manji ili jednak 100.
#include<iostream.h> int main() { int brojac,zbroj; zbroj=0; cout<<"Zbroj prvih 100 prirodnih brojeva je:"; for (brojac=1;brojac<=100;brojac++) { zbroj=zbroj+brojac; } cout<<zbroj<<endl; System(pause); return 0; }

56

Zadatak 4: Treba ispisati tablicu mnoenja odabranog broja sa brojevima od 1 do 10. Broj bira korisnik. Ispis neka bude oblika:
Upisi ... * ... * . . . ... * broj sa kojim zelis mnoziti: 1 = ... 2 = ...

10 = ...

#include<iostream.h> int main() { int b, brojac; cout<<"Upisi broj sa kojim zelis mnoziti:"; cin>>b; for (brojac=1;brojac<=10;brojac++) cout<<b<<" * "<<brojac<<" = "<<b*brojac<<endl; System(pause); return 0; }

57

8.3 Beskonana petlja Moe se dogoditi da je uvjet uvijek ispunjen. Petlja se tada izvodi neogranien broj puta. Ako se dogodi da se pokrene program u kome je beskonana petlja program se moe prekinuti zatvaranjem prozora u kom se izvrava program ili restartanjem raunala (za raunala koja nemaju viezadani operacijski sustav). Beskonana petlja je npr.:
for(b=3;b<10;) cout<<beskonacna petlja;

Vrijednost varijable b je uvijek manja od 10 pa e se petlja ponavljati neogranien broj puta. Da bi se izbjegla beskonana petlja treba: zadati uvjet koji jami konaan broj ponavljanja petlje, navesti sva tri izraza u zagradi naredbe for, izbjegavati promjenu vrijednosti kontrolne varijable unutar bloka naredbi for petlje. Zadatak 5: Treba ispisati parne brojeve u rasponu od 50 do 100. Ispis neka bude oblika:
Parni brojevi iz intervala od 50 do 100 su: 50 52 54 56 .......... 98 100

Poto je razlika dva susjedna parna broja 2, problem je mogue rijeiti tako da se vrijednost kontrolne varijable petlje mijenja za 2 (prirast 2).
brojac=brojac+2 ili brojac+=2

(nee trebati provjeravati parnost )


#include<iostream.h> int main() { int brojac; cout<<"Parni brojevi iz intervala od 50 do 100 su:"<<endl; for (brojac=50;brojac<=100;brojac+=2) { cout<<brojac<<" "; }

58

cout<<endl; System(pause); return 0; }

Zadatak 6: Treba ispisati parne brojeve u rasponu od 100 do 50. Ispis neka bude oblika:
Parni brojevi iz intervala od 100 do 50 su: 100 98 96 94 .......... 52 50

Prirast moe biti i negativan pa se tada vrijednost kontrolne varijable petlje smanjuje. U ovome sluaju poetna vrijednost kontrolne varijable petlje mora biti vea od zavrne. Npr. prirast moe biti:
brojac=brojac-2 (brojac-=2)

Zadatak 7: Treba potraiti pa ispisati brojeve djeljive sa 7 unutar raspona od 200 do 300. Ispis neka bude oblika:
Brojevi djeljivi sa 7 iz raspona od 200 do 300 su: ... ... ... ... ...

Blok naredbi u petlji se izvrava za svaki broj iz zadanog raspona. Ispisuju se samo brojevi djeljivi s brojem 7. Djeljivost brojeva se provjerava operatorom modulo (%).
#include<iostream.h> int main() { int brojac; cout<<"Brojevi djeljivi sa 7 iz raspona od 200 do 300 su:"<<endl; for (brojac=200;brojac<=300;brojac++) { if(brojac%7==0) cout<<brojac<<" "; } cout<<endl;

59

System(pause); return 0; }

Zadatak 8: Treba provjeriti djeljivost brojeva unutar odabranog raspona sa zadanim brojem. Ispis neka bude oblika:
Pocetna vrijednost raspona: Zavrsna vrijednost raspona: Provjerava se djeljivost sa brojem: Brojevi djeljivi sa ... iz raspona od ... do ... su: ... ... ... ... ... #include<iostream.h> int main() { int brojac,m,n,b; cout<<"Pocetna vrijednost raspona:"; cin>>m; cout<<"Zavrsna vrijednost rapona:"; cin>>n; cout<<"Provjerava se djeljivost sa brojem:"; cin>>b; cout<<"Brojevi djeljivi sa "<<b<<" iz raspona od " <<m<<" do "<<n<<" su:"<<endl; for (brojac=m;brojac<=n;brojac++) { if(brojac%b==0) cout<<brojac<<" "; } cout<<endl; System(pause); return 0; }

60

8.4 Ugnijeene for petlje

for petlje mogu biti ugnijeene jedna unutar druge. Pri ulazu u vanjsku petlju, njena se kontrolna varijabla postavi na poetnu vrijednost. Sa tom se vrijednou ulazi u unutarnju petlju. Pri ulazu u unutarnju petlju, kontrolna varijabla unutarnje petlje se postavi na poetnu vrijednost i sve dok je uvjet zadovoljen, izvrava se blok naredbi unutarnje petlje. Po zavrenoj unutarnjoj petlji, kontrolna varijabla vanjske petlje se mijenja za vrijednost prirasta i provjerava se uvjet vanjske petlje. Za svaku vrijednost kontrolne varijable vanjske petlje izvodi se cjelokupna unutarnja petlja.

61

Zadatak 9: Vrijednost kontrolne varijable vanjske petlje mijenja se od 1 do 3, a unutarnje od 1 do 5. U programu se ispisuju trenutne vrijednosti kontrolnih varijabli vanjske i unutarnje petlje. (Treba uoiti da se za svaku vrijednost kontrolne varijable vanjske petlje (i) izvri cjelokupna unutarnja petlja (j od 1 do 5).) Vanjska petlja omoguit e : ispis teksta: Vanjska petlja:, ispis trenutne vrijednosti kontrolne varijable vanjske petlje (i). Ispis teksta: Unutarnja petlja: Unutarnja petlja : ispisuje trenutne vrijednosti kontrolne varijable unutarnje petlje (j, od 1 do 5). Po ispisu svakoga od redaka, kazalo se prebacuje na poetak novog redka i postupak se ponavlja.
#include <iostream.h> int main() { int i, j; for ( i = 1; i <= 3; i++ ) { cout<<endl<<"Vanjska petlja: i="<<i<<endl; cout<<"Unutarnja petlja: "; for ( j = 1; j <= 5; j++ ) { cout<<" j="<<j; } cout<<endl; } System(pause); return 0; }

62

Zadatak 10: Treba ispisati tablicu mnoenja za brojeve od 1 do 10. Ispis neka bude prikazan u stupcima. Vanjska petlja omoguit e stvaranje 10 redaka. Unutarnja petlja e u svakome redku stvoriti 10 stupaca. Naredba koja se izvrava u unutarnjoj petlji je ispis umnoka trenutnih vrijednosti kontrolnih varijabli vanjske i unutarnje petlje. Po ispisu svakoga od redaka, kazalo se prebacuje na poetak novog redka.
#include<iostream.h> int main() { int stup,red; for(red=1;red<=10;red++) { for(stup=1;stup<=10;stup++) { cout<<red*stup<<" "; } cout<<endl; } System(pause); return 0; }

Ispis se moe oblikovati manipulatorima (operatorima za rukovanje ispisom). Da bi ispis bio u pravilnim stupcima, koristi se manipulator setw(int) koji odreuje koliki e se prostor predvidjeti za ispis podatka koji slijedi u izlaznom toku. Svi su manipulatori definirani u biblioteci iomanip, koju treba ukljuiti naredbom include.
#include<iostream.h> #include<iomanip.h> int main() { int stup,red; for(red=1;red<=10;red++) { for(stup=1;stup<=10;stup++) { cout<<setw(7)<<red*stup; } cout<<endl;

63

} System(pause); return 0; }

8.5 while petlja while petlja se najee koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. Izvrava se sve dok je ispunjen zadani uvjet. Osnovni oblik while petlje:
while (uvjet) { blok naredbi }

Prije ulaska u while petlju potrebno je zadati poetnu vrijednost varijabli koja se koristi u uvjetu. Zatim se provjerava vrijednost uvjeta (rezultat je tipa bool). Ako je vrijednost uvjeta logika istina (1) izvodi se blok naredbi iz petlje. Ako je vrijednost uvjeta logika neistina (0), blok naredbi iz petlje se preskae i program se nastavlja od prve naredbe nakon petlje. Dijagram toka while petlje

Zadatak 11 (while petlja moe zamijeniti for petlju): Uporabom while petlje potrebno je ispisati brojeve od 1 do 20. Ispis neka bude oblika:
Ispis brojeva od 1 do 20: 1 2 3 4 5 6 7 8 9 ...................20

Petlja while moe zamijeniti for petlju. Za rjeenje ovog problema potrebno je, prije ulaska u petlju, zadati poetnu vrijednost varijable koja se koristi u uvjetu (brojac=1), zadati uvjet (brojac<=20), a u bloku naredbi u petlji uz ostalo zadati i prirast (brojac++). 64

#include<iostream.h> int main() { int brojac; brojac=1; cout<<"Ispis brojeva od 1 do 20:"<<endl; while(brojac<=20) { cout<<brojac<<" "; brojac=brojac+1; } cout<<endl; System(pause); return 0; }

Zadatak 12: Treba unijeti N realnih brojeva pa izraunati njihovu srednju vrijednost. Unos brojeva traje sve dok korisnik ne upie 0. Ispis neka bude oblika:
Nakon posljednjeg broja unesi nulu. Unesi broj: Unesi broj: ... Uneseno je ... brojeva. Srednja vrijednost je ....

Problem se lako rjeava while petljom (broj brojeva koje treba unijeti nije unaprijed poznat). Prije ulaska u petlju potrebno je zadati poetnu vrijednost varijable koja se koristi u uvjetu. U ovome sluaju potrebno je unijeti prvi broj (N). Uvjet e biti usporeivanje sadraja varijable u koju se pohranjuje uneseni broj sa 0 (N==0). Ako je uvjet ispunjen, izvrit e se blok naredbi u petlji. U bloku je potrebno: uneseni broj pribrojiti varijabli zbroj (zbrajanje), varijablu broj uveati za jedan (prebrojavanje), unijeti sljedei broj. Unos se nastavlja sve dok je uvjet ispunjen, tj. dok se ne unese 0. Kada korisnik unese 0, uvjet vie nije ispunjen, program se nastavlja od prve naredbe nakon petlje. Nakon petlje treba izraunati i ispisati srednju vrijednost unesenih brojeva. 65

#include<iostream.h> int main() { cout<<"U programu se unosi N brojeva, a zatim se \ racuna srednja vrijednost unesenih brojeva."<<endl; float N,broj,zbroj; broj=0; zbroj=0; cout<<"Nakon posljednjeg broja unesi nulu."<<endl; cout<<"Unesi broj:"; cin>>N; while(N!=0) { broj=broj+1; zbroj=zbroj+N; cout<<"Unesi broj:"; cin>>N; } cout<<"Uneseno je "<<broj<<" brojeva. \ Srednja vrijednost je "<<zbroj/broj<<endl; System(pause); return 0; }

66

8.6 do-while petlja


do-while petlja se takoer koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. Njena specifinost je u tome to uvjet ispituje nakon izvoenja bloka naredbi u petlji. Osnovni oblik do-while petlje:
do { blok naredbi } while (uvjet);

Dijagram toka: Oblik ove petlje je takav da se blok naredbi u petlji izvodi bar jednom bez obzira da li je uvjet ispunjen ili ne. U tome je i osnovna razlika ove petlje u odnosu na petlje for i while kod kojih je mogue da se blok naredbi u petlji ne izvede niti jednom ako uvjet petlje nije ispunjen. Zadatak 13: Prethodni primjer rijeiti do-while petljom (treba unijeti N realnih brojeva pa izraunati njihovu srednju vrijednost). Ispis neka bude oblika:
Nakon posljednjeg broja unesi nulu. Unesi broj: Unesi broj: ... Uneseno je ... brojeva. Srednja vrijednost je ....

Kada se koristi do-while petlja nije potrebno unijeti prvi broj prije poetka petlje jer se uvjet ispituje tek nakon izvoenja naredbi iz bloka. U bloku je potrebno: unijeti broj, uneseni broj pribrojiti varijabli zbroj, varijablu broj uveati za jedan. Uvjet se ispituje nakon bloka naredbi u petlji. Poto e na ovaj nain biti prebrojena i pribrojena 0 kao uneseni broj, po izlasku iz petlje varijablu broj treba umanjiti za jedan.
#include<iostream.h> int main(){ cout<<"U programu se unosi N brojeva, a zatim se racuna \ srednja vrijednost unesenih brojeva."<<endl; float N,broj,zbroj; broj=0; zbroj=0; cout<<"Nakon posljednjeg broja unesi nulu."<<endl; do { cout<<"Unesi broj:"; cin>>N; broj=broj+1; zbroj=zbroj+N;

} while(N!=0); broj=broj-1; cout<<"Uneseno je "<<broj<<" brojeva.Srednja vrijednost je " <<zbroj/broj<<endl; System ("pause"); return 0;

67

8.7 Naredba break

Naredba break se rabi kada treba prekinuti izvoenje nekog bloka naredbi unutar petlje. Nakon naredbe break program prelazi na prvu naredbu iza programske petlje. (Break je i sastavni dio switchcase naredbe.)

Zadatak 14: Treba ispisati brojeve od 10 prema 1. Ispis se prekida nakon broja 3. Ispis neka bude oblika:
Ispis brojeva: 10, 9, 8, 7, 6, 5, 4, 3, prekinuto brojenje unatrag.

#include <iostream.h> int main () { int n; for (n=10; n>0; n--) { cout << n << ", "; if (n==3) { cout<<" prekinuto brojenje unatrag."<<endl; break; } } System(pause); return 0;

68

8.8 Naredba continue Ponekad je potrebno preskoiti dio bloka naredbi do kraja programske petlje, pa nakon toga petlju nastaviti. U tu se svrhu koristi naredba continue. (Bolje je, umjesto naredbe continue koristiti naredbu grananja if jer nepaljiva uporaba naredbe continue moe izazvati beskonanu petlju.)

Zadatak 15: Treba ispisati brojeve od 10 prema 1. Trojka se preskae, a nakon toga se nastavlja ispis. Ispis neka bude oblika:
Ispis brojeva: 10, 9, 8, 7, 6, 5, 4, trojka se preskace 2, 1,

#include <iostream.h> int main () { int n; cout<<"Ispis brojeva:"<<endl; for (n=10; n>0; n--) { if (n==3) { cout<<" trojka se preskace, "; continue; } cout << n << ", "; } System(pause); return 0; }

69

70

9. Zakljuak
U ovoj maturalnoj radnji opisano je sve algoritam, programski jezici, nastanak programa, C++ podaci, osnovna struktura programa, operatori, grananje, naredba continue, i petlje. Uz sve teorijsko isprobao sam vie zadataka iz svake cjelinei vizualno pokazao kako bi izvrenje svakog od zadataka izgledalo Borland C++ - u.

71

10. Literatura
- RAUNALSTVO-udbenik za 1. i 2. razred etverogodinjih strukovnih kola. -Darko Grundler -Sandra utalo - DEMISTIFICIRANI C++ -Julijan tribar -Bons Motik - C++ NAUITE ZA 21 DAN -Jesse Liberty - C++ - ANALIZA I PRIMJENA -eljko Kovaevi - ZBIRKA RIJEENIH ZADATAKA IZ C-a -Rajko Vulin -Sanja Grabusin -Ljiljana Mileti - ZABILJEKE S PREDAVANJA KOLSKE GODINE 2007/8 - PRIPREME ZA NASTAVU NA WEB STRANICI KOLE - www.ss-strukovna-vvlatkovica-zd.skole.hr

72

You might also like