Professional Documents
Culture Documents
Programiranje U C
Programiranje U C
...kad ga pokrenete...
2
...kad ga pokrenete...
3
4
Ovo je samo nastavak ucenja i evo još malo programiranja ;
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 {
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;
}
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!!!!
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
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!
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<iostream>
#include<cstdlib>
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<9;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!" < <endl;
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>9!
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;
}
{
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<100;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!
39
Znaci kad unesemo broj dva izlazimo iz while petlje,toliko je dovoljno
da upamtite i slijedite logiku while ispitivanja!
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>>a;
}
while(a==1);
a=1;
while(a==1)
{
cin > > a;
}
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!
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!
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!
49
To je samo jednostavni primjer da znate o cemu se radi!
Evo i ispisa naseg prepravljenog programa!
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 !
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 .
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!!!!
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!
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++!
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 !
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!
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!!!!!!!!!!!!!!!!!!!!
62
<
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
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!!!
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!
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 .
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!!!
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!!!
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!!!
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!!!
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!
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!
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
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!!!
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);
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!
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!
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();
96
ne moze primjeniti nego samo na tekst!!!!!Znaci naredba size radi samo s objektima!
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!!!!
99
Ovdje vidimo dokaz sto se nalazi u nasoj datoteci!!!!!!!!
Programiranje u C++-u
100
sadrzaj :
naredba line
naredba putpixel
stil
for naredbe i animacija
while naredba i animacija
upravljanje misem
101
Zatim ovdje klik na parametars....
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
134
135
136
137
...a kad zbrisete cleardevice() unutar while petlje....
primjetite razliku.....i sad i vi mozete vjezbati....
upotrijebite mastu!!!
upravljanje misem
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!!!!
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!!
147
<
Na pocetku standardna zaglavlja
#include < iostream >
#include < cstdlib > //mozemo i bez ovog ali neka ostane
Zatim ;
using namespace std ;
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!
Kad pogledate malo vidjet cete da smo izvan int main() funkcije deklarirali.
Sve izvan main() funkcije!!!
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
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!!!
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!!!!!!
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!
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;
}
};
class tekst_treca
public: void p()
{
cout < < "Ovo je funkcija treca klasa" < < endl;
}
};
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();
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!!!
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;
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);
system ("PAUSE");
return 0;
}
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!!!
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!!!!!!
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;
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!!!
int main()
{
g_oblik pr;
pr.ime();
cout < < "Rezultat je : " < < endl;
cout < < pr.povrsina(3,4);
Opet ponovljanje!!!!!
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!!!
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!!!
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!!!
164
#include < iostream >
#include < cstdlib >
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!!
166
Sad cemo objasniti ovaj program!
Prvo navodimo ime nase klase class vjezba
167
int a;
int b;
int c;
public :
void unos()
{
cout < < "Unesite vrijednost a :" < < endl;
cin > > a;
cout < < "Unesite vrijednost b :" < < endl;
cin > > b;
}
int funkcija()
{
c=a * b;
return(c)
}
};
ovdje zavrsavamo nasu klasu!!
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!!
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!!!
class g_oblik
{
private:
float c;
public:
void ime()
{
cout < < "Povrsina " < < endl;
cout < < endl;
}
float povrsina(float a,float b)
{
c = a* b;
return(c);
}
};
U glavnom programu!!!
int main()
{
float a1;
171
float b2;
Jedna mala novina ali ne tako nerazumljiva!
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;
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);
};
//*************************************
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!!!!!!!
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;
}
int povrsina()
{
return(a*b);
}
Druga funkcija je kao i sve dosad funkcije samo sto smo sad
int main()
{
izracun t;
cout < < "Povrsina je : " < < t.povrsina < < endl;
cout < < endl;
system ("PAUSE");
return 0;
}
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!!!!!
176
Samo cu navesti objasnjenje konstruktora i klase u kojoj
je sve navedeno
class izracun
{
private:
int a;
int b;
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!!
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!!!
178
Sad malo o nasljedjivanju u c++-u!!!
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!!!!!!
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
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!!!
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!!!
183
sortiranje.h
184
#ifndef SORTIRANJE_H
#define SORTIRANJE_H
class sortiranje
{
private:
int zamjena;
int x;
int privremeni;
int p[5];
public:
void buble();
};
#endif
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!!!!
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 ;
int main()
{
sortiranje sort;
sort.buble();
system ("PAUSE");
return 0;
}
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!!!!
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......
char pokazivaci
195
196
197
...ovo je samo da vidite adrese nsa dva pokazivaca...
198
polja i pokazivaci
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++ !
202
Obavezno pratite viticaste zagrade i koja s cime zavrsava!!!!
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
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...!!!!!
224
225
funkcija tipa void:osnove
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
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; !!!!!!!!
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
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)!!!
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