You are on page 1of 264

Programiranje u C++-u

...kad ga pokrenete...
2
...kad ga pokrenete...

3
4
Ovo je samo nastavak ucenja i evo još malo programiranja ;

Sad unesite dva broja(cijela) i pokrenite.....

5
6
Sad ga pokrenite......

7
8
9
...kad ga pokrenete...

10
...kad ga pokrenete...

11
..kad ga pokrenete..

12
Programiranje u C++-u
If-else u c++-u

if-else(odluke)

...kad ga pokrenete....

13
Detaljno objasnjenje!Dio po dio.
Kako vidite ispod su uobicajene include zaglavlja koje nam trebaju u programu
zatim je tu standardne using namespace std; naredbe koje cemo koristiti da ne bi stalno pisali std::cout i slicno
a naravno da kako budemo napredovali kroz c++ objasnit cu i namespace pojam!
i zadnje u ovom blokicu ispod je zapocinjanje sa int main() i otvaramo blok sa {

#include < iostream >


#include < cstdlib >
#include < cmath >

using namespace std;

int main()
{

Zatim u ovom dijelu programa deklariramo varijable (objavimo)da bi program upoznali sa cime mora raditi
uljepsavamo sa unesite pozitivan broj i unos preko tipkovnice sa cin naredbom
i da bi uljepsavali program rabimo i endl za odvajanje redova jer nam je preglednost bitna.
double broj;
double rezultat;
cout < < "unesite pozitivan broj: " < < endl;
cin > > broj;
cout < < endl;

Ovdje u ovom dijelu programa zapocinje if-else petlja sto znaci da prvo postavljamo uvijet sa if(ako) je varijabla
broj manja od nule tada nam se pomocu naredbe cout na ekranu ispise da smo unijeli negativan broj!
Primjetite da je to u posebnom bloku{} jer kad u program unesemo negativan broj program prvo cita if uvijet
i ako je istina da smo unijeli negativan broj tada uskace u taj blok i izvrsava nas cout!!
ali ako smo unijeli pozitivan broj if se zanemaruje jer sad taj uvjet nije ispunjen i automatski se trazi else
blok i izvrsava se taj dio programa sto je u biti nas glavni program
if(broj < 0)

{
cout < < "unijeli ste negativan broj" < < endl;
}

else

Ovdje je blok else unutar {} i to je glavni program a tu se nalazi definicija nase funkcije i ispis na ekran njezinog
rezultata i kad se to izvrsi tada se izlazi iz programa {

14
rezultat = sqrt(broj);
cout < < "kvadratni korijen je : " < < endl;
cout < < rezultat;
cout < < endl;
}

cout < < endl;


system ("PAUSE");
return 0;
}

Ono sto je bitno reci kroz ovaj program je uvidjeti logiku if else i svaki if ima svoje{} kao i else{}
a oba se nalaze u bloku int main{} i vidite da svaka viticasta { ima svoj kraj} i to je vrlo bitno
jer se program nece izvrsiti ako nema svoj kraj bilo () ili{} ili ; !!!!!
Vidite li vec sad logiku kako program ide od pocetak do kraja?
sad cu jos malo poraditi na if-else uvjetima:

U ovom primjeru samo pokazujem kako se vjezba sa if-else uvijetima na jednostavnim primjerima
kada unesete nulu i kad broj nije nula sto se izvrsava, koji blok ide po redu
i upamtite da ispitivanje da li je broj necemu jednak ,ide uvijek sa dva znaka jednako ==
da smo stavili kojim slucajem umjesto == samo jedan znak = tada bi varijabli broj
dodijelili vrijednost nula!!!!

...kad pokrenete i unesete vrijednost...

15
Na isti nacin mozete sad vi napisati da li je unesen broj 100 ili umjesto == znaka stavite manji ili veci
a u if bloku da ako je broj npr.101 cout<<" veci od sto" a else broj nije veci od sto kad unesete 99
ili bilo koji broj manji od sto
a za znak manje samo obrnuto i vjezbajte vjezbajte na jednostavnim primjerima jer sad malo kompliciramo

U ovom programu usporedjujemo dvije varijable!


Ako su iste tad se izvfsava if blok a ako nisu tad else
U svim ovim programima mi u biti vjezbamo if-else i bitno je upoznati logiku koda!

...kad unesete sto se trazi...


16
Malo o uslovima if()
if(broj < 0)----broj je manj od nula
if(broj > 0)----broj je veci od nula
ifbroj(==0)----broj je jednak nuli
if(broj==50 )----broj je jednak pedeset
if(broj < 50)----broj je manji od pedeset
if(broj > 50)----broj je veci od pedeset
if(broj!=50)----broj je ratlicit od pedeset
if(prvi < drugi)----prvi je manji od drugog
if(prvi > drugi)---- prvi je veci od drugog
if(prvi==drugi)----prvi je jednak drugom

ovdje su primjeri jednostavnih ispitivanja koje mozete primjeniti u programima sami!


Sve mozemo sa svime usporediti!Naravno varijable!Inace sam zaboravio da imenovanje varijabli ovisi o
logici programa koji vi radite, ako su brojevi tada napisete int broj ;ili samo int a;, ili float a; i sl.
Pravila postoje i ne smijete pisati moj ducan;nego moj_ducan i drzite se malih slova u imenovanju
a takodjer i smisla u tom imenovanju!

Sad malo kompliciraniji if-else primjeri opet!


Prvo cu napisati kod a zatim objasnjenja
Ovaj znak koji cemo koristiti u slijedecem primjeru && dobijete pritiskom
Shift + 6!!!

Opis
U ovom primjeru opet unosimo dva broja ali sad je uvijet da oba broja moraju biti manja od pet
i izvodi se if blok a ako je jedan samo veci od pet izvodi se else blok
Zasto?
Zato jer smo upotrijebili jednu novinu a to je ovaj && zank usporedbe a on znaci da oba uvijeta u
if zagradama moraju biti true da bi se if blok izvrsio a ako je samo jedan false skace se dalje u programu na
else blok!Svaka usporedba mora biti u svojim zagradama a sve u if zagradi!!!Znaci da ponovimo::::svi uvijeti u if
uvjetu
moraju biti tocni da bise if blok izvrsio a ako nije tada u svim ostalim slucajevima se izvrsava sadrzaj b) tj
else blok!!!!

17
Drugi primjer koji sad slijedi opet uvodimo jednu novu oznaku i to || a dobijete je pritiskom
AltGr + W!!!

18
<

U ovom programu ispitujemo takodjer da li smo unijeli brojeve manje od pet ali u ovom slucaju
znak || ispituje da li je bar jedan uvijet tocan i ako je tada se izvrsava if blok
ali ako nismo unijeli niti jedan broj koji je manji od pet tad je blok else na redu!
Za razliku programa prije ovdje je dovoljan samo jedan uvijet a ne oba true nego jedan true!
Upamtite da program uvijek ispituje uvijete slijeva nadesno i ako prvi nije
skace na drugi i tako redom i ako su uvijeti zadovoljeni onako kako smo ih postavili
izvrsava se odgovarajuci blok!

19
To je bit if else naredbi!
Sad cu ispisati primjere koje možete staviti u program i sami vježbati!!!
if((prvi < 5)&&(drugi < 5))
U ovom slučaju uvijet je zadovoljen ako su oba manja od pet!
if((prvi < 5)||(drugi < 5))
...ovdje barem jedan
if((prvi < 5)||(drugi < 5)&& (treci < 5))
U ovom uvjetu obvezno treci mora biti manji od pet a ostala dva bar jedan!
if((prvi < 5)||(drugi < 5)||(treci < 5))
..ovdje je dovoljno samo jedan da bude manji od pet i true je!
if((prvi < 5)&&(drugi < 5)&&(treci < 5))
U ovom uvijetu svi moraju biti manji od pet da bi se blok if izvrsio!!!!!!
Sad cemo ispisati takav jedan programcic a vi morate vjezbati vjezbati!!!!!!

20
Znaci ako je ukupni uvijet u if zahtjevu ispunjen biti ce na ekranu DA
a ako nije biti ce NE!Znaci ili prvi uvijet i zadnji ili drugi i zadnji ili
i prvi i drugi i treci ,tada je na ekranu DA,a ako je sve kako sam napisao a
treci nije ispunjen tada je na ekranu NE!
Vjezbajte i shvatite!

21
Sad idemo jos malo zakomplicirati stavljajuci jednu if naredbu u drugu!

Samo jedna mala napomena jer ovdje koristim float umjesto double ali vi mozete
nastaviti i sa double!Oba tipa odgovaraju nasim programima.

Sad objasnjenje!
Ovdje su postavljena tri uvijeta i izvrsavati ce se blok koji ovisi koji broj mi unesemo!
Nacin na koji smo poslozili if else je malo drugaciji
jer moramo ispitati tri uvijeta svaki za sebe a opet kao jedan ili dva
Prvi blok je if pa else i sad unutar te else naredbe stavljamo jos jedan if-else i tu je kvaka jer

22
sad smo uglavili if-else petlju u else dio prve if-else petlje!
Bitno je uociti logiku izvrsavanja programa a to samo vjezbom mozete!

Bitno je uociti kako nesto stavimo unutar jednog bloka,tako da prvi else pocinje sa svojom {(zagradom)
znaci otvaramo blok i sad unutar tog bloka stavimo if-else drugi sa svojim blokovima{} i moraju imati svoje
zavrsetke
i tek onda zavrsavamo onu prvu else naredbu sa} zavrsnom zagradom i na taj nacin smo obuhvatili taj
drugi if else i to je to !A opet sve skupa je u int main()bloku!
No,vidite kako je to u biti jednostavno kad stavljate blok u blok!
Samo pratite {(viticaste zagrade) kome koja pripada!}
sve ima svoj pocetak i kraj!Vjezbajte i namjerno zapamtite gdje ste pogrijesili i tako sami
mozete uciti pravila u c++ a da se ja sad tu ne raspisem o pravilima zatvaranja blokova i
naredbi koje moraju zavrsavati sa tocka zarez!!!!!
Sad jedna mala posebnost ako zelite ispitati vise uvjeta ili zadataka odjednom!!
Radi se o Switch naredbi!
Ispisati cemo program a onda objasnjenje.

23
24
Sad objasnjenje ove naredbe.

If naredbe su dobre kad imamo jedan ili dva uvjeta ili odluke ali kad ih ima previse
switch naredba je pogodnija jer se moze granati na vise grana!

Ovaj program se moze i sa if naredbama realizirati ali bio bi veliki i puno blokova za
razliku od gornjeg primjera koji se proteze u jednom bloku

Na pocetku imamo standardne naredbe include i pocetak int main() bloka u kome prvo
deklariramo nase varijable zajedno sa cin unosom!
Zatim objasnjavamo sto cemo raditi
,i to na taj nacin koristimo cout na gore opisani nacin da bi pokazali sto cemo raditi
i kad smo sve lijepo objasnili krecemo sa switch naredbom!
Bitno je upamtiti da je switch uvijek vezan sa int deklaracijom varijable na pocetku
programa ,to je pravilo!

Kod naseg programa to je int od;Moglo je biti i int a; ili int c;


Ma bilo sto ali int tipa i switch uvijek zapocinje sa tom poveznicom switch(od) bez
tocke zarez jer je to u biti funkcija!(switch(int)----->to je oblik opci naredbe switch
Taj int tip je ono kad treba unijeti broj za koju vrstu operacije smo se odlucili !

U nasem programu imamo cetiri operacije i trbaju nam cetiri unosa int tipa koji
zelimo izabrati,zapocinjemo sa case 1: sto znaci da je case povezan sa nasim cout prvim
koji izaberemo a taj jedan je onaj int tip (od) u switch naredbi,
i ako njega odaberemo izvrsit ce se
blok prvi od case 1:,zapamtite da case uvijek mora bizi u tom obliku (case int :)case tip i dvotocka!
zatim se otvara blok koji se izvrsava koji nam u prijevodu ovako glasi:

uzmi nas a i ispisi plus uzmi b i ispisi jednako i ispisi zbroj!To je doslovno!!!!
Bitno je naglasiti da u navodnicima cout naredba se samo ispiše na ekran ,a ako
je bez navodnika ispisuje se vrijednost ili rezultat formule i moze se sve
pisati u nizu kao u svim blokovima samo pazite da sve razdvajate sa <<!
Kad blok zavrsi moramo programu reci da tu stane a to je naredba break; sa tocka zarezom!
I tad je program gotov!Zapamtite da sve case naredbe imaju break!"!!!

Ako ne unesemo broj koji zelimo tad nam sluzi default naredba sa dvotockom i cout
da nismo unijeli sto treba! I sad zavrsimo switch blok sa } i to je to!

25
Kostur programa je uvijek isti switch(int) { case int: cout break; i to koliko imamo uvijeta
i na kraju default: cout i zavrsna } od switch naredbe jer sve se nalazi u tom bloku!!!!!
Opet sve je u int main(){} bloku koji standardno zavrsava a ako ne znate do sada kako
PONOVITE SVE!!!!

Ja sam uglavnom sve pojednostavio i objasnio dosta detaljno i ako to savladate i shvatite
poceli ste razumijevati c++ i nacin rada programa a to je vrlo bitno u programiranju!
Uocite strukturu programa i naredbe!!!!!

Deklaracije i definicije!
Prvo znaci deklaracija(objava)upoznavanje programa sa onim sto nam treba u programu a tek onda
definicija(postupak,formula,ispis,objasnjenje) koristeci te deklaracije!
Bitno je i reci da su uvijek if-else i switch(int) oblika a switch uvijek ima
case i break sa default na kraju!!!!

Samo mala napomena :ovdje na ovim stranicama se ucite kako razumjeti c++ a ne razlicite
varijacije naredbi,to cete sami negdje prouciti i naci ali prvo ovo ovdje savladajte i
razumjet cete i komplicirane knjige---vjerujte!!!!!!

Programiranje u C++-u
Petlje

sadrzaj:

 while petlja
 do-while petlja
 slucajni brojevi

26
Ispisite ovaj kratki programcic i pokrenite ga !
Sad dio po dio objasnjavam.
#include&ltiostream>
#include&ltcstdlib>
using namespace std;
int main()
{
27
int x;
Ovdje na pocetku sve standardno vec unosimo kad pocinjemo program u c++-u.
Koristimo samo varijablu x za ovaj program i int tipa je.
Zatim:
cout < < "Prije for naredbe!" < < endl;

dolazi cout nredba za ispis na ekran i to kako vidite je izvan for bloka naredbe
to je bitno jer nam oznacava sve sto je izvan for bloka { } i sad ono najvaznije
for naredba! ona je uvijek u obliku for(varijbla=pocetna vrijednost;vrijednost do koje ce varijabla rasti;za
koliko je uvecavamo)
for(x=0;x&lt9;x=x+1)
Znaci to je definiranje nase petlje!
a unutar viticastih zagrada je deklariranje!
ovdje uocite da je definicija opet isla prije deklaracije(opisa)!
To sam tako doslovno preveo jer kako vidite kad izvrsite program pocetna vrijednost nam je 0 a petlja se uvecava
za jedan ali ide do 8 jer smo unutar petlje zadali ispod 9!
Petlja zavrsava sa svojim blokom i tad dolazi ispis "Nakon for petlje" to nam je samo pokazatelj
da je ova cout naredba izvan petlje kao i ona prva cout naredba!
cout < < "Nakon for naredbe!" < &ltendl;

Primjetite da ako nema endl; manipulatora unutar petlje(napisite to i izvrsite) je sve u


jednom redu !
Znaci sadrzaj unutar viticastih zagrada se ponavlja koliko smo odredili u for()naredbi(x < 9)ali po jedan
i od x=0; od nule! A sadrzaj izvan petlje prije i nakon se samo ispisuje!

Sad par programa samo da se vjezba sa for naredbom da bi shvatili funkcioniranje petlje for{}!
Slijedeci programi a i ovaj prije samo nam sluze za ispisivanje brojeva unutar petlje!

28
U ovom programu samo smo promijenili vrijednosti unutar for petlje
x je opet pocetna vrijednost nula ali sad uvecavamo za dva! I opet smo granicu naveli devet.
Primjetite da for petlja uvijek ide u obliku da prvo odredimo pocetnu vrijednost
varijable pa zatim granicu do koje nam petlja ide i zatim za koliko je uvecavamo
Gotovo uvijek petlja mora biti tako zadana!A vidjet cete da samo mijenjamo vrijednosti!

Ovdje u gornjem primjeru mijenjamo pocetnu (x=10) i krajnju vrijednost petlje(x < 29)
a ostaje nam povecanje za dva iako smo i to mogli promjeniti.

29
Takodjer petlja može brojati i unatrag tako da smo mijenjali zadnji dio petlje
(x-2) i na taj nacin smo naredili petlji da nam ispise brojeve od 28 do iznad 9!
Normalno da sad pocetni x je 28,a kraj petlje nam je broj 10 jer smo zadali x&gt9!

30
Sad u gornjem primjeru unutar naredbe for koristimo i negativne vrijednosti
Jer kad i ovaj program izvrsite petlja zavrsava tamo gdje smo i zadali(x > -9)
do malo iznad -9 (-8) zbog koraka u petlji(x=x-2)
Nadam se da pocinjete razumijevati kako petlja funkcionira,sad samo da vam
pokazem opceniti oblik petlje : for(pocetna vrijednost;krajnja vrijednost;vrijednost uvecanja){}
a unutar bloka naredba za ispis varijable koja je navedena u petlji(cout < < x;)i sa manipulatorom endl;
da ljepse izgleda!

Sad prije nego napisete program ispod samo malo upozorenje da se radi o beskonacnoj petlji
koju cu naravno objasniti a pokrenite program u Dev okruzenju ,jer druga okruzenja kad se
pokrene program vrte bez prestanka,mozda tad samo reset kompa spasava da se zaustavi!
Stoga ostanite u Dev-u!

31
Znaci ovo je "mrtva petlja" jer ona ne moze ispuniti uvijete koje smo joj zadali!
Primjetite da je pocetna vrijednost x=18; a zadali smo kao kraj petlje -9 a petlja nece
nikad dostici kraj zbog nase vrijednosti povecanja za dva i program ulazi u besmislicu!
vrti neke cudne brojeve jer ne moze rijesiti petlju i to je beskonacna iliti mrtva petlja!
Moguce je da nehotice u programiranju napisete takvu petlju!
Vidite "greskica" je samo u onom plusu!

32
...jos jedan primjer mrtve petlje samo su malo drugacije vrijednosti ali uvijek
je prisutno to da se ne moze izvrsiti do kraja jer nikada ne dostize kraj!
U ovom slucaju je x=0 a pozitivna vrijednost nam je kraj a korak je x-1;
...i eto mrtve petlje! U biti nema logike i program ne moze izvrsiti zadano!
Nadam se da ste poceli razumijevati petlje jer one nam trebaju za puno
slozenije operacije u c++ -u nego sto je ispisivanje brojeva ali o tome u
slijedecinm poglavljima,sad cemo prijeci na vise petlji u jednom programu!
Znaci petlja u petlji!

33
34
Sad je naredu program koji nam pokazuje da osim petlje u petlji moze biti i petlja nakon petlje
u biti jedna za drugom!Znaci prvo se izvrsava prva petlja do kraja i tek onda druga do kraja
Ovo je jednostavnije nego ona prije ali u programiranju nam obe trebaju!

35
Zaboravih napomenuti da imamo uobicajeni pocetak programa i da koliko petlji imamo toliko
varijabli moramo deklarirati prije sastavljanja petlji!
int x; int r; za nase dvije petlje a mozemo jos ako imamo vise petlji,ovisi koliko nam petlji treba!
Primjetite da su crvena i plava(prva i druga)odvojene i tako se svaka za sebe izvrsavaju!!!!
Vjezbajte i vjezbajte mijenjajuci tekst ili vrijednosti!!!!

Sad cu samo napisati dozvoljene i nedozvoljene petlje kako ih smijete i ne smijete pisati
petlja unutar petlje
for(x=30; x !=610;x=x+60)
{
cout<<"prva x" < < x < < endl;
for(p=5;p!=400;p=p+40)

36
cout < < "druga p" < < p < < endl;
}

..jedna iza druge!


for(x=30;x!=610; x=x+60)
{
cout < < "prva x"< < x < < endl;
}
for(p=5 ; p !=400; p=p+40)

{
cout < < "druga p" < < p < < endl;
}

....i nedozvoljena!!!!!!!Zato jer se petlja nalazi unutar viticastih zagrada prve petlje
koja je zatvorena!Ne smije se to raditi a druga petlja nije ni otvorena sa svojom viticastom zagradom!
Proucite to i vidjet cete nelogicnost!

for(x=20;x&lt100;x=x+1)
{
cout < < "prva x:" < < x < < endl;
for(p=39;p!=49;p=p+3)
}

{
cout < < "druga p:" < < p < < endl;
}

while petlja

Sad mozemo malo i o while() petlji koja nam vrlo elegantno moze koristiti
a to nam pokazuju slijedeci programi!

37
38
Slijedi jos o while naredbi!

Sad cemo napisati while petlju u malo drugacijem obliku


u biti samo da je bolje razumijete,kako i na koji nacin se izvrsava.

39
Znaci kad unesemo broj dva izlazimo iz while petlje,toliko je dovoljno
da upamtite i slijedite logiku while ispitivanja!

Normalno da je ljepse kad bi nas program pitao za nastavak a mi unijeli slovo!


To ce raditi slijedeci program sa while petljom i naravno da je to ljepse.
Da bi to napravili unos jednog slova preko tipkovnice postoji tip char koji
nam omogucava unos jednog slova takodjer sa cin naredbom!
Znaci umjesto int odgovor pisat cemo char odgovor i kad dodijelimo vrijednost
umjesto odgovor=1; unijet cemo odgovor ='d'; i bitno je upamtiti da se
40
jedno slovo unosi sa apostrofima ' i slova su tipa char kad se radi o jednom slovu!
Slovo 'd' smo unijeli radi toga jer znaci da!

Eto to je malo drugacija while petlja i bitno je uociti novinu char tipa
takodjer primjetite da je upit i unos odgovora uvijek unutar while petlje!!!!

do-while petlja

41
Sad malo objasnjenja,do_petlja se rzlikuje od while petlje samo u jednom a to je
da se do-while petlja izvrsava uvijek jednom i onda dodje do while uvijeta
koji onda pita program da li smo unijeli (u nasem gore programu) 'd' za nastavak
ili neko drugo slovo za kraj!
Upamtite:razlika je samo da se do petlja izvrsi uvijek jednom prije nego dodje do while!
Upamtite:while uvjet u do-while petlji dolazi nakon do bloka i uvijek zavrsava sa tocka zarez!!
Citav nas program osim deklaracija varijabli i while uvjeta se nalazi u bloku do
a dodjela slova varijabli odgovor, mogla se napraviti i izvan bloka do ,ali
bolje za program je unutar bloka do!
U c++ jeziku prije nego neku varijablu koristite ili njenu vrijednost morate
dati do znanja da ta varijabla ili vrijednost postoji ,tako da je deklarirate(objavite)!

42
znaci struktura do while petlje ovako izgleda:

a=1;
do

{
cin>&gta;
}
while(a==1);

a struktura while petlje....

a=1;
while(a==1)

{
cin > > a;
}

Vjezbajte,gledajte,shvatite razliku,mala ali bitna!


slucajni brojevi

Sad dolaze na red slucajni brojevi i kako to realizirati u c++-u.


Slucajni brojevi nam trebaju kad ne zelimo npr. u igricama da nam se
neki predmet koji nam sluzi kao iznenadjenje dolazi iz istog smjera!
Zato moramo generirati slucajni broj(nasumicni niz)koji uvijek ima
slucajnu vrijednost pri svakom pokretanju programa ili igrice!
Program za generiranje slucajnih brojeva cemo sad zapoceti pisati.

43
Treba primjetiti da se ispis broja tj.varijable x ispisuje sa naredbom rand()
koja nam sluzi za generiranje slucajnih brojeva ali nedostatak programa je
da se stalno isti niz pokazuje a to cemo izmjeniti sa drugom naredbom
primjenjujuci je u slijedecom programu ,radi se o naredbi srand(1)
koju stavljamo prije for petlje i tako ce naredba rand() u skladu sa srand(1)
generirati 1.niz slucajnih brojeva, a stavimo li srand(2) dobit cemo
opet razlicit niz brojeva!U biti mi naredjujemo rand() naredbi pomocu
brojeva u srand(...)naredbi da generira uvijek drugi niz brojeva!
To radi ovaj program....a vi vjezbajta stavljajuci druge brojeve
u zagrade srand(,,..)naredbe i vidite svaki put drugi niz brojeva
srand() naredba uvijek je prije rand() naredbe i prije for petlje
jer ona utice na ponasanje rand() naredbe koja nam sluzi za ispis
for petlje!

44
Znaci sad imamo razlicite nizove primjenjujuci srand(1); pa srand(2);
i tako mozemo koliko hocemo!Ali bilo bi dobro da kad bi se sad i taj
broj unutar zagrade mijenjao slucajno,to postizemo primjenom naredbe
time(NULL); a ta naredba nam odbrojava vrijeme od 1.sijecnja.1970
To je trenutno sistemsko vrijeme,znaci ne trenutno nase vrijeme.Da bi ta naredba funkcionirala unutar
main() funkcije moramo ukljuciti zaglavlje < ctime >
Evo programa koji nam samo pokazuje kako radi naredba!

45
Sad samo tu naredbu treba staviti u srand() naredbu umjesto onih brojeva
u zagradama i eto nam pozivanja srand() naredbe koja slucajno vrti nizove
naredjujuci rand()naredbi razlicite nizove pri svakom pokretanju
a ne moramo stalno mi upisivati numeriranje unutar zagrada srand() naredbe
I eto nam sad smo blizu rjesenja generatora slucajnih brojeva!

46
Sad jos samo da rijesimo onaj pocetni broj u nasem nizu jer
je gotovo uvijek slican pri svakom pokretanju a to znaci da u svakom
nasem pokretanju npr. igrice,bi se predmet,objekt,etc. pojavljivao
na skoro istom mjestu a to nam ne treba!Taj problem se rjesava
tako da taj prvi broj izostavimo! Izostavljamo ga na taj nacin
da poslije srand() naredbe odmah stavljamo rand() naredbu koja
nam generira taj prvi broj i automatski ga nema u nasem nizu
pri izvrsenju for petlje!!!To nam je bitno jer sad nam je
i nas prvi broj u nizu razlicit pri svakom pokretanju!!!!

47
Sad smo dobili vise razlicitih nizova!!!Primjetite da je uz srand() naredbu
sad i taj rand() izvan for petlje tako da utice na onaj rand()
unutar petlje tako sto izostavlja jedan broj u nizu i to prvi
koji nam je i vazan!

Sad u slijedecim programima pokazat cemo kako se slucajni brojevi


pojavljuju u granicama koje im mi odredimo a opet su slucajni
pa nasi programi ili igrice ne gube smisao slucajnosti!!!!

Ovo sa obojenim slovima i naredbama je bio samo pokus na ovom poglavlju


i sad ga napustam jer napomene su da je kompliciranije pratiti takav tekst
stoga se vracam na standard i naglasavat cu ono bitnije sa bold nacinom!
Sad na posao,prvo cemo napraviti program koji generira brojeve izmedju
nula i jedan. To postizemo tako da nam osim varijable x treba i druga
varijabla slb u koju spramamo generirani slucajni broj podijeljen
sa maksimalnom vrijednoscu slucajnog broja ,a tu maksimalnu vrijednost
slucajnog broja dobit cemo sa naredbom RAND_MAX.
Znaci pri izvrsenju programa ,ako je generirani slucajni broj(rand()= 0
tada je i slb = 0 jer 0/RAND_MAX je = 0.
Ako je 1 tada je slb=1!

48
Trebam samo napomenuti da se system naredba odnosi na windows okruzenja
a detaljno objasnjeno u poglavlju I i za druga okruzenja pokusajte sa char i cin!
Takodjer objasnjeno u pgl.I!

Sad da se vratimo na program,pokrenuli ste ga i pokazuju se nula i pokoja jedinica!


To je zato sto su naredbe rand() i RAND_MAX int tipa(znaci nema decimala!)
A kako to radi, prvo programi u c++-u racunaju slijeva nadesno
i to znaci da se nasa formula izracunava u int tipu i tek onda pridruzuje varijabli slb
koja je float tipa (sa decimalnim razmacima) a to nam ne odgovara jer uzracun je
vec int tipa , pa ga program samo takvog sprema u float koji tako gubi znacenje!
Problem u tom programu rjesavamo tako da rand() tip int moramo pretvoriti u float
a popularni naziv u c++- je "castanje"!!!!

Naredba za pretvorbu je static_cast < float >(rand()) znaci poslije static_cast slijedi tip u koji pretvaramo rand()
a to je < float > !
I na taj nacin smo rijesili problem pokazivanja svih brojeva izmedju 0 i 1!

Napominjem da se "castanjem" mijenja tip varijable, ili u nasem slucaju mijenjamo


rezultat naseg generatora slucajnog broja rand() koji je int tipa!
Kad sam rekao slijeva nadesno to znaci pr. a=3+4+8 sto u prijevodu znaci u c++-u
8+4+3 pridruzi varijabli a!!!!

49
To je samo jednostavni primjer da znate o cemu se radi!
Evo i ispisa naseg prepravljenog programa!

Sad ce slijediti program koji nam generira slucajne brojeve izmedju


0 i 640, a ne kao do sad izmedju 0 i 1!

50
Znaci kao sto vidite u programu , niz slucajnih brojeva
izmedju 0 i 640 dobivamo tako da sve stavimo u zagradu(znaci nas rezultat)
i pomnozimo sa 640! Na taj nacin ako je rezultat u zagardi 0 tad je i slb=0
a ako je 1 tad je slb=640 ! Sve ostalo ,je izmedju 0 i 640 !
Nadam se da razumijete na koji nacin radi nas program !

Ako ne zelimo da nam se sad u programu pojavljuju decimale, tad


jednostavno na pocetku programa umjesto deklaracije float slb;
deklariramo int slb; , na taj nacin imamo slucajne brojeve izmedju 0 i 640
bez decimala ,sto sad i trebamo!
Probajte sad sami ispisati taj program(kod)!
Sve je isto kao i u predthodnom ali samo ne float nego int slb;
Pri prevodjenju nas program upozorava da je doslo do pretvirite float u int
ali to zanemarujemo !
Pokusajte!!

Sad slijedi primjer jednostavne igrice pogadjanja slucajnih brojeva!

51
52
U programu sam primjenio varijablu tipa int brojcanik!
I odmah u programu prilikom deklaracije sam dodijelio vrijednost 0!
Kad nesto u programu zelimo da broji koliko puta se vrti neka petlja
ili unosi brojeva ,slova preko tipkovnice , formiramo zasebnu
varijablu, kojoj dodijelimo pocetnu vrijednost 0 da bi tako krenuli od
1 , kad krene brojati,to brojanje tek na kraju programa ispisemo sa
naredbom (cout < < brojcanik;), jer je program zbog tog naseg brojcanika
svaki nas unos pamtio ,a pamtio ga je zbog nase definicije
(brojcanik = brojcanik + 1;) unutar do petlje jer smo sad dali do znanja
programu da svaki nas unos upamti pomocu brojcanika , jer svaki unos
uvecamo za jedan! Kad pogodimo broj ,sto je naznaceno u while uvjetu
koji doslovno kaze while(unosimo brojeve dok nam je unos nejednak odgovoru),
a kad pogodimo , ispise se nas cout na kraju, sa brojcanikom koji nam
govori koliko puta smo unijeli broj!

Znaci pocetak programa nam je standardan sa zaglavljima include koje nam trebaju,
zatim unosimo varijable koje nam trebaju(logicki smo ih imenovali).
Varijablu brojcanik na pocetku odmah pri definiciji postavljamo na nulu,
da kojim slucajem nismo ,ne bi nista brojali,probajte tako pogrijesiti
i pogledajte sto program javlja !
Zatim gneriramo nas slucajni broj u granicama od 0 do sto!
Ispisujemo tekst koji nam treba na pocetku programa .

Sad krecemo sa do-while petljom jer zelimo da nam se program ponavlja


dok se ne ispuni uvijet tocnog odgovora , a u petlju do-while smo
stavili dva if uvjeta jedan za drugim , i naravno izvodi se onaj
if ciji je uvijet ispunjen ,a sve se vrti do, while uvjeta!
Tad kad je while uvjet ispunjen, tek tad, program izlazi iz do-while
petlje i ispisuje se zadnji redak naseg programa sa ispisom
broja nasih pogadjanja, zbog varijable brojcanik!
Primjetite da smo varijablu brojcanik stavili odmah ispod nase
naredbe cin jer to brojimo!!!!

Da bi ovaj program dobro razumijeli morate ponoviti sva poglavlja do sada!


Pogotovo petlje!

To bi bilo sve u ovom poglavlju!

53
Programiranje u C++-u
polja
 sadrzaj :

 sortiranje polja
 spremanje u datoteku
 obrada teksta 01
 polje char tipa
 obrada teksta 02
 tekst u datoteku

Napomene: Uglavnom sam napadan zbog pisanja stila i izgleda same web stranice
kriv sam i priznajem ali u poglavljima prije ste mogli vidjeti kako ce slicno i ovo
poglavlje izgledati!Zatim ,ja ne zelim navoditi imena alogaritama koji se primjenjuju
u ovom poglavlju i cinim to namjerno zbog jednostavnosti objasnjenja i misljenja(moje)
sam ,da ako onaj tko uci shvati logiku ovih programa ,moze shvatiti i sam uciti
ono sto ja nisam htio napisati ili objasniti ,time se osvrcem na sve one koji
zele meni stalno napominjati da se to sve mora reci,e ne mora,bar ja na mojoj stranici!
Ispricavam se ako sam "uvrijedio "osjetljive ali neka shvate da i ja volim jako c++!!!
Mozda ne onako kako bi oni htjeli ali zivimo u demokraciji i "koliko ljudi toliko cudi"
i nismo u svijetu gdje svatko ne smije iznositi svoje poglede!!!!
Opet napominjem da je ove programske kodove netko vec napisao i mozete ih naci na netu
a dio i na You Tube-u video prikazu!!!!
Tamo programeri bez ikakvog problema pa cak i s zabavom pokazuju svoje znanje!!!
Njima svaka cast a vjerujem da u hrvatskoj ima onih koji i po njima kritike ispaljuju!!!!

Sad prvo ispisimo ovaj program!

Vidimo novi naziv varijable i oblik je novi int polje[5].


Usporedit cemo nasu obicnu varijablu s tom deklaracijom iznad.
Kad smo deklarirari int a = 12; tada smo u prostoru memorije racunala
dali naziv varijable a i rezervirali smo to mjesto u koje smo
pohranili vrijednost 12!
54
E sad kad smo deklarirali int polje [5] = {10,20,30,40,50};
takodjer formiramo ime i adresu varijable, ali sad zbog [5] tih zagrada i vrijednosti pet unutar njih mozemo
spremiti pet
brojeva na nasu adresu , jer tim smo nacinom rezervirali pet mjesta za nase brojeve!
Vidite razliku,int a; rezervira jedno mjesto , a int polje[5] rezervira pet mjesta!
To je bitna razlika u deklaraciji obicne varijable i deklaracija polja!
Sad , da bi polje popunili s tim brojevima ,dodjelujemo vrijednosti(brojeve)
unutar viticastih zagrada, int polje[5]={10,20,30,40,50}; , i to se mora
podudarati tj. ta brojka unutar [] bloka mora se podudarati sa toliko brojeva tj. mjesta unutar
viticastih zagrada {}!
Unutar [] tih zagrada navodimo koliko ce nase polje imati mjesta tj. elemenata!!!!
Mali problemcic u c++-u je taj da prvo polje nije polje[1] nego polje[0]
, to dobro zapamtite jer da ste ispisali u programu pocetak sa polje [1] ispisao
bi se element u polju s brojem 20!!!
Primjetite da se polja ispisuju kao kad smo ispisivali i varijable
,s naredbom cout < < polje[0] < < endl kao i obicnu varijablu npr cout< < x < < endl; .
Znaci razlika je samo da pri ispisu varijable samo navedemo ime varijable,
a pri ispisu polja moramo navesti osim imena polja(koje smo mogli i drugacije nazvati)
i broj elementa koje cemo ispisati na ekranu!

U programu gore probajte ispisati samo jedan element umjesto pet,samo to izmjenite i pogledajte.
Samo jedan element se ispise koju vi navedete u uglatim zagradama!
Dole nize ce biti par programa koji pokazuju kakve vrste tipa polja mogu biti
i nacini kako se mogu ispisati!

...ovdje u ovom programu nismo isli po redu ispisa i uocite da mozemo kako hocemo
napraviti ispis na ekran, ovisi o nasem zahtjevu u programu!

Polja takodjer mogu biti i float tipa , tu moramo uociti da unutar viticastih zagrada
kad odvajamo brojeve , odvajamo ih zarezom, a decimale tockom!!!!!
Pri unosu slova u viticaste zagrade obavezno moramo imati apostrofe ' jer tako se unose
tipovi char koji se odvojeni tim znakovima zovu literali znaka!!!!!

55
Znaci polja takodjer mogu biti i char tipa!!!
A vi u programu pokusajte izbaciti endl manipulator i pogledajte rezultat!

Evo sad i nasih programa!

56
Polja mozemo koristiti i za izracune kao sto smo koristili i varijable!!
Takodjer polja ne moramo odmah definirati,mozemo samo navesti na pocetku koliko
to polje mora sadrzavati elemenata a kasnije tokom programa imamo unos elemenata
pomocu cin naredbe i na taj nacin program nam vise nije staticki vec dinamicki
jer sudjelujemo u programu!
Za izracun koristimo znaci tri varijable,u trecu spremamo rezultat,u nasem
slucaju rezultat zbrajanja prve i druge varijable!
Znaci varijable su u biti polja,tako samo objasnjavam !!!!!
Vidite da se poljima koristimo kao i varijablama tamo u prvom poglavlju!
Evo i sad naseg programa gore objasnjenog!

Napomena
Ovdje u ovom poglavlju opet koristim system("PAUSE");,zbog meni jednostavnosti
ali vi koji nemate windows okruzenje koristite ono sa char tipom i cin unosom
umjesto system ("PAUSE"); .Ako ste zaboravili to sam objasnio u pgl.I !

Uglavnom do sada smo za ispis elemenata polja koristili ispis pomocu cout naredbe
i za velika polja to se cini jako neelegantno pogotovo ako polje ima
jako puno elemenata! Zato pri ispisu polja mozemo koristiti for naredbu koja
je puno bolja za izgled i funkcionalnost naseg koda i programa!

Formirati cemo petlju koja ce se vrtiti onoliko puta koliko ima elemenata!
Pocinje od onog elementa kojeg zelimo prvo ispisati pa do kraja ,do zadnjeg elementa!
U programu koji slijedi formiramo polje sa pet elemenata i petlju koja ce
ispisati te elemente na ekran.Pri ispisu unutar petlje for koristimo
polje[x] kao neodredjeni broj jer samo tako petlja ispisuje sve elemente
57
vrijednost x nam ukazuje na trenutnu vrijednost koja se iscitava.
Da smo napisali polje[1] ispisali bi element br.2 .Znaci broj ili vrijednost
ili znak nam unutar [] uglatih zagrada ukazuje na trenutan element!.
Prema tome ako stavimo x ili b i nakon toga ispis to je znak da zelimo
sve ispisati u jednoj vrtnji for petlje!

Takodjer mozemo ispisati samo prvi ,drugi i treci element tako da modificiamo
for petlju kako zelimo, sto cemo sad napraviti u programu,zadebljat cu samo promjenu
unutar for petlje koju smo prepravili da nam ispise sto zelimo!

58
Mozemo napraviti ispis elemenata da nam ide i unatrag,opet izmjenimo nacin
ispisa unutar for petlje!Mozete se igrati sa ispisima koliko hocete i
samo tako , znaci vjezbom do besvijesti se uci c++!

U ovom gornjem primjeru shvatite zasto se petlja vrti unatrag!Mijenjajuci


vrijednosti x unutar petlje mozemo ispisivati elemente kako zelimo!

Na slican nacin mozemo i preko tipkovnice unositi vrijednosti ili slova


kako cemo kasnije vidjeti u ovom poglavlju!U programu koji slijedi
biti ce dvije petlje:jedna koja nam sluzi za unos brojeva a jedna za ispis
tih brojeva koje smo unijeli preko tipkovnice sa cin naredbom!

59
Eto vidi se da nam petlja sluzi za unos polja a tako i za ispis polja.
Vi mozete unijeti i druge brojeve a ne one koje sam ja unosio ali
pazite da bude onaj broj elemenata tj. unosa koliko ste na pocetku programa
deklarirali sa int polje[5] a mogli ste i int polje[10] a unijeti samo pet
i slicno!Mozete vjezbati i vjezbati i na taj nacin se uci c++!
Samo tako nam može uci u glavu logika bilo koje petlje ili koda!
For petlja je uvijek elegantnija od unosa svakog elementa posebno i to
kombinacijom cout < < "Unesi....< < endl; pa cin > > polje[0];
i tako koliko nam celija treba,eto umjesto takvog programa su
nam petlje puno bolje i skrate muke pisanja dugackog koda!!!!
Vrlo je bitno da shvatite kako petlje rade , stoga ih sto vise vjezbajte
i vracajte se na poglavlja s njima ,kombinirajte ispise petlji pa petlje u petlji
i tako puno puno !

Sad idemo na malo zahtjevnije kodove sa poljima.Stavicemo neke uvijete


i izracune i slicno
Prvo cemo napisati program a onda ga dio po dio objasniti!

60
Na pocetku programa smo deklarirali varijable koje nam trebaju
u programu(x i r),zatim dolazi na red prva petlja kao i u proslom
programu gdje unosimo brojeve bez nekog reda!Sad dolazi zanimljiviji dio koda.
Varijablu r postavljamo na vrijednost nula!Zasto? Zato da bi petlja mogla citati
od slijedeceg elementa a ne od prvog jer nam je prvi procitan!Procitan je
tako da smo ga pridruzili varijabli r!Znaci prvi element je varijabla r!
Prvi nas unos je odmah spremljen u polje[0] sa imenom r,to znaci da moramo
imati pocetnu vrijednost koju usporedjujemo u if petlji, da bi uopce mogli
koristiti if petlju to smo morali napraviti da imamo sa cime raditi!
Zato petlja krece sa x=1; a ne x=0; Zatim unutar petlje for smo stavili
if petlju s uvjetom koji se mora ispuniti!Uvijet ja da program svaki nas unos
usporedi sa varijablom r i da li je manja od polja[x] i ako jest, tada se to polje
sprema u varijablu r a ako nije tad se ne izvrsava dio unutar
viticastih zagrada if petljice!Program se vrti za svaki nas uneseni broj
i usporedju s varijablom r i na kraju nam ostaje najveci , to ispisujemo
na kraju programa!!Znaci na kraju ostaje najveca vrijednost u varijabli r!

Primjetite da nema else dijela!To je dozvoljeno jer nam ne treba u programu


Uocite logiku programa , opet napominjem da sve mozemo i korak po korak sa
puno if else ispitivanja polja , a sa for petljom nam je puno
elegantnije raditi i ljepse izgleda program!!!!

61
U ovom proslom programu smo trazili najveci uneseni broj!
Vi pokusajte istom shemom kao u proslom programu naci najmanji
uneseni broj tako da samo izmjenite ovaj dio ; umjesto r < polje[x];
unesimo r > polje[x]; i promjenimo ispis dolje u Najmanji je:
Opet samo vjezbajte i vjezbajte!!!!

sortiranje polja
Sad cemo napisati i objasniti komplicirano sortiranje u poljima po velicini!
Zatim dio po dio objasniti u programu !
Moram samo napomenuti za sve napredene koji citaju ove stranice!!!!
Ja ne ulazim u analize alogaritama ,niti ih na ovim stranicama zelim nabrajati
niti ulaziti u rasprave koji je bolji, koji brzi ,kako se zove i slicno!!!
Ovi svi programi su plod rjesenja rada drugih ljudi,programera a ja samo zelim to
sve objasniti na jednostavniji nacin a kad se taj nacin savlada onda se moze ici na
na debeeeeeeele knjige pune alogaritama koje svi obozavaju jer su za pocetnike nerazumljivi
stoga ako netko nije zadovoljan s mojim objasnjenjima neka ni ne cita dalje!!!
Nije mi niti namjera otkrivati novu toplu vodu jer sve ove programe je netko vec napisao i
svaka im cast na tome jer omogucuju jednostavan pristup c++-u!!!! Sve je dostupno na netu,pa vi "napredni"
napadajte net a ne mene!!!!!!
Zbog ovog programa sam napadan!
Ali vi ga naucite i shvatite jer logika njega samog je
slicna svim sortiranjima u c++-u,a da ne bude isti kao ovaj da vas ne bi
optuzili za kopiranje ,dovoljno je ptomjeniti imena varijabli i slicno
Mozda sam se posluzio nekim dijelom koda od autora ovog koda ,ali
isto tako je kostur tog koda svima dostupan na netu!!!!!!!!!!!!!!!!!!!!

Zanemarite linije od 19 do 26 se ponavljaju!!!!!!!!!

62
<

Vrlo je bitno da svaka viticasta zagrada ima svoj pocetak i kraj!


Svaka naredba mora zavrsiti sa tocka zarez,kao i svaki unos ili ispis!
Primjenili smo for petlju i do-while petlju u koju smo stavili if petlju!
Znaci radi se o programu koji se sastoji od vise petlji jedna u drugoj!
Ako ste shvatili logiku izvrsavanja petlji u prijasnjim poglavljima
tada ce vam biti lakse shvatiti ovaj program a ako niste ponovite!!!!

Sad dio po dio!


Prvo naravno unosimo brojeve u polje p ,a zatim prije ispisa koji
takodjer ide sa for petljom kao i u drugim programima ,moramo izvrsiti
sortiranje po velicini jer smo unijeli bez reda brojeve!
Sortiranje se vrsi unutar do-while petlje u kojoj se
nalazi for petlja i if petlja koja za svaki broj ispitije postavljeni uvjet!
Cijelo sortiranje smo stavili u do-while petlju.Petlja se ponavlja tako dugo
dok je varijabla zamjena jednaka broju jedan!Znaci na pocetku ispitivanja
smo u varijablu zamjena stavili 0 jer ako nije potrebno izvrsiti zamjenu
tad se izlazi iz do-while petlje!U for petlji se cita cijelo polje s time
63
da se varijabla petlje mijenja za jedan manje od velicine petlje,ne ide
do 4 nego do 3!Zatim, if naredbom ispitujemo je li neki broj u elementa
polja (p[x]) manji od broja u slijedecem elementu (p[x+1]).Ako nije,znaci
da imamo prvo veci broj a zatim manji.To je ono sto hocemo i petlja se
vrti dalje!Ako jest ,znaci da imamo prvo manji pa veci broj,i treba ih zamjeniti!
U tome slucaju izvrsava se sadrzaj koji sam pojacao crnom bojom!(zamjena!)!
Kad se izvrsi zamjena ,varijabla zamjena poprima vrijednost 1 i do-while se nastavlja!
Nastavlja se dok ne bude zamjena = 0!!!
To znaci da nije pronadjen niti jedan broj koji je manji od slijedeceg i tad
sortiranje zavrsava!!
Na kraju se brojevi pomocu for petlje ispisuju sortirani!!!

Da malo vise objasnimo onaj dio unutar petlje if i tog bloka


viticastih zagrada!

Prvo moramo imati pomocnu varijablu u koju cemo spremiti broj


koji cemo zamijeniti!Zasto ga moramo spremiti?Zato jer ako ga ne spremimo
a mi izvrsimo spremanje veceg broja u element polja koja je bila manja ,tad nam
se nas broj koji je bio manji gubi iz programa!!!Zato imamo varijablu privremeni!
Znaci ,broj je u varijabli privremeni i sad mozemo napisati drugi red u if bloku
p[x] = p[x+1] sto znaci da smo sad u ono mjesto u memoriji koje smo ispraznili u varijablu privremeni
spremamo nas otkriveni veci broj!Sad smo ispraznili p[x+1] memorijsko mjesto i sad
varijablu privremeni u kojoj je nas sacuvani broj smjestamo u slijedeci element polja!!!
A to je p[x+1]!
Time smo zamijenili sadrzaje elemenata p[x] i p[x+1]!!!!Na kraju te zamjene u varijablu
zamjena se sprema vrijednost jedan i time smo obavijestili program da je
zamjena izvrsena i sad petlja moze ici dalje u provjeru!!!
Znaci racunalo je po tome znalo da je moralo biti zamjene i da mora
opet u provjeru dok zamjena ne bude nula!!!
Nadam se da ste shvatili ovaj program sortiranja a ponavljajte ga sve
dok ne shvatite njegovu logiku zamjene!!!
p[x+1]---------znaci slijedeci element nakon p[x] a ne zbrajanje unutar
uglatih zagrada!

Sad imamo jedan program gdje pokazujemo da se s poljima mogu


vrsiti i racunske operacije ! Kao izmedju varijabli !
Ovaj program ce zbrojiti polja po1 i po2 a rezultat spremiti
u polje po3 i zatim ga ispisati na zaslon naseg racunala!

64
Ovdje u ovom programu treba samo shvatiti da petlje moraju
funkcionirati tako da navedemo pomocu cega ce nam pokzivati nas
izracun i elemente , to nam uvijek radi pomocu varijabli koje
navodimo u nasim deklaracijama petlji(x,a,b,ili bilo koje duze ime)
, njih opet stavljamo u uglate zagrade da bi nam petlja pomocu
tih nasih varijabli iscitala element svakog polja!Znaci te varijable
ukazuju u biti na broj naseg elementa polja u ovom programu

Sad probajte druge racunske operacije izvrsiti nad nasim


prije napisanim programom , igrajte se , vjezbajte!!

Evo jednog programa koji ce nam pokazati koliko se odredjen broj ,koji
smo unijeli u polja, puta ponavlja u nasem unosu u polje.
Obratite paznju na varijablu c kojoj smo u deklaraciji dali pocetnu
vrijednost nula da bi je u programu mogli iskoristiti kao nas brojac
unosa naseg broja za kojeg zelimo znati koliko je puta unesen!
Naravno, da bi to znali moramo postaviti if uvjet i u njegovom
bloku postaviti nas brojac koji ce brojati koliko je puta unesen nas broj!
Izraz c=c+1 mozemo napisati i c++; sto znaci isto----uvecaj c za jedan!
U nasem if uvjetu to znaci da nam broji unose naseg broja odredjenog
u if zagradama!!!!Ako unesemo samo jednom tada je c=1;
ako unesemo dva puta tada je c=2; Kako? Tako da za svaki unos nasa
varijabla c se uvecava za jedan(c++) , koliko unosa imamo tolika je nasa
vrijednost varijable c,koju kasnije ispisujemo na zaslon!!!
Probajte sami vjezbati sa ovom kodom!

65
Ja sam unosio svoje brojeve i postavio sam uvjet u if koji sam ja htio,
vi to mozete sami mjenjati!!!

Unaprijed se ispricavam ako sam negdje u kodu pogrijesio , ako i jesam


neka vam bude izazov otkriti gdje! Inace sam sve probao u dev-u , sve se
izvrsavalo pravilno!!!Do greske moze doci kad sve to stavljam na stranicu
, zato se ne ljutite ako ima malih greski ,ali koje se mogu lako ispraviti
, naravno ispravim ih i ja ali mozda ce mi trebati malo vremena dok mi
se ne ukaze na to ili dok ja sam ne pronadjem gresku!!

spremanje brojeva u datoteku

66
Sad dolazi na red da pokazemo kako mozemo unijeti brojeve u program
iz neke datoteke,za tu svrhu cemo koristiti notepad. Unesite osam
razlicitih brojeva u notepad odvojenih razmacima! Napominjem da se
sluzimo samo tim programom a ne wordom ili sl.! Notepad mozete i otvoriti
tako da----klik na start--pa run ---i upisite notepad i klik ok!

Zatim cemo te brojeve spremiti(save as) kao podaci.txt u mapu radni!!


Znaci tamo gdje su nam i nasi programi!!!!Ako je sve kako smo napravili onda
nam je na c: disku u mapi radni spremljena tekstualna datoteka podaci.txt!!!!
Ja sam rekao da unesete osam brojeva ali mozete i manje ili vise,
ovisi samo o tome da se drzite pravila ,for petlja cita onoliko koliko
nam treba za tu datoteku ,ili manje, ali ne vise jer tad javlja gresku!!!
Upamtite zasada da u tip int ili float,double, ne mozete spremati
bas neograniceno velik broj!!!!!!

Ovako izgleda unos vasih brojeva, ja sam unio od jedan do osam .


Vi mozete unijeti takodjer osam po vasem izboru!
Upamtite , broj pa razmaknica!Ne zarez ili nesto slicno!
Ovdje na slici je datoteka.txt ali u programu je podaci.txt i tako je vi
spremite ili neko vase ime ali kad je iscitavate morate to ime navesti pod navodnike u
iscitavanju i datoteka se mora nalaziti gdje i vas .exe program ,znaci u radni(folder)!!!!!

Sad mozemo nakon sto smo napravili nasu kratku datoteku napraviti
program koji je iscitava !!!Moramo zato ukljuciti novo zaglavlje
# include jer nam je tamo naredba ifstream za iscitavanje nase datoteke!!
Evo programa ,koji cemo objasniti cim ga ispisete.

67
U programu smo znaci uljucili novo zaglavlje da bismo mogli raditi sa naredbom
ifstream iz tog zaglavlja a poslije te naredbe tj.pomocu nje mi formiramo
jednu novinu a to je objekt ulaz,zasada cemo se prema tom objektu ponasati
kao da smo deklarirali varijablu!To je znaci zasad u nasem programu ,element
s kojim cemo citati nasu datoteku!!Datoteku cemo spremiti u zagrade("podaci.txt")
da bismo programu objasnili sto da cita,i pod navodnicima!!!
A citamo je pomocu
objekta ulaz koji smo deklarirali sa naredbom ifstream!!!Taj objekt shvatite kao varijablu
zasada!!!Zatim smo formirali petlju koja se mora vrtiti onoliko puta koliko smo
unijeli brojeva u datoteku!Koliko nase polje imaelemenata!U nasem slucaju osam!
Ta petlja pomocu te varijable ulaz(objekta) cita nasu datoteku!Kako? Tako sto
Varijabla ulaz ifstream tipa(hajdemo tako zasada reci) odnosi se na datoteku u zagradi
koju smo deklarirali prije for petlje i sad samo napisemo da zelimo uci u nju
pomocu > > nasih znakova i kad udjemo zelimo je procitati sa petljom for korak po korak
a za to nam sluzi varijabla x koja ukazuje na svaki nas element u koju smo upisali broj ,a iscitati ce se
zbog nase petlje korak po korak svaki element polja(x+1) znaci jedna za drugom.
Sad imamo iscitane elemente i trebamo ih ispisati a to opet radimo sa drugom for petljom koja
samo ispisuje na ekran pomocu cout naredbe!!Naziv onog objekta biramo isto kao i nazive
varijabli,gledamo da bude sto logicnije u nasem programu...ulaz...znaci ulazimo u datoteku
a mogli smo i obicno slovo staviti!!!Da smo umjesto ulaz > > stavili cin naredbu,ne bise
nista lose desilo nego bi morali unositi brojeve preko tipkovnice!!!
68
A sto mozemo s nasim brojevima koje smo iscitali iz datoteke? Isto i sto sa
normalnim brojevima.....zbrajati,oduzimati,mnoziti i sl.!
U slijedecem primjeru cemo izracunati prosjecnu vrijednost nasih unesenih brijeva.

Unutar druge petlje smo stavili u biti brojac koji nam zbaraja nase elemente
jedan po jedan i dodaje varijabli a!!Zato smo na pocetku definirali varijablu a
sa pocetnom vrijednoscu nula da bi mogli zbrajati!Upamtite da se operacije u c++-u
odvijaju s desna na lijevo i prema tome-----prvi korak petlje---glasi
jedan plus nula pridruzi a---drugi korak petlje----dva plus 1 pridruzi a----sad primjetite
da je a vec tri i sad tako osam puta koliko nam se vrti petlja i zbrajanje
se nastavlja dok ne zbroji 32!!!!Shvatite logiku nase petlje!
Znaci sad imamo a=32 i formiramo formulu a= a/8; opet istom logikom nas c++
radi s desna na lijevo ----podijeli a koji smo dobili u prethodnoj petlji
s osam(ukupnim brojem nasih celija) i eto nam prosjek i sad u
slijedecem redu ispisujemo nas prosjek u varijabli a .

Sad cemo brojeve koje unesemo preko tipkovnice spremiti u datoteku!


U program takodjer na pocetku moramo uljuciti fstream zaglavlje.
Zatim moramo oformiti objekt ali ne ulaz nego izlaz jer spremamo
nase brojeve u datoteku , ovaj put nam treba i nova naredba ofstream
naredba za poslati nas unos u datoteku!!Naravno nasu datoteku smo
nazvali podaci2.txt(pod navodnicima i zagrada) . Prvo,na uobicajeni nacin
69
unosimo brojeve (cin naredba) for petljom , zatim drugom for petljom
i koristeci objekt izlaz sadrzaj naseg polja unosimo u datoteku!Odmah
ispod pisemo izlaz < < " "; jer nam treba razmak izmedju nasih brojeva!!!
Ove dvije naredbe u toj for petlji, slicne su cout < < p[x]; i odmah ispod cout < < endl;
jer nam cout sluzi za ispis na ekran a endl je za razmak, a u nasem slucaju
trebamo spremiti brojeve u datoteku s objektom izlaz i treba nam razmak
izmedju brojeva ,to postizemo da u objekt izlaz za svaku vrtnju petlje for
tj. nakon ispisa jednog po jednog broja stavlja prazno mjesto.To prazno mjesto
je izmedju navodnika a posluzili smo se takodjer objektom izlaz da bi taj
razmak spremili u datoteku!!!
Na kraju ispisujemo da smo datoteku spremili uspjesno!!Zasto? Probajte izostaviti
taj ispis i ispasti ce kao da ne znate da je spremanje gotovo!Znaci mi
u biti samo dajemo nama do znanja da smo gotovi!!!!
Nakon ovog programa posluzite se proslim programom da bi iscitali to
sto smo spremili,naravno iz podaci2.txt !Takodjer, mi to mozemo vidjeti i aktivacijom
notepada i unosa imena nase datoteke!
Pazite da sve mora biti u mapi radni!!!!!!!

Ovdje sve kao i malo prije govorim sve u prvom licu ali vjerujte nista ne
prisvajam s tim nacino ali ocito ce to nekome smetati pa samo napominjem!

Sad cemo napraviti jedan malo veci program koji ce raditi ovo :
70
Prvo cemo unijeti brojeve u nasu datoteku(polje), zatim cemo ga sortirati
pomocu naseg koda sortiranja polja!Dalje,iscitat cemo ga tako sortiranog da bi vidjeli
da li sve to radi!!!!Primjetite da sam male izmjene u deklariranju napravio!!!
Nisam odmah sve na pocetku deklarirao ,nego, taman prije nego tu varijablu koja nam
treba u programu deklariram!!!Znaci pravilo u c++ - u, je da prije nego
neku varijablu ili funkciju trebamo moramo to prvo objaviti u programu ,prije
nego ga program treba ili funkciju trazi !Proucite dobro program koji je napisan
i razumjet cete o cemu pricam!!!!

71
Sad cemo kratko prikazati kako izgledaju dvodimenzionalna polja!
Ona su nam korisna kad trebamo kreirati tabele podataka!
Ponavljam da je ovdje samo kratak osvrt na njihov izgled ,osnova osnova osnova!!!

Znaci u ovom programu cemo ispisati gornju tabelu i ispisati


prvi i drugi red! Sad prvo da ispisemo program!

72
Svaka petlja ispisuje svoj red !!Tip naseg polja int p
jest int , a mogli smo staviti float ili char ,naziv polja smo izabrali p ,prva uglata zagrada nam govori koliko
imamo redova ,druga govori stupaca i tako prikazujemo dvodimenzionalna polja,
u viticastim zagradama ,znaci kad smo u "dvodimenzionalnosti",
imamo po cetiri broja(cetiri stupca) , dva reda (dva bloka viticastih zagrada)!
U prvom bloku viticastih zagrada nam je prvi red polja , u drugom
bloku viticastih zagrada nam je drugi red polja!!! Cjelokupni sadrzaj polja nam se nalazi
unutar posebnih viticastih zagrada!!Znaci to je deklaracija naseg
dvodimenzionalnog polja!!Kad pristupamo redu i nasim brojevima unutar for petlje
prvo navodimo broj reda(pocevsi od nule koja znaci broj jedan ili prvi red)
i zatim broj stupca kojem moramo pristupiti a to je sadrzaj varijable x
Sad shvatite petlju,za svaki korak reda nam ispise po jedan stupac,korak je
x+1 a po redu su stupci kako nam u tabeli pise za taj red!!!
Na slican nacin nam se ispisuje i drugi red (broj 1 ili red dva)!
Ako dobro proucite program shvatit cete ga lako i vjezbajte sa ispisima!!

obrada teksta
73
Sad prelazimo na obradu teksta i na char polja!Dosad smo se bavili brojevima
, sad prelazimo na tekst i slova. U slijedecem programu da bi mogli raditi sa
tekstom moramo ukljuciti novo zaglavlje u nas program, < string > zaglavlje
,koja posjeduje naredbe potrebne za rad s tekstom i slovima!

Zasad shvatimo da je u programu string deklariran kao tip, a imena varijabli takodjer
biramo kao dosad i po logici programa !U biti radi se da je varijabla odgovor
u nasem programu objekt , a string nije tip nego klasa,ali o tome kasnije,vi
zasad smatrajte da se radi o tipu i varijabli!!!

U tip string(klasu) mozemo spremati rijeci koristeci varijablu(objekt)


za razliku tipa char u koji mozemo smjestiti samo jedno slovo i to
izmedju apostrofa ' ' , rijeci spremamo izmedju navodnika " " !
Znaci kad smo deklarirali varijablu odgovor tad pomocu cin naredbe ,znaci
kao da se radi o obicnoj varijabli ,unosimo rijec (u nasem programu ime)!
Znaci cin je unos rijeci preko tipkovnice u varijablu odgovor!
Sad dolazi ispis na ekran pomocu cout, s time da naredjujemo programu da
prvo ispise sadrzaj varijable(objekta )odgovor(ime) a zatim rjieci pozdrava!
Znaci u objekt odgovor klase string mozemo spremati tekst!
U nasem programu radimo
s njima kao sa obicnim tipovima i varijablama!

U slijedecem programu koristit cemo naredbu koja nam rezervira prostor za


nase rijeci koje upisujemo u varijablu (objekt) odgovor! Primjenit cemo
novi izgled nase naredbe koji cu podrobnije objasniti nakon sto
napisemo progarm koji je isti kao prošli ali sa novom naredbom!

74
Program je isti,isto radi i ispisuje ali sa novom naredbom!!!
, reserve(256), tom naredbom smo rezervirali da u nas objekt odgovor
mozemo spremiti 256 znakova,tj. rijec od 256 znakova!!!
upamtite oblik na koji to radimo----odgovor.reserve(256);
Uvijek ide tocka izmedju naredbe ,koja vrsi radnju nad objektom,i
naseg objekta osgovor! Sad samo na kraju odredimo koliko reserviramo
mjesta i to spremimo u zagrade!Upamtite---objekt.(tocka)funkcija;
Dalje je program isti samo sto smo racunali dali do znanja da cuva
256 mjesta u memoriji za nas objekt odgovor!!!

Sad uvodimo jos dvije nove naredbe u nas program koje ce


vrsiti radnju nad nasim objektom odgovor !Te naredbe su sastavni
dio zaglavljastring koju smo ukljucili na pocetku s naredbom
include !!!Naredbe su size() i capacity()!!!!!!
Prva nam odredjuje koliko smo znakova unijeli kad smo ime
unosili slova preko tipkovnice , druga nam ukazuje koliko imamo
slobodnih mjesta koje mozemo iskoristiti da bi unijeli
slova u objekt odgovor.Mi smo prije osigurali 256 a prevodilac
nam govori da imamo 355.To je zato sto program uvijek malo
vise osigura nego nam treba!!!!
Primjetite da se i ove naredbe pisu u obliku----odgovor.size();
Tocka izmedju objekta i naredbe koja vrsi radnju nad objektom
mora biti!!!!size()----uvijek se pise u tom obliku(zagrade obavezne)!
Sad ispisimo program i proucite ga!

75
Sad u slijedecem programu cemo rijesiti jedan mali problem!
S naredbom cin smo mogli unijeti rijec ali ne sa prekidima tj.
nismo mogli na primjer unijeti ime i prezime!!!
Pokusajte sa gornjim programom i vidjet cete da se ispise
samo ime ili prezime!!!Da bi to izbjegli uvodimo novu naredbu
umjesto cin naredbe!getline(cin,odgovor); !!!
U ovoj naredbi nam rijec getline omogucava unos vise rijeci a kako ih unosimo?
Opet s cin naredbom ali u zagradi , potom morammo upotrijebiti
objekt u koji unosimo nase rijeci ,to je odgovor tako da sijela naredba izgleda getline(cin,odgovor);
Znaci to je unos vise rijeci u string objekt odgovor!!!
Evo i programa!!!!Iskusajte ga!!!!

76
Slijedece sto cemo rjesavati je kad unosimo samo prazna mjesta
i kako da to izbjegnemo ili kad umjesto rijeci unesemo brojeve!!!!
Prvo cemo rjesavati prazna mjesta a onda brojeve!!
Prvi problem cemo rjesiit uvodjenjem do-while petlje koja nas pita :
ako smo unijeli prazna mjesta u program (pritiskajuci samo tipku enter),
tada ponavljamo postupak!!!Program slijedi!

77
Znaci u ovom programu se unos ponavlja dok je ispunjen uvijet
u while petlji!!Vidite kako smo lijepo iskoristili do-while petlju
u ovom programu !!!U while uvjetu je naredba size() i normalno
da smo je stavili u ovom obliku odgovor.size() jer tako dajemo
na znanje da se operacija size() vrsi nad objektom odgovor!!!!
Na ispisu primjetite da nam se ponavlja unos kad pritisnemo enter!!!
Upamtite da objekt od naredbe ili funkcije koja se vrsi nad njime odvajamo tockom!!!

polje char tipa

Sad rjesavamo onaj drugi problem kad unosimo brojeve umjesto slova!!!
Ali prvo cemo napraviti program da vidite da se tekst moze unositi i preko
polja char tipa a ne samo preko string objekata!!!
Prvo moramo deklarirati polje char sa varijablom kojoj smo dali ime niz!
Unutar uglatih zagrada rezerviramo 255 mjesta u koja mozemo spremati nasa slova!
Nova naredba s kojom se srecemo je cin.getline(niz,255); !!
Tom naredbom unosimo slova preko tipkovnice u nase polje imenom niz,
rezerviranih mjesta ima 255! ...cin.getline je naredba koja se odnosi na ono sto je
u zagradi(niz,255)--znaci ime polja i broj celija!!
Naredba za unos preko tipkovnice je cin.getline!!
Ispis se vrsi kao i u proslom programu ali samo umjesto odgovor ubacimo niz!!!
Napominjem da smo unos teksta mogli napisati i u ovom obliku--cin > > niz;
ali tad bi se unijela samo jedna rijec a ne recimo ime i prezime(dakle samo ime)!
Sad program i proucite ga!

78
Sad cemo prijeci na onaj problem kad u unos imena i prezimena ne zelimo brojeve!
Racunalo ce od nas zahtijevati da ponovimo unos!!!
Prvo cemo ispisati program a onda ga dio po dio objasniti!!!

79
Sad doslovni prijevod programa : Unesite vas ime i vas unos se provjerava
u do-while petlji tako da program vas unos provjerava u while petlji koja
ima svoj uvijet a to je dok niz ne dodje do kraja . A dok ne dodje do kraja
za svaki uneseni znak u if petlji se provjerava da li je broj!!! Ako je unesen
80
broj tad se p postavlja na nulu(false) sto znaci da se unos mora ponoviti
zbog uvjeta u while petlji u do-while petlji p==0!!!Zasto?Zato sto smo na pocetku
posatvili p=1;!!!(true)Jos nam ostaje da doslovno prevedem x=x+1;!To nije
nista drugo nego korak uvecavanja koji prati onaj uvjet u while petllji dok
niz ne dodje do kraja tj. ispitivanje u if petlji ici ce dok se while petlja
ne izvrti do kraja!!!!(kad ispitas jedan znak kreni na drugi--x=x+1;).
Znak za kraj je '\0' !!!!!
\ taj znak dobijete sa AltGr + Q!!
Znaci mi smo u petlju do-while stavili while petlju a u nju if petlju !!!!
Ako ste shvatili nacin vrtnje petlji koja se izvrsava pod kojom tad vam je i ovo lako!!!
Za svaki korak do-while petlje while petlja se mora izvrsiti do kraja a za svaki korak
while petlje if petlja se mora izvrsiti do kraja i eto nam programa!

Sama while petlja radi tako da smo prvo prije njene upotrebe deklarilali varijablu
x i postavili je na nulu da bi se u programu mogla uvecati za po jedan za svako
pomjeranje nase while petlje(za svako ocitanje slova x se uveca za jedan)...u biti
radi se o jednoj vrsti brojaca!!!Ako nema brojeva u unosu tad nam se if petlja
preskace i p ostaje na jedinici i izlazimo iz do-while petlje!!!
if(isdigit(niz[x]))---ova naredba unutar if uvjeta ispituje da li je
u nasem unosu kojim slucajem unesen broj !!!Ispitujemo polje niz , char tipa a element
koji je trenutno u varijabli x!!!
Vazno je da shvatite ovo ispitivanje i ponovite taj program puno puta!!!!!
A prije njegovog proucavanja , petlje si ponovite!!!!!!

Sad kako smo naceli ispitivanja u if petlji ,malo cemo se zadrzati na tim naredbama!
Zato evo par programa i naredbi ispitaivanja u if petlji!

81
Evo ovo je program koji ispituje da li smo unijeli slovo ili broj
i ovisi sto unesemo izvrsava se taj blok unutar viticastih zagrada!
Igrajte se malo s ovim programom i uocite logiku programa!

Sad cemo nabrojati ispitivanja char varijable tako da mozete


sva ta ispitivanja stavljati u gornji program i na taj nacin
vjezbati i vjezbati jer bez toga nema ucenja!

82
Znaci u gornjoj tabeli mozete vidjeti ispitivanja koja mozete napraviti
nad varijablom char sa gornjim programom! A sad cemo napraviti jedan
malo veci program sa nasim ispitivanjima i vise if-else petlji !
Tako cete vidjeti funkcioniranje petlji if-else kad ih ima vise!

....Zanemarite liniju 50!!!!!!!!

83
....Zanemarite liniju 50!!!!!!!!

84
U ovom programu mozemo vidjeti upotrebu naredbi za ispitivanje znakova
primjenjenu na polje char tipa!!! Ispitujemo pojedine elemente jer ne mozemo
odjednom sve! To postizemo tako da svaki element polja ispitamo if uvjetom!!
Program se moze mijenjati tako da stavimo drugi sadrzaj polja ili
da sadrzaj polja unosimo preko tipkovnice!!!Primjetite kako se u polje
char tipa unose znakovi(literali)....izmedju ' ' !!!!
Upamtite da naredbe usvajamo tek kad za odredjenu naredbu napisemo najmanje
nekoliko desetaka programa!!!!!!!

Sad samo male napomene za slova i tekst i jedan program koji nam
ukazuje na razliku unosa jednog slova i teksta i jos jedan program
koji nam pokazuje da slovima mozemo dodavati ili oduzimati brojeve
i na taj nacin mozemo pomicati redoslijed slova koja se prikazuju

Znaci jedno slovo se pise izmedju ' ' a tekst se pise izmedju " "
To je pravilo!!!!

85
Ovdje u ovom programu pomocu brojeva i znaka + ili - dodajemo ili oduzimamo
slova i na taj nacin se pomicemo u abecedi!!!!!Znaci ne zbarajamo slovo + slovo
nego se micemo u redoslijedu!!!

Obrada teksta 02

Sad cemo se vratiti na obradu teksta u string objektima i kasnije


kombiniramo string klasu i objekte klase string sa char poljima!!
Slijedi jednostavan primjer kako se moze manipulirati string objektima
jednostavno zbrajajuci ih i tako zbrojene spremiti u novi objekt
koji cemo ispisati na ekran!!!!

86
Znaci sad prvo deklariramo nase varijable(objekte) kojima pridruzimo tekst!
Zatim oformimo(deklariramo) treci objekt u koji nista ne spremamo jer nam
kasnije u programu treba za definiciju nase male formule zbrajanja!!!
I na kraju taj treci objekt s novim sadrzajem ispisemo na ekran!
Vidite da u biti zbrajamo objekte klase string u novo objekt klase string
Pri tome smo zbrojili njihove sadrzaje koje prikazujemo na ekranu s naredbom
za ispis!!!

Prelazimo na malo kompliciraniju obradu teksta i programe koji to opisuju!

87
U ovom programu smo primjenili naredbu size() na tekst koji smo unijeli
preko tipkovnice (ponovite sve prije )i zapamtite da naredba za odredjivanje
broja znakova u recenici koju smo napisali ukljucuje i razmake i druge unose
osim slova i zato je tamo broj 41!!!!!!Unesite drugi tekst u program!Vjezbajte!

Sad cemo napisati program koji u nasem tekstu pronalazi tocno odredjenu rijec
pomocu nove naredbe koju cemo primjeniti!

88
Ovaj program radi da nam pretrazuje nas objekt tekst u koji smo spremili
nasu recenicu koju unosimo preko tipkovnice!Pretrazujemo preko naredbe find()
tako da u zagrade naredbe find stavimo trazenu rijec ,a tu trazenu rijec smo
spremili u objekt trazi!!!Sad ispocetka : prvo deklariramo nase objekte koji ce
nam trebati u programu i oni su klase string(shvatite to kao deklariranje varijabli)
,imena objekata biramo kao i imena varijabli!Zatim smo unijeli (dekralirali) varijablu
pozicija koja je tipa int .Zasto?Zato sto u tu variablu spremamo broj,tocnije
mjesto na kojem pocinje nasa trazena rijec!!

pozicija=tekst.find(trazi);

Doslovno : u varijablu pozicija spremi nadjenu rijec u objektu tekst!!!!Primjetite


da smo opet isli slijeva udesno!!!Izmedju objekta i funkcije koja obavlja radnju nad objektom
obavezno tocka!!!!U zagradama funkcije je objekt koji trebamo naci!!!!
U uvjetu if opet nova naredba string::npos (ova dvotocka zasad neka vam ovo znaci da npos pripada string klasi),
ta naredba znaci da trazena rijec nije nadena i sad ste zbunjeni kao i ja kad sam prvi
put vidio naredbu.Zato sad dalje: tu naredbu opet u if uvjetu usporedujemo sa varijablom
pozicija : pozicija !=string::npos --- znaci usporedjujemo rezultat pretrazivanja u
varijabli pozicija sa obavijescu da nije nadjena(string::npos) i ako je ona neistina(!=) tad
je trazena rijec nadjena!!!Sad ja mislim da ste shvatili!

89
Ovaj program radi gotovo sve isto kao i prosli da sad ponovo ne objasnjavam
ali ima jedna mala izmjena tj. nova naredba rfind() koja koja naredjuje racunalu
da krene od kraja potrazivati nasu trazenu rijec!!!U biti on i dalje broji ispocetka
ali samu rijec trazi od kraja i na taj nacin preskace prvo pojavljivanje nase rijeci
i javlja nam drugo pojavljivanje nase trazene rijeci!!!!
Napominjem da naredbe javljaju da se rijec pojavljuje nakon praznog mjesta i
taj broj se nama pojavljuje na ekranu a ne bas mjesto na kojem se nalazi nase
prvo slovo u trazenoj rijeci!!!
To je pravilo!

90
U ovom programu opet preskacemo prvo pojavljivanje nase trazene rijeci
,ali vi stavite drugi broj da bi preskocili prvo pojavljivanje jer ja sam opet stavio
prvo pojavljivanje,
uz naredbu find ali smo jos stavili broj 7 !!!Zasto?Zato jer tako samoj naredbi find govorimo da
pocne pretrazivanje od mjesta broj sedam i tako opet preskacemo nase prvo pojavljivanje
rijeci !!!!Upamtite taj oblik naredbe---find(trazi,7)---jer pomocu tog oblika u zagradama
kad malo prepravimo naredbu mozemo pronaci svako pojavljivanje rijeci u tekstu!!!!

91
U ovom programu pronalazimo sva pojavljivanja rijeci koju trazimo!!
Prvo ide deklaracija nasih objekata(varijabli),zatim varijabli koje nam
trebaju tipa int jer u njima nisu spremljena slova nego vrijednosti int!
int duljina nam treba zato da prije while petlje oderedimo dokle ce nas
program ici !!!Znaci u varijablu duljina spremamo tekst.size() naseg teksata
koji unesemo!!!To radimo pomocu one nase naredbe size()(obratite opet paznju na tocku!)
Na taj nacin smo u duljinu spremili brojcanu vrijednost naseg teksta!!!!
Sad unutar while petlje upotrebljavamo varijablu trenutno i ona nam sluzi kao brojac!!!
Isto tako ,ona nam odredjuje dok je trenutno manja od vrijednosti duljina(brojcana duzina naseg teksta)
nas program vrsi ispitivanja unutar petlje while!!!!!

92
Unutar petlje while smo naravno stavili if uvijet pomocu kojeg kao i prije u nasim
programima ispitujemo da li je rijec nadjena ili ne!!!Ali prije te if naredbe moramo
definirati varijablu polozaj koju ispitujemo u if naredbi!!!!
Opet upotrebljavamo nasu find nardbu ali s malom izmjenom---umjesto broja ubacujemo
int tip trenutno jer moramo pretraziti cijeli tekst , to uvjetujemo while petljom!!!!
Vidite da se u biti opet radi o petlji u petlji!!!!!
Sad unutar petlje if ispisujemo nadjenu rijec kao i prije ali dodajemo
brojac koji ce pamtiti svaki otkriveni polozaj,a sljedece pretrazivanje krece od tog polozaja +1,
i ispisati ga na kraju programa!!!!
U else petlji za svaku nepronadjenu rijec opet brojac ali koji nam govori da
ispitujemo slijedece mjesto u nasoj recenici dok ne dodjemo do kraja!!!
Program morate vise puta ispisati i vjezbati i vidjet cete logiku programa!

U ovom programu primjenjujemo maredbu insert da bismo mogli u nas


tekst unijeti sadrzaj naseg prije definiranog objekta umetak
,sadrzaj je : jako!!!Primjetite opet oblik naredbe kako je ukomponirana,
slicno nasim naredbama find i rfind , ali u zagradi je prvo mjesto od kojeg
ce ici nas umetak br.6 pa zarez i onda nas objekt!

93
Takodjer u ovom programu koji je isti kao i onaj prije ,jedina je razlika da umecemo
direktno rijec s navodnicima umjesto definiranog objekta!!!!Znaci to su dva nacina umetanja
rijeci u tekst : s objektima i obicnim recenicama s navodnicima!

Naravno ,ovdje je naredba erase,oblik kojim naredjujemo je isti kao i u prethodnim


programima samo je u zagradama(7,5) navedeno prvo mjesto od kojeg brisemo ,
drugo je navedneo koliko mjesta brisemo!!!Proucite i vjezbajte
Sami napisite tekst i brisite sto zelite!

94
Sad nova naredba replace(zamjena)!!Objasnit cu samo ono u zagradama jer je to jedino novo!
Prvo ide broj od kojeg krece zamjena,zatim broj slova koji zamjenjujemo i na kraju mjesto,
u zagradi navodimo objekt sa sadrzajem koji zamjenjujemo!Sve je odvojeno zarezom!
Ne zaboravite tocku izmedju objekta nad kojim se vrsi radnja!!!!(tekst.naredba)
Kao i u predthodnom programu umjesto treceg dijela u zagradi mogli smo navesti i rijec
pod navodnicima koju zelimo zamjeniti!

95
U ovom poglavlju se doticemo teme pokazivaci koju sad necu objasnjavati nego
u posebnom odjeljku a vi zasad naredbu shvatite kako opisem!

char* p = (char*)tekst.c_str();

Podcrtanom naredbom u tom obliku imenujemo i stvaramo polje imena p ,


u drugom dijelu naredbe je naziv objekta(tekst) koji cemo spremiti u nase polje
tipa char da bi mogli ispisati slovo po slovo!!!
Sjecate se iz drugih poglavlja naziva "castanje",e pa upravo to radimo naredbom
u zagradama(char*) cime doslovno govorimo objekt tekst ce biti char tipa,zatim,
ide tekst.c_str(),i primjetite da je opet objekt tekst odvojen ,od funkcije koja ce izvrsiti
spremanje teksta u polja ,tockom i zasad tako upamtite ovu naredbu!

Zatim slijedi ispis s cout naredbom i navodimo imena nasih polja(od 0 do 4)


i eto premjestaja!

Sad ide program u kojem premjestamo tekst iz char polja u string!!!


Radimo to zato jer nam ne odgovara kad netko o upitu za ime
unosi brojeve a ne slova!Da bi to onemogucili moramo napraviti
program koji ce provjeriti slovo po slovo da li je unesen broj!
Prvo normalno definiramo varijable i objekte koji nam trebaju
Trebaju nam polja , objekti klase string, kao i obicne varijable
tipa int!!!Nakon toga primjenjujemo nasu do-while petlju ispitivanja
da li je slovo broj!!!Ponovite to u prethodnom programima!!!Znaci samo smo
umetnuli istu do-while petlju u nas program!!!!!!
Novina je na kraju programa---tekst=niz;-----opet napominjem da
se i ova radnja odvija s desna na lijevo,znaci tekst iz niza pridruzujemo objektu
tekst!!!Zasto?Zato da mozemo primjeniti naredbu size() jer se ona na polja niz

96
ne moze primjeniti nego samo na tekst!!!!!Znaci naredba size radi samo s objektima!

Spremanje teksta u datoteku

97
Pomocu objekta klase string mozemo formirati polja i ta polja mozemo spremati
u datoteke na slican nacin na koji smo spremali brojcana polja
Ponoviti spremanje brojeva u datoteku!!!!!
U programu za spremanje brojeva smo koristili prazna mjesta izmedju brojeva
da bismo mogli razlikovati sadrzaj pojedinih elemenata polja!U spremanju rijeci to nije
prikladno jer kad pisemo rijeci mi ionako upotrebljavamo prazna mjesta!
Zato da bi neki razmak postojao a mi pomocu toga iscitavali nase rijeci
spremljene u datoteku upotrijebit cemo # znak!!!
Sve to ima smisla kako cete vidjeti u programima!!!

98
Ovako to slicno izgleda u notepadu!!!!!!
Tocno tako...tekst..razmak...#...i tako do kraja!!!!

A ovako je unutar mog radnog spremljena datoteka moja!!!!

Sad programom slicnim kojim smo citali brojeve iz nasih datoteka


citamo i rijeci!!!Ponovite taj dio u ovom poglavlju!!!!
Oznaku # sad koristimo da bismo utvrdili jesmo li dosli do kraja sadrzaja
jednog elementa polja u kojem se nalazi nasa rijec sa # znakom!
U biti to nam je uputa programu ,"sidro" za koje se moze program
vezati i iscitati nase rijeci!Zasad tako citamo ,ali program je manjkav
zbog jedne stvari, to je kad bi unosili u nase rijeci # tad bismo
zbunili program!!!Pokusajte drugim if uvjetima to korigirati!!!

99
Ovdje vidimo dokaz sto se nalazi u nasoj datoteci!!!!!!!!

Mi moramo oformiti objekt spremiste jer pomocu njega citamo podatke(rijeci )


i dodajemo ih u nas objekt moja!!!To je opet u biti brojac samo malo izmjenjen!
Pomocu objekta spremiste mi spremamo procitani tekst u nas objekt moja!!!
Ispitivanje je stavljeno u petlju if a petlja if u petlju do-while a ta petlja
u petlju for!!!!!
Samo dobrim i upornim proucavanjem programa i vjezbanjem shvatit cete gotovo sve!
Vjezbajte i vjezbajte!!!!
S ovim smo zavrsili poglavlje polja!
Slijedece poglavlje ce govoriti o klasama i objektima tj poglavlje VIII

Programiranje u C++-u

100
 sadrzaj :

 naredba line
 naredba putpixel
 stil
 for naredbe i animacija
 while naredba i animacija
 upravljanje misem

Znaci ovdje klik na project(projekt) i u padajucem izborniku na postavke projekta!!!!!

101
Zatim ovdje klik na parametars....

I ovdje upisujemo nas linker..i enter i ok...!

102
Zatim nam se otvara opet nas editor koda i upišemo ovaj program ispod!!!
I pokrenemo ga!

I otvara nam se nas cmd crni prozor i nas graficki koji smo stvorili....
Kasnije objasnim sve ali polako .....

103
A odmah ispod njega je i nas obicni crni....

104
105
106
U slijedecim programima necu ispisivati crni cmd prozor iako je uvijek
prisutan...molim razumijevanje..radi lakseg snalazenja!

107
Sad pravokutnik...

108
...bez crnog cmd...

naredba line

109
110
111
112
113
crtanje tocke

114
115
116
117
naredbe za stil

118
119
120
Animacija-for naredbe u grafici

121
122
Sad malo primjera koje mozete i samo prouciti......

123
124
125
126
Sad imamo crtanje kruznice gdje upotrebljavamo
dvije varijable koje stavljamo u naredbu circle....
kasnije i detaljnije objasnim!

127
128
Prvo ovdje "obicni" graficki da bi vidjeli gdje se umece
cleardevice() naredba i kad ga budete pokrenuli(onaj drugi)
eto nam kretanja slijeva nadesno....i nova naredba delay() koja
usporava nase racunalo ako je prebrzo !!!!!

129
130
131
132
133
....a ovdje vidite taj isti program kad nema cleardevice();

while u animaciji

Linije od osamnaest do dvadeset sedam se ponavljaju tako da


to primjetite u programu dok ga ne izmjenim pravilno a vjerujte da se trudim
ali uvijek se i promakne koji propust!

134
135
136
137
...a kad zbrisete cleardevice() unutar while petlje....
primjetite razliku.....i sad i vi mozete vjezbati....
upotrijebite mastu!!!

upravljanje misem

Sad proucite ove tablice jer ce nam trebati u radu


s misem pri crtanju grafickih objekata!!!!
Prvo su ocitavanja misa, druga slika pokazuje udaljenosti
pokazivaca misa i kako tumacimo x i y varijable za misa!!!

138
Sad slijede programi na kojima mozete vidjeti kako se crta ili
samo pokrecu predmeti koje nacrtate u programu!!!
Dolje nize je i nova naredba kbhit() koja provjerava tipke na
tipkovnici i u while petlji se postavlja uvijet da ne smije biti
niti jedna tipka stisnuta da bismo misem upravljali!!!!

139
...kad stavimo cleardevice() tad samo pokrecemo....predmete!

140
...kad maknemo cleardevice() tad crtamo ali sad kružnicu!!!

141
..proucite ovaj program i kako su linije nacrtane!!!!
Zasto tako?Samo proucite one udaljenosti od kraja lijevog i desnog ruba!!!

142
Sad su naredu programi koji ce crtati samo onda kad je
stisnut ili lijevi ili desni klik!!!!

Napominjem da svi ovi programi vec postoje i niti ja nesto


novo izmisljam niti to zelim!!!!
Zelim vam samo to malo
pribliziti!!!!

143
144
Sad isti program je stavljen u do-while petlju i isto je
izvrsenje ali takve varijacije sami isprobavajte i vjezbajte!!!

145
Osnove grafike s ovim poglavljem zavrsavam i vi sami kombinirajte
s naredbama u gornjim slikama i vjezbajte i vjezbajte!!!Mozda u kasnijim
osvrtima dodam jos nesto osnovama grafike ali to cete vec vidjeti!!
Napominjem da su ovo samo osnove i sluze samo za vase ucenje i upoznavanje s c++-om
Na vasu vlastitu odgovornost vi to primjenjujete negdje drugdje!!!

Programiranje u C++-u
klase:pocetak
 sadrzaj :

 Uvod u klase
 komunikacije unutar klase
 deklaracija i definicija:odvajanje
 konstruktori i nasljedjivanje: osnove
 spremanje u vise datoteka: osnove
Uvod

Ako ste dosad dobro svladali ono sto sam napisao,tad mozete prijeci na ova poglavlja!
C++ je objektno orijentirani program,jer da bi pisali vece programe nuzno je jedan veliki
program ,od recimo nekoliko stotina ili tisuca redaka i naredbi podijeliti u manje cjeline!
Na taj nacin mozemo lako pristupati odredjenim dijelovima programa, mozemo ga raspodjeliti
tako da vise ljudi(programera radi dio programa) programira odredjene dijelove za koji su oni
odgovorni , na kraju spojimo sve u cjelinu!!!Takav nacin programiranja nam je potreban ako
zelimo raditi windows aplikacije ili mi sami prozore ,koji su funkcionalni u windowsima!!!
Zato programske cjeline mozemo podjeliti u klase, a svaka klasa moze imati svoje objekte!!!
Na kraju ovog poglavlja cemo klase i objekte podijeliti u vise datoteka koje zajedno cine jedan

146
program ,znaci podjeliti cemo ga u manje cjeline ali da radi kao jedan!!!Znaci kreiramo vlastite klase
na temelju kojih cemo stvarati objekte koji pripadaju tim klasama!!!A sve to u posebnim datotekama
koje pokrece jedan glavni program i to vam je osnova objektnog programiranja u c++-u!
Napominjem OSNOVA!

U Dev okruzenju mi stvaramo sami svoje klase i programe,to je osnovna razlika koju ovdje
trebate znati da vam za osnove bude dovoljno!!!
Prednost klasa i objekata dolazi do izrazaja u velikim programima dok u malim mozemo
i bez njih ,ali s malim programima lakse ih je nauciti!!!!
Da ne bih duljio i pricao o nekim stvarima koje jos nismo prosli predjimo na programe!!

Napomene: U svim ovim poglavljima ovi tutorijali sluze samo za ucenje!


Na vasu vlastitu odgovornost ih koristite za neke vase primjene!!!
To su samo primjeri na temelju kojih tek onda mozete uciti za,
naprimjer profisionalnu primjenu!!!!
Znaci samo za ucenje!!!
Ne navodim nikakva druga objasnjenja ili drugaciji ,brzi,bolji
nacin izracuna ili funkcije jer drzim da cete to sami shvatiti
nakon ovih tutorijala,tad mozete sami krenuti u osavajanja tajni c++-a!!!
Vi nakon ovih tutorijala mozete reci da poznajete c++ i sigurno
ce vam biti lakse dalje s c++-om!!!!!!!
Takodjer vi nakon ovih programa za koje opet napominjem da su samo za
ucenje osnova a ne da se napredni rugaju s ovim kratkim programima i
kritiziraju svaki detalj objasnjenja ako im se ne svidi!!!
Oni ovo poglavlje niti ne moraju citati!!!!!!!
Znam iz vlastitog iskustva!!!

147
<
Na pocetku standardna zaglavlja
#include < iostream >
#include < cstdlib > //mozemo i bez ovog ali neka ostane
Zatim ;
using namespace std ;

Znaci standardne naredbe koje upotrebljavamo!


Zatim krecemo s nasom klasom!
class tekst
{

class je naredba koja se uvijek pise u c++ -u kad zelimo stvarati klase!
Nasa klasa je imena tekst!!!
Otvaramo je s viticastom zagradom!
Nasa klasa moze sadrzavati varijable ,procedure,funkcije ali mi zasad
ne trebamo nista od toga
Zatim

public:
Zapocinjemo javni dio klase uvijek u tom obliku i u tom dijelu
formiramo funkciju void ciji tip kasnije objasnim
void pisi()
{
cout < < "Ovo je nasa klasa tekst" < < endl;
148
}
Funkcija je u svom bloku zagrada u public dijelu jer joj
tako mozemo pristupiti iz glavnog programa!
Funkcije uvijek pisemo tako da navedemo tip(void)
zatim ime(tekst) i zagrade () koje su obavezne!!!
Otvaramo viticaste zagrade i unutar njih kreiramo sto nam
funkcija radi ,ovdje u nasem slucaju samo pomocu
naredbe cout ispisuje tekst na zaslon!

Zatim zavrsavamo nasu klasu obaveznim viticastim zagradama


s tocka zarez!!!!!
}; To je zavrsetak definiranja nase klase!!!!!
koja sadrzi samo public dio i funkciju void()!

U glavnom programu na temelju nase klase formiramo objekt


kojem biramo ime kao i varijablama
int main()
{
tekst t;

Zatim pomocu naseg objekta pozivamo funkciju void()


koja se odmah izvrsava tj.ispisuje na ekran!
t.pisi();
tocka izmedju objekta i funkcije je obavezna!!!!

na kraju sve zavrsavamo kao i prije!


cout < < endl;
system ("PAUSE");
return 0;
}
Sad taj isti program mozemo napisati i kao do sada kako smo ih pisali!
Vidite da je s malim programima lakse raditi nego formirati klasu tekst
,zatim je ispisati,no o tome kasnije....

#include < iostream >


#include < cstdlib >
using namespace std ;
int main() ISPIS NA EKRANU
{
cout < < "Ovo je nasa klasa tekst"< <
endl; Ovo je nasa klasa
cout < < endl; tekst
system ("PAUSE");
return 0;
}
Sad objasnimo nase programe prije napisane ponovo :

Kad pogledate malo vidjet cete da smo izvan int main() funkcije deklarirali.
Sve izvan main() funkcije!!!

Tome se vratim malo kasnije,zasad se vratimo na main blok!


Primjetite da u main funkciji imamo prvo oblik tekst.t; .....
To znaci doslovno da smo stvorili objekt t klase tekst!!!
Znaci taj objekt pripada klasi tekst i samo klasi tekst!!!

Imena tih objekata biramo kao imena varijabli koje smo do sad imali
u programima!!!Da objekt pripada klasi tekst govori nam tocka koja ih razdvaja!!!
Tocka i taj oblik tekst.t; ..........je obvezan!!!!!

149
Znaci sad smo formirali objekt klase tekst koji se zove t !!!!!
Zasto smo ga formirali? Zato da pomocu njega pristupimo funkciji unutar klase
koju smo stvorili!!!Funkcija se zove void pisi(),ime void u c++-u znaci da ta
funkcija tog specificnog imena nista ne vraca tj. nema povratnu vrijednost!Kako?
Na taj nacin da ta funkcija unutar svog bloka {} viticastih zagrada napravi sve!

To znaci da se odmah izvrsi na ekranu nista ne trazeci od nas ili i ako trazi,
odmah izvrsi sto je napisano unutar njenog void bloka {}!!!
Funkcija je znaci tipa void koji nista ne vraca , dali smo toj funkciji ime pisi()
Zagrade znace da se ne radi o objektu ili varijabli nego o nekoj funkciji!!!!

E sad da sve spojimo : pomocu naseg objekta t (klase tekst) pristupamo funkciji pisi()
koja izvrsi ono sto je u njenom bloku{} definirano a to je da ispise tekst!!!!
t.pisi(); ....i opet ta famozna tocka mora obavezno razdvajati nas objek od funkcije!!!
Zato jer nam ta tocka govori da funkcija pisi je pozvana od objekta t!!

Funkcija je u biti metoda koju sadrzi taj objekt a ta metoda nam ispisuje nas tekst!
Znaci operacija,funkcija se vrsi nad objektom t!!!
Da bi u main programu mogli pristupati nasoj funkciji ona mora biti dostupna
unutar bloka main funkcije a to radimo tako daje definiramo van bloka main

I ovako ide prevodjenje programa.......prvo pretprocesorske include zaglavlja,zatim using naredbe


i onda program odmah skace na main i tamo nailazi na nase objekte i funkcije koje
pozivamo i odmah trazi njihove blokove i naravno ...nalazi ih u nasoj klasi i
to je to ...nasao ih je i zatim izvrsio....na taj nacin radi prevodilac!!!!

150
U ovom programu smo deklarirali tri objekta razlicitih imena i svi su klase tekst!
Pokazujem u ovom programu da se imena objekata mogu logicki birati kao i varijable!

Svaki objekt je spojen s funkcijom pisi i vidimo da funkciju pisi mozemo upotrijebiti
vise puta kad je jednom stvorimo!!!

Sad bih objasnio malo sami oblik kako pisemo nase klase!
Prvo imamo nas vec stantardni ispis zaglavlja,zatim using namespace std; i odmah
nakon toga pocinje deklaracija nase klase!!!!Ona mora uvijek biti u :

class tekst
{
};

U ovom nasem primjeru sam napisao ime klase tekst a mogli smo auto,boja,ili
bilo sto zelimo stvarati!!!

Zatim smo otvorili blok viticastih zagrada ali s jednom razlikom }; Zadnja viticasta zagrada zavrsava s tocka zarez
i to je obvezni zavrsetak
u definiranju nase klase!!!!

151
Unutar tog bloka klasa moze sadrzavati(kao sto cemo kasnije vidjeti) varijable
funkcije,a u nasem slucaju zasad samo funkciju koju smo stavili u public dio
same klase ,znaci klasa u doslovnom prijevodu moze imati javni(public dio) i
privatni dio(private)!!!
Svaki taj dio klase moze imati svoje varijable i funkcije a razlika je ova!!!!
public : dijelu mozemo pristupati iz glavnog(main programa) a private: dijelu ne mozemo!!!

private: dijelu moze pristupiti public dio nase klase (varijable koje definiramo u public dijelu)!
public : se pise uvijek u ovom obliku unutar bloka class(dvotocka obavezna!)!!!
Pokusajte u gornjem programu samo ispisati drugo ime za varijablu tako
da naucite kako mozete mijenjati imena objekata po volji i logici!!!

Vratit cu se malo na nase poglavlje prije!


Sjecate se izraza string tekst; taj dio je slican tekst t; sad vam je jasnije da je klasa string , tekst objekt!
string klasu je netko drugi napisao a mi smo napisali svoju klasu tekst!!!
i to je jedna od razlika!

A u slijedecem retku imamo(u proslom poglavlju) tekst.reserve(256); sto znaci da smo nad objektom tekst izvrsili
operaciju reserve!!!

I opet upamtite oblik ispisa koji uvijek mora biti takav kad radimo s objektima!
A u nasem programu imamo(u ovom poglavlju) t.pisi();
sto opet znaci da smo nad objektom t izvrsili operaciju pisi!!!!
Ponavljam obavezna tocka i zagrade kad navodimo funkciju(pisi())!!!!

Samo da ponovim ispis public dijela kako uvijek mora biti u klasi!!!
class
{
public:
ovdje navodimo nase funkcije ili varijable(vidi kasnije)
};ovdje zavrsava nasa klasa!!
Sad u glavnom dijelu programa nakon sto sam objasnio klasu,barem zasad kratko!!!
Formiramo znaci objekt i nakon toga pozivamo funkciju i ne moramo pisati
naredbu cout jer se ona nalazi unutar nase funkcije u public dijelu ,i
automatski se vrsi ispis na ekran kad pozovemo tu funkciju!!!!!!

Ponovite ovaj dio nekoliko puta da bi razumjeli osnovu osnova klasa!!!!


Sad idemo dalje!

152
Sad objasnimo ovaj primjer!!!!
<
U ovom programu vidite da smo unutar nase klase napravili tri funkcije void!
Svaka funkcija ima drugo ime da bismo je u glavnom programu mogli pozvati
, znaci svaku funkciju po svom imenu s istim nasim objektom!!!!
Tako unutar jedne klase moze biti vise funkcija koje mozemo pozvati u
glavnu funkciju kad nam treba!

Sad u ovom slijedecem programu mozemo formirati i vise klasa!!!!!

153
154
Sad malo detaljnije objasnjenje!

class tekst_prva
{
public:
void p()
{
cout < < "Ovo je funkcija prva klasa" < < endl;
}
};

<
Ovdje smo oformili nasu prvu klasu(razred)!
Ona sadrzi samo funkciju void kojoj smo dali ime p!

class tekst_druga
public: void p()
{
cout < < "Ovo je funkcija druga klasa" < < endl;
}
};

Ovdje smo oformili drugu klasu ali drugog imena !


Funkcija je istog imena i moze biti istog imena jer je
u drugoj klasi!!!

class tekst_treca
public: void p()
{
cout < < "Ovo je funkcija treca klasa" < < endl;
}
};

Zatim naravno treca klasa i sve isto kao i u prethodne dvije!


Primjetite da je funkcija u sve tri klase istog imena
To je dozvoljeno u c++-u i zove se preklapanje!!!!
Znaci isto ime koje mozemo upotrijebiti u programu
U ovom slucaju razlikuju se kojoj klasi pripadaju i zbog
tog razloga se mogu upotrijebiti pod istima imenom!!

int main()
{
cout < < "Zovemo klasu prvu i njenu funkciju!" < < endl;
tekst_prva t1;
cout < < endl;
155
t1.p();
cout < < endl;
cout < < "Zovemo klasu drugu i njenu funkciju!" < < endl;
tekst_druga t2;
t2.p();
cout < < endl;
cout < < "Zovemo klasu trecu i njenu funkciju!" < < endl;
tekst_treca t3;
t3.p();

Za svaku klasu(razred) smo imenovali naravno i drugacije ime


objekta jer da smo pozvali funkciju p() od strane istog objekta
stalno bi pozivali samo tu klasu s tim objektom!
Znaci mora biti razlicito ime objekta kao i razlicito ime klase!
Tako mozemo pozivati isto ime funkcije!

Ponovimo sve!

U ovom programu smo oformili tri klase i u svakoj klasi po jedna funkcija(metoda)
koja ima samo jednu naredbu a to je da ispiše tekst na ekran!!!
Klase su naravno razlicitih imena,funkcije mogu biti uvijek istih imena jer svaka je u svojoj
klasi!!!!
Na temelju imena klase biramo ime objekta , ime objekta ne smije biti jednako jer u main()
funkciji kad nesto deklariramo mora biti razlicitog imena .
Znaci svaki objekt slijedi svoju klasu!!!
Funkcija(metoda) je istog imena jer ona je unutar svoje klase i ne mijesa se s drugim klasama jer
je pozivamo objektom koji nosi ime svaki svoje klase!!!
Sve klase koje smo do sad napravili imaju tj.sastoje se samo od public: dijela u kojem je
smjestena jedna funkcija(void) koja sadrzi metodu da nesto ispise na ekran pomocu naredbe
cout!!!
Primjetite ono sto uvijek napominjem ---oblik kako se poziva funkcija!!!

t1.p();

objekt.funkcija!!!

Uvijek znaci tocka izmedju objekta i funkcije a funkcija ili metoda sa zagradama!!!
Da bi u main funkciji imenovali objekt obavezno moramo navesti ime klase!!!!Tek onda
ime objekta!!!

klase stvaramo tako da navedemo ime naredbe class koje je standard u c++-u i tek onda odaberemo ime
za koje se trudimo da bude logicki izabrano!
Tek onda otvaramo viticastu zagradu i tad svaka klasa ima public dio u koji
smjestamo funkcije i varijable!!!!Naravno s svojim viticastim zagradama(funkcije)
, mi smo dosad imali u klasama samo fuinkcije(void)!!!
Na kraju svaka klasa mora zavrsiti s viticastom zagradom i tocka zarez ;

Ponavljam mozda sve i vise puta , znajte da to namjerno radim jer samo
vjezbanjem pisanja programa nam c++ ulazi u glavu,njegova logika i ljepota!!!
U ovom slijedecem programu cemo jednom stvoreni objekt koristiti vise puta i tako vidimo, kad stvorimo objekt
mozemo ga pozivati bezbroj puta u programu
na razlicitim mjestima!!!
To je recimo jedna od prednosti koristenja objekta i klasa!!!

156
Ovaj put necu puno objasnjavati vec sami ispisite i proucite logiku!
Zasto je objekt istog imena?Zato jer ne moramo mijenjati njegovo ime
ako koristimo samo jednu klasu prema kojoj je stvoren!!!

komunikacije unutar klase i glavnog programa

Dosada smo pisali jednostavne klase u kojoj su bili samo jedna funkcija
koju smo koristili u glavnom programu!
Sad cemo malo komplicirati i vidjeti na koji nacin mozemo komunicirati s klasama
i u njh nesto unositi ili iscitavati!!!
Prvo program i zatim objasnjenje!!

157
class g_oblik
{
private:
int c;

Ovdje formiramo nasu klasu kojoj smo dali ime g_oblik!


Otvaramo klasu(razred) s viticastom zagradom
Zatim ova klasa ima svoj private dio sto znaci da je taj
dio klase nedostupan svemu izvan nje(nase klase)
ali je dostupno unutar klase!!!
Zasad nam u tpm dijelu treba samo varijabla tipa int!

public:
void ime()
{
cout < < "Povrsina " < < endl;
158
cout < < endl;
}
int povrsina(int a,int b)
{
c = a* b;
return(c);
}
Ovdje je public dio klase u kojem imamo dvije funkcije!
Void()funkcija kojoj smo dali ime (ime) tj.naslov koji se
pojavljuje kad se izvrsi njena funkcija kad je pozovemo u
nasem glavnom programu!
Zadatak joj je ispisati sadrzaj naredbe cout!

Druga funkcija je tipa int sto znaci da nesto vraca,a vraca izracun u nasu
varijablu c iz private dijela i eto nam komunikacije unutar nase
klase!
Znaci varijablu iz private dijela smo iskoristili da spremimo
izracun iz public dijela

};
Ovdje zavrsavamo nasu klasu obavezno tako kako je napisano!!!!

int main()
{
g_oblik pr;
pr.ime();
cout < < "Rezultat je : " < < endl;
cout < < pr.povrsina(3,4);

cout < < endl;

U glavnom dijelu programa prvo formiramo objekt klase g_oblik


i dali smo ime objektu pr
Pomocu njega prvo pozivamo funkciju void ime() i to uvijek
zako da objekt i funkciju razdvaja tocka!!!!A funkcija sa()
Sad ispisujemo s cout da je rezultat

i tad pozivamo nasu drugu funkciju pomocu objekta pr!!


Isti objekt jer je ista klasa!!!

Sad se pitate zasto brojevi u zagradama?


Zato jer funkcija tipa
int zahtjeva brojeve a mi smo odredili da ce ih biti dva!!!

I samo ih upisemo u zagrade onako kako smo ih naveli u funkciji!!!


Mora biti sve tocno kako je u funkciji(int a,int b)
,a i b su nasi brojevi koje onda funkcija racuna i sprema u
nasu varijablu c!!!

Ispisuje se na ekranu rezultat jer je u funkciji onaj return (c)!!!


Opet objekt je razdvojen tockom od funkcije!!!!

I sad ovdje primjetite da smo upisivali u zagrade brojeve jer je


to funkcija koja vraca a void nije i zato nema upisa u njene zagrade!!!

system ("PAUSE");
return 0;
}

Nas klasican zavrsetak!!!!

Ponovimo sve!
159
U ovom programu formirali smo klasu koja ima svoj private i public dio!
Sama imena vam govore o cem se radi!Privatni dio je dio koji ne komunicira s
int main() programom, ali komunicira s public dijelom u klasi!!!

U private dijelu koji ima oblik private:

smo deklarirali jednu varijablu


kojoj smo dodijelili int tip
sto znaci da cemo raditi s cijelim brojevima!

Ta varijabla je dostupna samo public dijelovima unutar nase klase ,a izvan dosega je
main programu(za njega nasa varijabla c ne postiji)!!!

Sad:
klasa znaci sadrzi i public dio koji ima dvije metode (funkcije)!
Jedna je void tipa , zadatak joj je kao i prije u nasim primjerima
samo ispisivanje na ekran jer sadrzi cout naredbu!!

Sad dolazi zanimljiviji dio: imamo drugu metodu(funkciju) koja je int tipa!!!
to znaci da ce nam funkcija nesto vracati(tako upamtite!),a vraca nam ono
sto navedemo unutar njenih viticastih zagrada!!!

Svaku metodu ili funkciju koja nesto vraca moramo povezivati s return naredbom
jer nesto vraca!!!

U nasem slucaju vraca rezultat izracuna a*b nasoj varijabli c koja je u private
podrucju nase klase!!!
Dakle sad public dio komunicira s private dijelom!!!!
Nase varijable koje koristimo u funkciji deklarirali smo unutar zagrada int povrsina!

Sto to znaci?To znaci da samo unutar tih zagrada navodimo varijable koje cemo upotrijebiti
u nasoj funkciji i to tako da ih mnozimo a rezultat spremamo u varijablu c!!!
Varijable moraju biti istog tipa kao i funkcija!!!!!!
Sad pošto je to funkcija povezana s return naredbom moramo je vratiti c varujabli!!!
Kako to radi vidjet cemo u slijedecem programu!!!!!!

Idemo na glavni program!

Prvo formiramo objekt klase g_oblik!!!!


Objekt smo nazvali pr(pravokutnik-skracenica)!
Zatim pozivamo void funkciju da nam ispise naslov!!!!
Nakon toga pisemo da je rezultat : s naredbom cout!!!

Tad pozivamo opet pomocu naseg objekta ,drugu funkciju!!!


Ta funkcija izracunava ono sto navedemo u zagradama(vi mozete i druge cijele brojeve)!!!
Kako to radi?Jednostavno proslijedi nasoj funkciji brojeve umjesto onih a i b int tipa
i naravno pomnozi ih i eto nam rezultata na ekranu!!
Mi smo samo morali postivati oblik kakav je naveden u nasoj funkciji i njen tip!!!

int povrsina(int a,int b)!!!!!!

Znaci funkcija imenom povrsina je int tipa koja nesto racuna!!!


Povratnog je tipa ,i koje mi brojeve unesemo u zagrade ona ih automatski racuna!!!
Tako smo uspostavili komunikaciju s public dijelom klase a preko nje i sa private!!!
Shvatite logiku programa!!!

Sad cemo napisati program da shvatite razliku izmedju private i public dijela!!!
U biti to su naredbe, samo ja koristim takve izraze radi jednostavnosti!!
Neka se ne ljute svi programeri ali bitna mi je jednostavnost objasnjavanja!!!
Dakle osnove!!!
Prvo program!
160
class g_oblik
{
private:
int c;

Ovaj dio je isti kao i u nasem proslom programu


i da se ne ponavljam ponovite taj pasus prije!!

public:
int var;
void ime()
{
cout < < "Povrsina " < < endl;
cout < < endl;
}
int povrsina(int a,int b)
{
161
c = a* b;
var=c;
return(c)
}
};
Sad : ovaj dio public je zanimljiv jer osim one nase dvije
funkcije sadrzi i jednu varijablu kojoj smo dali ime var!!
Void funkcija nam ostaje ista!!!

Ali promjene su u int funkciji jer sad upotrebljavamo nasu varijablu


var i u nju spremamo vrijednost iz c koja pripada privatnom dijelu
nase klase i na taj nacin smo nas rezultat ali i "c" varijablu ucinili "vidljivom"
glavnom programu!!!!
Ta funkcija je i dalje return tipa jer mora vratiti
vrijednost c varijabli da bi ona mogla u var!!!

int main()
{
g_oblik pr;
pr.ime();
cout < < "Rezultat je : " < < endl;
cout < < pr.povrsina(3,4);

cout < < endl;


cout < < "pr.var je :" < < pr.var < < endl;
cout < < endl;
U glavnom programu je sve isto ali smo dodali ::::
cout < < "pr.var je :" < < pr.var < < endl;

I to znaci da sad preko obicne varijable mozemo pristupiti


rezultatu!!!
S ovim primjerima samo vam pokazujem komunikacije unutar klase
i s glavnim programom da vidite nacine kako se moze komunicirati
sti se smije ,a sto ne!!!

Opet ponovljanje!!!!!

Sad u programu smo unijeli i deklarirali novu varijablu int tipa!


int var; i to u public dijelu!!!Zatim smo je uzeli i u funkciji
int povrsina() smo joj dodijelili varijablu c koja je iz private dijela
i onda smo je ispisali pomocu objekta pr.var!!!!

Vidite kako se koristimo varijablama iz public dijela da bi pristupili varijablama


iz private dijela!Da bi vidjeli razliku probajte jos ispisati u glavnom
dijelu programa cout < < " pr.c je:" < < pr.c < < endl;

I necete moci ispisati program jer vas prevodilac upozorava da ne mozete


pristupiti c varijabli jer ne postoji!!!

Vidite li sad razliku izmedju private i public naredbe u c++-u!!!


Private zabranjuje citanje u glavnom programu a public dozvoljava !

Ali pomocu public naredbe i njenih varijabli mozemo pristupiti private


dijelu programa i njenim varijablama ili funkcijama!!!

Jos jedna specificnost ali public ,tamo smo formirali varijable a i b


kojima takodjer ne mozemo pristupiti direktno iz glavnog programa
zato jer su sastavni dio funkcije ali zato bilo koju deklariranu varijablu
u public dijelu(var) mozemo direktno pristupiti!!!
Samo da jos jednom ponovim:pristupamo tako da navedemo ime objekta doticne klase
zatim tocka pa ime varijable ili funkcije,ako je funkcija obavezno zagrade

162
i vec pogadjate---tocka zarez!!!!

Sad slijedi program da vidite kako radi return nardba u nasoj funkciji
koja nesto vraca i zasto to tako radi!!!

Na pocetku sve onako standardno kao i prije!

#include < iostream >


#include < cstdlib >
using namespace std ;

class vjezba
{
private:
int c;
U nasoj klasi(razredu) vjezba u private dijelu je deklarirana
varijabla c!
163
Zatim slijedi public naredba i njezin dio!
public:
int funkcija1(int a,int b)
{
c = a* b;
return(c);
}
int funkcija2(int a,int b)
{
c = a* b;
return(a);
}
int funkcija3(int a,int b)
{
c = a* b;
return(b);
}
Na prvi pogled su iste ali razlikuju se u imenu,tip je isti kao
i ono sto izracunava ali razlika je u return naredbi !!!!!
U svakoj od ove nase tri funkcije mi vracamo vrijednost drugoj varijabli
i to cemo ispisati u glavnom programu!!!
Shvatite bit return naredbe!!!

};
Naravno nas zavrsetak klase!!!

int main()
{
vjezba r;
cout < < "return c daje :" < < r.funkcija1(3,4) < < endl;
cout < < "return a daje :" < < r.funkcija2(3,4) < < endl;
cout < < "return b daje :" < < r.funkcija3(3,4) < < endl;
cout < < endl;
system ("PAUSE");
return 0;
}
Glavni program je opet pocetak s int main()
i tad formiramo objekt klase vjezba i pomocu njega
pozivamo nase funkcije i ovisno o return naredbi isapisat ce se
odgovarajuca vrijednost!!!

Opet ponovimo ali kratko!!

Samo opet mala napomena.


Ako bilo gdje u kodu pogrijesim,vjerujte nije namjerno!
U forumu mi navedite gdje i ja ispravim!!!!

Vidite lijepo kako naredba return radi ,ovisno koju funkciju smo
pozvali pomocu objekta r!!!
S objektom pozivamo tri razlicite funkcije iste klase koje imaju
razlicite return naredbe i proucite taj program!!!

Samo kratko da ponovim void finkciju!Za razliku od int u kojoj je moguce


unijeti u zagrade neki broj ,to nije moguce u void() zagradama jer ta funkcija
nista ne vraca i ne mozemo je pozvati na nacin kako pozivamo int funkcije
nego samo po imenu void funkcije!Sama funkcija void se izvrsava unutar same sebe!

Evo sad primjera gdje imamo dvije void funkcije !!!

164
#include < iostream >
#include < cstdlib >
using namespace std ;

Navodjenje nasih zaglavlja i using namespace std;

Zatim formiramo klasu koja u private dijelu ovaj put ima vise
varijabli!!!

class vjezba
{
private:
int c;
int a;
int b;

165
Sad nam trebaju tri varijable jer cemo upotrijebiti void funkciju
zato jer unutar nje unosimo vrijednosti ,radimo izracune ili procedure!!
A u glavnom programu je samo pozivamo preko objekta!!!

public:

void unos()
{
cout < < "Unesite vrijednost a :" < < endl;
cin > > a;
cout < < "Unesite vrijednost b :" < < endl;
cin > > b;
}
void funkcija() {
c=a * b;
cout < < "Povrsina je :" < < c < < endl;
}
};
Primjetite da u prvoj void funkciji upotrebljavamo varijable za unos!!
U drugoj vrsimo kompletan izracun koji spremamo u trecu varijablu c!!!
To je znaci komuniciranje void funkcije s private dijelom klase!!!
A sve opet pozivamo u glavnom programu!!!
int main()
{
vjezba pr;
pr.unos();
pr.funkcija();
cout < < endl;
system ("PAUSE");
return 0;
}
Vidite ,program je naocigled kraci ali zato su nam funkcije duze!
Za razliku od proslog programa u kojem smo imali int funkcije!
Ovdje samo pozivamo!!

Opet ponovimo malo!!!

Evo sad vidite razliku da u ovom programu nismo mogli unijeti


pr.funkcija(3,4)!!!
Zasto?Zato jer se cijela funkcija i ispis
izvrsava vec unutar void funkcije,a u prethodnoj(void) smo unijeli brojeve
preko tipkovnice.
Te funkcije pozivamo u glavnom programu znaci samo po
njihovom imenu i to je to!!!
Vjezbajte i proucavajte te programe i tek nakon vise puta ispisivanja
i vjezbanja vam moze uci u glavu!!!!!

Sad u slijedecem programu cemo kombinirati void i int tip funkcije!!!!

166
Sad cemo objasniti ovaj program!
Prvo navodimo ime nase klase class vjezba

Zatim otvaramo blok nase klase {


Tad u private:

dijelu deklariramo varijable int tipa koje nam trebaju:

167
int a;
int b;
int c;

Taj dio nase klase je privatan i izvan dosega main funkcije!


Ali zato tim varijablama pristupa public dio pomocu void funkcije!
Sad otvaramo public:

dio nase klase

public :

U public dijelu nam se nalazi void funkcija i int funkcija!


void je tip funkcije koja ne vraca vrijednost sto cu kasnije objasniti(ponovo)
zasad vidite da ona izvrsava funkciju naseg unosa brojeve!!!

void unos()
{
cout < < "Unesite vrijednost a :" < < endl;
cin > > a;
cout < < "Unesite vrijednost b :" < < endl;
cin > > b;
}

int tip funkcija


koja koristi nase varijable,kao i void, iz private dijela klase!
U njoj se izvrsava umnozak nasih unosa i vraca vrijednost varijabli c!!!

int funkcija()
{
c=a * b;
return(c)
}

};
ovdje zavrsavamo nasu klasu!!

Sad zapocinjemo int main() dio!


int main()
{
int c;
int g;

Primjetite da u glavnom programu mozemo deklarirati c varijablu jer


ne postoji za glavni program razlog je c u private dijelu klase!!!!
Sad formiramo nas objekt klase vjezba!

vjezba pr;
Objektu smo dali ime pr!
Pomocu njega pozivamo nasu funkciju void unos()
pr.unos();
Tad se nasa funkcija unutar void unos() ispisuje na ekran i kad ispisemo
tj.unesemo nase brojeve, ispise se drugi ispis koji smo naveli
u glavnom programu a to je varijabla c!!!!
Doticnu varijablu c mozemo deklarirati jer ona u private
dijelu ne postoji za main funkciju!!!
cout < < "Unesite varijablu c :" < < endl;
cin > > c;
Nakon tog unosa pisemo formulu koja ce izracunati nas konacan rezultat
, tad koristimo nasu drugu funkciju iz klase vjezba!
168
Rezultat spremamo u varijablu g i ispisujemo je na ekran!!!!
g=c * pr.funkcija();
cout < < "Ukupni rezultat je : < < endl;
cout < < g < < endl;

S ovim izrazima u nasoj formuli smo mogli znaci kombinirati funkciju iz klase
, varijable iz main funkcije, a da ne smetaju jedna drugoj !!!
Razlog zbog cega to radimo je dinamicnost izmjene podataka!!
Pod tim ne mislim ovdje bas na brzinu izvrsenja nego mogucnosti
sto sve mozemo u c++-u kad imamo klase!
Tako sami unosimo podatke ili cijene ili bilo sto želimo racunati!!

Zatim slijedi uobicajeni zavrsetak i to je dio po dio programskog


koda objasnjen,i vidite da smo komunicirali s private dijelom
u nasoj klasi preko public dijela i njenih funkcija!!!
A zbog toga sto je private funkcija zatvorena za glavnu main funkciju mozemo koristiti c varijablu u int
main() dijelu!

169
Samo izbrisite liniju 9 i 10 jer se ponavljaju!!!!

Ovaj program(iznad) nam opet nudi samo void funkcije koje se izvrsavaju unutar sebe
a mi samo sto moramo raditi je pozivati ih!!
Objasnjenje se sad vec namece samo pa sad pokusajte sami sebi objasniti ovaj program
i ako želite detaljno objasnjenje(prednost interneta) javite na mail!!!!

170
Ovaj program je u biti slican svim dosadasnjim ali ipak
cemo ga objasniti!!!

#include < iostream >


#include < cstdlib >
using namespace std ;

Nas uobicajeni pocetak!

class g_oblik
{
private:
float c;

Sad jedna mala razlika,radidt cemo s decimalama i zato float!


Naravno u private dijelu jer nam mozda isto ime varijable zatreba u main programu!

public:
void ime()
{
cout < < "Povrsina " < < endl;
cout < < endl;
}
float povrsina(float a,float b)
{
c = a* b;
return(c);
}
};

Sad public naredba u nasoj klasi!


Primjetite, imamo znaci void funkciju!
Zatim smo umjesto int stavili float tip funkcije!!!
razlika je samo jer radimo s decimalama!!!

Unos nasih varijabli u zagrade funkcije jer time naredjujemo


da ih moramo proslijediti u funkciju u glavnom programu!

U bloku nase float povrsina(float,float) funkcije,sad sam vas malo zbunio


s ovom deklaracijom ali neka zasad ostane neobjasnjeno,ali znaci isto!
radimo cijeli izracun i naravno return!!
Na kraju zavrsetak nase klase(razreda)!

U glavnom programu!!!
int main()
{
float a1;

171
float b2;
Jedna mala novina ali ne tako nerazumljiva!

Deklariramo nase nove dvije varijable float


,float jer nam je i funkcija float!!!
Razlika su ime druge varijable(a1,b1) ali dok je tip isti
to nista ne mijenja nas program!

g_oblik pr;
pr.ime();
Prvo stvaramo objekt!
Objektom pr pozivamo funkciju void koja
ispisuje naslov!
Zatim :
cout < < "Unesite a1 : < < endl;
cin > > a;
cout < < "Unesite b1 : < < endl;
cin > > b;

Pripremamo sve za unos nasih varijabli koje smo naveli u zagradama


nase float funkcije!!!
Mogli smo napisati unesite prvi broj:
i unesite drugi broj :
Bitno je sto unosimo u nase zagrade nakon tih cout naredbi
tj. kad pozovemo nasu funkciju!!!

cout < < "Rezultat je : " < < endl;


cout < < pr.povrsina(a1,b1);

cout < < endl;


cout < < endl;
system ("PAUSE");
return 0;
}
Pozvali smo je i sad unosimo nase brojeve ali u zagradama su
a1 i b1!!!
Vidite da mozemo manipulirati nasom funkcijom bitno je samo da
postivamo tip varijabli ,a u glavnom programo im mozemo
mijenjati imena kako zelimo!!!!
Bitno je da su varijable u private dijelu iskoristene
za definiciju nase funkcije, a u glavnoj postivamo tip!!!!
Proucite te programe i komunikacije koje sam pokazao
tako cete lakse sve razumjeti nakon puno ponavljanja!!!!

odvajanje deklaracija i definicija u klasama

Sad cemo objasniti to sto smo naveli u gornjem naslovu!!


U svim dosadasnjim programima su se i metode i funkcije tj.njihove
deklaracije i definicije nalazile unutar klase ali u slozenijim programima
cesto cete naici na to da je deklaracija(znaci samo ime)funkcije ili klase
samo navedeno, a negdje drugdje je definirana(znaci cjelovito ispisana) u biti
to znaci ,kao da vidite reklamu, a cijeli proizvod na reklami kupimo drugdje!!!

Znaci mi mozemo klasu ili metodu definirati negdje u programu a upotrijebiti je negdje drugdje
To ne dolazi do izrazaja u malim programima nego u velikim!
Ovdje iznosimo naravno samo osnovu osnove deklaracije i definicije da vidite kako to izgleda!!
Sad program pa objasnjenje!!!

172
Sad cemo dosta detaljno ovaj program objasniti pa makar bio dosadan!
Znaci prvo unutar nase klase u private dijelu deklariramo varijablu koja
nam treba,mogla je biti i funkcija!
Zatim u public dijelu samo nabrajamo sto nam je potrebno!
To je samo funkcija i pri tome primjetite da u deklaraciji
oblik pisanja je isti kao i prije ali nema viticastih zagrada
samo objava imena i tipa nase funkcije i obavezan zavrsetak s
tocka zarez dijelom!!!!
Na kraju tu deklaraciju zavrsavamo kao kad zavrsimo klasu!!!!
//DEKLARACIJA(OBJAVA SVEGA STO CEMO UPOTRIJEBITI)
class racun
{
private:
int c;
public:
int funkcija(int a,int b);
};
//*************************************

//DEFINICIJA FUNKCIJE KOJU SMO DEKLARIRALI!!!


int racun::funkcija(int a,int b)
173
{
c= a*b;
return(c);
};
//*************************************
U definiciji (nase jedne funkcije) upamtite oblik kako se definira
funkcija koja pripada odredjenoj klasi(razredu),nasa klasa je racun!
Tipa je int,znaci obavezno tip i ime klase i tek onda ime nase funkcije
naravno postujuci tip!!!Tip se mora postivati!!!Tip je int,i funkcija takodjer!!!
DVOTOCKE znace pripadnost necemu a u ovom slucaju nasa funkcija pripada
klasi racun tipa int!!!!

Sad tek,znaci pri definiranju nase funkcije ,otvaramo blok viticastih zagrada
i naravno pisemo sto funkcija radi(DEFINIRAMO)!!!!!
Naravno i definiranje zavrsavamo kao i klasu s tockom zarez!!!!!!!

Glavna funkcija nam ostaje ista pri pozivanju kao i prije!


int main()
{
cout < < "Naslov" < < endl;
racun pr;
cout < < "Rezultat je : " < < endl;
cout < < pr.funkcija(4,5) < < endl;
cout < < endl;
system ("PAUSE");
return 0;
}
DEKLARACIJA I DEFINICIJA klasa se uvijek u tim oblicima
i na taj nacin radi!!!
Pri malim programima ona bas i nema nekog smisla ali
zamislite program od pedesetak klasa i duplo funkcija,a tek varijabli!!
Tad je lakse u posebne datoteka razdvojiti klase i funkcije i raspodijeliti
na vise ljudi a kasnije sve spojiti u glavnom programu!!

konstruktori i nasljedjivanje: osnove

Ovu temu i dio poglavlja samo cu dotakniti i osnovu objasniti!


Sto znaci da cu ukratko objasniti kako se formira i na koji
nacin se koristi konstruktor,a tako slicno cu obraditi i nasljedjivanje
Znaci osnove da razumijete kod i naravno s tim znanjem krenete u
listanje debelih knjiga o c++-u!!!

Program

174
Na pocetku programa imamo znaci uobicajena include zaglavlja!
Zatim dajemo ime nasoj klasi i u private dijelu unosimo dvije varijable
a i b!!!
Zatim u public dijelu formiramo konstruktor i primjetite da je
ime konstruktora ime nase klase i na taj nacin mi stvaramo konstruktor
Nema navodjenja tipa niti imena nego automatski konstruktor je
ime nase klase!!

class izracun
{
private:
int a;
int b;
public:
izracun() //OVDJE FORMIRAMO KONSTRUKTOR
{
cout < < "Stranica a :" < < endl;
cin > > a;

175
cout < < "Stranica b :" < < endl;
cin > > b;
}

Molim primjetite da je definiranje konstruktora dalje isto kao


definiranje bilo koje funkcije!!!
Nema ni povratne vrijednosti ni tipa(int,void ili float)!
Znaci navodimo samo ime klase i automatski smmo stvorili
konstruktor!!!

int povrsina()
{
return(a*b);
}

Druga funkcija je kao i sve dosad funkcije samo sto smo sad

umjesto int povrsina(int a,int b)

napisali gore prilozeni oblik zbog konstruktora i njegove funkcije


jer brojeve unosimo kad se izvrsava konstruktor!!
Zato pri pozivu funkcije povrsina ,nasi unosi se proslijedjuju
funkciji povrsina ,i automatski se ispisuje rezultat!!
Klasu zavrsavamo };

int main()
{
izracun t;
cout < < "Povrsina je : " < < t.povrsina < < endl;
cout < < endl;
system ("PAUSE");
return 0;
}

Primjetite da na pocetku programa mi odmah stvaramo objekt i cim smo ga stvorili


izvrsava se funkcija naseg konstruktora!!!

Znaci sam nas objekt klase izracun je odmah realizirao funkciju unutar konstruktora!!!
Konstruktor prepoznajemo u programu jer ima ime klase i samo to!
Znaci cim smo formorali objekt pozvali smo i konstruktor tj,njegovu funkciju
Tako smo skratili postupak pozivanja funkcije samo na postupak
stvaranja objekta koji aktivira konstruktor!!!

Dalje je sve isto ,unesemo brojeve i pozvana je funkcija povrsina pomocu objekta t
i eto nam programa s konstruktorom!!!!!

Sad program s dva konstruktora!!!!

176
Samo cu navesti objasnjenje konstruktora i klase u kojoj
je sve navedeno

class izracun
{
private:
int a;
int b;

Znaci u private dijelu dvije int varijable!

public:
izracun(void) //OVDJE FORMIRAMO KONSTRUKTOR
{
cout < < "Stranica a :" < < endl;
cin > > a;
cout < < "Stranica b :" < < endl;

177
cin > > b;
}
Ovo je nas prvi konstruktor kao i u proslom programu!!!
Njega u glavnom programu kasnije pozivamo s prvim objektom!!

izracun(int a1,int b1)// i ovdje je konstruktor


{
a=a1;
b=b1;
}
Sad ,ovo je isto konstruktor i opet on sam nema tip
ali mi mozemo u njega unijeti tipove int!!!

Za razliku od prosle funkcije za koju sam naglasio


da je void oblika u zagradama iako sam i bez toga mogao!!!

Bitno je naglasiti kad god unosimo u zagrade neke varijable(prametre)


oni se u glavnom programu moraju ispostivati!!!
Znaci ako imamo unos int varijabli to cemo i napraviti!!
Ako je konstruktor tipa void koji smo naveli namjerno u zagradi
tad se nista ne unosi u zagrade nego se samo poziva konstruktor
,i to cim smo formirali objekt kako sam i prije naveo!!!
Za svaki konstruktor se formira razliciti objekt!!

int main()
{
izracun t;
cout < < "Povrsina je : " < < t.povrsina < < endl;
cout < < endl;
izracun t2(4,3);
cout < < "Za t2(4,3) povrsinaje :" < < t2.povrsina < < endl;

system ("PAUSE");
return 0;
}
Dakle, u glavnom programu prvi konstruktor pozivamo
izracun t;
cim smo formirali objekt t!!
zatim koristimo funkciju povrsina da bi ispisali rezultat!!!

Sad na drugi konstruktor:


izracun t2(4,3);
Opet smo formirali objekt koji sad poziva drugi konstruktor koji
program prepoznaje po nasem unosu i automatski ga prepoznaje kao
ovaj oblik
izracun(int a1,int b1)
i primjenjuje se funkcija unutar tog konstruktora koja nam
a pretvara u a1 tj.pridruzi vrijednost a1 da bude a
i b1 da bude b i tako opet mozemo primjeniti nasu funkciju povrsina
Taj konstruktor znaci je bez unosa brojeva preko tipkovnice
dok nas prvi pita!!!
t2.povrsina
Upamtite razliku pozivanja konstruktora tj. kad je void nema unosa
unutar zagrada jer se u samoj definiciji konstruktora(void) unose varijable!
A ako smo konstruktor oblikovali s unosom u zagrade(int,int) to se mora postivati u
glavnom programu!!!
Da smo npr. kod oblikovanja drugog objekta :
izracun t3();
napisali tako,
pozvali bismo prvi konstruktor!!!
Vjezbajte vjezbajte i samo tako shvatite logiku koda!!!

178
Sad malo o nasljedjivanju u c++-u!!!

Prvo program a onda korak po korak i ponovo napominjem


da je ovo osnova ,temelj!!!!

Program:

179
Program zapocinjemo uobicajenim zaglavljima i sad otvaramo klasu
koju smo nazvali kv(kvadrat)

class kv {
protected:
int b;
public:
void unesi()
{
cout < < "Unesite broj :" < < endl;
cin > > b;
}
int izracun()
{
return(b*b);
}
};
Zapamtite :::::::ako zelite unutar klasa omoguciti naslijedjivanje
morate upotrijebiti naredbu protected:
jer tad su svi clanovi klase kv u odjeljku protected dostupni
za nasljedjivanje!!!!!!

Sad ,pitate se zasto sam naveo private i protected!!!!!!!!


vrlo jednostavno jer zbog toga sam i napadnut da ne razumijem kklase!!!
Bitno je samo napomenuti da je na ovim stranicama dovoljno i tako kako
sam dosad objasnjavao i shvatit cete sami u debelim knjigama o naslijedjivanju!
Sama protected naredba radi zastitu varijabli koje zelimo uptrijebiti u drugoj
klasi jer ta druga klasa ne moze doci do private dijela prve klase jer taj private dio
koriste samo clanovi iste klase a ne druge!!!Da bi druga koristila te nase varijable iz
prve klase moramo varijable staviti u protected dio!To je samo osnova osnove i ne zelim
komplicirati za osnove a napadan sam da se krijem iza te jednostavnosti!!!
Dovoljno znanja cete imati kad ovo prodjete za dalji napredak u c++-u!!! Varijabla navedena u private dijelu je
samo dostupna klasi prvoj ali mi je ne koristimo
jer navedena je samo kao primjer za ovu napomenu!

To je naredba(dio,jer private dio je zakljucan za sve!!!)


kojom omogucavamo naslijedjivanje unutar klasa!!

U public dijelu je kako vidite funkcija void


koja ima zadatak ispisati unos i omoguciti nas unos preko
tipkovnice naseg broja koji je u protected dijelu i koji cemo
naslijediti!!!!
Naravno ,klasa kv ima i svoju funkciju izracuna koja je tipa int!!!!
I Izracunava kvadrat!!!

clas kb:public kv
{
public :
int izracun()
{
return(b*b*b);
}
};
Dakle klasa kb naslijedjuje varijable ali i funkcije klase kv!!!
Zbog toga sto je naslijedila i funkcije u public dijelu mozemo
upotrijebiti i istu funkciju ali ovaj put kb klasa ima svoj
vlastiti izracun!!!!
Da nema naslijedjivanja mi bismo morali napisati sve ponovo za
klasu kb,od varijabli pa do funkcija!!!!
Shvatite razliku i nacin naslijedjivanja!!!
Naredba naslijedjivanja ,da to tako kazem je;

180
clas kb:public kv

To zapamtite!!! I zato kako je klasa kb naslijedila varijable ne mormo


pisati private dio ako se radi samo o ovom programu!!!
Ali u public dijelu samo izmjenimo funkciju izracun
jer nam treba kub!!!!
Sve ostalo smo naslijedili od kv klase!!!!
Znaci prednost naslijedjivanja je velika jer za nove proizvode
naprimjer koji izadju na trziste ne moramo pisati novi program!

Recimo radi se o klasi printer i sad je dosao printer s novim


vrstama boja,i mi samo dodamo klasu koja naslijedi sve od starog
printera i eto koliko je lakse pisati softver na taj nacin!!!

int main()
{
kv obj1;
obj1.unesi();
cout < < "Kvadrat je :" < < obj1.izracun() < < endl;
kb obj2;
obj2.unesi(); cout < < "Kub je :" < < obj2.izracun() < < endl;
cout < < endl;
U glavnom programu za svaku klasu stavramo razlicite objekte jer
imamo i dvije klase!!!!!
Pratite kako ih pozivamo i sad malo sami si predocite nacin
na koji radi program(kod)

system ("PAUSE");
return 0;
}
Zavrsetak standardan!!
Ako niste u Windows OS tad poslije int main() otvaranja bloka
deklarijrajte char stisni;
recimo!!!
i umjesto system("PAUSE");
cin > > stisni;

Napomena:
Nacin pisanja koda ,da bi bio ljepsi, probajte uvlaciti
svaki novi blok viticastih zagrada i drzati ih u istoj ravnini s
funkcijom koja ih je otvorila!!!
Iako to dev sam radi!!!
Tako je pregledniji kod!!
Probajte i sve stavljati u svaki svoj red!
I naravno radi ljepseg izgleda endl manipulator sto cesce!!!
Inace sve se moze napisati i u jednom redu ili puno dugackih
redova pazeci na zavrsetke naredbi ili zagrada ali kakav
bi to bio onda kod!!!

program u vise datoteka:osnove

U ovom dijelu cemo jedan manji program staviti u datoteke!!!


Princip i osnova koju primjenjujem je gotovo isti i za
velike programe sto cu pokazati nakraju svih mojih tutorijala
jedan veliki program!!!

Sad jedan mali koji vam je poznat iz sortiranja polja!!!!


Napraviti cemo klasu u kojoj cemo izvrsiti deklaraciju i definiciju
I spremiti ih u posebne datoteke i zajedno pokrenuti!!!
To bi bilo ukratko!!!

181
ako niste svladali rad u dev okruzenju i ako ne znate npr.
imenovanje novih foldera,molim to ponovite!!!!
Prvo cemo program ispisati u jednoj datoteci
Kod imenovanja projekta nazovite ga klas16!!!

182
Koliko vidite radi se o poznatom programu(ponovite ako ne znate)
koji smo cijeli stavili u klasu koju smo nazvali sortiranje!!!
Necu ovdje pojedinacno objasnjavati jer dosad ste valjda sposobni i sami
objasniti zasto private ime te vraijable i zasto je sve u void funkciji!

Stavio sam u void funkciju da vam bude lakse razumjeti spremanje u datoteke
Samo da ponovim kad se poziva void funkcija ona se izvrsava
cim je pozovemo unutar same sebe i zato je lakse tako objasniti ovu
osnovu spremanja!!!

Glavni program se zato sastoji od formiranja objekta


klase sort!!!

I pomocu tih objekta pozovemo nasu funkciju i eto nam programa!!!!!


Vidite kako je glavni program elegantan!!!
Sad taj program moramo razdijeliti u datoteke!!!

Pred nama je otvoren nas dev i program koji smo napisali!!!


S lijeve strane je onaj mali prozor(kao u exploreru) gdje je
smjesten nas projekt pod imenom proba.cpp!!!!
To ne diramo!!!!
Zasad
To izgleda tako da je gore naslov projekta proba a ispod klas16.cpp
ili klas16 pa main.cpp ako niste dirali imenovanje main.cpp kad ste
izvrsili kompajl i pokreni!!!
Sad iznad main.cpp ili klas16.cpp ovisi sto ste napravili,postavite
pokazivac misa i desni klik i iz padajuceg izbornika odaberite novo
ili new
Pojavit ce vam se folder pored main ili klas16.cpp po imenu
neimenovano1!

Sad desni klik na taj folder i moramo ga preimenovati(rename)


u datoteku kojoj cemo dati ime sortiranje.cpp!!!

nakon toga ponoviti cemo cijeli postupak da bi napravili jos jedan


folder neimenovano i njega imenovali u sortiranje.h!!!

Sad u nasem lijevom kutu dev okruzenja moramo imati


Tako smo stvorili ono sto nam treba!!!!

183
sortiranje.h

Ova datoteka je koja sadrzi deklaracije nase klase!!!!(header datoteka)


Ono h znaci na engleskom ono sto sam upisao u zagradi!!!
klik na tu datoteku i otvoriti ce nam se nas editor koda koji je prazan!!!
U datoteku sortiranje.h unosimo nase deklaracije na ovaj naci i
uvijek na taj nacin!!!!!!

184
#ifndef SORTIRANJE_H
#define SORTIRANJE_H

class sortiranje
{
private:
int zamjena;
int x;
int privremeni;
int p[5];

public:
void buble();
};
#endif

Naredbu #ifndef uvijek zavrsavamo s #endif!!!!!


ako nam je ime datoteke sortiranje.h tad ce prvi dio imati
gore napisani oblik!!!!

Da smo npr.nasu datoteku imenovali kao blabla.h tad bi bilo


BLABLA_H i uvijek tako!!!!

Ispod #ifndef uvijek #define da potvrdimo nasu datoteku i onda pisemo


deklaracije

185
private dio s varijablama se tako pisu kao i u programu ,a
promjena je u definiranju funkcije u public dijelu!!!

public:
void buble();
Navodimo samo ime i tad zavrsavamo s tocka zarez!!!!!!!
Uvijek tako u deklaraciji nasih funkcija!!!!!
Normalno na kraju klasu zatvaramo kao i uvijek!!!
I ne zaboravite #endif!!!!

Upozoravam sve napredne u c++-u da su ovo osnove!!!!


Na ovaj nacin smo napravili nasu datoteku zaglavlja!
Vlastitu datoteku zaglavlja zasto?Zato jer cemo je u glavnom
programu tu datoteku ukljuciti s include naredbom(vidi kasnije)

Sad mis na sortiranje.cpp!!!


Otvaramo s klik i opet prazan editor!!!
Pocnimo pisati!!

Dakle u nasu datoteku sortiranje.cpp


smo spremili nasu definiciju funkcije void i upamtite da smo je zavrsili s
};
Takodjer da bi pravilno funkcionirala datoteka mora imati i
include zaglavlja i nasu datoteku !!!!

Datoteke koje mi u programu stvaramo sami i da bi ih prevodilac(komp)


nasao kao nase , moramo uvijek spremati izmedju navodnika!!!!

186
Upamtite to!!!!

Sad se vracamo na nasu proba.cpp ili main.cpp ovisi kako smo radili
i klik i otvara se nas "stari" program!!!Sad zbrisite sve osim koda
unutar int main bloka,naravno ostavite #include zaglavlja i using naredbu!!!
Brisemo taj dio(izvan main) jer nam ne treba duplo imenovanje !!!!
Ali dodat cemo nasu datoteku zaglavlja!!!!!!
#include "sortiranje.h"
Bez nje program ne radi!!!
Znaci konacan izgled naseg glavnog programa je ;

#include < iostream >


#include < cstdlib >
#include "sortiranje.h"

int main()
{
sortiranje sort;
sort.buble();
system ("PAUSE");
return 0;
}

Elegantno zar ne!


Tako u nasem programu s lijeve strane imamo one tri datoteke koje

187
smo sad napunili(ispisali) s nasim kodom , prevodjenje(izvrsavanje ) vrsimo dok nam je u editoru
koda nas glavni program i eto nam istog rezultata kao i kad smo
pisali u jednoj datoteci ali sad ih imamo u tri!!!!

Ponovite vise puta ovaj program spremanja jer princip je isti


i za sve velike programe!!!!

Ako imam bilo kakvih propusta napisite to na nasem forumu


na koji se mozete prijaviti i tamo mi napisite vase probleme na koje ste naisli
ako nisam dovoljno dobro neki dio objasnio!!!
Unaprijed se ispricavam ako je nesto pogresno napisano!!!

Programiranje u C++-u
pokazivaci

 sadrzaj :

 Uvod u pokazivace
 char pokazivaci:osnove
 polja i pokazivaci:osnove
 namespaces:osnove
 pokazivaci na pokazivace:osnove
 dinamicko alociranje memorije:osnove
uvod opcenito

188
189
190
191
192
193
194
....kad izvrsite drugi dio programa......

...sad imamo pokazivace tipa char!

char pokazivaci

195
196
197
...ovo je samo da vidite adrese nsa dva pokazivaca...

198
polja i pokazivaci

Samo jedna napomena dok ne promjenim....svugdje umjesto double stavite int


jer inace prevodilac javlja gresku!!!

199
200
...ovo je program koji nam pokazuje ostatke...

201
Ova dva programa je bitno prouciti jer sve dosad koristeno nam treba
u ovom slijedecem programu!!!
Tkodjer izraz x=x+1 mozemo skratiti i ovako x++ !

To su primarni brojevi i njihov ispis reda velicine sto,


primarni brojevi su djeljivi sa sobom i s jedan!!!

202
Obavezno pratite viticaste zagrade i koja s cime zavrsava!!!!

U slijedecim primjerima samo cemo objasniti bool tip


i postoji samo true i false(1 i 0)...to nam pokazuje slijedeci program
vi ga proucite jer je jasan sam po sebi....

203
namespaces:osnove

204
Sad sa using namespace std; i vlastiti namespace!!

205
Sad i mi mozemo koristiti using namespace !!!!!!

206
pokazivaci na pokazivace:osnove

dobro proucite ovaj program i sve napisano u njemu


i mozda bude smetao nekim programerima kako je objasnjen
ali ako vi shvatite bit to uopce nije bitno,bitno je
ono sto vi naucite pa makar me kasnije i ispravljali
ali vjerujte i ovaj primjer je pronadjen na netu
i stoga nemam pojma sto bi mi imali prigovoriti osim sintakse ili
moje slobode pisanja!!!Pokazivaci na pokazivace dolaze do izrazaja
u radu sa dvodimenzionalnim poljima,ali doci cemo i do toga!!!!!

207
Ovaj slijedeci program je relativno dugacak ali pokusajte ga dio po dio
polako i strpljivo proucavati i vjerujte da ce vam pokazivaci i njihova logika
biti bar malo jasnija i samo upornim vjezbanjem se dolazi do cilja!!!!
U programu sam primjenio tabulatore koji se uvijek prije recenice
stavljaju "\tsadrecenica i na kraju preskok u novi red ovako\n\n" i
to dvostruki preskok s slovom n!!!Taj \ znak dobijete pritiskom AltGr + Q
i ako zelite samo pomjeriti ili preskociti u novi red tad samo "\t" ili
"\n" i eto uljepšavanja...proucite i vidjet cete da nije tesko!!!

208
209
210
211
dinamicko alociranje memorije:osnove

212
Gore procitajte o alociranju memorije tj.
o naredbama new i delete(OSNOVE) sto je znacajno ako ne zelimo da nam
se podaci gomilaju i zauzimaju nepoterbno memoriju ,i s brisanjem
tih podataka mi ne brisemo varijablu ili objekt koji smo
stvorili za rad ,nego samo dio memorije rezerviran za njih!!

213
214
...u ovom programu koji se odnosi na primarne brojeve,i primjetite
razliku ovog programa i malo vise prije gdje nismo radili s naredbama
new i delete!!!!!
Cijeli program je stavljen u do -while petlju i molim ponoviti petlje!!!

215
216
217
Samo bi se malo vratio na rad s pokazivacima i poljima tj.
na aritmetiku uvecanja ili smanjivanja operatorima plus i minus
kad se radi s pokazivacima i to pokazuje ovaj program nize dolje.
U biti mi se pokazivacima mozemo kretati po elementima polja tako da
radimo s operatorima plus i minus kad se zeli ici na slijedeci ili
prethodni element i bitno je upamtiti zasto uvijek zvjezdica mora biti
218
izvan zagrada,zato sto plus ili minus imaju veci prioritet pri
prevodjenju i *(pokazivac + 1) taj oblik nam govori da se radi o pokazivacu
i to je bitno upamtiti!!!

219
Sa ovim poglavljem zavrsavam s pokazivacima zasad ali uvijek
su moguci dodaci i nova objasnjenja!!!!!!
Naravno i jos ce biti ponavljanja rada s poljima koje uskoro dolazi
da bi vam naravno pokazivaci bili sto jasniji..

Programiranje u C++-u
funkcije

 sadrzaj :
 Uvod u funkcije
 prijenos po adresi i vrijednosti
 void funkcija:osnove
 preklapanje funkcija:osnove
 funkcije i polja:osnove
uvod opcenito

220
221
222
..tako umjesto brojeva mozemo ispisati i (d,e)!!!
Primjetite da smo u drugom programu razdvojili deklaraciju i definiciju
ali program nalazi nasu funkciju i "linka" se s njom zbog deklaracije
koja je uslijedila prije!Inace,sve je drugo isto!!!

223
prijenos po vrijednosti i adresi
....ovo je prijenos po vrijednosti...!!!!!

...ovo prijenos po adresama kad ne zelimo kopije....

224
225
funkcija tipa void:osnove

...takodjer i ovdje smo primjenili prijenos po adresama!

226
preklapanje funkcija

227
228
..ovdje je preklapanje funkcije kvadrat unutar programa a definicija
tj.deklaracija je jedna ali s defaultom pa se moze izvrsavati na dva nacina!!!

229
230
...ovdje imamo isto preklapanje funkcije kvadrat na drugi nacin
jer sad imamo dvije deklaracije i dvije definicije i opet vidimo
razliku izmedju poziva jedne i druge(razlika po parametrima i argumentima)
za razliku od prve koja prepoznaje razliku i kad je jedan argument upotrebljava
default za izracun(opet razlika i eto preklapanje!)

231
U ova tri clanaka sam izdvojio(obojano)malo detaljnija objašnjenja
pojedinih dijelova programa..trudim se što detaljnije objasniti i mozda
232
malo pretjerujem s time ali u ponavljanju i stalnom vjezbanju je bit
ucenja c++-a ali i drugih programskih jezika da se tako izrazim.

funkcije i polja:osnove

233
234
235
236
Naravno nakon sto pokrenete VisualStudio kliknete na file i new->project
i otvara vam se ovaj prozor ispod gdje odaberete Win32 lijevo i u
desnom prozoru Win32Console Aplication.....dolje pod name... upisete kako ce
se zvati vas programcic a ostalo ostavite kako jest i klik na ok

Otvara vam se ovaj prozor gdje kliknete na next....

237
....zatim na ovom prozoru klik na console ili ostavite kako jest ako
je kruzic vec pun i klik na finish....nakon nekog (kratkog)vremena...

Otvara vam se s lijeve strane solution explorer gdje se nalazi sve sto je VS
stvorio za nas ,ja to sad necu objasnjavati,s desne strane nam se ukaze
editor koda i u njega upisite kod koji je dolje prikazan!
238
239
..ispricavam se na maloj greskici...zanemarite jednu viticastu
zagradu } poslije return 0; !!!!!!!!

Zatim ovdje na build i build solution,malo pricekajte i dolje na dnu


ispod editora koda ne smije samo pisati faild...nakon toga klik na debug i na
start without debuging....

...i eto vam program se izvrsio i isto koa u dev-u!

240
Dakle ovdje sam samo kratko objasnio snalazenje u drugom okruzenju
programa koji se izvodi i u Dev-u!!Necu ovdje ulaziti u objasnjenje
VS-a...ovo je samo mala usporedba!
Funkcija koja je prikazana je takodjer rad s poljima ali visedimenzionalnim
poljima koje smo u ovom slucaju citali i zbrajali s dvije petlje for!!!
pokazivac kao argument u funkciji:kratko

241
..naravno i ovo su osnove osnova funkcija i ovo poglavlje kao
i ona prije mozda zavrsavaju a mozda i ne jer uvijek kad zelim jos nesto
objasniti jednostavno cu nadodati,tako i sama stranica o osnovama nije gotova
jer slijedi i deveto poglavlje u kojem ce biti malo kompliciraniji programi
stoga sto necu mozda toliko u detalje ici jer nadam se da ste do ovog poglavlja
sve dobro proucili da mozete na deveto!!!Samo ponavljam da nista ne izmisljam sto vec nije
izmisljeno ,sve sto je napisano moze se uz malo truda naci i na netu!!!

Programiranje u C++-u
Jos malo

 sadrzaj :

 Uvod
 Fibonacci niz:osnove
242
 faktorijel:osnove
 sl.brojevi u grafici: osnove
 staticki objekt u funkciji: osnove
 rekurzivna funkcija: osnove
 izuzetak;try-catch: osnove
 template(predlosci)funkcija: osnove

Nadam se da ste uspjesno do sad sve svladali ,a na drugoj adresi


zapocinjem s tutorijalom,naravno osnove,programiranje u Visual Studiu,C++/CLI
eto vam link pa pogledajte ali taj tut je tek u razvojnoj fazi i
naravno pokusat cu sve jednostavno približiti bez suvisnog kompliciranja!
osnove visual c++ programiranja
Tek zapocinjem!!

Uvod

243
Ovdje iznad u programu mozete vidjeti ispis tipova
i njihovog raspona kojeg se morate drzati u programiranju !!
Naravno u prvom dijelu velicine su u bajtima(4 bajta,2bajta itd)!!!

Sad jedan programcic koji mozete naci na netu ako se potrudite


a nudi nam ispis ASCII koda za brojeve i slova,takodjer mozete naci na netu
samo sam ja zelio sve na jednoj starnici,u tome je bit.
244
Fibonacci niz:osnove

245
246
U ovom programu se potkrala jedna greška!Otkrijte gdje je.
Program se normalno izvrsava ali u jednom izracunu krivo pokazuje
a vi otkrijte gdje?Samo malo navodjenje--tice se switch() dijela!

247
U ovom programu prije a i u ovom nakon tj.nize dolje primjetite
da je program radjen u obliku funkcije koju pozivamo u glavnom
programu...eto primjene funkcije!!!!

248
Faktorijel:osnove

249
sl.brojevi u grafici:osnove

250
251
Staticki objekt u funkciji:osnove

252
253
rekurzivna funkcija:osnove

254
255
try-catch:osnove

256
Ovdje nize u ovom programu je sve isto ali smo sve to napravili s funkcijom!!!!

257
258
259
...Ovdje jos programa s try-catch blokovima int tipa
i lijepo je pokazano kako funkcionira throw i catch i naravno
poslije svakog try bloka slijedi catch!!!Ako nema throw,sadrzaj unutar
try bloka se izvrsava a catch nema sto uhvatiti,eto doslovno prevedeno
...proucavajte i vjezbajte vjezbajte!!!

260
261
262
template(predlosci)funkcija:osnove

263
Ovo je tek pocetak ovog poglavlja u kojem ce biti jos dosta programa
i dijelova c++-a koje još nisam dohvatio s osnovama....

264

You might also like