Professional Documents
Culture Documents
C++ Za Apsolutne Pocetnike PDF
C++ Za Apsolutne Pocetnike PDF
programiranje
za apsolutne poetnike
PRO - MIL
Naslov knjige: C++ programiranje za apsolutne poetnike
Autor: Jakopec Ratko, ing
Naklada: PRO-MIL d.o.o. za nakladu, informatiku i edukaciju, Varadin,
R. Bokovia 20, 42000 Varadin, tel: 042 / 203 981, 233 971,
fax: 042 / 203 991, www.pro-mil.hr
Urednik: Nenad Milija, dipl. inf.
Lektura: Ruica Greguri, dipl. uitelj
Korektura: PRO-MIL d.o.o.
Recenzija: Igor Kos, dipl. inf.
Naslovnica: Ratko Jakopec, ing., Nenad Milija, dipl. inf.
Tiskara: Tiskara Varteks, Varadin
ISBN: 953-7156-19-2
Copyright: PRO-MIL d.o.o. za nakladu, informatiku i edukaciju, Varadin
Sva prava pridrana. Nije dozvoljeno kopirati ili reproducirati ni jedan dio knjige u bilo kojem obliku bez
prethodne pismene dozvole nakladnika.
Sve o emu smo pisali u ovoj knjizi, uspjeno je primijenjeno na raunalima, stoga ne snosimo nikakvu
odgovornost za eventualnu tetu koja bi se mogla povezati s uputama iz knjige.
U ovoj knjizi objanjen je program Dev C++, autora: Colin Laplace, Mike Berg, Hongli Lai. Program se
nalazi na priloenom CD-u, slobodan je za objavljivanje i umnoavanje.
Pojmovi za koje se zna da su zatitni znakovi napisani su poetnim velikim slovom. Nakladnik ne moe
provjeriti tonost niti eli utjecati na vjerodostojnost zatitnih znakova.
2 PRO - MIL
PRO - MIL
Sadraj
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
3
C++ programiranje za apsolutne poetnike
Sadraj
Uvod 7
to je to program, a to programiranje? 8
Je li teko nauiti programirati? 8
Zato ba C++? 9
Zato ba Dev-C++? 10
Kako se ui programiranje? 10
Kako dalje nakon ove knjige? 10
Instaliranje Dev-C++ programskog okruenja 12
Formiranje radne mape 20
Instalacija grafike 22
Na prvi program 25
Formiranje projekta 26
Mogui problem 32
Pokretanje programa 34
Greka u programu 38
Analiza programa 40
Gruba skica programa 42
Varijacije programa 43
Distribucija programa 47
Uitavanje spremljenog projekta 49
Varijable 53
Osnovne raunske operacije 54
Varijable 58
4 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Analiza programa 60
Varijacije programa 63
Uvod
Problem dijeljenja 67
69
program
Na prvi
Uljepavanje programa
Varijable
Podeavanje programskog okruenja 76
Na prvi grafiki program 77
Donoenje Grafika
Analiza programa 78
Varijacije programa 83
odluke
Crtanje pravokutnika 86
Crtanje crte 88
Petlje
Crtanje toke 95
Ispis teksta 97
Polja
Donoenje odluke 103
Funkcije 104
Obrada
teksta
Petlje 129
Saimanje Veliki pro-
PRO - MIL
Sadraj
Polja 183
Jednodimenzionalna polja 184
Spremanje brojeva u datoteku 204
Dvodimenzionalna polja 212
Obrada teksta 215
String objekti 216
Polje char tipa 223
Obrada string objekata 234
Premjetanje teksta iz char polja u string 246
Premjetanje teksta iz stringa u char polje 247
Spremanje teksta u datoteku 248
Objekti 251
Jednostavan primjer klase i objekata 252
Sloeniji primjeri klasa i objekata 262
Komunikacija s metodama 265
Razdvajanje deklaracije i definicije 276
Uporaba konstruktora 278
Nasljeivanje 280
Veliki program 283
Jednostavna igra u jednoj datoteci 284
Jednostavna igra u vie datoteka 288
Saimanje koda 301
Primjeri saetog pisanja koda 302
6 PRO - MIL
PRO - MIL
Uvod
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
7
C++ programiranje za apsolutne poetnike
Uvod
to je to program, a to programiranje?
Program je niz uputa raunalu o tome kako da napravi odreeni posao. Posao
moe bit voenje skladita, izraun plae radnicima ili pretvaranje slike u boji u
crno bijelu sliku. Programiranje je pisanje tih uputa. Za pisanje uputa odnosno
programa koriste se odreene naredbe. Skup naredbi koje ine cjelinu naziva se
programski jezik.
Da, teko je. Ako mislimo da emo uzeti nekakav programski jezik i da emo za
par dana pisati programe, kao to moemo uzeti FrontPage pa za par dana napra-
viti WEB stranicu, od toga nee biti nita.
8 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Zbog svega toga trebat e nam dvije do tri godine svakodnevnog rada da bismo
koliko - toliko nauili programirati. Pod pojmom nauiti programirati ne mislim na
dobivanje dvojke u koli ili pisanje programa za zbrajanje dva broja. Pod poj-
mom nauiti programirati mislim na to da smo u stanju napisati program koji za-
Uvod
dovoljava neije potrebe i taj netko nam je spreman za to platiti. Nema puno
smisla rei da znam programirati, ali ne znam napraviti nita za to bi netko bio
spreman platiti.
program
Na prvi
Zbog svega toga vano je da smo radini i strpljivi. Nemojmo iz injenice da prva
tri mjeseca neemo puno toga razumjeti, zakljuiti da nismo nadareni za progra-
miranje i odustati. Nakon tri mjeseca neemo puno toga razumjeti, ali nakon tri
godine sasvim sigurno hoemo.
Varijable
Ovim uvodom vas nisam htio preplaiti, ve sam vas htio ohrabriti da ustrajete u
uenju programiranja, iako e vam se na poetku moda initi da nita ne razu-
mijete i da sporo napredujete.
Donoenje Grafika
Zato ba C++?
odluke
Zato to je to trenutno najraireniji jezik, osobito u profesionalnoj uporabi. U ra-
unalstvu se klonite ekskluzivnosti. Ako vas veseli da budete posebni, obrijte
glavu ili obojite kosu na zeleno. Imate bezbroj mogunosti, ali kad su raunala u
pitanju, najbolje je koristiti raunalo koje koristi veina i programski jezik koji ko-
Petlje
risti veina.
U tom sluaju lako dolazimo do programa, lako dolazimo do literature, puno ljudi
se razumije u to pa moemo dobiti savjet. Konano, ako traimo posao u smislu
Polja
da programerska ekipa treba jo jednoga (jednu), vea je vjerojatnost da oni ve
koriste sustav s kojim znamo raditi.
Zamislite koliko je ugodno ivjeti u malom gradu i biti jedini vlasnik takvog geni-
jalnog sustava. Nema literature, nema programa, nema savjeta i kad konano
savladamo rad u takvom sustavu nitko nas ne treba jer svi rade na nekim drugim
sustavima.
Objekti
Iako po mom sudu C++ ima niz prednosti u odnosu na druge jezike, nemojmo se
suvie optereivati time koji emo jezik zapoeti uiti i koju inaicu tog jezika.
Glavni problem je nauiti jedan jezik, a kad nam to uspije, ako se ukae potreba,
Saimanje Veliki pro-
lako emo prijei na drugi. Da bi netko tko nikad nije programirao nauio jedan
grami
jezik, treba mu do tri godine, ali kad ve jedan jezik nauimo, da bismo nauili
drugi, dovoljno nam je do tri mjeseca. Nauivi jedan jezik, poinjemo razumije-
vati kako se programira, a to je najtee i najdulje traje. Najlake je nauiti nove
naredbe ili bolje reeno novi nain pisanja slinih naredbi u drugom jeziku.
koda
PRO - MIL 9
Uvod
Zato ba Dev-C++?
Iako je taj program relativno malih dimenzija, posjeduje sve osobine koje su potre-
bne za uenje programiranja, a mogao bi posluiti i za manje sloeno profesional-
no programiranje.
Kako se ui programiranje?
Nakon to smo odreenu naredbu shvatili, nismo zavrili s uenjem. Nakon toga
treba napraviti nekoliko desetaka manjih programa u kojima emo tu naredbu kori-
stiti da bismo stekli rutinu u njenom koritenju.
Ova knjiga nije zamiljena kao knjiga iz koje emo saznati sve tajne programiranja,
nego kao knjiga koja bi ljudima koji nikad nisu programirali i nita o tome na znaju
trebala pomoi da zaponu uenje programiranja.
Postoje velike i debele knjige s puno sitnog teksta koje na 1000 stranica objanja-
vaju sve tajne pojedinih programskih jezika. Takve knjige su korisne i nabavite ih
ako vam se ukae prilika, ali takve knjige nisu pogodne za poetnike. Zbog mno-
tva detalja i turih opisa, poetnik e se u njima jako teko snai.
Nakon to prouite ovu knjigu, imat ete dovoljno predznanja da moete pratiti knji-
ge koje detaljno govore o programskom jeziku C++. (Ili nekom drugom program-
skom jeziku.)
Kakve knjige biste trebali nabaviti i s ime biste se trebali baviti nakon to prouite
ovu knjigu i elite dalje napredovati?
- Svakako neku knjigu koja na barem 800 stanica detaljno opisuje programski jezik
koji elite nauiti.
10 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
ma, prouite upute za njegovo koritenje. Naravno, te upute ne moraju biti u ob-
liku tiskane knjige. Najee e biti u obliku teksta na raunalu.
Uvod
Linuxa. Da bi mogli pisati programe za pojedine operacijske sustave, moramo
razumjeti kako ti sustavi funkcioniraju pa emo morati nabaviti knjigu koja govori
o strukturi operacijskog sustava za koji elimo pisati programe.
program
Na prvi
- Dobro je nabaviti i knjige koje govore openito o programiranju i o nainima
rjeavanja pojedinih programskih problema. elimo li napisati program koji sorti-
ra odreenu grupu podataka na odreeni nain, ne moramo ga izmiljati. Drugi
ljudi prije nas susreli su se s problemom sortiranja i o tom problemu napisali knji-
Varijable
ge u kojima iznose optimalna rjeenja za pojedine probleme.
Donoenje Grafika
toj problematici.
odluke
komercijalne programe, odnosno programirati za novce.
Zbog toga sam na poetku rekao da nam treba dvije do tri godine da nauimo
programirati.
Petlje
U ovom trenutku to vam moda zvui obeshrabrujue, ali ako sve to savladate,
stei ete vjetinu kojom ne vlada ba svatko i koja ima svoju trinu cijenu.
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
PRO - MIL 11
Uvod
12 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
1 - Izaberemo jezik.
Uvod
program
Na prvi
Varijable
Donoenje Grafika
2 - Klikom na OK nastavljamo
odluke
instalaciju.
Petlje
Polja
Obrada
teksta
PRO - MIL 13
Uvod
2 - Instaliranje nastavljamo
klikom na Instaliraj.
14 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Nakon klika na Instaliraj zapoet
e instaliranje programa.
Uvod
program
Na prvi
Varijable
Donoenje Grafika
odluke
Petlje
Kliknemo na Da.
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
PRO - MIL 15
Uvod
Kliknemo na Kraj.
Kliknemo na U redu.
16 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
1 - Izaberemo
hrvatski jezik.
Uvod
program
Na prvi
2 - Izaberemo Use XP
Theme.
Varijable
Donoenje Grafika
3 - Klik na Next.
odluke
Petlje
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
grami
Klik na Next.
koda
PRO - MIL 17
Uvod
Klik na Next.
18 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Uvod
program
Na prvi
Varijable
Donoenje Grafika
odluke
Na kraju klik na OK.
Petlje
Klikom ovdje ugasimo ovaj prozor.
Time je instaliranje Dev-C++ progra-
Polja
ma zavreno.
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
PRO - MIL 19
Uvod
20 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Uvod
program
Na prvi
Varijable
Donoenje Grafika
Unesemo naziv mape, u
mojem sluaju Radni.
odluke
Petlje
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
grami
PRO - MIL 21
Uvod
Instalacija grafike
pi Dev-Cpp nalazit e se
22 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Uvod
program
Na prvi
Varijable
Sadraj mape include na CD-u
Donoenje Grafika
disku.
odluke
Petlje
Polja
Obrada
teksta
PRO - MIL 23
Na prvi program
24 PRO - MIL
PRO - MIL
Na prvi program
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
25
C++ programiranje za apsolutne poetnike
Na prvi program
Formiranje projekta
1 - Kliknemo na Datoteka.
3 - Izaberemo Projekt.
2 - Izaberemo Nova.
26 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Otvorit e se novi prozor koji se naziva Novi projekt i u kojem emo izab-
rati tip projekta. Najvaniji tipovi su Windows Application i Console Ap-
plication.
Uvod
U emu je razlika?
program
Na prvi
Windows Application izvodi se unutar klasinog windows prozora. Pre-
dnost ovog naina pisanja jest to emo dobiti program koji e izgledati
kao svaki drugi windows program. Nedostatak mu je to je ovaj nain pisa-
nja programa neto sloeniji, pa je manje prikladan za poetnike.
Varijable
Console Application ne izvodi se unutar klasinog windows prozora,
ve unutar pojednostavljene verzije s crnom pozadinom. Nedostatak ovog
naina pisanja programa jest to je program veoma ruan i to taj oblik
prozora ima manje mogunosti od klasinog prozora. Jedina prednost mu
Donoenje Grafika
je to je jednostavan, pa je prikladniji za poetnike.
odluke
1 - Izaberemo Basic.
Petlje
2 - Zatim Console Application.
Polja
3 - Ovdje unosimo naziv pro-
jekta. Na poetku moemo
Obrada
teksta
4 - Ovdje odredimo da
5 - Biranje zavravamo
e na projekt sadra-
klikom na OK.
vati C++ program.
koda
PRO - MIL 27
Na prvi program
Najbolje je da ga spremimo
u prije pripremljenu praznu
mapu.
Kliknemo ovdje.
2 - Kliknemo na Spremi.
28 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
1 - Ovdje bi se trebala nalaziti oznaka diska na kojem
smo pripremili prazni prostor za smjetaj naeg projekta.
Uvod
2 - Sadraj ovog prozo-
ra na vaem raunalu
program
Na prvi
bit e sasvim sigurno
drugaiji nego na mo-
jem, budui da njegov
sadraj ovisi o progra-
Varijable
mima koji su instalirani
u raunalu i nainu ko-
ritenja raunala. Ne-
mojte brinuti zbog toga.
Donoenje Grafika
odluke
3 - Pronai emo mapu Radni i kliknuti na
nju. (Ako mapu Radni niste do sada formira- 4 - Klik na Otvori.
li, formirajte je prema uputama danim u uvo-
dnom poglavlju.
Petlje
Polja
2 - Klik na Spremi.
Saimanje Veliki pro-
koda grami
PRO - MIL 29
Na prvi program
Raunalo e automatski
generirati jednostavan
C++ program i time je
otvaranje projekta zavr-
eno.
1 - Kliknemo na Alati.
30 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
1 - Kliknemo na karticu
Prikaz.
Uvod
2 - Kliknemo na kvadrati ispred
opcije Brojevi linije.
program
Na prvi
Varijable
3 - Kliknemo na OK.
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
Objekti
PRO - MIL 31
Na prvi program
Mogui problem
3 - Klik na Spremi.
32 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Unos prvog programa
Uvod
Umjesto programa
program
Na prvi
koji je generiralo
raunalo prilikom
otvaranja novog
projekta, unesemo
Varijable
ovakav program.
Donoenje Grafika
rokovati greku u
programu.
odluke
Petlje
Na poetku e nam se esto
dogaati da umjesto toke sa
zarezom ovdje unesemo dvo-
Polja
#include <cstdlib> toje to e uzrokovati greku
#include <iostream> u programu.
int main()
Lijevu vitiastu zagradu dobit
{
emo tako da pritisnemo tipku
cout << "Ovo je moj tekst." << endl;
AltGr i ne putajui tu tipku,
Objekti
system("PAUSE");
pritisnemo tipku b.
return 0;
}
Desnu emo dobiti tako da
pritisnemo AltGr i, ne putajui
Saimanje Veliki pro-
grami
PRO - MIL 33
Na prvi program
Pokretanje programa
Ve smo rekli da raunalo razumije samo nule i jedinice. Svi sadraji, muzika,
filmovi, slike itd. moraju biti prevedeni u nule i jedinice da bi ih raunalo ra-
zumjelo. Tako je i s programom.
34 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
1 - Klikom na Kompajlaj i pokreni zapoet emo prevoenje i
pokretanje naeg programa.
Uvod
program
Na prvi
2 - Otvara se prozor u kojem nas raunalo pita kamo i
pod kojim nazivom emo spremiti na program.
Varijable
koje smo spremili projekt to emo mi prihvatiti.
Donoenje Grafika
odluke
Mjesto na koje e raunalo spremiti na
Petlje
program.
PRO - MIL 35
Na prvi program
36 PRO - MIL
C++ programiranje za apsolutne poetnike
Mogui problem
Sadraj
Tijekom rada moe nam se dogoditi da nam
raunalo predloi neki naziv programa, iako ve
u tom prostoru postoji program s istim nazivom.
Uvod
U tom sluaju, ako elimo zadrati stari prog-
program
Na prvi
ram, novom emo dati neki drugi naziv npr.
main2.cpp i kliknut emo na Spremi.
Varijable
Ako stari program ne elimo sauvati, ostavit
emo novom programu naziv main.cpp i kliknut
emo na Spremi.
Donoenje Grafika
odluke
main.cpp
Petlje
Ako ne elimo zadrati stari prog-
ram, pa smo u prethodnom koraku
Polja
kliknuli na Spremi bez da smo
mijenjali novom programu naziv,
raunalo e nas jo jednom upozo-
riti da e stari program biti obrisan.
Obrada
teksta
Objekti
PRO - MIL 37
Na prvi program
Greka u programu
Gotovo je nemogue unijeti program, a da
se tijekom unosa ne pojavi greka.
1 - Umjesto
2 - Kliknemo na Kompajlaj i pokreni. toke sa zare-
zom unesemo
dvotoje.
2 - Istovremeno se otvara
prozor u kojem moemo
vidjeti dodatne informacije
o uoenoj greki.
38 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Oznaavanje pozicije greke prili-
Uvod
no je nepouzdano budui da rau-
nalo zapravo ne oznaava poziciju
greke, nego poziciju na kojoj je
greka primijeena. Pogledajmo
program
Na prvi
ovaj primjer.
Varijable
Donoenje Grafika
1 - Ovdje je dolo do greke jer
nismo unijeli toku sa zarezom.
odluke
Kad takav program pokuamo prevesti i pok-
Petlje
renuti, kao pogrean bit e oznaen deveti
red, jer je u njemu greka primijeena, iako
se greka zapravo nalazi u osmom redu.
Polja
Zato imajmo na umu da je oznaavanje re-
dova u kojim se pojavila greka samo gruba
orijentacija, a ne precizni pokazatelj.
Obrada
teksta
Objekti
Kompajlaj i pokreni.
koda grami
PRO - MIL 39
Na prvi program
Analiza programa
#include <cstdlib>
#include <iostream> Ove naredbe emo pisati na poetku sva-
kog C++ programa. Zato? C++ organizi-
ran je tako da su njegove naredbe organi-
zirane u grupe ili, kako bi programeri rek-
li, biblioteke i na poetku programa mora-
mo rei raunalu koje biblioteke naredbi
namjeravamo koristiti.
40 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
{ } - Iako neveliki, ovo su jako vani dijelovi
programa. Oznauju prostor unutar kojeg se
{
nalazi program, { oznauje poetak, a } kraj
Uvod
programa.
program
Na prvi
Varijable
Ovaj red sadri dvije naredbe.
Donoenje Grafika
cout << "Ovo je moj tekst." << endl;
zaslonu raunala.
odluke
red.
Petlje
Ovom naredbom nareujemo raunalu
Polja
da stane i eka tako dugo dok ne pritis-
nemo neku tipku.
system("PAUSE");
Da bismo bolje razumjeli ovu naredbu,
Obrada
teksta
PRO - MIL 41
Na prvi program
42 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Varijacije programa
Uvod
nje programa i pojedinih naredbi jest da u program unosimo manje izmjene, a
zatim opaamo kakve posljedice e takve izmjene izazvati.
program
Na prvi
Kao to smo ve vidjeli, pok-
#include <cstdlib>
#include <iostream> renemo li ovaj program, na
Varijable
zaslonu raunala dobit emo
using namespace std;
ovakav rezultat.
int main()
{
Donoenje Grafika
cout << "Ovo je moj tekst." << endl;
system("PAUSE");
return 0;
}
odluke
Petlje
#include <cstdlib>
#include <iostream>
system("PAUSE");
teksta
return 0;
}
Objekti
Saimanje Veliki pro-
grami
PRO - MIL 43
Na prvi program
#include <cstdlib>
#include <iostream>
int main()
{
cout << "Jaa jesm nism ghgh." << endl;
system("PAUSE");
return 0;
}
44 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
using namespace std;
int main()
{
Varijable
cout << "Ovo je moj tekst." << endl ;
system("PAUSE");
return 0;
}
Vratimo na program u
Donoenje Grafika
prvobitno stanje, a zatim
ga pokrenimo klikom na
Kompajlaj i pokreni.
Ovako e izgledati rezul-
odluke
tat rada naeg programa.
#include <cstdlib>
#include <iostream>
Da bismo bolje razumjeli
njegovu funkciju, obrie-
using namespace std;
mo ovaj dio programa.
Petlje
Nova inaica programa
int main()
trebala bi ovako izgledati.
{
cout << "Ovo je moj tekst.";
Klikom na Kompajlaj i
system("PAUSE");
Polja
pokreni pokrenemo pro-
return 0;
gram.
}
Obrada
teksta
PRO - MIL 45
Na prvi program
Vidimo da se je dogodilo
ono to smo oekivali.
46 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Vie naredbi << endl moemo napisati i
#include <cstdlib> unutar jednog reda.
#include <iostream>
Uvod
Pokrenemo li ovu inaicu programa, uvje-
using namespace std; rit emo se da daje isti rezultat kao i pret-
hodna.
int main()
program
Na prvi
{
cout << "Ovo je moj tekst." << endl << endl << endl << endl;
system("PAUSE");
return 0;
Varijable
}
Donoenje Grafika
skok u novi red.
odluke
Propisana rije kojom obavjetavamo raunalo
Ove oznake obvezno
da emo sadraj koji slijedi poslati na neku izla-
se stavljaju ispred
znu jedinicu, u naem sluaju na zaslon rau-
sadraja koji e iz
nala.
Petlje
raunala ii na neku
izlaznu jedinicu, npr.
Uoimo da naredbu << endl ne moemo koris-
zaslon raunala.
titi ako prije nismo stavili naredbu cout.
Polja
Iako nevelik,
Obrada
ovo je JAKO
vaan dio pro-
grama.
Objekti
Oznaava kraj
Tekst unutar navod- naredbe ili
Ovom naredbom
nika ispisat e se na grupe naredbi
nareujemo raunalu
zaslon raunala. koje ine cjeli-
da prilikom ispisa
Saimanje Veliki pro-
nu.
grami
kcionirati.
PRO - MIL 47
Na prvi program
Distribucija programa
Otvorimo Windows Explorer i u njemu otvorimo mapu u koju smo koristili tije-
kom prevoenja programa. U naem sluaju to je Radni mapa na C disku.
48 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Uitavanje spremljenog projekta
Uvod
program
Na prvi
Varijable
Ako pokuamo ugasiti prog-
ramsko okruenje, a da nis-
Donoenje Grafika
mo spremili program, rau-
Na projekt e se spremiti prili- nalo e nas upozoriti.
kom prevoenja programa.
Klikom na Yes spremit emo
odluke
Ako projekt elimo spremiti bez na program.
da smo program preveli, kliknemo
na ikonu Spremi.
Petlje
Spremljeni projekt moe-
Polja
mo uitati u nae prog-
ramsko okruenje na vie
naina.
Obrada
teksta
Na najjednostavniji nain
moemo uitati nekoliko
2 - Zatim na Ponovno otvori. prethodnih spremanja.
Objekti
1 - Kliknemo na Datoteka.
Saimanje Veliki pro-
grami
3 - Na ovom popisu
kliknemo na projekt
koji elimo otvoriti.
koda
PRO - MIL 49
Na prvi program
1 - Kliknemo na Datoteka.
4 - Kliknemo na Otvori.
50 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Nakon to se
Uvod
spremljeni projekt
uitao, mogli bismo
biti zbunjeni injeni-
com da ga ne vidi-
program
Na prvi
mo u prostoru u
kojem smo oeki-
vali da emo ga
vidjeti.
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
grami
PRO - MIL 51
Varijable
52 PRO - MIL
PRO - MIL
Varijable
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
53
C++ programiranje za apsolutne poetnike
Varijable
#include <cstdlib>
#include <iostream> Sada emo raunalo iskoristiti za rauna-
nje.
using namespace std;
Unesimo ovaj program u C++ programsko
int main() okruenje.
{
cout << 2+3; Klikom na Kompajlaj i pokreni ga pokre-
cout << endl; nemo. Dobit emo ovakav rezultat.
system("PAUSE");
return 0;
}
54 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Pokuajmo zbrojiti neka druga dva broja, #include <cstdlib>
npr. 8 i 4. #include <iostream>
Uvod
Pokrenimo program i vidjet emo da e using namespace std;
raunalo zbrojiti ta dva broja.
int main()
program
Na prvi
{
cout << 8+4;
cout << endl;
system("PAUSE");
return 0;
Varijable
}
Donoenje Grafika
odluke
Pokuajmo neku drugu raunsku opera- #include <cstdlib>
Petlje
ciju, npr. oduzimanje. #include <iostream>
system("PAUSE");
teksta
return 0;
}
Objekti
Saimanje Veliki pro-
koda grami
PRO - MIL 55
Varijable
12 podijeljeno sa 4 napi-
sat emo kao 12/4.
#include <cstdlib>
#include <iostream> Pokrenimo program i po-
gledamo rezultat.
using namespace std;
int main()
{
cout << 12/4;
cout << endl;
system("PAUSE");
return 0;
}
56 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib> Pokuajmo ovdje umjesto 12/4 staviti 13/4.
#include <iostream>
Pokrenimo program i pogledajmo rezultat.
Uvod
using namespace std;
Rezultat je oigledno pogrean.
int main()
program
Na prvi
{
cout << 13/4;
cout << endl;
system("PAUSE");
return 0;
Varijable
}
Donoenje Grafika
#include <cstdlib>
#include <iostream>
odluke
int main()
{ Pokuajmo ovdje staviti
cout << 15/3; 15/3 i pokrenimo program.
cout << endl;
Rezultat je ispravan.
Petlje
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
Objekti
{
grami
PRO - MIL 57
Varijable
Varijable
Na tipkovnici iza-
beremo prvi broj
koji elimo zbrajati,
npr. broj 3 i zatim
pritisnemo Enter
tipku na tipkovnici.
58 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Na tipkovnici izaberemo
drugi broj koji elimo
zbrajati, npr. broj 5 i
Uvod
zatim pritisnemo Enter
tipku na tipkovnici.
program
Na prvi
Nakon pritiska na
Varijable
Enter tipku na tip-
kovnici, a zaslonu
raunala ugledat
em o r e zu lt at
zbrajanja broja 3 i
Donoenje Grafika
broja 5, a to je broj
8.
odluke
Petlje
Polja
Pokrenimo bez ikakvih izmjena isti prog- Na slian nain kao i u
ram jo jednom, ali sada unesimo neke prethodnom primjeru,
druge brojeve, npr. broj 12 i broj 14. dakle tako da nakon sva-
kog unosa broja pritisne-
Obrada
PRO - MIL 59
Varijable
Analiza programa
5
Zbrojimo sadraj prostora a i prostora
c = a + b;
b, a rezultat spremimo u prostor c. b
8 3 5
cout << c;
c = a + b
Sadraj prostora c, a to je
c
cout << endl; rezultat zbrajanja, ispiemo
na zaslon raunala. 8
60 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Ovom naredbom formiramo prostor u raunalu u koji emo spremati brojeve.
Na poetku taj prostor moemo zamisliti kao posudice u koje moemo staviti
Uvod
brojeve, iako su to zapravo rezervirana mjesta u memoriji naeg raunala.
program
Na prvi
Naredba za formiranje Oznaka ; obvezno dolazi
prostora. int a ; na kraju naredbe.
Varijable
int b; Ovdje se nalazi naziv prostora.
int c;
Zato svaki prostor ima naziv???
Donoenje Grafika
Zato to u jednom programu moe-
Ovim naredbama se for- mo imati vie takvih prostora, pa
miraju jo dva prostora, nam naziv prostora omoguuje da ih
odluke
prostor b i prostor c. razlikujemo.
Petlje
Nakon formiranja prostor za spremanje brojeva je prazan i bio bi nam sasvim
beskoristan kad u njega ne bismo mogli staviti neki broj.
Polja
U taj prostor broj moemo staviti na vie naina, a jedan od njih je da ga une-
semo pomou tipkovnice. Za to emo koristiti naredbu cin. Obrada
teksta
PRO - MIL 61
Varijable
Oznaka ; obvezno
Prostor c u koji e-
mo spremiti rezultat. c = a + b ; dolazi na kraju na-
redbe.
Oznaka ; obavezno
Naredba za ispis. cout << c ; dolazi na kraju na-
redbe.
62 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Varijacije programa
Uvod
brojeva, napravit emo niz izmjena na naem programu i opaat emo kako te
izmijene utjeu na rad program.
program
Na prvi
#include <cstdlib> Ovaj program ima potpuno istu struktu-
#include <iostream> ru kao prethodni, samo to ima drugai-
je nazive prostora za spremanje broje-
Varijable
using namespace std; va.
Donoenje Grafika
int drugi; naziva c, nego rezultat.
int rezultat;
cin >> prvi; Prevedimo i pokrenimo ovaj program i
cin >> drugi; vidjet emo da radi jednako kao i pret-
odluke
rezultat = prvi + drugi; hodni program.
cout << rezultat;
cout << endl;
system("PAUSE");
Petlje
return 0;
}
Sad se postavlja pitanje po kojoj logici se biraju nazivi prostora za spre- Polja
manje brojeva. Pogledajmo neka pravila i sugestije.
Obrada
- Ne smiju se koristi naredbe; npr. int aaa; je dozvoljeno, a int cout; nije.
teksta
- Ako naziv sadri brojeve, prvi znak mora biti slovo, dakle a1 je dozvolje-
Saimanje Veliki pro-
no, a 1a nije.
grami
PRO - MIL 63
Varijable
#include <cstdlib>
#include <iostream> Pokuamo li pokrenuti ovaj program, ra-
unalo e dojaviti greku.
using namespace std;
Do greke je dolo zato to smo ovdje
int main() formirali prostor A, a ovdje smo pokuali
{ unijeti broj u prostor a.
int A;
int B; Raunalo razlikuje velika i mala slova pa
int c; njemu prostor a i prostor A nisu isto.
cin >> a;
cin >> b; S njegove toke gledita mi ovdje poku-
c = a + b; avamo unijeti broj u prostor koji ne pos-
cout << c; toji.
cout << endl;
system("PAUSE"); Zato e nas raunalo u komentaru greke
return 0; upozoriti da ne zna to je to a.
}
64 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib>
#include <iostream> U ovom programu ovu naredbu nismo napi-
sali u ispravnom obliku kao cout << c; nego
Uvod
using namespace u obliku cout << "c"; dakle sadraj koji se
std; ispisuje stavili smo u navodnike kao to
smo to naviknuli prilikom ispisa teksta kori-
int main() tenjem cout naredbe.
program
Na prvi
{
int a; Pokrenemo li ovaj program, on e se izvriti
int b; i raunalo nam nee dojaviti nikakvu gre-
int c; ku, ali kao rezultat neemo dobiti ono to
Varijable
cin >> a; smo oekivali.
cin >> b;
c = a + b; Vidimo da smo u prostor a unijeli 8, u pros-
cout << "c"; tor b unijeli smo 4, ali kao rezultat nismo
cout << endl; dobili broj 12, nego slovo c.
Donoenje Grafika
system("PAUSE");
return 0; Zato?
}
cout << c; - ispisuje sadraj prostora c.
odluke
cout << "c"; - ispisuje slovo c.
Petlje
Polja
Ovaj tip greke veo-
ma je teko pronai
Obrada
teksta
u sloenim programi-
ma, budui da rau-
nalo nee dojaviti
greku i poziciju gre-
Objekti
ke prilikom prevo-
enja.
To se dogaa zato
Saimanje Veliki pro-
to je program for-
grami
htjeli.
PRO - MIL 65
Varijable
#include <cstdlib>
#include <iostream> Na slian nain moemo napraviti program
za mnoenje sadraja dvaju prostora.
using namespace std;
int main()
{
int broj1;
int broj2;
int rezultat;
cin >> broj1;
cin >> broj2;
rezultat = broj1 * broj2;
cout << rezultat;
cout << endl;
system("PAUSE");
return 0;
}
66 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Problem dijeljenja
Uvod
#include <cstdlib>
#include <iostream> nja.
program
Na prvi
va moemo dijeliti, ali e kao i proli put
int main()
{ kad smo pokuali dijeliti, rezultat biti
int broj1; ispravan samo za brojeve iji rezultat
Varijable
int broj2;
int rezultat; dijeljenja nije decimalni broj.
cin >> broj1;
cin >> broj2; Ako je rezultat dijeljenja decimalni broj,
rezultat = broj1 / broj2;
Donoenje Grafika
cout << rezultat; rezultat e biti pogrean.
cout << endl;
system("PAUSE");
return 0;
odluke
}
Petlje
Problem emo rijeiti ovako napisanim
programom. Umjesto naredbom int,
prostor za spremanje brojeva formirat
emo naredbom float;
Polja
#include <cstdlib>
#include <iostream> Pokrenemo li taj program, dobit emo
ispravan rezultat.
using namespace std;
Obrada
teksta
int main()
{
float broj1;
float broj2;
Objekti
float rezultat;
cin >> broj1;
cin >> broj2;
Saimanje Veliki pro-
PRO - MIL 67
Varijable
U prostor formiran int naredbom moemo spremati samo brojeve bez decimal-
nog zareza, a u prostore formirane float naredbom moemo spremati brojeve
s decimalnim zarezom.
Oznaka ; obvezno
Naredba za formi-
ranje prostora za
float broj1 ; dolazi na kraju na-
redbe.
spremanje brojeva
s decimalnim zare-
zom.
68 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Uljepavanje programa
Nai programi dodue rade, ali su tako runi da bi teko bili runiji. Korisnika
Uvod
doeka crni ekran bez ikakvih uputa. Nakon to unesemo dva broja, dobit
emo trei bez ikakvog komentara to taj trei broj predstavlja.
program
Na prvi
Budui da smo mi napisali program, mi znamo da treba unijeti dva broja, da
nakon svakog unosa treba pritisnuti tipku Enter i mi znamo to predstavlja
trei broj koji smo dobili kao rezultat, ali netko drugi veoma bi teko koristio
na program. Unesite i pokrenite ovaj program.
Varijable
U ovom programu na
Donoenje Grafika
#include <cstdlib> poetku programa, te
#include <iostream> prije svakog unosa i
ispisa rezultata nared-
using namespace std; bom cout ispisali smo
odluke
adekvatan komentar
int main() koji pomae korisniku
{ da lake shvati emu
float broj1; program slui, to mora
float broj2; unijeti i to je dobio kao
Petlje
float rezultat; rezultat.
cout << "Dijeljenje." << endl;
cout << "Unesite prvi broj." << endl; Ovakav program puno
cin >> broj1; je ugodniji za upotrebu
Polja
cout << "Unesite drugi broj." << endl; od programa bez ko-
cin >> broj2; mentara.
rezultat = broj1 / broj2;
cout << "Rezultat dijeljenja je:" << endl;
Obrada
teksta
}
Saimanje Veliki pro-
koda grami
PRO - MIL 69
Varijable
int main()
{ Komentar prvog unosa.
float broj1;
float broj2;
float rezultat;
cout << "Dijeljenje." << endl;
cout << endl;
Prvi unos.
cout << endl;
cout << "Unesite prvi broj." << endl;
cin >> broj1;
cout << endl; Prazni red.
cout << "Unesite drugi broj." << endl;
cin >> broj2;
cout << endl; Komentar drugog unosa.
rezultat = broj1 / broj2;
cout << "Rezultat dijeljenja je:" << endl;
cout << rezultat; Drugi unos.
cout << endl;
cout << endl;
system("PAUSE"); Komentar rezultata.
return 0;
}
Dva skoka u novi red. Ispis rezultata.
70 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Nekoliko primjera programa
Uvod
// Program za izraun povrine izraun povrine
// ********************************* pravokutnika. Uni-
jet emo ga u ra-
program
Na prvi
#include <cstdlib> unalo i pokrenuti.
#include <iostream>
Struktura je ista
using namespace std; kao i struktura
prethodnog prog-
Varijable
int main() rama, ali su prila-
{ goeni komentari i
float stranica_A; nazivi prostora za
float stranica_B; spremanje broje-
Donoenje Grafika
float povrsina; va.
cout << "Povrsina." << endl;
cout << endl; Jedina novost je
cout << endl; komentar na po-
cout << "Unesite prvu stranicu." << endl; etku programa
odluke
cin >> stranica_A; koji se nalazi iza //
cout << endl; oznaka i opisuje
cout << "Unesite drugu stranicu." << endl; namjenu progra-
cin >> stranica_B; ma.
Petlje
cout << endl;
povrsina = stranica_A * stranica_B;
cout << "Povrsina je:" << endl;
cout << povrsina;
Polja
cout << endl;
cout << endl;
system("PAUSE");
return 0;
Obrada
}
teksta
Objekti
PRO - MIL 71
Varijable
Osim to komentare
// ******************************
// Program za izraun brzine moemo pisati u zase-
// ******************************
bnom redu, moemo ih
#include <cstdlib> pisati i na kraju nared-
#include <iostream>
bi.
using namespace std;
Pri tome imajmo na
int main() umu da je
{
float put; // prostor za put float put; // komentar
float vrijeme; // prostor za vrijeme
float brzina; // prostor za brzinu ispravno, ali
cout << "Brzina." << endl;
cout << endl; // komentar float put;
cout << endl;
cout << "Unesite prevaljeni put." << endl; ili
cin >> put;
cout << endl; float // komentar put;
cout << "Unesite vrijeme." << endl;
cin >> vrijeme; nije. Dakle, ako ko-
cout << endl; mentar unosimo u red
brzina = put / vrijeme; s naredbom, komentar
cout << "Brzina je:" << endl; mora biti na kraju reda.
cout << brzina;
cout << endl;
cout << endl;
system("PAUSE"); Postavlja se pitanje emu
return 0; takvi komentari slue. Ako
} smo upravo napisali prog-
ram, a program ima deset
redova, onda nam komen-
tari ne trebaju.
72 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
// *********************************************
// Program za izraun volumena kvadrata
// *********************************************
Uvod
#include <cstdlib>
#include <iostream> Ovo je primjer programa za izraun volu-
program
Na prvi
mena kvadrata.
using namespace std;
Pokuajmo za vjebu sami smisliti neko-
int main() liko slinih programa.
{
Varijable
float stranica_A;
float stranica_B;
float stranica_C;
float volumen;
Donoenje Grafika
cout << "Izracun volumena." << endl;
cout << endl;
cout << "Unesite stranicu a." << endl;
cin >> stranica_A;
cout << "Unesite stranicu b." << endl;
odluke
cin >> stranica_B;
cout << "Unesite stranicu c." << endl;
cin >> stranica_C;
cout << endl;
Petlje
volumen = stranica_A * stranica_B * stranica_C;
cout << "Volumen je:" << endl;
cout << volumen;
cout << endl;
cout << endl;
system("PAUSE"); Polja
return 0;
}
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
PRO - MIL 73
Grafika
74 PRO - MIL
PRO - MIL
Grafika
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
75
C++ programiranje za apsolutne poetnike
Grafika
Da bi grafika funkcionirala,
prilikom instalacije progra-
ma moramo instalirati do-
datke kojim programskom
okruenju omoguuje pri-
kaz grafike.
1 - Kliknemo na Projekt. Ako to nismo uinili, vrati-
mo se na uvodno poglavlje
i instalirajmo potrebne do-
datke.
2 - Zatim na Postavke projekta.
Nakon toga podesit emo
programsko okruenje.
1 - Kliknemo na Parametes.
Kliknemo na Ok.
76 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Na prvi grafiki program
Uvod
#include <cstdlib>
ram. Uoimo da su poetak i kraj
#include <iostream>
programa izmijenjeni.
#include <winbgim.h>
Na poetku dodan je ovaj red, a
program
Na prvi
using namespace std;
na kraju je izbaena naredba:
system("PAUSE");
int main()
{
Varijable
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
Donoenje Grafika
Klikom na Kompajlaj i pokreni pokrenemo
cleardevice();
program.
circle(320,240,180);
getch();
Otvorit e se dva prozora:
closegraph();
odluke
return 0;
- tekstualni koji smo do sada koristili
}
- grafiki u kojem e raunalo nacrtati krug.
Petlje
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
PRO - MIL 77
Grafika
Analiza programa
#include <cstdlib>
Poetak programa. Za razliku od dosa-
#include <iostream>
danjih programa, u ovom smo korigi-
#include <winbgim.h>
rali poetak dodavi mu jo jednu na-
redbu.
using namespace std;
Ovom naredbom u program ukljuuje-
int main()
mo grafike naredbe.
{
78 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Ovom naredbom zaustavljamo izvoe-
nje programa do trenutka dok ne priti-
getch(); snemo neku tipku na tipkovnici. Ima
Uvod
istu namjenu kao i system(PAUSE)
u normalnim programima.
program
Na prvi
izbacimo je iz programa i pokuajmo
pokrenuti program bez nje.
Varijable
closegraph(); Zatvaranje grafikog prozora.
Donoenje Grafika
Kraj programa. Uoimo da ovdje vie
return 0;
nema naredbe system(PAUSE); Njenu
}
funkciju sada ima getch(); naredba.
odluke
Pogledajmo sada poblie odreene naredbe. Ovom naredbom odreujemo tip
Petlje
grafikog prozora.
Polja
256 boja.
PRO - MIL 79
Grafika
Nakon to smo naredbom int gdriver = 9; odabrali tip grafikog prozora, ovom
naredbom biramo rezoluciju grafikog prozora.
BLACK,
BLUE,
GREEN,
CYAN,
RED,
setbkcolor( WHITE ); MAGENTA,
BROWN,
LIGHTGRAY,
DARKGRAY,
LIGHTBLUE,
LIGHTGREEN,
LIGHTCYAN,
LIGHTRED,
LIGHTMAGENTA,
YELLOW,
WHITE.
80 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Osim navoenja imena boja, boje moemo odrediti i navoenjem njihove broj-
ane vrijednosti.
Uvod
program
Na prvi
setbkcolor(COLOR( 255, 255, 255 )); Plava.
Varijable
Crvena. Zelena.
Donoenje Grafika
Dodat emo naredbu COLOR iza koje se nalaze tri broja ija vrijednost mo-
e biti izmeu 0 i 255.
odluke
Boje u raunalu sastoje se od tri boje; crvene, zelene i plave. Sve ostale
boje nastaju mijeanjem tih boja.
Petlje
treim intenzitet plave boje.
Polja
Obrada
teksta
Ovom naredbom odreuje se boja kojom crtamo. Koristimo iste nazive boja
kao i u prethodnoj naredbi.
Objekti
setcolor(BLACK);
Saimanje Veliki pro-
PRO - MIL 81
Grafika
640
240
irina prozora,
320
u naem slu-
aju 640 toa-
ka.
180
480
82 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Varijacije programa
Uvod
#include <iostream> jera da bismo lake razumjeli
#include <winbgim.h> kako radi naredba za crtanje
kruga.
using namespace std;
program
Na prvi
Ovaj program slian je pretho-
int main() dnom. Razlika je u tome to je
{ prethodni crtao samo jedan
int gdriver = 9; krug, a ovaj e nacrtati nekoli-
Varijable
int gmode = 2; ko krugova razliitog polumje-
initgraph(&gdriver, &gmode, ""); ra, ali sa sreditem u istoj to-
setbkcolor(WHITE); ki.
setcolor(BLACK);
Donoenje Grafika
cleardevice(); Ovdje se nalaze etiri nared-
circle(320,240,220); be za crtanje etiri kruga.
circle(320,240,165);
circle(320,240,110); Pokrenemo li ovaj program,
circle(320,240,55); trebali bismo dobiti ovakav
odluke
getch(); rezultat.
closegraph();
return 0;
}
Petlje
Polja
Pokuajmo program pro-
Obrada
Pokuajmo promijeniti
brojeve koji odreuju po-
Objekti
PRO - MIL 83
Grafika
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 60, 60);
circle (320, 180, 60);
circle (320, 300, 60);
getch();
closegraph();
return 0;
}
84 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib>
#include <iostream>
Uvod
#include <winbgim.h>
program
Na prvi
int main()
{
int gdriver = 9;
int gmode = 2;
Varijable
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (60, 60, 60);
Donoenje Grafika
circle (180, 180, 60);
circle (300, 300, 60);
getch();
closegraph();
odluke
return 0;
}
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Polja
using namespace std;
int main()
{
Obrada
teksta
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
Objekti
setcolor(BLACK);
cleardevice();
circle(320,240,220);
circle(220,140,50);
Saimanje Veliki pro-
circle(420,140,50);
grami
circle(320,240,30);
getch();
closegraph();
return 0;
koda
PRO - MIL 85
Grafika
Crtanje pravokutnika
Naredba za crtanje
rectangle ( 160, 100, 480, 380 ); pravokutnika.
640
Naredbom rectan-
100 gle crtamo pravo-
kutnik, a sa etiri
160 380 broja koji se nala-
ze iza naredbe
rectangle odreu-
jemo poloaj gor-
njeg lijevog i do-
njeg desnog ugla
480 pravokutnika.
86 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib> Meusobno moemo kombinirati
#include <iostream> vie pravokutnika.
#include <winbgim.h>
Uvod
using namespace std;
int main()
program
Na prvi
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
Varijable
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
rectangle (160, 100, 480, 380);
Donoenje Grafika
rectangle (190, 130, 450, 350);
rectangle (220, 160, 420, 320);
rectangle (250, 190, 390, 290);
getch();
closegraph();
odluke
return 0;
}
Petlje
Pravokutnik moemo kombini- #include <cstdlib>
rati s drugim oblicima. #include <iostream>
#include <winbgim.h>
Pokuajmo za vjebu sami iz-
Polja
misliti nekoliko primjera, npr. using namespace std;
deblo stabla nacrtamo kao pra-
vokutnik, a kronju kao krug. int main()
{
Obrada
teksta
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
Objekti
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
circle (220, 140, 50);
Saimanje Veliki pro-
return 0;
}
PRO - MIL 87
Grafika
Crtanje crte
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
line (120, 100, 500, 380);
getch();
closegraph();
return 0;
}
Naredba za crtanje
line ( 160, 100, 480, 380 ); crte.
640
100
Funkciju pojedinih
480 brojeva moemo
vidjeti na crteu.
88 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Napravimo nekoliko crtea upo-
#include <cstdlib> rabom naredbe za crtanje crte.
#include <iostream>
#include <winbgim.h>
Uvod
using namespace std;
program
Na prvi
int main()
{
int gdriver = 9;
int gmode = 2;
Varijable
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
line (100, 240, 540, 240);
Donoenje Grafika
line (320, 20, 320, 460);
getch();
closegraph();
return 0;
odluke
}
#include <cstdlib>
Petlje
#include <iostream>
#include <winbgim.h>
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
Objekti
cleardevice();
circle (320, 240, 220);
circle (320, 240, 165);
circle (320, 240, 110);
Saimanje Veliki pro-
return 0;
}
PRO - MIL 89
Grafika
120 380
480
90 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib>
Ovaj nain crtanja pogodan
#include <iostream>
je za crtanje vie crta u nep-
#include <winbgim.h>
rekinutom nizu.
Uvod
using namespace std;
Pogledajmo ovaj primjer.
int main()
program
Na prvi
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
Varijable
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
Donoenje Grafika
lineto(480, 450);
lineto(480, 240);
lineto(160, 240);
lineto(320, 120);
odluke
lineto(480, 240);
getch();
closegraph();
return 0;
Petlje
}
#include <cstdlib>
#include <iostream>
Pogledajmo, korak po korak, #include <winbgim.h> Polja
kako je nastao ovaj crte.
using namespace std;
Obrada
teksta
int main()
{
int gdriver = 9;
int gmode = 2;
Objekti
cleardevice();
grami
moveto(160, 240);
lineto(160, 450);
getch();
closegraph();
return 0;
koda
PRO - MIL 91
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
lineto(480, 450);
getch();
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
lineto(480, 450);
lineto(480, 240);
getch();
closegraph();
return 0;
}
92 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Uvod
using namespace std;
int main()
program
Na prvi
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
Varijable
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
Donoenje Grafika
lineto(480, 450);
lineto(480, 240);
lineto(160, 240);
getch();
odluke
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
Petlje
#include <winbgim.h>
Polja
int main()
{
int gdriver = 9;
int gmode = 2;
Obrada
teksta
moveto(160, 240);
lineto(160, 450);
lineto(480, 450);
lineto(480, 240);
Saimanje Veliki pro-
lineto(160, 240);
grami
lineto(320, 120);
getch();
closegraph();
return 0;
koda
PRO - MIL 93
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
#include <cstdlib> lineto(480, 450);
#include <iostream> lineto(480, 240);
#include <winbgim.h> lineto(160, 240);
lineto(320, 120);
using namespace std; lineto(480, 240);
getch();
int main() closegraph();
{ return 0;
int gdriver = 9; }
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
lineto(480, 450);
lineto(480, 240);
lineto(160, 240);
lineto(320, 120);
lineto(480, 240);
rectangle(400, 320, 480, 450);
rectangle(200, 260, 250, 340);
rectangle(300, 260, 350, 340);
circle (550, 90, 80);
line (0, 450, 640, 450);
getch();
closegraph();
return 0;
}
94 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Crtanje toke
Uvod
#include <cstdlib> jedna toka, kao u ovom primje-
#include <iostream> ru gdje smo tokom oznaili
#include <winbgim.h> sredite kruga.
program
Na prvi
using namespace std;
int main()
{
Varijable
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
Donoenje Grafika
cleardevice();
circle (320, 240, 220);
putpixel (320, 240, BLACK);
getch();
odluke
closegraph();
return 0;
}
Petlje
Naredba za crtanje
putpixel ( 320, 240, BLACK );
Polja
toke.
Obrada
teksta
640
Ovdje unosimo boju
toke koju odreuje-
380
mo na isti nain kao i
boju pozadine ili boju
Objekti
crte.
500
Saimanje Veliki pro-
grami
480
koda
PRO - MIL 95
Grafika
Ispis teksta
96 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
Upotrijebimo li ovu naredbu, #include <cstdlib>
#include <iostream>
tekst e se ispisati unutar
#include <winbgim.h>
Uvod
grafikog prozora.
using namespace std;
program
Na prvi
int main()
{
int gdriver = 9;
int gmode = 2;
Varijable
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
outtext ("Ovo je krug.");
Donoenje Grafika
circle (320, 240, 220);
getch();
closegraph();
return 0;
odluke
}
Petlje
#include <cstdlib> Naredbu za odreivanje pozici-
#include <iostream>
#include <winbgim.h> je poetka crte moemo iskori-
Polja
stiti za odreivanje poetka
using namespace std;
teksta.
int main()
Obrada
{
teksta
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
Objekti
setcolor(BLACK);
cleardevice();
moveto (320, 240);
outtext ("Ovo je krug.");
Saimanje Veliki pro-
grami
PRO - MIL 97
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h> Naredba outtextxy objedi-
njuje naredbu za odreivanje
using namespace std; pozicije teksta i naredbu za
ispis teksta.
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
outtextxy (320, 240, "Ovo je krug.");
circle (320, 240, 220);
getch();
closegraph();
return 0;
}
640
240
480
98 PRO - MIL
C++ programiranje za apsolutne poetnike
Sadraj
#include <cstdlib>
#include <iostream> Naredbom settextstyle mo-
Uvod
#include <winbgim.h> emo mijenjati oblik i veliinu
slova te smjer ispisa teksta.
using namespace std;
Stavljamo je prije naredbe za
program
Na prvi
int main()
ispis teksta.
{
int gdriver = 9;
int gmode = 2;
Varijable
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
settextstyle (9, HORIZ_DIR, 1);
Donoenje Grafika
outtextxy (320, 240, "Ovo je krug.");
circle (320, 240, 220);
getch();
closegraph();
odluke
return 0;
}
Petlje
Naredba za odreivanje veliine i oblika slova te smjera ispisa.
Polja
settextstyle ( 9, HORIZ_DIR, 1 );
Obrada
teksta
Smjer teksta:
Saimanje Veliki pro-
grami
PRO - MIL 99
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
settextstyle(9, HORIZ_DIR, 1); Pogledajmo primjer prom-
outtextxy(320, 200, "Ovo je krug."); jene veliine slova.
settextstyle(9, HORIZ_DIR, 2);
outtextxy(320, 240, "Ovo je krug.");
settextstyle(9, HORIZ_DIR, 3);
outtextxy(320, 280, "Ovo je krug.");
settextstyle(9, HORIZ_DIR, 4); #include <cstdlib>
outtextxy(320, 320, "Ovo je krug.");
#include <iostream>
getch();
#include <winbgim.h>
closegraph();
return 0; using namespace std;
}
int main()
{
int gdriver = 9;
Pogledajmo primjer prom- int gmode = 2;
jene smjera ispisa teksta. initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
settextstyle(9, HORIZ_DIR, 1);
outtextxy(320, 240, "Ovo je krug.");
settextstyle(9, VERT_DIR, 1);
outtextxy(300, 240, "Ovo je krug.");
settextstyle(9, -VERT_DIR, 1);
outtextxy(500, 240, "Ovo je krug.");
getch();
closegraph();
return 0;
}
Sadraj
#include <cstdlib> Pogledajmo primjer promjene
#include <iostream> oblika slova.
Uvod
#include <winbgim.h>
program
Na prvi
int main()
{
int gdriver = 9;
int gmode = 2;
Varijable
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
Donoenje Grafika
settextstyle(0, HORIZ_DIR, 3);
outtextxy(320, 40, "Ovo je krug.");
settextstyle(1, HORIZ_DIR, 3);
outtextxy(320, 80, "Ovo je krug.");
odluke
settextstyle(2, HORIZ_DIR, 3);
outtextxy(320, 120, "Ovo je krug.");
settextstyle(3, HORIZ_DIR, 3);
outtextxy(320, 160, "Ovo je krug.");
settextstyle(4, HORIZ_DIR, 3);
Petlje
outtextxy(320, 200, "Ovo je krug.");
settextstyle(5, HORIZ_DIR, 3);
outtextxy(320, 240, "Ovo je krug.");
settextstyle(6, HORIZ_DIR, 3);
Polja
outtextxy(320, 280, "Ovo je krug.");
settextstyle(7, HORIZ_DIR, 3);
outtextxy(320, 320, "Ovo je krug.");
settextstyle(8, HORIZ_DIR, 3);
Obrada
teksta
}
koda grami
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
103
C++ programiranje za apsolutne poetnike
Donoenje odluke
Funkcije
Potencija na koju
rezultat = pow ( broj, potencija ); potenciramo.
Sadraj
Ovo je program za izra-
#include <cstdlib> un sinusa.
#include <iostream>
Uvod
#include <cmath> Ako ne znate to je to
sinus, nemojte se time
using namespace std; optereivati. To nije bitno
program
Na prvi
za razumijevanje C++
int main() programskog jezika.
{
float kut; Vano je uoiti da ova
float rezultat; funkcija veliinu kuta ne
Varijable
cout << "Kut u radijanima:" << endl; izraava stupnjevima ne-
cin >> kut; go radijanima.
cout << endl;
rezultat = sin(kut);
Donoenje Grafika
cout << "Sinus kuta je:" << endl;
cout << rezultat << endl;
cout << endl;
system("PAUSE");
return 0;
odluke
}
Ponekad je u programu
#include <cstdlib> potrebno negativan broj
#include <iostream> pretvoriti u pozitivan.
#include <cmath>
int main()
{
float broj;
float rezultat;
cout << "Unesite negativni broj:" << endl;
cin >> broj;
cout << endl;
rezultat = abs(broj);
cout << "Broj bez minusa:" << endl;
cout << rezultat << endl;
cout << endl;
system("PAUSE");
return 0;
}
Naredba za pretvaranje
Varijabla u koju spremamo broj koji
negativnog broja u poziti-
emo iz negativnog pretvoriti u poziti-
van broj.
van.
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <cmath>
program
Na prvi
using namespace std;
Pogledajmo program
int main() za vaenje kvadratnog
{ korijena.
Varijable
float broj;
float rezultat; to je to uope kvadrati
cout << "Unesite broj:" << endl; korijen?
cin >> broj;
cout << endl; Ako je 4 puta 4, odnos-
Donoenje Grafika
rezultat = sqrt(broj); no 4 na kvadrat, jedna-
cout << "Kvadratni korijen je:" << endl; ko 16, onda je kvadrat-
cout << rezultat << endl; ni korijen od 16 jedak
cout << endl; 4.
odluke
system("PAUSE");
return 0;
}
Varijabla u koju spremamo
Varijabla u koju spre- broj iji kvadratni korijen
Petlje
mamo rezultat. elimo izraunati.
Polja
tnog korijena.
rezultat = sqrt ( broj ); Obrada
teksta
besmisleni rezultat.
grami
Donoenje odluke
#include <cstdlib>
#include <iostream>
#include <cmath>
int main()
{
float broj; Ova inaica programa
float rezultat;
cout << "Unesite pozitivan broj." << endl; izraunava kvadratni
cin >> broj; korijen ako smo unijeli
cout << endl;
if (broj < 0) pozitivan broj ili nas
{ obavjetava da je une-
cout << "Broj je negativan!" << endl;
} sen negativan broj ako
else unesemo negativan
{
rezultat = sqrt(broj); broj.
cout << "Kvadratni korijen je:" << endl;
cout << rezultat;
cout << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Pogledajmo bitne dijelo-
#include <cstdlib> ve naeg programa.
#include <iostream>
Uvod
#include <cmath>
program
Na prvi
int main()
{ rama
Varijable
Formiranje varijabli i
unos broja iz kojeg e-
float broj; mo vaditi kvadratni kori-
float rezultat; jen.
cout << "Unesite pozitivan broj." << endl; Izvodi se prilikom sva-
Donoenje Grafika
cin >> broj; kog pokretanja progra-
cout << endl; ma.
Broj nula.
odluke
Naredbom if ispitujemo
if (broj < 0) je li sadraj varijable ma-
nji od nule.
Petlje
{
cout << "Broj je negativan!" << endl; Ovaj dio programa izvo-
} di se samo ako je sadr-
aj varijable broj manji
Polja
od nule.
else
Obrada
teksta
Svi programi koje smo do sada vidjeli izvodili su se redom od prve do posljed-
nje naredbe. U sluaju programa za vaenje kvadratnog korijena to nam ne
odgovara jer elimo da program na jedan nain reagira ako unesemo poziti-
van broj, a na drugi nain ako unesemo negativan.
Ako unesemo pozitivan broj, izraunat emo kvadratni korijen i neemo ispisi-
vati obavijest da je broj negativan, a ako unesemo negativan broj, ispisat e-
mo obavijest da je broj negativan i neemo raunati kvadratni korijen, budui
da iz negativnog broja nije mogue izraunati kvadratni korijen.
Sadraj
Da bismo lake shvatili nain koritenja if ... else naredbi, napravit emo niz
programa. Ti programi nee raditi nita osobito korisno, ve e im jedina svrha
biti uvjebavanje pisanja programa unutar kojih raunalo donosi odluku.
Uvod
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
using namespace std;
int main()
{
Donoenje Grafika
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
cout << endl;
if (broj > 0)
odluke
{
cout << "Broj je veci od nule." << endl;
}
else Ovaj program samo
Petlje
{
ispituje je li unesen
cout << "Broj nije veci od nule." << endl;
} broj vei od nule.
cout << endl;
system("PAUSE");
return 0; Ako je broj vei od Polja
}
nule, izvodi se dio
programa koji ispisu-
Obrada
teksta
#include <cstdlib>
#include <iostream>
Ako je odgovor na pitanje
using namespace std;
je li sadraj varijable broj
int main()
jednak nuli DA, izvrit e
{
float broj; se ovaj dio programa.
cout << "Unesite broj." << endl;
Ispisat e se poruka Broj
cin >> broj;
cout << endl; je jednak nuli.
if (broj == 0)
{ Ako je odgovor na pitanje
cout << "Broj je jednak nuli." << endl;
je li sadraj varijable broj
}
else jednak nuli NE, izvrit e
{
se ovaj dio programa.
cout << "Broj nije jednak nuli." << endl;
} Ispisat e se poruka Broj
cout << endl;
nije jednak nuli.
system("PAUSE");
return 0;
}
Sadraj
Uvod
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
using namespace std;
int main()
{
float broj;
Donoenje Grafika
cout << "Unesite broj." << endl; Vidjeli smo da moemo
cin >> broj;
cout << endl; ispitivati je li varijabla
if (broj < 100) vea, manja ili jednaka
odluke
{
cout << "Broj je manji od sto." << endl; nekom broju.
} U dosadanjim primje-
else
{ rima to je bio broj nula,
Petlje
cout << "Broj nije manji od sto." << endl; ali to moe biti bilo koji
}
cout << endl; broj, npr. broj 100 kao
system("PAUSE"); to je to sluaj u ovom
Polja
return 0;
} primjeru. Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
#include <cstdlib>
#include <iostream>
int main()
{ Ovdje ispitujemo jesu li sa-
float prvi; draji dviju varijabli u koje
float drugi;
cout << "Unesite prvi broj." << endl; smo prethodno unijeli broje-
cin >> prvi; ve jednaki.
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> drugi; Ako unesemo jednake bro-
cout << endl;
if (prvi == drugi) jeve ispisat, e se obavijest
{
Brojevi su jednaki.
cout << "Brojevi su jednaki." << endl;
}
else Ako unesemo razliite, ispi-
{
cout << "Brojevi su razliciti." << endl; sat e se obavijest Brojevi
}
su razliiti.
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
U ovom primjeru ispitujemo je
li sadraj varijable prvi manji
od sadraja varijable drugi.
Uvod
#include <cstdlib>
program
Na prvi
#include <iostream>
Varijable
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
Donoenje Grafika
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> drugi;
odluke
cout << endl;
if (prvi < drugi)
{
cout << "Prvi broj je manji." << endl;
}
Petlje
else
{
cout << "Prvi broj nije manji." << endl;
}
Polja
cout << endl;
system("PAUSE");
return 0;
}
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
#include <cstdlib>
#include <iostream>
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl; Osim jednos-
cin >> drugi; tavnih ispitiva-
cout << endl; nja if nared-
if ((prvi < 5) && (drugi < 5)) bom, mogua
{ su i sloenija
cout << "Oba broja su manja od pet." << endl; ispitivanja.
}
else
{
cout << "Oba broja nisu manja od pet." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Prilikom formiranja sloenih uvjeta moramo paziti na raspored zagrada. Svaki
uvjet, prvi i drugi nalaze se unutar svojih zagrada, a svi zajedno nalaze se
Uvod
unutar jo jednog para zagrada.
program
Na prvi
if ( (prvi < 5) && (drugi < 5) )
Varijable
{
Donoenje Grafika
uvjet. Svaki od ta dva uvjeta moe biti zado-
} voljen ili nezadovoljen.
odluke
else
Mogue je da je sadraj varijable prvi manji
od 5, a mogue je i da nije. Isto tako, mogu-
{
e je da je sadraj varijable drugi manji od
Petlje
sadraj b 5, a mogue je i da nije.
}
Polja
Postavlja se pitanje u kojem sluaju e se
izvravati sadraj a, a u kojem sluaju sadr-
aj b.
Obrada
teksta
#include <cstdlib>
#include <iostream>
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl; Ako umjesto ozna-
cin >> drugi; ka && stavimo
cout << endl; oznake || ukupni
if ((prvi < 5) || (drugi < 5)) uvjet bit e zado-
{ voljen ako je ba-
cout << "Barem jedan je manji od 5." << endl; rem jedan od dva
} uvjeta zadovoljen.
else
{
cout << "Niti jedan nije manji od 5." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Ovdje moemo vidjeti primjere jednostavnih ispitivanja na temelju kojih rau-
nalo donosi odluku koji dio programa e se izvoditi, a koji preskoiti.
Uvod
Ovo su samo neki primjeri, dok je broj moguih kombinacija praktiki neog-
ranien. Bilo koju varijablu koju koristimo u programu moemo usporediti s
bilo kojim brojem.
program
Na prvi
Isto tako bilo koje dvije varijable koje se koriste u programu moemo meu-
sobno usporeivati.
Varijable
Primjeri jednostavnih ispitivanja
Donoenje Grafika
if (broj < 0) Ispitujemo je li sadraj varijable broj manji od broja nula.
odluke
if (broj > 0) Ispitujemo je li sadraj varijable broj vei od broja nula.
Petlje
Ispitujemo je li sadraj varijable broj manji od broja pede-
if (broj < 50)
set.
if (broj > 50) Ispitujemo je li sadraj varijable broj vei od broja pedeset. Polja
Obrada
teksta
jable drugi.
Simbol && izmeu dva uvjeta znai da oba uvjeta moraju biti zadovoljena da
bi bio zadovoljen ukupni uvjet.
Sadraj
#include <cstdlib>
Uvod
#include <iostream>
program
Na prvi
int main()
{
float prvi;
float drugi;
Varijable
float treci;
cout << "Unesite prvi broj." <<
endl;
cin >> prvi; Ovdje vidimo primjer pro-
Donoenje Grafika
cout << "Unesite drugi broj." << endl;
cin >> drugi; grama koji moemo isko-
cout << "Unesite treci broj." << endl; ristiti za isprobavanje
cin >> treci;
if (((prvi < 5) || (drugi < 5)) && (treci < 5)) kombinacija s prethodne
odluke
{ stranice.
cout << "DA" << endl;
}
else U ovom sluaju ukupni
Petlje
{
cout << "NE" << endl; uvjet je ispunjen ako je
} prvi broj manji od 5 ili ako
cout << endl;
system("PAUSE"); je drugi broj manji od 5 ili
return 0; ako su oba manja od 5 i Polja
}
ako je trei broj manji od
Obrada
5.
teksta
#include <cstdlib>
#include <iostream>
int main()
{
float broj; Osim to moemo u pro-
cout << "Unesite broj." << endl; gramu imati veoma sloe-
cin >> broj; na ispitivanja unutar if
if (broj < 0) naredbe, mogue je jed-
{ nu if naredbu staviti unu-
cout << "Broj je manji od 0." << endl; tar druge if naredbe.
}
else To je nuno ako elimo
{ ispitati vie stvari, npr. je
if (broj > 0) li neki broj vei od nule ili
{ jednak nuli ili je manji od
cout << "Broj je veci od 0." << endl; nule. Takvo ispitivanje ne
} moemo napraviti s jed-
else nom if naredbom, nego
{ su nune dvije if naredbe.
cout << "Broj je 0." << endl;
} Pogledajmo ovaj prog-
} ram.
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Pogledamo strukturu
#include <cstdlib> programa.
Uvod
#include <iostream>
program
Na prvi
Poetak programa.
int main()
{
float broj;
cout << "Unesite broj." << endl;
Varijable
cin >> broj; Prva if naredba. Ispitu-
je je li broj manji od 0.
if (broj < 0)
Donoenje Grafika
{ Ako je uneseni broj
cout << "Broj je manji od 0." << endl; manji od 0, izvodi se
} ovaj dio.
odluke
else
{
if (broj > 0) Ako uneseni broj nije
manji od 0, izvodi se
Petlje
{ ovaj dio. Unutar ovog
cout << "Broj je veci od 0." << endl; dijela nalazi se druga
} if naredba.
Polja
else
Ako je uneseni broj
{ vei od 0, izvodi se
cout << "Broj je 0." << endl; ovaj dio.
Obrada
teksta
}
Ako uneseni broj nije
Objekti
vei od 0, izvodi se
cout << endl; ovaj dio.
system("PAUSE");
return 0; Ako uneseni broj nije
Saimanje Veliki pro-
} ni vei ni manji od
grami
Kraj programa.
Sadraj
Pogledajmo strukturu
uvlaenja redova.
#include <cstdlib>
Uvod
#include <iostream>
program
Na prvi
int main() poetak programa i dvije
{ glavne vitiaste zagrade.
float broj;
Varijable
cout << "Unesite broj." << endl;
cin >> broj; Sadraj unutar glavnih
vitiastih zagrada uvlai
se u desnu stranu.
if (broj < 0)
Donoenje Grafika
Na toj razini pie se
{ veina jednostavnih
cout << "Broj je manji od 0." << endl; naredbi.
}
odluke
else
Sadraji unutar if na-
{ redbe dodatno se pomi-
if (broj > 0) u u desnu stranu.
Petlje
{ To nam pomae da
cout << "Broj je veci od 0." << endl; lake uoimo gdje poi-
} nje, a gdje zavrava if
Polja
naredba.
else
{
Obrada
teksta
} ga if naredba te poma-
e da njen sadraj lak-
e razlikujemo od sadr-
aja prve if naredbe.
koda
Switch naredba
#include <cstdlib>
#include <iostream>
int main()
{
float a;
float b; If naredba nam
int od; omoguuje gra-
cout << "Unesite 1. broj:" << endl; nanje na dvije
cin >> a; grane. Jedna e
cout << "Unesite 2. broj:" << endl; se izvriti ako je
cin >> b; uvjet zadovo-
cout << "Brojeve cemo:" << endl; ljen, a druga ako
cout << "1 - zbrojiti" << endl; uvjet nije zado-
cout << "2 - oduzeti" << endl; voljen.
cout << "3 - mnoziti" << endl;
cout << "4 - dijeliti" << endl; Primjena nared-
cin >> od; be if nije elegan-
switch (od) tna ako se u
{ programu javi
case 1: potreba za gra-
cout << a << " + " << b << " = " << a + b << endl; nanjem u vie
break; od dvije grane.
case 2:
cout << a << " - " << b << " = " << a - b << endl;
break;
U ovom progra-
case 3:
mu biramo jed-
cout << a << " x " << b << " = " << a * b << endl;
nu od etiri ra-
break;
unske operaci-
case 4:
je.
cout << a << " : " << b << " = " << a / b << endl;
break;
Program bismo
default:
mogli realizirati i
cout << "Morate unijeti 1,2,3 ili 4." << endl;
uporabom vie
}
if naredbi, ali
cout << endl;
daleko je ele-
system("PAUSE");
gantniji ako upo-
return 0;
trijebimo switch
}
naredbu.
Sadraj
Poetak switch naredbe. Ovdje se nalazi int varijabla. Grana-
nje se vri na temelju broja koji se
nalazi u varijabli. Int tip je obvezan.
Uvod
Naredbom case 1: zapoinje dio programa koji
switch (od)
program
Na prvi
e se izvriti ako se u varijabli od nalazi broj 1.
Varijable
Naredbom break
case 1: zavrava case 1:
naredba.
Donoenje Grafika
sati. Pokrenimo
program i promat-
break; rajmo posljedice.
odluke
case 2:
cout << "Drugi izbor." << endl;
break;
Petlje
Naredbom case 2:
zapoinje dio pro-
case 3: grama koji e se
izvriti ako je sadr-
cout << "Treci izbor." << endl; aj varijable od
Polja
break; broj 2.
Na temelju sline
case 4: logike biraju se
Obrada
teksta
}
Ovaj dio izvrava se ako ni jedan case uvjet
nije zadovoljen, dakle ako u varijabli od nije bio
koda
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
129
C++ programiranje za apsolutne poetnike
Petlje
For petlja
Sadraj
Kljuna naredba u novoj inaici programa je for naredba. Omoguuje nam
izvravanje dijela programa vie puta. To viestruko ponavljanje dijela prog-
rama naziva se programska petlja. Slino kao if naredba, i for naredba je
Uvod
veoma sloena i protee se kroz vie redova programa.
program
Na prvi
Ovdje se definira poetna Petlja e se vrtjeti, odnosno petlja e po-
vrijednost varijable koju navljati dio programa, tako dugo dok je
Varijable
koristi for naredba i koju ovaj uvjet zadovoljen; u naem sluaju,
prije for naredbe moramo tako dugo dok je sadraj varijable x manji
formirati. od 365.
U naem sluaju poetna Kad uvjet vie nije zadovoljen; tj. kad x vie
Donoenje Grafika
vrijednost varijable x je ne bude manji od 365, program e nastavit
260. izvoenje od prve naredbe nakon druge
vitiaste zagrade.
odluke
for ( x = 260 ; x < 365 ; x=x+5 )
Petlje
{ Ovdje odreujemo na-
in na koji e se vrijed-
circle ( x, 240, 60 ); Polja
nost varijable x mije-
njati.
spremiti u varijablu x.
Udaljenost sredita kruga od lije-
vog ruba nije odreena brojem,
nego vrijednou varijable x.
Saimanje Veliki pro-
int main()
{
Sadraj
Nemojmo se obeshrabriti ako nam trenutno nije previe jasno ni kako for
naredba radi, ni emu bi to trebalo sluiti. Na poetku su takve nedoumice
normalne i nipoto nisu dokaz da nismo talentirani za programiranje.
Uvod
Takve nedoumice prevladavaju se tako da napiemo odreenu koliinu pro-
grama jer emo jedino na taj nain do kraja shvatiti kako for naredba radi i
emu slui.
program
Na prvi
Drugaiji je problem ako nam se ne da pisati programe. Onda bismo doista
mogli konstatirati da programiranje nije za nas i trebali bismo se pokuati
baviti neim intelektualno manje zahtjevnim, npr. nogometom ili politikom.
Varijable
Ovaj e nam program po-
#include <cstdlib> moi da lake shvatimo
Donoenje Grafika
#include <iostream> funkcioniranje if naredbe.
#include <winbgim.h> Vrijednost varijable x mije-
njat e se od 0 do 9 po 1.
using namespace std;
odluke
Jedino to ovaj program
int main() radi jest ispisivanje sadraj
{ varijable x.
int x;
To nam omoguuje lako
Petlje
cout << "Prije for naredbe." << endl;
for (x = 0; x < 9; x = x + 1 ) opaanje kako se sadraj
{ varijable x mijenja, te koji
cout << x << endl; dio programa se ponavlja i
} koliko puta.
Polja
cout << "Nakon for naredbe." << endl;
cout << endl; Unoenjem varijacija u taj
system("PAUSE"); program najlake emo
return 0; shvatiti for naredbu.
Obrada
teksta
}
Objekti
Vidimo da se ponavlja
Saimanje Veliki pro-
lja se.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int x;
cout << "Prije for naredbe." << endl;
for (x = 10; x < 29; x = x + 2 )
{
cout << x << endl;
}
cout << "Nakon for naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
#include <winbgim.h>
int main()
Varijable
{
int x;
cout << "Prije for naredbe." << endl;
for (x = 28; x > 9; x = x - 2 )
Donoenje Grafika
{
cout << x << endl; For naredba moe brojiti i
} unatrag.
cout << "Nakon for naredbe." << endl;
cout << endl; U ovom sluaju vrijednost
odluke
system("PAUSE"); varijable x mijenja se od 28
return 0; do 9 po 2.
}
Petlje
U for naredbi mogu se koristi- #include <cstdlib>
ti i negativni brojevi. #include <iostream>
#include <winbgim.h> Polja
using namespace std;
Obrada
teksta
int main()
{
int x;
cout << "Prije for naredbe." << endl;
Objekti
#include <cstdlib>
#include <iostream> Prilikom formiranja for nared-
#include <winbgim.h> be mogue je napraviti greku
koja se naziva mrtva petlja.
using namespace std;
Do te greke dolazi kad uvjete
int main() za kraj petlje tako formuliramo
{ da se oni nikad nee ispuniti,
int x; pa e se petlja vjeno izvoditi.
cout << "Prije for naredbe." << endl;
for (x = 18; x > -9; x = x + 2 ) U ovom primjeru poetna vri-
{ jednost je 18. Ta poetna vri-
cout << x << endl; jednost uveava se za 2, a
} petlja e se ponavljati tako
cout << "Nakon for naredbe." << endl; dugo dok je x vei od 9.
cout << endl;
system("PAUSE"); Ako 18 uveavamo za 2, x e
return 0; uvijek biti vei od 9 i petlja se
} nikad nee prekinuti.
int main()
{
int x;
cout << "Prije for naredbe." << endl;
for (x = 0; x < 9; x = x - 1 )
{
cout << x << endl;
}
cout << "Nakon for naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Naredba for ne postoji zato da bi se niz brojeva ispisao na zaslon raunala,
nego zato da bi se u programu postigli odreeni efekti.
Uvod
Iako to nije uvijek sluaj, najee se za postizanje eljenih ciljeva koristi va-
rijabla petlje. Pogledajmo nekoliko primjera.
program
Na prvi
#include <cstdlib>
#include <iostream> Ovaj primjer slian je primjeru
Varijable
#include <winbgim.h> na poetku ovog poglavlja.
using namespace std; Razlika je u tome to su u ovom
sluaju drugaije poetna i kraj-
int main()
Donoenje Grafika
nja vrijednost x varijable, pa
{ smo dobili drugaiji niz krugova.
int gdriver = 9;
int gmode = 2; U ovom sluaju vrijednost varija-
int x; ble x mijenja se od 60 do 580 po
odluke
initgraph(&gdriver, &gmode, ""); 5.
setbkcolor (WHITE);
setcolor (BLACK); Pokuamo sami mijenjati vrijed-
cleardevice(); nosti unutar for naredbe i pro-
for (x = 60; x < 580; x = x + 5 )
Petlje
matrajmo kakve efekte e izaz-
{ vati te promjene.
circle(x,240,60);
}
getch();
Polja
closegraph();
return 0;
}
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice(); Varijablu x moemo staviti umjesto
for (x = 60; x < 390; x = x + 5 ) broja koji odreuje udaljenost sredi-
{
ta od gornjeg ruba, pa e se krugovi
circle(320,x,60);
} crtati od gore prema dolje.
getch();
closegraph();
return 0;
} #include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
#include <cstdlib>
#include <iostream>
Uvod
#include <winbgim.h>
program
Na prvi
int main()
{
int gdriver = 9;
int gmode = 2;
Varijable
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
Donoenje Grafika
for (x = 20; x < 210; x = x + 10 ) Osim pozicije sredita kruga,
{ varijablom x moemo mijenjati
circle(320,240,x);
} polumjer kruga.
odluke
getch();
closegraph();
return 0;
}
#include <cstdlib>
Petlje
#include <iostream>
#include <winbgim.h>
Polja
Na slian nain moemo crtati ni-
zove drugih geometrijskih oblika, int main()
npr. crta. {
int gdriver = 9;
Obrada
teksta
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
Objekti
setcolor (BLACK);
cleardevice();
for (x = 10; x < 640; x = x + 10 )
{
Saimanje Veliki pro-
}
getch();
closegraph();
return 0;
koda
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice(); Ovo je primjer programa koji crta
for (x = 10; x < 640; x = x + 30 ) niz pravokutnika.
{
rectangle (x, 20, x+20, 380);
}
getch();
closegraph();
return 0; #include <cstdlib>
} #include <iostream>
#include <winbgim.h>
Sadraj
Pogledajmo bitne dijelove ovog programa.
Uvod
Za razliku od dosadanjih primje-
#include <cstdlib> ra, u ovom formiramo jo jednu
#include <iostream> varijablu koju smo nazvali r.
program
Na prvi
#include <winbgim.h>
int main()
Varijable
Prije for naredbe u varijablu r spre-
{
mimo poetnu vrijednost polumje-
int gdriver = 9;
ra kruga. U naem sluaju spremili
int gmode = 2; smo broj 20.
int x;
Donoenje Grafika
int r;
odluke
varijable x o 20 do 475 po 15.
setcolor (BLACK);
cleardevice();
r = 20;
Petlje
for (x = 20; x < 475; x = x + 15 ) U naredbi za crtanje kruga upotri-
{ jebili smo dvije varijable.
}
teksta
getch();
closegraph();
return 0;
}
Objekti
+ 15 pokuajmo staviti x = x + 5.
Animacija
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
Ovom inaicom programa dobit int gdriver = 9;
emo privid kretanja pravokutnika. int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 620; x = x + 1 )
Pravokutnik koji se kree {
na zaslonu raunala. cleardevice();
rectangle (x, 20, x+20, 60);
}
getch();
Ovom naredbom briemo ekran, a closegraph();
time i pravokutnik na staroj poziciji. return 0;
}
Sadraj
#include <cstdlib>
#include <iostream>
Uvod
#include <winbgim.h>
program
Na prvi
int main()
{
int gdriver = 9;
int gmode = 2;
Varijable
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice(); Sve grafike elemente koje smo
Donoenje Grafika
for (x = 10; x < 200; x = x + 1 ) do sada mijenjali moemo ani-
{ mirati.
cleardevice(); U ovom programu animiramo
circle (320, 240, x); irenje kruga.
odluke
}
getch();
closegraph();
return 0; #include <cstdlib>
} #include <iostream>
Petlje
#include <winbgim.h>
Polja
int main()
U ovom primjeru animiramo krug {
koji pada od gornjeg prema do- int gdriver = 9;
njem rubu . int gmode = 2;
Obrada
teksta
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
Objekti
cleardevice();
for (x = 10; x < 465; x = x + 1 )
{
cleardevice();
Saimanje Veliki pro-
}
getch();
closegraph();
Pokuajmo sami smi- return 0;
koda
Petlja u petlji
Sadraj
Analiziranje ovog
#include <cstdlib> programa pomoi
#include <iostream> e nam da u pot-
Uvod
punosti razumije-
using namespace std; mo nain funkcio-
niranja petlje unu-
int main() tar petlje.
program
Na prvi
{
int x; Pri tome nismo
int r; ogranieni na to
cout << "Prije petlje." << endl; da moemo staviti
Varijable
for (x = 0; x < 2; x = x + 1 ) jednu petlju unutar
{ petlje. Mogue je
cout << "Vanjska petlja. x = " << x << endl; unutar petlje staviti
for (r = 0; r < 3; r = r + 1) petlju, a unutar te
{ petlje jo jednu
Donoenje Grafika
cout << "Nutarnja petlja. r = " << r << endl; petlju i tako petlje
} dodavati u skladu
} s ciljevima koje
cout << "Nakon petlje." << endl; elimo postii.
odluke
cout << endl;
system("PAUSE");
return 0;
}
nala.
Niz petlji
Sadraj
Dozvoljene i nedozvoljene kombinacije petlji
Uvod
{
for (r = 5; r < 31; r = r + 5) Petlje se mogu na-
program
Na prvi
{ laziti jedna unutar
druge.
circle (x, 240, r);
}
Varijable
}
Donoenje Grafika
for (x = 465; x < 100; x = x - 1)
{
circle (320, x, 10);
odluke
} Petlje se mogu na-
laziti jedna iza dru-
ge
for (r = 10; r < 91; y = y + 1)
Petlje
{
circle (320, x, r);
}
Polja
Obrada
teksta
U ovom sluaju
for (x = 465; x < 100; x = x - 1)
druga for naredba
{
Objekti
Ovakva ispreplete-
grami
na.
While petlja
U emu je razlika?
Sadraj
Kljuna naredba u novoj inaici programa je while naredba. Logika uporabe
te naredbe slina je logici uporabe for naredbe i ako bismo se potrudili svaki
program realiziran for naredbom mogli bismo realizirati while naredbom i
Uvod
svaki program realiziran while naredbom mogli bismo realizirati for nared-
bom.
program
Na prvi
Zato to se neke stvari mogu lake realizirati for naredbom, a neke while
naredbom. Pogledajmo elemente while naredbe.
Varijable
Prije naredbe while mo-
Ovdje se unutar zagrada nalazi uvjet koji
Donoenje Grafika
ramo varijabli koju e
while naredba koristiti while naredba ispituje. Uvjeti se formiraju
dati neku poetnu vrije-
po istoj logici kao i kod for naredbe.
dnost.
odluke
Ako je uvjet zadovoljen, izvrit e se na-
redbe unutar vitiastih zagrada, a nakon
a = 1; toga se raunalo vraa na while naredbu i
Petlje
ponovo ispituje je li uvjet zadovoljen.
while (a == 1)
Polja
Ako jest, ponovo se izvode naredbe unu-
{ tar vitiastih zagrada.
cin >> a;
Obrada
teksta
nost.
odgovor = 1;
Naredba while ispituje je li sadraj
varijable odgovor jednak broju 1.
Sadraj
Varijablu koju e koristiti while naredba moramo prije while naredbe
formirati i moramo joj dati odgovarajuu poetnu vrijednost.
Uvod
Zato je u naem sluaju odgovarajua poetna vrijednost 1?
program
Na prvi
Ako bi vrijednost varijable odgovor bila npr. 2, nakon while naredbe
program bi skoio na ovu naredbu i sadraj unutar navodnika ne bi se
izvravao.
Varijable
#include <cstdlib>
Donoenje Grafika
#include <iostream>
int main()
odluke
{
int odgovor;
odgovor = 1;
cout << "Prije while naredbe." << endl;
Petlje
while (odgovor == 1)
{
cout << "Prvi red bloka ponavljanja" << endl;
cout << "1 = nastavak ili 2 = kraj." << endl;
cin >> odgovor;
Polja
cout << "Zadnji red bloka ponavljanja" << endl;
}
cout << "Nakon while naredbe." << endl;
cout << endl;
Obrada
teksta
system("PAUSE");
return 0;
}
Objekti
ko tipkovnice unosimo
novu vrijednost varijable
odgovor i time biramo ho-
emo li petlju ponoviti ili
emo izai iz programa.
koda
Da bi to bilo mogue, upotrijebili smo novi tip varijable, varijablu char tipa u
koju moemo spremiti jedno slovo.
#include <cstdlib>
#include <iostream>
int main()
{
int broj;
int kvadrat;
char odgovor;
odgovor = 'd';
while (odgovor != 'n')
{
cout << "Unesite broj" << endl;
cin >> broj;
kvadrat = broj * broj;
cout << "Kvadrat unesenog broja je:" << endl;
cout << kvadrat;
cout << endl;
cout << "Zelite li ponovo (d/n)?" << endl;
cin >> odgovor;
}
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Pogledajmo poblie dijelove programa. Uobiajeni poetak programa.
Uvod
Formiranje varijabli koje emo koristiti
#include <cstdlib>
program
Na prvi
u programu.
#include <iostream>
Varijable
int main() moemo spremiti jedno slovo.
{
Nakon formiranja u varijablu odgo-
int broj; vor spremamo slovo d.
int kvadrat;
Donoenje Grafika
char odgovor;
while nared-
odgovor = 'd';
bom ispituje-
mo je li sadr-
odluke
while (odgovor != 'n')
aj varijable
odgovor razli-
{
it od slova n.
cout << "Unesite broj" << endl;
Petlje
Ako jest, izvo-
cin >> broj;
di se sadraj
kvadrat = broj * broj;
unutar vitias-
cout << "Kvadrat unesenog broja je:" << endl;
tih zagrada.
cout << kvadrat;
Polja
cout << endl;
unava kvad-
} rat unesenog
broja.
Objekti
#include <cstdlib>
#include <iostream> While naredbu moemo iskoris-
#include <winbgim.h> titi i za viestruko pokretanje
int main()
{ Mali krug kree se od gore pre-
int gdriver = 9; ma dolje, a zatim nas raunalo
int gmode = 2;
int x; pita elimo li ponoviti animaciju.
char odgovor;
odgovor = 'd';
initgraph(&gdriver, &gmode, ""); U ovom programu koristimo dvi-
setbkcolor (WHITE); je razliite vrste petlji.
setcolor (BLACK);
while (odgovor != 'n')
{ While naredbom ponavlja se
cleardevice();
for (x = 10; x < 465; x = x + 1 ) animacija, a for naredbom, koja
{ se nalazi unutar while petlje,
cleardevice();
circle (320, x, 10); animira se kretanje kruga.
}
settextstyle(9, HORIZ_DIR, 1);
outtextxy(20, 20, "elite li ponovo (d/n)?"); U grafikom prozoru
odgovor = getch(); za unos slova u vari-
} jablu odgovor ne
closegraph(); koristi se cin nared-
return 0; ba, nego getch() na-
} redba.
Sadraj
Pogledajmo dijelove naeg programa.
Uvod
#include <cstdlib>
#include <iostream> Uobiajeni poetak programa.
#include <winbgim.h>
program
Na prvi
using namespace std; Formiranje varijabli.
int main()
{
Varijable
Formiranje varijable odgovor. Ta
varijabla je char tipa i koristit e je
int gdriver = 9; while petlja unutar koje se nalazi
int gmode = 2; program za animaciju.
int x;
Donoenje Grafika
Slui nam za biranje ponavljanja
char odgovor; animacije ili kraja programa. U vari-
odgovor = 'd'; jablu odgovor sprema se slovo d.
initgraph(&gdriver, &gmode, "");
odluke
setbkcolor (WHITE);
setcolor (BLACK);
Otvaranje grafikog
while (odgovor != 'n') prozora.
Petlje
{
Vanjska while petlja.
cleardevice();
closegraph();
return 0;
}
Kraj programa. Ovaj dio izvodi se kad
while naredba ustanovi da sadraj
koda
Umjesto:
int x; #include <cstdlib>
x =290; #include <iostream>
#include <winbgim.h>
moemo napisati
int x = 290; using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x = 290;
Umjesto: char odgovor = 'd';
char odgovor; initgraph(&gdriver, &gmode, "");
odgovor = d; setbkcolor (WHITE);
setcolor (BLACK);
moemo napisati cleardevice();
char odgovor = 'd'; while (odgovor != 'k')
{
rectangle(x, 432, x+60, 438);
odgovor = getch();
if (odgovor == 75)
{
x = x - 5;
Pravokutnik koji moe- }
mo pomicati u lijevu i if (odgovor == 77)
desnu stranu. {
x = x + 5;
}
cleardevice();
}
closegraph();
return 0;
}
Sadraj
Pogledajmo dijelove naeg programa.
Uvod
#include <cstdlib> Uobiajeni poetak programa,
#include <iostream> formiranje varijabli i otvaranje
#include <winbgim.h> grafikog prozora.
program
Na prvi
using namespace std;
Varijable
int gdriver = 9; se u ovoj while petlji.
int gmode = 2;
int x = 290; Ako pritisnemo tipku k prog-
char odgovor = 'd'; ram e izai iz petlje i naa
initgraph(&gdriver, &gmode, ""); igrica e se ugasiti.
Donoenje Grafika
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice(); Ovdje se crta pravokutnik koji
pomiemo.
odluke
while (odgovor != 'k')
{
Ovdje program ispituje koja
rectangle(x, 432, x+60, 438);
tipka je pritisnuta, a rezultat
Petlje
sprema u varijablu odgovor.
odgovor = getch();
if (odgovor == 75)
{ Ako pritisnemo lijevu strelicu, varija-
Polja
x = x - 5; bla x, koja odreuje udaljenost pra-
} vokutnika od lijeve strane, umanjit
e se za 5, pa e se pravokutnik
if (odgovor == 77) drugi put crtati pomaknut 5 toaka u
Obrada
teksta
{ lijevu stranu.
x = x + 5;
}
Ako pritisnemo desnu strelicu, varija-
Objekti
cleardevice();
bla x e se uveati za 5, pa e se
} pravokutnik drugi put crtati pomaknut
5 toaka u desnu stranu.
Saimanje Veliki pro-
closegraph();
grami
return 0;
} Naredbom za brisanje ekrana bri-
emo pravokutnik na staroj poziciji
da bismo ga nacrtali na novoj.
koda
Sadraj
Da bismo dobili primitivni program za crtanje, dovoljno je da u prethod-
nom programu maknemo naredbu za brisanje zaslona raunala.
Uvod
#include <cstdlib>
#include <iostream>
Varijablama x i y odreena je
#include <winbgim.h>
pozicija gornjeg lijevog ugla pra-
program
Na prvi
vokutnika. Varijabla x odreuje
using namespace std;
udaljenost od lijevog ruba, a
varijabla y od gornjeg ruba.
int main()
{
Varijable
Udaljenost donjeg desnog ugla
int gdriver = 9;
int gmode = 2; pravokutnika od lijevog ruba
int x = 290;
odreena je sa x + 60, a udalje-
int y = 220;
char odgovor = 'd'; nost donjeg desnog ugla od gor-
Donoenje Grafika
initgraph(&gdriver, &gmode, "");
njeg ruba odreena je sa y+5.
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice(); irina naeg pravokutnika je 60,
odluke
while (odgovor != 'k') a visina 5. (Pokuajmo promije-
{ niti te brojeve.)
rectangle(x, y, x+60, y+5);
odgovor = getch();
Petlje
if (odgovor == 75)
{
x = x - 5;
}
if (odgovor == 77)
Polja
{
x = x + 5;
}
if (odgovor == 72)
Obrada
teksta
{
y = y - 5;
}
if (odgovor == 80)
Objekti
{
y = y + 5;
} Ako ovu naredbu obriemo, pra-
cleardevice(); vokutnik e se crtati na novoj po-
Saimanje Veliki pro-
mo program.
int main()
{
int gdriver = 9;
int gmode = 2;
int x = 290;
int y = 220;
char odgovor = 'd';
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice(); Ovom naredbom ispisujemo jednu
while (odgovor != 'k') toku na zaslon raunala. Varijabla
{ x odreuje udaljenost toke od lije-
putpixel(x, y, BLACK); vog ruba, varijabla y od gornjeg ruba,
odgovor = getch(); a BLACK odreuje boju toke.
if (odgovor == 75)
{
x = x - 1;
}
if (odgovor == 77) elimo li dobiti punu crtu, toku mo-
{ ramo pomicati za 1.
x = x + 1;
} Pokuajmo umjesto 1 staviti 2 ili 5.
if (odgovor == 72)
{
y = y - 1;
}
if (odgovor == 80)
{
y = y + 1;
}
}
closegraph();
return 0;
}
Sadraj
Za crtanje moemo koristiti i krug.
Uvod
#include <cstdlib>
program
Na prvi
#include <iostream>
#include <winbgim.h>
Varijable
int main()
{
int gdriver = 9;
int gmode = 2;
Donoenje Grafika
int x = 290;
int y = 220;
char odgovor = 'd'; Ovom naredbom ispisujemo krug.
initgraph(&gdriver, &gmode, ""); Varijabla x odreuje udaljenost
sredita kruga od lijevog ruba,
odluke
setbkcolor (WHITE);
setcolor (BLACK); varijabla y udaljenost sredita od
cleardevice(); gornjeg ruba, a 20 je polumjer
while (odgovor != 'k') kruga.
{
Petlje
circle(x, y, 20);
odgovor = getch();
if (odgovor == 75)
{
Polja
x = x - 5; Broj 5 odreuje pomak novog sre-
} dita u odnosu na staro.
if (odgovor == 77)
{ Pokuajmo mijenjati taj broj.
Obrada
teksta
x = x + 5;
}
if (odgovor == 72)
{
Objekti
y = y - 5;
} Imajmo stalno na umu da emo
if (odgovor == 80) razumijevanje programa i vjeti-
{ nu pisanja vlastitih programa
stei jedino tako da svaki primjer
Saimanje Veliki pro-
y = y + 5;
grami
Sadraj
Miem moemo pokretati bilo koji grafiki ob-
jekt, npr. krug.
Uvod
#include <cstdlib>
#include <iostream> Poetak programa.
#include <winbgim.h>
program
Na prvi
using namespace std; Varijable kojima odreujemo tip
grafikog prozora.
int main()
{
Varijable
Otvaranje grafikog prozora.
int gdriver = 9;
int gmode = 2;
Donoenje Grafika
initgraph(&gdriver, &gmode, ""); Unutar while petlje stalno se
setbkcolor (WHITE); oitava pozicija pokazivaa
setcolor (BLACK); mia i crta se krug ije sredite
cleardevice(); odreuje poloaj pokazivaa
mia, a polumjer je 100.
odluke
while (!kbhit())
{ Petlja se izvodi tako dugo dok
circle(mousex(),mousey(),100); niti jedna tipka na tipkovnici
} nije pritisnuta.
Petlje
closegraph();
return 0; Kraj programa.
}
Polja
Obrada
teksta
dimenzija.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
Ako u prethodne programe doda- cleardevice();
mo naredbu za brisanje sadraja while (!kbhit())
grafikog prozora, dobit emo pro- {
gram koji nam omoguuje pomica- cleardevice();
nje objekta miem. circle(mousex(),mousey(),100);
}
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
while (!kbhit())
{
cleardevice();
line (mousex()+40, mousey(), mousex()-40, mousey());
line (mousex(), mousey()-40, mousex(), mousey()+40);
}
closegraph();
return 0; Na slian nain moemo miem
} pomicati neto drugo, npr. dvije
crte koje bi u igri mogle biti nian.
Sadraj
Nedostatak prethodnih programa bio je to se
ekran brie i objekt ponovo crta, bez obzira je li
Uvod
to potrebno ili nije, odnosno bez obzira je li
dolo do pomaka mia ili nije.
program
Na prvi
Ako nije dolo do pomaka mia, nema potrebe
objekt brisati i ponovo crtati.
Varijable
raunalima izazvati treperenje slike, to je veo-
ma neugodno.
Donoenje Grafika
voj poziciji jedino ako je dolo do pomicanja
mia.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
odluke
using namespace std; Ovom naredbom ispituje-
mo je li dolo do pomaka
int main() mia.
{
Petlje
int gdriver = 9; Sadraj unutar vitiastih
int gmode = 2; zagrada izvrit e se jedi-
initgraph(&gdriver, &gmode, ""); no ako je dolo do poma-
setbkcolor (WHITE); ka mia.
Polja
setcolor (BLACK);
cleardevice(); U tom sluaju obrisat e
while (!kbhit()) se sadraj grafikog pro-
{ zora i objekt e se nacrta-
Obrada
teksta
{
cleardevice();
Objekti
sati.
grami
}
closegraph(); Kad ovu naredbu ne bis-
return 0; mo upotrijebili, u progra-
} mu bi bilo mogue samo
koda
Osim to moemo oitati je li dolo do pomaka mia, moemo isto tako oitati je
li pritisnuta neka tipka na miu. Ovaj program e nam omoguiti da pritiskom na
lijevu tipku mia nacrtamo objekt u grafikom prozoru.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, ""); Ovom naredbom ispituje-
setbkcolor (WHITE); mo je li pritisnuta lijeva
setcolor (BLACK); tipka mia.
cleardevice();
while (!kbhit()) Ako jest izvodi se sadraj
{ unutar vitiastih zagrada.
if (ismouseclick(WM_LBUTTONDOWN))
{
cleardevice();
circle(mousex(),mousey(),100);
} Ovom naredbom briemo
clearmouseclick(WM_LBUTTONDOWN); rezultat oitavanja lijeve
} tipke na miu.
closegraph();
return 0; Novo oitavanje je mogu-
} e jedino nakon brisanja
starog oitavanja.
Sadraj
OITAVANJE MIA
Uvod
ismouseclick(WM_MOUSEMOVE) Oitavanje kretanja mia.
program
Na prvi
clearmouseclick(WM_MOUSEMOVE) Brisanje oitavanja kretanja mia.
Varijable
clearmouseclick(WM_LBUTTONDOWN); Brisanje oitavanja lijevog klika.
Donoenje Grafika
ismouseclick(WM_LBUTTONDBLCLK) Oitavanje duplog lijevog klika.
odluke
clearmouseclick(WM_LBUTTONDBLCLK)
klika.
Petlje
clearmouseclick(WM_RBUTTONDOWN) Brisanje oitavanja desnog klika.
clearmouseclick(WM_RBUTTONDBLCLK)
nog klika.
njeg klika.
Do while petlja
Sadraj
Usporedimo strukture while petlje i do while petlje.
a = 1;
Uvod
Odreivanje vrijednosti varijable koju e koristiti
while naredba.
while (a == 1)
program
Na prvi
Ispitivanje je li uvjet zadovoljen, u naem slua-
{ ju, je li sadraj varijable a jednak broju 1.
Varijable
cin >> a;
Ovaj dio unutar vitiastih zagrada ponavlja se
dok je uvjet zadovoljen, u naem sluaju dok je
} sadraj varijable a jednak broju 1.
Donoenje Grafika
Petlja do while zapoinje odreivanjem vrijed-
nosti varijable koju e koristiti while naredba.
odluke
a = 1;
Ovaj tip petlje zapoinje naredbom do nakon
koje slijede vitiaste zagrade unutar kojih se
do
Petlje
nalazi dio programa koji se ponavlja dok je uv-
jet zadovoljen
{
Polja
Dio koji se ponavlja i u kojem mora postojati
cin >> a; mogunost promjene vrijednosti varijable a. Obrada
}
teksta
U emu je razlika izmeu ovih dviju petlji, osim oigledne razlike u nainu
grami
pisanja? Razlika je u tome to se sadraj while petlje nee izvesti niti jednom
ako uvjet nije zadovoljen jer se ispitivanje nalazi prije djela koji se ponavlja.
Sadraj do while petlje e se bez obzira na uvjet izvesti barem jednom jer se
najprije izvodi dio koji se ponavlja, a tek nakon toga ispituje se je li uvjet za-
koda
dovoljen.
#include <cstdlib>
#include <iostream>
int main()
{
int x;
for (x = 0; x < 11; x = x + 1)
{
cout << rand() << endl;
}
system("PAUSE");
return 0;
}
Sluajne brojeve generirat
emo naredbom rand().
Problem je u tome to e
ovako napisani program pri
svakom pokretanju generi-
rati iste sluajne brojeve.
Sadraj
Problem koji se sastoji u tome
da naredba rand(); uvijek gene-
rira isti niz brojeva rijeit emo
Uvod
naredbom srand(1);.
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
using namespace std;
int main()
{
Stavimo li naredbu srand(1) prije na-
int x;
Donoenje Grafika
redbe rand() postii emo da naredba
srand(1);
rand() generira neki niz brojeva.
for (x = 0; x < 11; x = x + 1)
{
Ako umjesto srand(1); stavimo srand
cout << rand() << endl;
(2); dobit emo neki drugi niz brojeva.
odluke
}
Pokuajmo i vidjet emo da emo za
system("PAUSE");
srand(3); dobit neki trei niz brojeva, a
return 0;
za srand(4); neki etvrti.
}
Petlje
Problem je u tome to emo za isti broj
unutar zagrade dobivati uvijek isti niz.
Dakle srand(6) davat e pri svakom
pokretanju isti niz brojeva, ali drugaiji
Polja
nego npr. srand(5). Oito bi bilo dobro
kad bismo na neki nain broj unutar
#include <cstdlib> zagrade mogli mijenjati.
#include <iostream>
Obrada
teksta
int main()
{
Objekti
int x;
srand(2);
for (x = 0; x < 11; x = x + 1)
Saimanje Veliki pro-
{
grami
Sadraj
#include <cstdlib> Stavimo li u naredbu srand(1); umjesto
#include <iostream> konkretnog broja jedan naredbu time
#include <ctime> (NULL) koja e u svakom trenutku gene-
Uvod
rirati drugaiji broj, naredba rand() pri
using namespace std; svakom e pokretanju generirati drugaiji
brojani niz. Sada smo ve blizu onome
to smo eljeli, a to je generator sluajnih
program
Na prvi
int main()
{ brojeva.
int x;
srand(time(NULL));
for (x = 0; x < 11; x = x + 1)
Varijable
{
cout << rand() << endl;
}
system("PAUSE");
Donoenje Grafika
return 0;
}
odluke
Petlje
U ovom rjeenju problemati-
no je to to su esto poetni
brojevi veoma slini. Prvi put
smo dobili 6089, drugi put Polja
6132, a trei put 6171.
Obrada
teksta
Objekti
Saimanje Veliki pro-
grami
timo u programu.
Sadraj
Sad kad smo konano dobili niz sluajnih brojeva, postavlja se pitanje kako
postii da ti sluajni brojevi budu unutar unaprijed odreenih granica. Ako
elim da se objekt pojavi na sluajnoj poziciji unutar prozora irokog 640 to-
Uvod
aka, bilo bi zgodno da generator sluajnih brojeva generira sluajni broj iz-
meu 0 i 640.
program
Na prvi
#include <cstdlib> Najprije emo program preurediti
#include <iostream> tako da generira brojeve izmeu 0 i
#include <ctime> 1. To emo postii tako da generi-
Varijable
rani broj podijelimo maksimalnom
using namespace std; moguom vrijednou sluajnog
broja. U tom sluaju, ako je generi-
int main() rani sluajni broj nula, rezultat e
biti nula, a ako je jednak maksimal-
Donoenje Grafika
{
int x; noj moguoj vrijednosti bit e 1. Za
float sb; sve ostale vrijednosti dobit emo
srand(time(NULL)); broj izmeu nula i jedan.
rand();
odluke
for (x = 0; x < 11; x = x + 1)
{ Maksimalnu moguu vrijednost gene-
sb = rand() / RAND_MAX; riranog sluajnog broja dobit emo
cout << sb << endl; naredbom RAND_MAX.
Petlje
}
system("PAUSE");
return 0;
} Pokrenemo li takav program kao
Polja
rezultat dobit emo samo nule, i
moda ponekad broj 1.
Zato?
Obrada
teksta
pretvara u float.
grami
#include <cstdlib>
#include <iostream>
#include <ctime>
int main()
{
int x;
float sb;
srand(time(NULL));
rand();
for (x = 0; x < 11; x = x + 1)
{
sb = static_cast <float> (rand()) / RAND_MAX;
cout << sb << endl;
}
system("PAUSE");
return 0;
Problem koji se javio u prethodnom pro-
}
gramu rijeit emo tako da raunalu
naredimo da broj koji e generirati na-
redba rand() i koji je int tipa, prije dijelje-
nja s RAND_MAX pretvori u float tip. To
emo uiniti naredbom:
Sadraj
#include <cstdlib>
#include <iostream>
Uvod
#include <ctime>
program
Na prvi
int main()
{
int x;
float sb;
Varijable
srand(time(NULL));
rand();
for (x = 0; x < 11; x = x + 1)
{
Donoenje Grafika
sb = (static_cast <float> (rand()) / RAND_MAX) * 640;
cout << sb << endl;
}
system("PAUSE");
Kako emo postii da program ne generi-
return 0;
odluke
ra brojeve izmeu 0 i 1, nego izmeu 0 i
}
640? Tako da sluajni broj koji raunalo
generira izmeu 0 i 1 pomnoimo sa 640.
Petlje
u vrijednost 0, rezultat e biti nula.
Pogledajmo dio programa
kojim generiramo sluajni Ako je sluajni broj imao maksimalnu mo-
broj izmeu 0 i 640. guu vrijednost 1, rezultat e biti 640.
Budui da je to upravo
ono to smo eljeli, ovo
upozorenje emo zane-
mariti.
Sadraj
Koritenje sluajnih brojeva
Uvod
Ovaj program e generirati
krugove na sluajno odabra-
nim pozicijama.
program
Na prvi
Na taj nain u igrama moe-
mo generirati objekte na slu-
ajno odabranim mjestima.
Varijable
#include <cstdlib>
#include <iostream>
Donoenje Grafika
#include <winbgim.h>
#include <ctime>
odluke
dva broja, jedan koji odreuje uda-
int main() ljenost sredita od desnog ruba i
{ drugi koji odreuje udaljenost sre-
int x; dita od gornjeg ruba generirat
int sx; emo dva sluajna broja.
Petlje
int sy;
int gdriver = 9; Prvi emo spremiti u int varijablu
int gmode = 2; sx i bit e izmeu 0 i 640. Drugi
initgraph(&gdriver, &gmode, ""); emo spremiti u sy i bit e izmeu
Polja
setbkcolor (WHITE); 0 i 480.
setcolor (BLACK);
cleardevice(); (Dimenzije grafikog prozora su
srand(time(NULL)); 640x480).
Obrada
teksta
rand();
for (x = 1; x < 60; x = x + 1 )
{
sx = (static_cast <float> (rand()) / RAND_MAX) * 640;
Objekti
closegraph();
grami
return 0;
} Poloaj kruga ovisit e o sluajno generiranim brojevima.
#include <cstdlib>
#include <iostream>
#include <ctime>
int main()
{
int odgovor;
int slucajni_br;
int brojcanik = 0;
srand(time(NULL));
rand();
slucajni_br = (static_cast <float> (rand()) / RAND_MAX) * 100;
cout << "Zamislio sam broj od 0 do 100." << endl;
cout << "Pogodite koji je to broj" << endl;
do
{
cout << "Unestite odgovor." << endl;
cin >> odgovor;
brojcanik = brojcanik + 1;
if (slucajni_br > odgovor)
{
cout << "Zamislio sam veci broj." << endl;
}
if (slucajni_br < odgovor)
{
cout << "Zamislio sam manji broj." << endl;
}
}
while (slucajni_br != odgovor);
cout << "Pogodili ste " << brojcanik << ". put." << endl;
system("PAUSE");
return 0;
}
Sadraj
#include <cstdlib>
#include <iostream>
Uvod
Varijablu brojcanik na poetku emo posta-
#include <ctime> viti za nulu, a nakon svakog pogaanja uve-
at emo je za jedan i tako emo znati koliko
using namespace std; nam je pokuaja trebalo za pogaanje zami-
program
Na prvi
ljenog broja.
int main()
{
int odgovor;
int slucajni_br;
Varijable
Ovdje se generira sluaj-
int brojcanik = 0; ni broj izmeu 0 i 100.
srand(time(NULL));
Donoenje Grafika
rand();
odluke
cout << "Pogodite koji je to broj" << endl;
Petlje
cout << "Unestite odgovor." << endl;
cin >> odgovor; Pri svakom unosu odgovora
brojanik poveavamo za 1.
brojcanik = brojcanik + 1;
}
teksta
} nji od unesenog.
}
while (slucajni_br != odgovor);
Saimanje Veliki pro-
grami
cout << "Pogodili ste " << brojcanik << ". put." << endl;
Ispitivanje se
system("PAUSE");
ponavlja dok
return 0;
uneseni broj
}
nije jednak
koda
zamiljenom.
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
183
C++ programiranje za apsolutne poetnike
Polja
Jednodimenzionalna polja
#include <cstdlib>
Zamislimo da kao pozadinu neke
#include <iostream>
jednostavne igrice elimo nacrtati
#include <winbgim.h>
neto to bi moglo asocirati na
nebodere.
using namespace std;
To moemo uiniti nizom lineto
int main()
naredbi i to rjeenje funkcionira, ali
{
i sami vidimo da nije ba osobito
int gdriver = 9;
elegantno.
int gmode = 2;
initgraph(&gdriver, &gmode, "");
Zamislimo koliko bi to rjeenje bilo
setbkcolor (WHITE);
nepraktino ako bismo htjeli nacr-
setcolor (BLACK);
tati crte s vie detalja, npr. prozo-
cleardevice();
rima.
moveto (0, 200);
lineto (10, 200);
lineto (10, 50);
lineto (100, 50);
lineto (100, 200);
lineto (120, 200);
lineto (120, 150);
lineto (300, 150);
lineto (300, 200);
lineto (350, 200);
lineto (350, 30);
lineto (400, 30);
lineto (400, 200);
lineto (450, 200);
lineto (450, 20);
lineto (550, 20);
lineto (550, 200);
lineto (560, 200);
lineto (560, 40);
lineto (600, 40);
lineto (600, 200);
lineto (620, 200);
lineto (620, 20);
lineto (635, 20);
lineto (635, 200);
lineto (640, 200);
getch();
closegraph();
return 0;
}
Sadraj
U ovom programu pojavljuju se Ovaj program radi isti posao kao i
uglate zagrade.
prethodni, ali je daleko elegantniji
Uvod
Dobit emo ih tako da drimo pri- od njega.
tisnutu AltGr tipku, a zatim klikne-
mo slovo f ili slovo g.
program
Na prvi
Pogledamo li paljivo program,
vidjet emo da su nam svi elemen-
ti poznati od prije, osim neobino
Varijable
#include <cstdlib> definirane varijable polje.
#include <iostream>
#include <winbgim.h>
Dok smo u dosadanje varijable
Donoenje Grafika
using namespace std; mogli spremiti jedno slovo ili broj,
int main() ini se da u ovu varijablu moemo
{ spremiti mnotvo brojeva.
int gdriver = 9;
odluke
int gmode = 2;
int x; Paljivi analitiar moda bi uoio
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE); da broj u uglatoj zagradi odgovara
Petlje
setcolor (BLACK); koliini brojeva u vitiastim zagra-
cleardevice();
dama.
int polje[54] =
{
0, 200, 10, 200, 10, 50, 100, 50, 100, 200, Polja
120, 200, 120, 150, 300, 150, 300, 200, 350, 200,
350, 30, 400, 30, 400, 200, 450, 200, 450, 20,
Obrada
550, 20, 550, 200, 550, 200, 560, 200, 560, 40,
teksta
600, 40, 600, 200, 620, 200, 620, 20, 635, 20,
635, 200, 640, 200
};
moveto (polje[0], polje[1]);
Objekti
getch();
closegraph();
return 0;
}
koda
#include <cstdlib>
#include <iostream>
int main()
{
int polje[5] = {10, 20, 30, 40, 50}; Detaljno objanjenje funkcionira-
cout << polje[0] << endl; nja programa s prethodne strani-
cout << polje[1] << endl; ce vidjet emo kasnije, a sada
cout << polje[2] << endl; emo pogledati kako funkcionira-
cout << polje[3] << endl; ju neobine varijable koje smo
cout << polje[4] << endl; uoili u prethodnom programu.
system("PAUSE");
return 0; Ovaj program pomoi e nam da
} lake shvatimo ovaj novi tip vari-
jable.
int polje[5] = {10, 20, 30, 40, 50}; Ovom naredbom kao i prethod-
nom formiramo varijablu, ali dok
smo u prethodnu varijablu mogli
spremiti samo jedan broj, ova
varijabla sadri 5 pretinaca koji se
razlikuju po brojevima i u svaki od
tih pretinaca moemo spremiti
jedan broj.
10 20 30 40 50
0 1 2 3 4
polje
Sadraj
Novi tip varijable ima poseban naziv, naziva se polje. elije polja meusobno
razlikujemo po brojevima, a problem donekle komplicira injenica da prvo
polje nije polje 1 nego polje 0, pa onda polje sa 5 elemenata ne sadri polja
Uvod
od 1 do 5 nego od 0 do 4. U poetku e nas ta injenica esto zbunjivati.
program
Na prvi
int polje[5] = {10, 20, 30, 40, 50}; U vitiastim zagrada-
ma navest emo vri-
jednosti pojedinih
Varijable
elija.
Za razliku od obine varijable prilikom
formiranja polja u uglatim zagradama Vrijednosti emo me-
moramo navesti koliko elija sadri po- usobno odvojiti za-
lje. U naem sluaju polje koje smo
Donoenje Grafika
rezima.
nazvali polje sadri 5 elija.
odluke
cout << polje[1] << endl; an nain kao i sadraj varijable.
Petlje
osim naziva u uglatim zagradama moramo navesti broj elije koju elimo ispi-
sati. U gornjem primjeru imajmo na umu da emo ispisati sadraj druge elije,
a ne sadraj prve. Prvu bismo ispisali naredbom cout << polje[0] << endl;.
Polja
Obrada
teksta
Vidimo da
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
cout << polje[3] << endl;
cout << polje[0] << endl;
cout << polje[2] << endl;
cout << polje[4] << endl;
cout << polje[1] << endl;
system("PAUSE");
return 0;
}
Sadraj
Polja mogu biti float tipa.
Uvod
mo brojeve, a toka ima fun-
kciju decimalnog zareza.)
program
Na prvi
#include <cstdlib>
Varijable
#include <iostream>
Donoenje Grafika
int main()
{
float polje[5] = {10.12, 20.14, 30.16, 40.18, 50.19};
cout << polje[0] << endl;
cout << polje[1] << endl;
odluke
cout << polje[2] << endl;
cout << polje[3] << endl;
cout << polje[4] << endl;
system("PAUSE");
Petlje
return 0;
}
Polja
#include <cstdlib>
#include <iostream>
Obrada
teksta
naredbe:
char polje[5] = {'P', 'O', 'L', 'J', 'A'};
cout << polje[0] << endl; cout << polje[0] << endl;
cout << polje[1] << endl;
Saimanje Veliki pro-
nemojmo mijenjati.
#include <cstdlib>
#include <iostream>
int main()
{
int a[3] = {2, 3, 0};
a[2] = a[0] + a[1];
cout << a[2] << endl;
system("PAUSE");
return 0;
}
#include <cstdlib>
Kao to je sluaj i kod varijabli, sadraj po-
#include <iostream>
lja ne moramo definirati prilikom formiranja
using namespace std;
polja.
U ovom sluaju sadraj prve i druge elije int main()
{
polja unosimo cin naredbom, a u treu eli-
int b[3];
ju spremamo rezultat zbrajanja. cin >> b[0];
cin >> b[1];
b[2] = b[0] + b[1];
cout << b[2] << endl;
system("PAUSE");
return 0;
}
Sadraj
Sadraj polja moemo ispi-
sati na ovaj nain. Takav
nain funkcionira, ali je nee-
Uvod
legantan. Osobito je neprikla-
dan ako bismo htjeli ispisati
vee polje.
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
using namespace std;
int main()
{
Donoenje Grafika
int polje[5] = {10, 20, 30, 40, 50};
cout << polje[0] << endl;
cout << polje[1] << endl;
cout << polje[2] << endl; Ovaj nain ispisa sadraja
odluke
cout << polje[3] << endl; polja daleko je elegantniji.
cout << polje[4] << endl;
system("PAUSE");
return 0; Formirali smo petlju koja e
Petlje
}
se vrtjeti onoliko puta koliko
elija petlje elimo ispisati.
Polja
Varijabla petlje mijenja se od
#include <cstdlib> poetnog broja elije koju eli-
#include <iostream>
mo ispisati, u naem sluaju
Obrada
teksta
sluaju to je 4.
int polje[5] = {10, 20, 30, 40, 50};
int x;
for (x = 0; x < 5; x = x + 1) Pri ispisu umjesto polje[1] ko-
Saimanje Veliki pro-
{
ristimo polje[x] to znai da se
grami
#include <cstdlib>
#include <iostream>
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
int x;
for (x = 1; x < 4; x = x + 1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
int x;
for (x = 4; x > -1; x = x - 1)
{ Sadraj polja moemo ispisivati i
cout << polje[x] << endl;
unatrag. To emo postii tako da
}
system("PAUSE"); varijablu petlje x mijenjamo unat-
return 0;
rag od etiri do nula po jedan.
}
Sadraj
#include <cstdlib> Na slian nain pomou petlje mo-
#include <iostream> emo uporabom tipkovnice unijeti
brojeve u pojedine elije.
Uvod
using namespace std;
int main()
program
Na prvi
{ Ovu petlju koristimo za unos
int polje[5]; brojeva u polje.
int x;
cout << "Unos polja." << endl; Opet umjesto cin >> polje [0]
Varijable
imamo cin >> polje[x], a varijab-
for (x = 0; x < 5; x = x + 1) lu x petlja mijenja od nula do
{ etiri i tako e se unijeti sadraj
cin >> polje[x]; cijelog polja.
}
Donoenje Grafika
Kao i do sada nakon svakog
cout << "Ispis polja." << endl; unosa broja pritisnemo Enter
tipku.
for (x = 0; x < 5; x = x + 1)
odluke
{
cout << polje[x] << endl;
} Koristei isti trik ovdje ispisujemo
sadraj polja.
system("PAUSE");
Petlje
return 0; Umjesto cout << polje[0] stavili
} smo cout << polje[x], a x for pet-
lja mijenja od nula do etiri i tako
Polja
e se ispisati sadraj cijelog po-
lja.
Obrada
teksta
Objekti
Saimanje Veliki pro-
int polje[54] =
{
0, 200, 10, 200, 10, 50, 100, 50, 100, 200,
120, 200, 120, 150, 300, 150, 300, 200, 350, 200,
350, 30, 400, 30, 400, 200, 450, 200, 450, 20, Ovom naredbom
550, 20, 550, 200, 550, 200, 560, 200, 560, 40, odreuje se po-
600, 40, 600, 200, 620, 200, 620, 20, 635, 20, etak niza crta.
635, 200, 640, 200
};
{
lineto(polje[x], polje[x+1]);
}
getch();
closegraph();
return 0;
} Ovom petljom crta se
ostatak crtea.
Sadraj
Pogledajmo podrobnije neke detalje programa.
Uvod
int polje[5] = {10, 20, 30, 40, 50};
program
Na prvi
Ovu naredbu int polje[5] = Ovaj oblik pogodniji je za
{ koritenje kad u veliko po-
moemo napi-
Varijable
10, 20, 30, 40, 50 lje elimo unijeti veliku koli-
sati i ovako. }; inu brojeva.
Donoenje Grafika
Ova naredba odreuje poetak niza crta.
Udaljenost od lijevog ruba odreena je
moveto (polje[0], polje[1]); sadrajem elije polje[0], tj. prve elije, a
odluke
udaljenost od gornjeg ruba sa polje[1], tj.
sadrajem druge elije.
Petlje
Poetna vrijednost
varijable x je 2.
Petlja e se izvoditi dok je x manji od 54. Budui
da se x uveava za 2 vrijednost varijable x e rasti
od 2 do 52. Polja
Obrada
teksta
Udaljenost kraja
crte od lijevog ruba Udaljenost kraja crte od gornjeg
koda
#include <cstdlib>
#include <iostream>
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
cout << polje[0] << endl;
cout << polje[1] << endl;
cout << polje[2] << endl;
cout << polje[3] << endl;
cout << polje[4] << endl;
system("PAUSE");
return 0;
} Mogli bismo postaviti pitanje trebaju
li nam uope polja, budui da bismo
ovaj program mogli i ovako realizira-
ti, obinim varijablama.
Sadraj
Ne samo da uporabom polja moemo pisati elegantnije programe, nego nam
polja omoguuju realizaciju programa koje bi bilo veoma teko realizirati na
neki drugi nain. Pogledajmo nekoliko primjera takvih programa.
Uvod
#include <cstdlib>
program
Na prvi
#include <iostream> Polja nam omoguuju operacije sa elijama polja.
Varijable
int main()
{
int polje[5];
int x;
int r; Unos polja.
Donoenje Grafika
cout << "Unos polja." << endl;
for (x = 0; x < 5; x = x + 1)
{
U ovom dijelu programa pretrauje
odluke
cin >> polje[x];
se uneseno polje i najvei broj na-
}
en u polju sprema se u varijablu
r.
r = polje[0];
for (x = 1; x < 5; x = x +1)
Petlje
{
if (r < polje[x])
{
U ovom dijelu ispisuje se sadraj
r = polje[x];
varijable r, odnosno najvei broj
Polja
}
unesen u polje.
}
system("PAUSE");
return 0;
Objekti
}
Saimanje Veliki pro-
koda grami
{
Unutar for petlje za svaku vrijed-
if (r < polje[x]) nost varijable x ispituje se je li sa-
{
draj varijable r manji od polje[x].
r = polje[x];
}
Ako jest, znai da je u eliji polje[x]
}
vei broj od onog u varijabli r, pa
e se sadraj elije polje[r] spremiti
Sadraj
Jednostavnim promjenama pro-
#include <cstdlib>
gram koji pretrauje polje sa
#include <iostream>
ciljem da nae najvei broj u
Uvod
polju moemo preurediti u prog-
using namespace std;
ram koji trai najmanji broj.
int main()
program
Na prvi
emu slue takvi programski
{
postupci?
int polje[5];
int x;
Na slian nain bismo u progra-
int r;
mu za voenje videoteke mogli
Varijable
cout << "Unos polja." << endl;
pronai korisnike koji nisu vratili
for (x = 0; x < 5; x = x + 1)
film dulje od npr. tjedan dana ili
{
korisnike koji su u proloj godini
cin >> polje[x];
posudili najvie filmova.
}
Donoenje Grafika
r = polje[0];
for (x = 1; x < 5; x = x +1)
{ Dovoljno je da umjesto ispitivanja
if (r > polje[x]) je li r < polje[x] stavimo ispitivanje
odluke
{ je li r > polje[x].
r = polje[x];
}
}
cout << "Najmanji je." << endl; Odgovarajue preuredimo ispis
Petlje
cout << r << endl; obavijesti.
system("PAUSE");
return 0;
}
Polja
Obrada
teksta
se pojavljuje odreen
broj.
Saimanje Veliki pro-
na pretraivanja slova.
koda
#include <cstdlib>
#include <iostream>
int main()
{
int p[5];
int zamjena;
int privremeni;
int x;
cout << "Unos polja." << endl; Ovo je sasvim sigurno najslo-
for (x = 0; x < 5; x = x + 1) eniji program koji smo do sa-
{ da vidjeli u ovoj knjizi.
cin >> p[x];
} Slui za sortiranje polja. Une-
semo razliite brojeve u polje,
do a program e ih sortirati tako
{ da e u prvom polju biti najvei
zamjena = 0; broj, a u posljednjem najmanji.
for (x = 0; x < 4; x = x + 1)
{
if (p[x] < p[x+1])
{ U ovom dijelu programa unosi-
privremeni = p[x]; mo brojeve u polje.
p[x] = p[x+1];
p[x+1] = privremeni;
zamjena = 1;
}
} U ovom dijelu vri se sortiranje
} polja.
while (zamjena ==1);
system("PAUSE");
return 0;
}
Sadraj
Pogledamo podrobnije dio programa u kojem se vri sortiranje.
Uvod
Sortiranje se odvija u do ... while pet- Na poetku ispitivanja u varija-
lji. Petlja se ponavlja tako dugo dok je blu zamjena stavlja se broj 0.
varijabla zamjena jednaka broju 1. Ako ne bude potrebno vriti
program
Na prvi
nikakve zamjene u polju, varija-
bla zamjena ostat e jednaka
nuli i izvoenje do ... while pet-
lje e se zaustaviti.
Varijable
do U for petlji ita se cijelo polje, s
time da se varijabla petlje mije-
{ nja za jedan manje od veliine
Donoenje Grafika
zamjena = 0; petlje; dakle u naem sluaju ne
ide do 4 nego, do 3.
for (x = 0; x < 4; x = x + 1)
{
odluke
if (p[x] < p[x+1])
If naredbom ispitujemo je li broj
u nekoj eliji polja (p[x]) manji
{
privremeni = p[x]; od broja u sljedeoj eliji (p
Petlje
p[x] = p[x+1]; [x+1]. Ako nije, znai da imamo
prvo vei broj, a zatim manji.
p[x+1] = privremeni;
To je ono to elimo i petlja se
zamjena = 1;
vrti dalje.
}
} Polja
Zbog toga do ... while petlja e cijeli postupak ponavljati tako dugo dok vie
ne bude obavljena ni jedna zamjena i varijabla zamjena ostane jednaka nuli.
Zato?
Sadraj
Izmeu polja mogu se vriti matematike ope-
racije kao i izmeu varijabli.
Uvod
Ovaj program e zbrojiti sadraje polja po1 i
#include <cstdlib> polja po2, a rezultat spremiti u polje po3 i zatim
#include <iostream> ga ispisati na zaslon raunala.
program
Na prvi
using namespace std;
int main()
{
Varijable
int po1[5] = {10, 15, 20, 25, 30};
int po2[5] = {35, 40, 35, 50, 55};
int po3[5];
int a;
Donoenje Grafika
for (a = 0; a < 5; a = a +1)
{
po3[a] = po1[a] + po2[a];
cout << po1[a] << " + " << po2[a] << " = " << po3[a] << endl;
}
odluke
system("PAUSE");
return 0;
}
Petlje
Polja
Obrada
teksta
Objekti
Pokuajmo napisati sline programe koji e vriti neke operacije izmeu po-
lje; npr. programe koji e mnoiti ili dijeliti lanove dvaju polja i rezultat spre-
Saimanje Veliki pro-
Program koji e brojiti koliko puta se neki broj pojavljuje u nekom polju.
Postavlja se pitanje na
koji nain bismo mogli
podatke umjesto preko
tipkovnice unijeti u po-
lje iz neke datoteke. U
tu svrhu otvorit emo
Nopetad (u hrvatskoj
inaici Blok za pisanje)
i unijet emo osam raz-
liitih brojeva koji e biti
odvojeni praznim mjes-
tima.
Vano je napomenuti
da to moramo uiniti
tim programom, a nipo-
to Wordom ili nekim
slinim programom.
Te brojeve, odnosno taj tekst spre-
mit emo pod imenom podaci.txt u
onu istu mapu u kojoj se nalazi
na program.
Sadraj
Uvod
program
Na prvi
Varijable
Ako je sve u redu, u onom istom
prostoru u kojem se nalazi na
Donoenje Grafika
projekt i na program morala bi se
nalaziti i datoteka podaci.txt.
odluke
Petlje
Polja
Int tip u sluaju da koristimo
Jasno je da moemo staviti i
Dev-C++ moe biti od
neke druge brojeve, a moemo
2147483648 do 2147483647.
ih staviti vie ili manje nego u
naem primjeru.
Obrada
uvodnog prirunika.
ranieno velik. Koliki broj moe-
grami
Sadraj
Naredba za formiranje objekta pomo- Naziv objekta. Bira se po istoj logi-
u kojeg emo itati sadraj datoteke. ci po kojoj biramo nazive varijabli.
Uvod
program
Na prvi
Naziv datoteke koju emo itati
ifstream ulaz ("podaci.txt"); pomou objekta ulaz.
Varijable
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <fstream>
Petlje
int main()
{
int x;
Polja
int polje[8];
float a = 0; Kada uitamo brojeve u polje,
ifstream ulaz("podaci.txt"); s tim brojevima moemo raditi
for (x = 0; x < 8; x = x + 1) sve ono to moemo raditi i s
Obrada
teksta
cout << "Prosjek je " << a << endl; drugim brojevima, imajmo na
grami
Sadraj
Naredba za formiranje objekta pomo-
Naziv objekta. Bira se po istoj logi-
u kojeg emo spremati sadraj dato-
ci po kojoj biramo nazive varijabli.
teke.
Uvod
program
Na prvi
Naziv datoteke u koju emo
ofstream izlaz ("podaci.txt"); spremati pomou objekta ulaz.
Varijable
to smo spremili moemo pogledati editorom, a moemo i programom koji
sadraj datoteke ispisuje na zaslon raunala.
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
#include <fstream>
int x;
teksta
int polje[8];
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
Objekti
int main()
{
int x;
int p[8];
int zamjena;
int privremeni;
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1) U ovom djelu programa itamo
{ sadraj datoteke i spremamo ga
ulaz >> p[x]; u polje.
}
cout << "Zapocinje sortiranje." << endl;
do
{
Doslovno sa Copy Paste kopi-
zamjena = 0;
ran dio programa koji sortira
for (x = 0; x < 7; x = x + 1)
sadraj polja od najveeg prema
{
najmanjem.
if (p[x] < p[x+1])
{
privremeni = p[x];
p[x] = p[x+1];
p[x+1] = privremeni;
U ovom djelu programa sadraj
zamjena = 1;
polja sprema se u datoteku.
}
}
}
while (zamjena ==1);
ofstream izlaz("podaci.txt");
for (x = 0; x < 8; x = x + 1) Ovdje vidimo i jedan jako va-
{ an element programiranja.
izlaz << p[x]; Ne moramo svaku stvar svaki
izlaz << " "; put kad nam treba iznova pro-
} gramirati. Segment programa
cout << "Sortiranje je zavrsilo" << endl; koji dobro radi obilno proko-
system("PAUSE"); mentiramo i spremimo, a za-
return 0; tim ga ubacujemo u programe
} kad nam zatreba, kao to smo
ovdje ubacili segment progra-
ma koji sortira sadraj polja.
Sadraj
#include <cstdlib> Da bismo provjerili funkcio-
#include <iostream> nira li na program, najpri-
#include <fstream> je emo programom koji
Uvod
smo malo prije obradili
using namespace std; unijeti brojeve u datoteku.
int main()
program
Na prvi
{
int x;
int polje[8];
ofstream izlaz("podaci.txt");
Varijable
for (x = 0; x < 8; x = x + 1)
{
cin >> polje[x];
}
Donoenje Grafika
for (x = 0; x < 8; x = x + 1)
{ #include <cstdlib>
izlaz << polje[x]; #include <iostream>
izlaz << " "; #include <fstream>
}
odluke
cout << "Spremanje je gotovo." << endl; using namespace std;
cout << endl;
system("PAUSE"); int main()
return 0; {
Petlje
} int x;
int polje[8];
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
Polja
{
ulaz >> polje[x];
}
for (x = 0; x < 8; x = x +1)
Obrada
{
teksta
Dvodimenzionalna polja
int main()
{
int polje[2] [4] = {{11, 12, 13, 14}, {21, 22, 23, 24}};
int x;
system("PAUSE");
return 0;
}
Ispis drugog reda.
Sadraj
Tip polja u naem sluaju je int, Drugi red polja. Nalazi se
a moglo je biti npr. float ili char. unutar vitiastih zagrada.
Uvod
Prvi red polja. Nalazi se
program
Na prvi
Naziv polja. unutar vitiastih zagrada.
Varijable
int polje [2] [4] = { {11, 12, 13, 14} , {21, 22, 23, 24} };
Donoenje Grafika
Cjelokupni sadraj polja
nalazi se unutar poseb-
Broj redova polja. Broj stupaca polja.
nih vitiastih zagrada.
odluke
Petlje
Budui da su u ovom tipu polja podaci rasporeeni u redove i stupce, prilino
logino je da kad elimo pristupiti nekoj eliji takvog polja moramo navesti u
uglatim zagradama broj reda i broj stupca elije kojoj elimo pristupiti.
Polja
Broj stupca kojem pristupamo, u naem
cout << polje [0] [x] sluaju je to sadraj varijable x.
Obrada
teksta
Broj reda kojem pristupamo, u naem sluaju je to prvi red koji se oznaava
Objekti
brojem nula. Dakle prvi red oznaava broj nula, a drugi broj jedan.
Saimanje Veliki pro-
grami
prorauni.
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
215
C++ programiranje za apsolutne poetnike
Obrada teksta
String objekti
#include <cstdlib>
#include <iostream>
#include <string>
Sadraj
#include <string> Da bi program mogao koristiti string objekte,
ovu naredbu moramo staviti na poetak prog-
Uvod
rama.
program
Na prvi
kom drugom programskom okruenju nee.
Varijable
Donoenje Grafika
odluke
cout << odgovor << ", dobar dan!" << endl; Vidimo da objekt odgovor
u naredbi cout koristimo
kao da koristimo varijab-
lu.
Petlje
Najprije e se ispisati
sadraj objekta odgovor,
zatim tekst unutar navod-
nika i konano skok u
Polja
novi red.
Obrada
teksta
Objekti
cin >> odgovor; U naredbi cin koju koristimo za unos preko tipkovni-
Saimanje Veliki pro-
varijablu.
tekst.
elimo li u string objekt unijeti veu koliinu teksta, da bismo bili sigurni da e
sve biti u redu, moemo unaprijed naredbom reserve rezervirati potreban pro-
stor.
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor; Program radi jednako
cout << endl; kao i prethodni, osim
cout << odgovor << ", dobar dan!" << endl; to smo u ovom sluaju
cout << endl; za spremanje imena
system("PAUSE"); osigurali veliki prostor.
return 0;
}
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <string>
program
Na prvi
using namespace std;
int main()
Varijable
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor;
Donoenje Grafika
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
cout << "Imamo " << odgovor.size() << " slova." << endl;
odluke
cout << endl;
cout << "Imamo " << odgovor.capacity() << " prostora." << endl;
cout << endl;
system("PAUSE");
return 0;
Petlje
}
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor; Naredbom cin nije mo-
cout << endl; gue u objekt odgovor
cout << odgovor << ", dobar dan!" << endl; unijeti vie odvojenih
cout << endl; rijei.
system("PAUSE");
return 0; Iako smo napisali prezi-
} me i ime, uspjeli smo
unijeti samo prezime.
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
getline(cin, odgovor);
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl; Ako umjesto cin nared-
system("PAUSE"); be upotrijebimo ovu na-
return 0; redbu, moi emo unijeti
} vie rijei u objekt odgo-
vor.
Sadraj
String objekt u koji emo unositi tekst.
getline(cin, odgovor); U naem sluaju to je objekt odgovor.
Uvod
Naredba koja nam omoguuje
program
Na prvi
unos vie rijei u string objekt.
Varijable
#include <cstdlib>
#include <iostream>
#include <string>
Donoenje Grafika
using namespace std;
int main()
{
odluke
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl; Jedan od problema
cin >> odgovor; pri izradi programa
cout << endl; javlja se kad korisnik
Petlje
cout << odgovor << ", dobar dan!" << endl; unese neodgovara-
cout << endl; juu vrijednost.
system("PAUSE");
return 0; U ovom sluaju, um-
Polja
} jesto da unesemo
ime, samo smo priti-
snuli tipku enter.
Obrada
teksta
U ovom sluaju, na
mjestu gdje se oekiva-
lo da emo unijeti tekst,
mi smo unijeli brojeve.
Objekti
Postavlja se pitanje na
koji bismo nain mogli
Saimanje Veliki pro-
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string odgovor;
do
{ Ova inaica programa
cout << "Unesite vase ime." << endl; e zahtijevati da pono-
getline(cin, odgovor); vimo unos ako pritisne-
} mo tipku Enter, a da
while (odgovor.size() == 0); prije toga nismo nita
unijeli.
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Polje char tipa
Uvod
program
Na prvi
#include <cstdlib>
#include <iostream>
#include <string>
Varijable
int main()
{
char niz[255];
Donoenje Grafika
cout << "Unesite vase ime." << endl;
cin.getline(niz,255);
cout << endl;
cout << niz << ", dobar dan!" << endl;
cout << endl;
odluke
system("PAUSE"); Tekst se moe unijeti u prog-
return 0; ram i obraivati i na drugi
} nain; uporabom polja char
tipa.
Petlje
Formiranje niza ije elije su char tipa. U svaku moemo staviti jedno slovo.
Naredba za unos
teksta tipkovnicom.
Sadraj
U ovu inaicu programa nije mogue unijeti broj na mjestu na kojem oekuje-
mo tekst. U sluaju da unesemo brojeve, raunalo e zahtijevati da ponovimo
upis.
Uvod
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
#include <string>
Donoenje Grafika
int main()
{
char niz[255];
int x;
int p;
odluke
do Poetni dio programa i
{ formiranje potrebnih vari-
cout << "Unesite vase ime." << endl; jabli.
Petlje
cout << endl;
cin.getline(niz,255);
x = 0;
p = 1;
while (niz[x] != '\0') Ovo je glavni dio prog-
Polja
{ rama. Ovdje se unosi
if (isdigit(niz[x])) tekst i ispituje jesu li
{ unesena slova ili broje-
vi.
Obrada
p = 0;
teksta
}
x = x + 1; Ako su uneseni brojevi,
} unos se ponavlja.
}
Objekti
Cijeli ovaj dio nalazi se unutar do ... while petlji koja e se ponavljati ako korisnik
umjesto slova unese brojeve.
{
p = 0;
}
If naredbom ispitujemo je
li znak u nizu broj.
x = x + 1;
Ako jest, u p varijablu se
} sprema broj nula to e
imati za posljedicu da e
}
se ponoviti do ... while
while (p == 0);
petlja, odnosno unos.
Varijabla x uve-
ava se za jedan Ako ni jedan lan niza
da bi se pri sva- nije broj, u varijabli p e
Ovdje se ispituje je li kom ponavljanju ostati broj jedan i do ...
vrijednost varijable p naredbom niz[x] while petlja se nee po-
nula i ako jest, do ... itao slijedei navljati, odnosno upis se
while petlja se ponavlja. lan niza. nee ponavljati.
Sadraj
Ovaj program je veoma sloen pa emo odvojeno pogledati vanije elemente
programa. Pogledajmo prvo glavnu do ... while petlju.
Uvod
Ovdje se u varijablu p
sprema broj jedan. To je
do Ovdje poinje petlja.
program
Na prvi
varijabla o kojoj ovisi
{
hoe li se do ... while
cout << "Unesite vase ime." << endl;
petlja ponoviti ili ne.
cout << endl;
cin.getline(niz,255);
Varijable
x = 0;
p = 1;
while (niz[x] != '\0')
{ Ovdje e se varijabla p postaviti na nula ako je
if (isdigit(niz[x])) jedan od znakova u nizu broj. To e imati za
Donoenje Grafika
{ posljedicu da e se do ... while petlja ponoviti,
p = 0; odnosno da e se unos teksta ponoviti.
}
x = x + 1;
odluke
}
Ovdje se ispituje je li sadraj varijable p jednak
}
nuli. Ako jest do ... while petlja e se ponoviti, a
while (p == 0);
to znai da e se upis ponoviti.
Petlje
Na poetku se x postavlja na nulu, to znai da e se prvi
put sa niz[x] ispitivati niz[0] odnosno prva elija niza.
Polja
x = 0; While petlja ponavlja se tako dugo dok elija niz[x]
nije jednaka oznaci za kraj. Prvi put se ispituje
Obrada
p = 1;
teksta
#include <cstdlib>
#include <iostream>
#include <string>
Sadraj
Osim to moemo ispitivati je li sadraj varijable broj, ispitivati moemo i druga
svojstva sadraja varijable char tipa.
Uvod
program
Na prvi
ISPITIVANJE ZNAKOVA
Varijable
if (isdigit(slovo)) Ispituje je li sadraj varijable slovo neki broj.
Donoenje Grafika
je negativan ako unesemo upitnik, toku ili neto slino.
odluke
Ispituje je li sadraj varijable slovo kontrolni znak. To je
if (iscntrl(slovo)) znak koji se dobiva ako drimo tipku Ctrl i onda pritis-
Petlje
nem npr. slovo v.
Polja
grupu ne pripada prazno mjesto izmeu dviju rijei.
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
char slovo[9] = {'8','?','b','\v','*','a',' ','A','#'};
if (isdigit(slovo[0]))
{
cout << "Prvi znak je broj." << endl;
}
if (isalnum(slovo[1]))
{
cout << "Drugi je slovo ili broj." << endl;
}
else
{
cout << "Drugi nije ni slovo ni broj." << endl;
}
if (isalpha(slovo[2]))
{
cout << "Treci je slovo." << endl;
}
if (iscntrl(slovo[3]))
{
cout << "Cetvrti je kontrolni znak." << endl;
}
if (isgraph(slovo[4]))
{
cout << "Peti nesto sto se ispisuje." << endl;
}
if (islower(slovo[5]))
{
cout << "Sesti je malo slovo." << endl;
}
Sadraj
Uvod
if (isprint(slovo[6]))
{
cout << "Sedmi moze biti prazno mjesto." << endl;
program
Na prvi
}
if (isupper(slovo[7]))
{
cout << "Osmi je veliko slovo." << endl;
Varijable
}
if (ispunct(slovo[8]))
{
cout << "Deveti je neka interpunkcija." << endl;
Donoenje Grafika
}
cout << endl;
system("PAUSE");
return 0;
}
odluke
Petlje
Ovaj malo vei program morali smo staviti na dvije
stranice.
#include <cstdlib>
#include <iostream>
#include <string>
Zato to raunalo smatra da velika slova dolaze prije malih. Ako eli-
mo napisati program koji sva slova rasporeuje po abecedi, morali
bismo najprije ustanoviti je li neko slovo veliko ili malo, odnosno prog-
ram bi morao biti neto sloeniji. (Pokuajmo ga napisati.)
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
#include <string>
Varijable
int main() Mogla bi nas zbuniti
{ uporaba znaka " i zna-
char slovo = 'A'; ka '.
char NizSlova[18] = "Ovo je niz slova.";
Pravilo je jednostavno,
Donoenje Grafika
cout << "Jedno slovo je " << slovo << endl;
cout << "Tekst je: " << NizSlova << endl; jedno slovo pie se u
cout << endl; obliku 'a', a vie slova u
system("PAUSE"); obliku "Ovo je tekst.".
return 0;
odluke
}
Petlje
#include <cstdlib>
#include <iostream>
Polja
#include <string>
int main()
{
char slovo;
cout << "Unesite slovo." << endl; Slovima moemo do-
Objekti
Do sada smo uglavnom vidjeli operacije koje se mogu provoditi nad jednim slo-
vom spremljenim u char varijablu ili char polje. Pogledajmo sada operacije nad
veim tekstom spremljenim u objekt string klase.
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string tekst1 = "Ovo je prvi tekst.";
string tekst2 = " Ovo je drugi tekst.";
string tekst3;
tekst3 = tekst1 + tekst2; Objekte string klase moemo jed-
cout << tekst3 << endl; nostavno zbrojiti i rezultat zbraja-
cout << endl; nja spremiti u trei objekt.
system("PAUSE");
return 0;
}
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <string>
program
Na prvi
using namespace std;
int main()
{
Varijable
string tekst1;
string tekst2;
cout << "Unesite prvu rijec." << endl;
cin >> tekst1;
Donoenje Grafika
cout << endl;
cout << "Unesite drugu rijec." << endl; Objekti klase string
cin >> tekst2; mogu se meusobno
cout << endl; usporeivati.
if (tekst1 == tekst2)
odluke
{ U ovom programu us-
cout << "Rijeci su jednake." << endl; poreujemo jesu li jed-
} naki.
else
Petlje
{
cout << "Rijeci nisu jednake." << endl;
}
cout << endl;
Polja
system("PAUSE");
return 0;
}
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string tekst1;
string tekst2;
cout << "Unesite prvu rijec." << endl;
cin >> tekst1;
cout << endl;
cout << "Unesite drugu rijec." << endl; Dva objekta klase string mo-
cin >> tekst2; emo usporeivati i tako da
cout << endl; ispitujemo je li prvi manji od
if (tekst1 < tekst2) drugog.
{
cout << "Prva je manja." << endl; Ostaje nejasno u kojem smis-
} lu se ispituje je li prvi manji od
else drugog.
{
cout << "Prva nije manja." << endl; Oito se ne ispituje koliina
} slova, nego se objekti rangira-
cout << endl; ju po abecedi, ab je po abece-
system("PAUSE"); di nakon aaaaa, pa u tome
return 0; smislu ab nije manje nego je
} vee od aaaaa.
Sadraj
Mogue su i sloenije manipulacije nad tekstom. Ponovno pogledajmo nared-
bu size() koju smo vidjeli na poetku ovog poglavlja. Omoguuje nam odrei-
vanje broja znakova koje sadri tekst. Pri tome imajmo na umu da raunalo i
Uvod
prazno mjesto izmeu rijei smatra jednim znakom.
program
Na prvi
#include <cstdlib>
Varijable
#include <iostream>
#include <string>
Donoenje Grafika
int main()
{
string odgovor;
getline(cin, odgovor);
odluke
cout << "Tekst sadrzi " << odgovor.size() << " znakova." << endl;
cout << endl;
system("PAUSE");
return 0;
} Naredba size().
Petlje
Polja
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
Ovaj program pretrauje sadraj objekta tekst i trai pojavljuje li se u tom objektu
sadraj objekta trazi. Ako se pojavljuje, obavjetava nas na kojoj poziciji zapoi-
nje traeni tekst. (Prva pozicija nema broj jedan nego broj nula.)
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string tekst;
string trazi;
int pozicija;
cout << "Unesite tekst." << endl;
getline(cin, tekst);
cout << endl;
cout << "Sto trazim?" << endl;
getline(cin, trazi);
cout << endl;
pozicija = tekst.find(trazi);
if (pozicija != string::npos)
{
cout << "Pocetak je na " << pozicija << ". poziciji." << endl;
}
else
{
cout << "Nema trazene rijeci." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Ovom naredbom utvrujemo poziciju traenog teksta, a rezultat spremamo u
varijablu pozicija.
Uvod
Varijabla u koju spre-
mamo rezultat. pozicija = tekst.find(trazi);
program
Na prvi
Naziv objekta u kojem se nalazi Naredba za Objekt koji pre-
Varijable
tekst koji pretraujemo. pretraivanja. traujemo.
Donoenje Grafika
jektu.
odluke
if (pozicija != string::npos) oznaku koja oznaava da tra-
ena rije nije naena.
Petlje
ivanja u pozicija varijabli i
U varijabli pozicija nalazi se re- obavijest da traena rije nije
zultat pretraivanja objekta. naena.
Polja
Obrada
teksta
pojavljuje u tekstu.
grami
program.
Ovaj program radi slian posao kao i prethodni, ali pretraivanje zapoinje od
kraja teksta. Ako traimo rije koja se pojavljuje vie puta, ovaj program nai e
posljednje pojavljivanje.
#include <cstdlib>
#include <iostream>
#include <string>
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
#include <string>
Varijable
int main() Ovaj program smo tako korigirali da
{ smo, iako s naredbom find zapoi-
string tekst; njemo pretraivanje s lijeve strane,
string trazi; pronali drugo pojavljivanje traene
int pozicija; rijei.
Donoenje Grafika
cout << "Unesite tekst." << endl;
getline(cin, tekst);
cout << endl;
cout << "Sto trazim?" << endl;
odluke
getline(cin, trazi);
cout << endl;
pozicija = tekst.find(trazi,6);
if (pozicija != string::npos)
{
Petlje
cout << "Pocetak je na " << pozicija << ". poziciji." << endl;
}
else
{
Polja
cout << "Nema trazene rijeci." << endl;
}
cout << endl;
system("PAUSE");
Obrada
pozicija = tekst.find(trazi,6);
teksta
return 0;
}
Objekti
U ve poznatu naredbu find dodali smo broj 6 ime smo naredili raunalu da
pretraivanje objekta tekst zapone od znaka na poziciji 6.
Saimanje Veliki pro-
grami
Pomou ove naredbe napravit emo program koji e pronai sva pojavljiva-
koda
Ovaj program moe pronai svako pojavljivanje neke rijei u nekom tekstu.
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{ U ovom programu koristimo nared-
string tekst; bu find, a pozicija poetka pretrai-
string trazi; vanja nije odreena brojem, nego
int duljina; sadrajem varijable trenutno.
int trenutno = 0;
int polozaj; Varijabla trenutno je na poetku 0,
cout << "Unesite tekst." << endl; da bi prvo pretraivanje poelo od
getline(cin, tekst); poetka teksta. Ako na nekoj pozi-
cout << endl; ciji pronaemo traenu rije, vari-
cout << "Sto trazim?" << endl; jablu trenutno uveavamo za tu
getline(cin, trazi); poziciju + 1, da bi novo pretraiva-
cout << endl; nje poelo nakon poetka ve na-
duljina = tekst.size(); ene rijei i da bi se eventualno
while (trenutno < (duljina + 1)) pronala nova rije, a ne ponovo
{ ista.
polozaj = tekst.find(trazi,trenutno);
if (polozaj != string::npos)
{
cout << "Nalazi se na " << polozaj << ". mjestu." << endl;
trenutno = polozaj + 1;
}
else Budui da smo doavi do ove toe ve
{ prilino napredovali u vjetini programira-
trenutno = duljina + 1; nja, ovaj put je objanjenje funkcioniranja
} programa neto skromnije.
}
cout << endl; Pokuajmo shvatiti kako funkcionira prog-
system("PAUSE"); ram i pokuajmo ga korigirati tako da ispie
return 0; adekvatnu obavijest, ako se traena rije
} uope ne pojavljuje. Pokuajmo isti prog-
ram napisati koritenjem rfind naredbe.
Sadraj
Na neku poziciju unutar teks-
ta moemo dodati tekst.
Uvod
#include <cstdlib>
program
Na prvi
#include <iostream>
#include <string>
Varijable
int main()
{
string tekst = "Ovo je tekst.";
string umetak = " moj";
Donoenje Grafika
tekst.insert(6,umetak);
cout << tekst << endl;
cout << endl; Naredba za dodavanje teksta.
system("PAUSE");
odluke
return 0;
}
Sadraj koji dodajemo.
Petlje
Objekt u koji dodajemo tekst. tekst.insert(6,umetak);
Polja
Pozicija na koju dodajemo tekst.
#include <cstdlib>
Obrada
teksta
#include <iostream>
#include <string>
int main()
{
string tekst = "Ovo je tekst.";
Saimanje Veliki pro-
tekst.insert(6," dobar");
grami
i na ovaj nain.
Dio teksta spremljenog u objekt klase string moemo obrisati erase naredbom.
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
string tekst = "Ovo je dobar tekst.";
tekst.erase(7,6);
cout << tekst << endl;
cout << endl;
system("PAUSE");
return 0;
}
Pozicija od kojem po-
inje brisanje.
Naredba za brisanje.
Sadraj
Naredbom replace moemo dio teksta koji se nalazi u objektu klase string
zamijeniti nekim drugim tekstom.
Uvod
program
Na prvi
Varijable
#include <cstdlib>
#include <iostream>
#include <string>
Donoenje Grafika
using namespace std;
int main()
odluke
{
string tekst = "Ovo je dobar tekst.";
string drugi = "dodatan";
tekst.replace(7,5,drugi);
cout << tekst << endl;
Petlje
cout << endl;
system("PAUSE");
return 0; Pozicija od koje zapo-
} inje zamjena teksta.
Polja
zamijeniti.
Naredba za zamjenu teksta.
Objekti
Sadraj kojim emo zamijeniti tekst u objektu tekst. Zamijenit emo 5 znako-
va, poevi od sedmog sa sadrajem objekta drugi. Umjesto objekta drugi
koda
#include <cstdlib>
#include <iostream>
#include <string>
int main()
{
char niz[255]; Ovdje, na nain koji smo ve vidjeli u ovom pog-
string tekst; lavlju, ime unosimo u char polje i provjeravamo
tekst.reserve(256); jesu li uneseni brojevi ili slova. Ako su uneseni
int x; brojevi, unos se ponavlja. Naredba isdigit ne bi
int p; radila da smo koristili objekt klase string.
do
{
cout << "Unesite vase ime." << endl;
cout << endl;
cin >> niz;
x = 0;
p = 1;
while (niz[x] != '\0') Ovdje tekst iz polja tipa
{ char premjetamo u ob-
if (isdigit(niz[x])) jekt klase string koji smo
{ nazvali tekst.
p = 0;
} To smo uinili da bismo
x = x + 1; mogli koristiti size nared-
} bu.
}
while (p == 0);
cout << endl;
tekst = niz;
cout << "Ime " << tekst << " sadrzi " << tekst.size() << " slova." << endl;
cout << endl;
system("PAUSE");
return 0; Naredba niz.size nije dozvoljena. Naredba
} size radi jedino s objektima, ali ne i s poljima.
Sadraj
Premjetanje teksta iz stringa u char polje
Mogue je i tekst iz objekta klase string premjestiti u polje char tipa, ali je na-
Uvod
redba kojom to izvodimo neto sloenija.
program
Na prvi
Varijable
#include <cstdlib>
#include <iostream>
#include <string>
Donoenje Grafika
using namespace std;
odluke
int main()
{
Formiramo objekt klase string i u
string tekst = "Tekst.";
njega spremamo tekst Tekst.
char *polje = (char*)tekst.c_str();
Petlje
cout << polje[0] << endl;
cout << polje[1] << endl; Tekst iz objekta selimo u char
cout << polje[2] << endl; polje koje smo nazvali polje.
Polja
cout << polje[3] << endl;
cout << polje[4] << endl;
cout << polje[5] << endl;
Ispisujemo sadraj polja da bis-
Obrada
teksta
Naziv char polja u koje emo Naziv objekta iz kojeg tekst seli-
spremiti tekst iz objekta. U na- mo u char polje. U naem slua-
koda
Pomou objekata klase string moemo formirati liste i te liste moemo spremati u
datoteke na slian nain na koji smo spremali brojane liste
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
int main()
{
int x;
string tekst[8]; Kad smo spremali brojeve, izmeu
ofstream izlaz("podaci.txt"); brojeva stavljali smo prazno mjesto
for (x = 0; x < 8; x = x + 1) da bismo znali gdje zavrava jedan
{ broj, a poinje drugi.
getline(cin, tekst[x]);
} U ovom programu prazna mjesta
for (x = 0; x < 8; x = x + 1) nisu prikladna za razlikovanje sadr-
{ aja pojedinih elija jer se prazna
izlaz << tekst[x]; mjesta nalaze izmeu rijei.
izlaz << " # ";
}
cout << endl;
cout << "Spremanje je gotovo." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Sadraj
Programom slinim programu za itanje datoteka u kojima se nalaze brojevi
itat emo sadraj datoteke u kojoj se nalaze tekstovi.
Uvod
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
#include <string>
#include <fstream>
Donoenje Grafika
int main()
{
int x;
string tekst[8];
odluke
string privremeni;
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
do
Petlje
{
ulaz >> privremeni;
if (privremeni != "#")
{
Polja
tekst[x] = tekst[x] + privremeni + " "; Oznaku # koristit emo
} da bismo utvrdili jesmo
} li doli do kraja sadra-
while (privremeni != "#"); ja jedne elije polja.
Obrada
teksta
}
for (x = 0; x < 8; x = x +1) Ovo rjeenje je jednos-
{ tavno, ali je manjkavo.
cout << tekst[x] << endl; Ako bi netko prilikom
}
Objekti
}
grami
nake.
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
251
C++ programiranje za apsolutne poetnike
Objekti
Sadraj
Imajmo u vidu da prednost uporabe objekata dolazi do izraaja u veim prog-
ramima. Manji programi koje emo vidjeti u ovom poglavlju mogu se elegan-
tnije napraviti bez uporabe objekata. Unato tome, mi emo vidjeti primjere
Uvod
uporabe objekata u malim programima jer emo na primjerima malih progra-
ma lake shvatiti princip uporabe objekata.
program
Na prvi
Varijable
#include <cstdlib>
#include <iostream>
Donoenje Grafika
class tekst
{
public:
void pisi()
odluke
{
cout << "Ovo je nas tekst." << endl;
} Unesimo u program-
}; sku okolinu i pokreni-
Petlje
mo na prvi program
int main() koji koristi klase i ob-
{ jekte.
tekst t;
t.pisi();
cout << endl; Polja
system("PAUSE");
return 0;
Obrada
}
teksta
#include <cstdlib>
#include <iostream>
Objekti
ramima.
Ovaj dio programa izrazito je slian ovom dijelu programa iz prolog poglavlja.
U drugom redu nad objektom t vri U drugom redu nad objektom tekst
se operacija pisi(). Unutar zagrada izvrili smo operaciju reserve(250)
nema sadraja, jer se nita ne uno- kojom smo osigurali prostor za spre-
si u objekt t, ali su zagrade svejed- manje teksta. Izmeu naziva objekta
no obvezne. i naziva operacije nalazi se toka.
t . pisi() ;
Naziv objekta iju meto-
Naziv metode koju sadri
du emo koristiti. U na-
objekt t. U naem sluaju
em sluaju koristit e-
koristimo metodu pisi().
mo metodu t.
Obvezna toka.
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
using namespace std;
Ovdje vidimo da objekt
class tekst moemo nazvati i dru-
{ gaije, npr. reci.
Varijable
public:
void pisi() Ako smo formirali ob-
{ jekt reci, onda naredba
cout << "Ovo je nas tekst." << endl; koja je do sada imala
} oblik:
Donoenje Grafika
};
t.pisi();
int main()
{ dobiva oblik:
odluke
tekst reci;
reci.pisi(); reci.pisi();
cout << endl;
system("PAUSE"); Dakle, sad se operacija
return 0;
Petlje
pisi vri nad objektom
} reci.
Polja
Obrada
teksta
#include <cstdlib>
#include <iostream>
Uoimo da postoji slinost izmeu
using namespace std; formiranja objekta reci klase tekst i
Objekti
#include <cstdlib>
#include <iostream>
class tekst
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
}; Kao to moemo formirati
vie varijabli int tipa, tako
int main() moemo formirati vie
{ objekata klase tekst.
tekst prvi;
tekst drugi; U ovom primjeru formirali
tekst treci; smo tri objekta, objekt
prvi.pisi(); prvi, objekt drugi i objekt
drugi.pisi(); trei.
treci.pisi();
cout << endl; Za biranje naziva objeka-
system("PAUSE"); ta vrijede slina pravila
return 0; kao i za biranje naziva
} varijabli.
class tekst
{
public: Za razliku od klase string
void pisi() koju je ve netko prije na-
{ pisao, a mi je samo koris-
cout << "Ovo je nas tekst." << endl; timo, klasu tekst morali
} smo sami napisati.
};
U ovom dijelu programa
formira se klasa tekst.
Sadraj
Formiranje klase za- Nakon naredbe class
poinje naredbom
class tekst slijedi naziv klase. U
class. To je naredba naem sluaju klasu
Uvod
C++ jezika i ne moe smo nazvali tekst, ali
se mijenjati. mogli smo i drugaije.
program
Na prvi
U ovoj inaici programa
#include <cstdlib>
klasu smo nazvali BrdaI-
#include <iostream>
Varijable
Doline.
using namespace std;
To je dozvoljeno, samo
to sad naredbu koja je
class BrdaIDoline
prije imala oblik:
Donoenje Grafika
{
public:
tekst t;
void pisi()
{
moramo napisati u obliku:
cout << "Ovo je nas tekst." << endl;
odluke
}
BrdaIDoline t;
};
Dakle, formiramo objekt t
int main()
klase BrdaIDoline.
Petlje
{
BrdaIDoline t;
(Drugo je to je pametno
t.pisi();
da nam naziv klase govo-
cout << endl;
ri emu klasa slui, pa je
system("PAUSE");
Polja
loginije da se klasa za
return 0;
ispis teksta zove tekst, a
}
ne BrdaIDoline.)
Obrada
teksta
Objekti
Saimanje Veliki pro-
grami
void pisi()
{ Ova naa mala klasa ne
cout << "Ovo je nas tekst." << endl; sadri varijable i sadri
} samo jednu metodu od-
nosno moe napraviti
samo jednu operaciju. Tu
metodu nazvali smo pisi
().
Sadraj
Uvod
#include <cstdlib>
#include <iostream> Kao to smo klasu mogli
nazvati drugaije, mogli
program
Na prvi
using namespace std; smo i metodu.
Varijable
public:
void Pero() To je dozvoljeno, samo
{ to emo naredbu koju
cout << "Ovo je nas tekst." << endl; smo do sada pisali u obli-
} ku:
Donoenje Grafika
};
t.pisi();
int main()
{ pisati u obliku:
odluke
tekst t;
t.Pero(); t.Pero();
cout << endl;
system("PAUSE"); Kao i kod biranja naziva
return 0; varijabli i klasa, i ovdje je
Petlje
} pametno da nam naziv
metode govori to meto-
da radi. Zato je naziv pisi
za metodu koja ispisuje
Polja
tekst bolji od naziva Pero.
Obrada
odreena ogranienja
Void naredba ispred void pisi () moemo birati po volji,
naziva metode ozna-
uje da metoda ne ove dvije zagrade se
ovdje moraju obavezno
Objekti
U kojem smislu ne
Saimanje Veliki pro-
jet emo kasnije kad nienja o kojima smo govorili kad smo govorili
ovakvu metodu us- o biranju naziva varijabli.
poredimo s onima
koje vraaju vrijed- Pametno je da naziv metode tako izaberemo
koda
int main()
{
tekst t; Glavni dio programa. Sada moemo vidjeti zato
t.pisi(); smo program zapoinjali s int main() oznakom,
cout << endl; odnosno oznakom da je to glavni dio.
system("PAUSE");
return 0; Kad raunalo pokrene program, najprije e se
} pokrenuti ovaj dio, a ostali dijelovi e se koristiti
po potrebi.
Sadraj
Unutar metode ne mora se
nalaziti program za ispis. Mo-
e se nalaziti bilo to, npr.
Uvod
program za crtanje kruga.
program
Na prvi
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Varijable
using namespace std;
Donoenje Grafika
public:
void pisi() Umjesto class tekst stavit
{ emo class slika.
int gdriver = 9;
odluke
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK); Umjesto void pisi() stavit e-
mo void krug().
cleardevice();
Petlje
circle(320,240,180);
getch();
closegraph();
} Umjesto tekst t; tj. umjesto
Polja
}; naredbe formiranja objekta t
klase tekst stavimo slika cr-
int main() taj. Time emo formirati ob-
{ jekt crtaj klase slika.
Obrada
teksta
tekst t;
t.pisi();
cout << endl;
system("PAUSE");
Umjesto t.pisi(); tj. umjesto
Objekti
return 0;
} pozivanja metode pisi() u klasi
tekst stavit emo crtaj.krug();
Saimanje Veliki pro-
grami
tekstualnom prozoru.
#include <cstdlib>
#include <iostream>
class tekst
{
public:
void prva()
{ Prva metoda koju smo
cout << "Ovo je prva metoda." << endl; nazvali prva().
}
void druga()
{ Druga metoda koju smo
cout << "Ovo je druga metoda." << endl; nazvali druga().
}
void treca()
{ Trea metoda koju smo
cout << "Ovo je treca metoda." << endl; nazvali treca().
}
};
int main()
{ Objekt formiramo jed-
tekst t; nom, a zatim pozivamo
t.prva(); metode po logici da
t.druga(); najprije navedemo na-
t.treca(); ziv objekta, zatim stavi-
cout << endl; mo toku i konano
system("PAUSE"); naziv metoda. Zagrade
return 0; na kraju te ; oznaka su
} obvezne.
Sadraj
Program moe sadravati
vie klasa, npr. u ovom
sluaju klasu tekst1 i klasu
Uvod
tekst2.
program
Na prvi
#include <cstdlib>
Varijable
#include <iostream>
class tekst1
Donoenje Grafika
{
public: Prva klasa koju smo
void pisi() nazvali tekst1.
{
odluke
cout << "Ovo je klasa tekst1." << endl;
}
};
class tekst2
Petlje
{ Druga klasa koju
public: smo nazvali tekst2.
void pisi()
{
Polja
cout << "Ovo je klasa tekst2." << endl;
}
};
Obrada
teksta
t1.pisi();
cout << endl; se odnosno opera-
cout << "Zovemo metodu klase tekst2." << endl; ciju koju objekt
tekst2 t2; moe izvriti
Saimanje Veliki pro-
t2.pisi();
grami
#include <cstdlib>
#include <iostream>
class tekst
{
public:
void pisi()
{
cout << "Upravo koristimo objekt." << endl;
} Jednom formirani
}; objekt moemo proi-
zvoljni broj puta kori-
int main() stiti u programu.
{
tekst t; To je jedna od pred-
cout << "Objekt koristimo 1. put." << endl; nosti koritenja klasa
t.pisi(); i objekata.
cout << endl;
cout << "Objekt koristimo 2. put." << endl; Operaciju koja se u
t.pisi(); programu esto po-
cout << endl; navlja stavimo u kla-
cout << "Objekt koristimo 3. put." << endl; su, u programu for-
t.pisi(); miramo objekt i pozi-
cout << endl; vamo odreenu ope-
system("PAUSE"); raciju kad god nam
return 0; zatreba, bez potrebe
} da je ponovo pie-
mo.
Sve klase koje smo do sada formirali bile su veoma Uporaba klasa i obje-
jednostavne budui da nisu komunicirale s ostat- kata veoma je sloe-
kom programa na nain da bi bilo mogue u klasu na ideja, i kao uvijek
unijeti neke podatke ili iz klase iitati neke podat- do sada, imajmo na
ke, npr. brojeve ili tekst. umu da emo te pro-
gramske tehnike us-
U nastavku ovog poglavlja vidjet emo na koji na- vojiti tek kad napravi-
in moemo u klase unositi ili iz klasa iitavati po- mo velik broj primje-
datke. ra.
Sadraj
Komunikacija s metodama
Uvod
koji sadri klasu u koju je mo-
gue unijeti podatke iz drugih
dijelova programa.
program
Na prvi
Varijable
#include <cstdlib>
#include <iostream>
Donoenje Grafika
class pravokutnik Klasa pravokutnik
{ sadri jednu varija-
private: blu. To je varijabla
odluke
int c; c int tipa, a nalazi
se u private grupi.
public:
void naslov()
{
Petlje
cout << "Povrsina pravokutnika." << endl;
cout << endl;
Osim varijable u
}
private grupi, kla-
Polja
int povrsina (int a, int b)
sa sadri i dvije
{
c = a * b; metode u public
return (c);
Obrada
grupi. To su meto-
teksta
}
}; da naslov() i me-
toda povrsina (int
int main()
Objekti
{ a, int b).
pravokutnik p;
p.naslov();
cout << "Povrsina je ";
Saimanje Veliki pro-
ga.
#include <cstdlib>
#include <iostream>
public:
int pov; U public podruju dodali smo
void naslov() varijablu koju smo nazvali pov.
{
cout << "Povrsina pravokutnika." << endl;
cout << endl;
} Sadraj varijable c koja je formirana u
private podruju i u kojoj se nalazi re-
int povrsina (int a, int b) zultat izrauna povrine spremili smo u
{ varijablu pov koja je formirana u public
c = a * b; podruju.
pov = c;
return (c);
}
}; Ovdje vidimo da sadraju varija-
ble pov moemo pristupiti u
int main() glavnom programu, iako je for-
{ mirana u objektu. Pristupamo joj
pravokutnik p; tako da prvo napiemo naziv
p.naslov(); objekta zatim toku i na kraju
cout << "Povrsina je "; varijablu, dakle u p.pov obliku.
cout << p.povrsina(2,3);
cout << endl; Pokuamo li na isti nain pristu-
piti varijabli c, doi e do greke.
cout << "p.pov je " << p.pov << endl; (elimo li probati, maknimo //
// cout << "p.c je " << p.c << endl; oznaku na poetku reda.)
cout << endl << endl; Ve iz ovog primjera bismo mo-
system("PAUSE"); gli zakljuiti u kojem smislu je c
return 0; varijabla private, a kojem smislu
} je pov varijabla public.
Sadraj
Naredba private oznaava podruje u kojem se nalaze varijable i metode
koje se mogu koristiti unutar klase odnosno unutar objekta, ali se njima ne
moe pristupiti iz glavnog programa, odnosno izvan objekta. U ovom progra-
Uvod
mu u private podruju imamo samo varijablu c. Mogli bismo imati i procedure.
program
Na prvi
Varijable
class pravokutnik Za razliku od private
{ podruja, svemu to
private: formiramo u public
int c; podruju moemo
Donoenje Grafika
pristupiti i izvan kla-
public: se, odnosno izvan
int pov; objekta.
void naslov()
{ To ne moemo uini-
odluke
cout << "Povrsina pravokutnika." << endl; ti tako da samo na-
cout << endl; vedemo naziv varija-
} ble ili procedure ne-
go tako da prvo na-
Petlje
int povrsina (int a, int b) vedemo naziv objek-
{ ta, zatim toku i na
c = a * b; kraju naziv varijable
pov = c; ili procedure. Ako
return (c); pristupamo procedu-
} ri, moramo navesti i Polja
}; zagrade.
Obrada
teksta
Objekti
Dakle izvana moemo pristupiti samo onim varijablama koje su u public po-
druju formirane samostalno kao pov varijabla, a ne moemo onima koje su
koda
Ovdje formiramo pov varijablu int tipa. Varijable unutar klase formiramo na pot-
puno jednak nain kao i unutar glavnog programa.
to to znai?
Sadraj
Pogledajmo jo jednom naredbu za formiranje metode koja zapoinje void
naredbom.
Uvod
Void naredba znai da metoda Prazne zagrade znae da u ovu
naslov nee vraati nikakav re- metodu nita nije mogue unijeti
program
Na prvi
zultat rada. na nain da se napie:
Varijable
lon. Mogue je unutar metode staviti
cin naredbu pa neto unijeti npr.
Ispisuje, ali se ispisivanje zbiva preko tipkovnice, ali nije mogue
unutar metode. nita unijeti na gore opisan na-
in.
Donoenje Grafika
U glavnom programu mogue je
napisati:
odluke
void naslov ()
ali nije mogue napisati:
Petlje
Mogue je jedino s:
p.naslov();
Polja
pozvati metodu naslov koja on-
da unutar sebe ispisuje tekst na
zaslon raunala.
Obrada
teksta
#include <cstdlib>
#include <iostream>
class racunaj
{
private:
int c;
public:
int metoda1(int a, int b)
{
c = a + b; U ovom programu moemo
return (c); lijepo vidjeti kako o naredbi
}
return ovisi to e se naredbom
int metoda2(int a, int b) r.metoda1(2,4) ispisati na zas-
{
c = a + b; lon raunala.
return (a);
}
cout << "return(c) daje " << r.metoda1(2,4) << endl; Naredbom re-
cout << "return(a) daje " << r.metoda2(2,4) << endl; turn(a) ispisat
cout << "return(b) daje " << r.metoda3(2,4) << endl; e se sadraj
varijable a, a
system("PAUSE"); naredbom re-
return 0; turn(b) ispisat
} e se sadraj
varijable b.
Sadraj
#include <cstdlib>
Uvod
#include <iostream>
program
Na prvi
class racunaj
{
private:
int a;
Varijable
int b;
int c;
public:
void unesi(void)
U ovom programu imamo
Donoenje Grafika
{
cout << "Unesite stranicu a." << endl; dvije void metode. Meto-
cin >> a; dom unesi unose se bro-
cout << "Unesite stranicu b." << endl; jevi u varijablu a i varijab-
cin >> b; lu b. To se vri unutar
odluke
} metode. Nije mogue
void povrsina(void) napisati naredbu:
{
c = a * b; p.povrsina(2,3);
Petlje
cout << "Povrsina je " << c << endl;
} Mogue je jedino nared-
}; bom:
#include <cstdlib>
#include <iostream>
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
using namespace std;
class racunaj
{
Varijable
private:
int a;
int b;
int c;
Donoenje Grafika
int p;
int u; Ako za ispis koris-
public: timo void metodu
void unesi(void) pa uporaba nared-
{ be return nije mo-
odluke
cout << "Unesite stranicu a." << endl; gua, ispisom re-
cin >> a; zultata unutar me-
cout << "Unesite stranicu b." << endl; tode moemo ispi-
cin >> b; sati vie vrijednos-
Petlje
cout << "Cijena kvadratnog metra." << endl; ti.
cin >> c;
} U ovom sluaju u
void cijena(void) metodi cijena mi
{ ispisujemo povri-
Polja
p = a * b; nu i cijenu.
cout << "Povrsina je " << p << endl;
u = p * c; Da je to int meto-
cout << "Cijena je " << u << endl; da i da rezultat
Obrada
teksta
} vraamo return
}; naredbom, mogli
bi napisati ili return
int main() (p) ili return(u), ali
Objekti
{ ne bismo mogli
racunaj p; vratiti obje vrijed-
p.unesi(); nosti.
p.cijena();
Saimanje Veliki pro-
Ukratko, koju od
grami
dovoljiti.
return ( c );
cout << c;
Sadraj
Uvod
program
Na prvi
#include <cstdlib>
#include <iostream>
Varijable
using namespace std;
class pravokutnik
{
private:
Donoenje Grafika
float c;
public:
void naslov()
{ Kao to smo ve
rekli, metode ne
odluke
cout << "Povrsina pravokutnika." << endl;
cout << endl; moraju biti int tipa.
} Mogu biti i nekog
float povrsina (float a, float b) drugog tipa. U
{ ovom programu
Petlje
c = a * b; imamo metodu
return (c); float tipa.
}
};
float b1;
pravokutnik p;
p.naslov();
cout << "Unesite stranicu a." << endl;
Objekti
stavimo varijable.
#include <cstdlib>
#include <iostream> U deklaraciji klase samo su
nabrojeni elementi klase i po-
using namespace std; dijeljeni u private i public pod-
ruje.
class pravokutnik
{ Ovdje se nalazi samo zaglav-
private: lje metode pravokutnik u ko-
int c; jem su odreena ulazna i izla-
public: zna svojstva metode, ali ovdje
int povrsina (int a, int b);
nema sadraja metode.
};
Sadraj
Pogledajmo kako su povezane deklaracija metode i definicije metode.
Uvod
Tip vrijednosti koju e metoda Obvezna ; ozna-
vraati kao rezultat. U ovom ka
sluaju je int, a mogao bi biti i Deklaracija metode u dek-
neki drugi npr. float.
program
Na prvi
laraciji klase. Ovdje je na-
veden naziv metode i ulaz-
no-izlazna svojstva meto-
de, ali ne i program meto-
de.
Varijable
int povrsina (int a, int b) ;
Definicija me-
Donoenje Grafika
tode. Ovdje
se nalazi pro-
gram koji od-
reuje to ta
metoda radi,
odluke
odnosno svoj-
int pravokutnik :: povrsina (int a, int b) stva metode.
Petlje
Popis varijabli preko
Naziv klase. Naziv metode. kojih se brojevi mogu
unijeti u metodu.
Polja
Obvezna :: oznaka izmeu naziva klase i
naziva metode. Obrada
teksta
Ovaj nain pisanja klasa doista je manje elegantan od naina koji smo kori-
Saimanje Veliki pro-
mo vei program razdijeliti u vie datoteka. Ako klase piemo na ovaj na-
in, tada moemo u jednu datoteku staviti sve deklaracije klasa, a u druge
datoteke definicije metoda. Ako se program nalazi u jednoj datoteci, bolje je
definiciju metode napisati unutar deklaracije metode kao to smo to inili u
koda
prethodnim programima.
Uporaba konstruktora
#include <cstdlib>
#include <iostream>
class pravokutnik
{ U ovom programu nalazi se nekoli-
private: ko neobinosti.
int a;
int b; Prva neobinost jest ova metoda.
public: Neobino je to to ima isti naziv
pravokutnik(void) kao i klasa. Klasu smo nazvali pra-
{ vokutnik i ova metoda zove se pra-
cout << "Stranica a:" << endl; vokutnik.
cin >> a;
cout << "Stranica b:" << endl; Druga neobinost jest to ova me-
cin >> b; toda nema nikakvu oznaku povrat-
} ne vrijednosti, nije ni void pravoku-
int povrsina(void) tnik(), ni int pravokutnik().
{
return (a * b);
}
}; Neobino je i to
to je nigdje ne
int main() pozivamo.
{
pravokutnik p; U ovom redu
cout << "Povrsina je " << p.povrsina() << "." << endl; formiramo objekt
cout << endl; p klase pravoku-
system("PAUSE"); tnik, a ve u slje-
return 0; deem redu po-
} zivamo metodu
povrsina.
Iako nigdje u programu nije vidljivo pozivanje metode pravokutnik, njen sadraj
se oigledno izvrava. Oigledno je da prije izvoenja metode povrina rauna-
lo unosi stranicu a i stranicu b. Takva metoda naziva se konstruktor, a izvrava
se u trenutku formiranja objekta. Dakle, ova metoda izvrila se u trenutku kad
smo naredbom pravokutnik.p formirali objekt p klase pravokutnik.
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
program
Na prvi
using namespace std;
class pravokutnik
Varijable
{ U ovom programu imamo
private: dva konstruktora.
int a;
int b; Jednome je ulazni dio void
Donoenje Grafika
public: tipa, to znai da se u njega
pravokutnik(void) ne moe unositi vrijednost
{ tako da napiemo:
cout << "Stranica a:" << endl;
cin >> a; pravokutnik p2(3,4);
odluke
cout << "Stranica b:" << endl;
cin >> b;
}
Drugome je ulazni dio (int a1,
pravokutnik(int a1, int b1)
int b1), to znai da se u nje-
Petlje
{
ga moe vrijednost unositi
a = a1;
tako da napiemo:
b = b1;
}
pravokutnik p2(3,4);
int povrsina(void)
Polja
{
return (a * b);
}
}; Ovdje formiramo objekt klase pravokutnik bez
Obrada
teksta
cout << "Povrsina je " << p1.povrsina() << "." << endl;
cout << endl;
pravokutnik p2(3,4);
cout << "Za p2(3,4) povrsina je " << p2.povrsina() << "." << endl;
Saimanje Veliki pro-
system("PAUSE");
return 0; Objekt p2(3,4); u zagradi ima dva broja, pa e se u
} tom sluaju primijeniti pravokutnik(int a1, int b1) kon-
struktor. U tom sluaju povrina e se izraunati
koda
Nasljeivanje
#include <cstdlib>
#include <iostream>
class kvadrat
Klasa kvadrat napisana je na
{
uobiajeni nain.
protected:
int br;
public:
void unos (void)
{ Klasa kub napisana je na nain koji
cout << "Unesite broj:" << endl; do sada nismo koristili.
cin >> br;
} Naredbom:
int izracun (void)
{ class kub : public kvadrat
return (br * br);
} formiramo klasu kub koja nasljeuje
}; varijable i metode klase kvadrat. Dak-
class kub : public kvadrat le klasa kub moe koristiti metodu
{ unos, iako je ona definirana u klasi
public: unos.
int izracun(void)
{
return (br * br * br);
Objekt objekt2 klase kub moe koristiti meto-
}
du unos koja se nalazi u klasi kvadrat kao da
};
je njezina klasa. To je mogue jer je klasa
kub naslijedila klasu kvadrat.
int main()
{
kvadrat objekt1;
objekt1.unos();
cout << "Kvadrat je " << objekt1.izracun() << endl; Metodu izracun
cout << endl; posjeduju obje
kub objekt2; klase. U tom slu-
objekt2.unos(); aju klasa kub ko-
cout << "Kub je " << objekt2.izracun() << endl; ristit e svoju inai-
cout << endl; cu objekta izracun.
system("PAUSE"); Inaica u klasi kub
return 0; prekrila je inaicu
} u klasi kvadrat.
Sadraj
Pogledajmo meusobnu povezanost bitnih dijelova programa u kojem je primi-
jenjena tehnika nasljeivanja klasa.
Uvod
U klasi kvadrat definirane su
class kvadrat
program
Na prvi
dvije metode, metoda unos i
metoda izraun.
void unos (void) Klasu kvadrat moemo koristiti
na nain koji smo koristili u do-
Varijable
sadanjim primjerima.
int izracun (void)
Donoenje Grafika
Naziv nove klase. Naredba za nas-
Klasa koju klasa kub nasljeuje.
ljeivanje klase.
odluke
class kub : public kvadrat Ovako deklarirana klasa kub
nasljeuje sve varijable i me-
Petlje
tode klase kvadrat.
int izracun (void) Klasa sadri metodu izracun,
iako metodu izraun posjeduje
Polja
i klasa kvadrat koju nasljeuje.
kub objekt2;
teksta
izracun.
Objekti
tode izraun.
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
283
C++ programiranje za apsolutne poetnike
Veliki programi
Sadraj
Male programe moemo smjestiti u jednu datoteku. Za vee programe to nije
praktino rjeenje. Ako je veliki program u jednoj velikoj datoteci tee je pro-
nai greku, tee je napraviti izmjenu programa i tee je podijeliti posao iz-
Uvod
meu vie programera.
U ovom poglavlju vidjet emo kako podijeliti jedan neto vei program u vie
datoteka. Najprije emo program napisati u jednoj velikoj datoteci, a zatim ga
program
Na prvi
podijeliti u vie manjih datoteka.
Varijable
Ovdje se nalazi deklaracija klase bomba. Sastoji
se od varijabli x i y koje odreuju poloaj bombe na
zaslonu te metode crtanje koja crta bombu i od
metode brisanje koja brie bombu da bi se dobila
iluzija kretanje bombe.
Donoenje Grafika
class bomba
{
Deklaracija sadri konstruktor koji odreuje poet-
private:
nu poziciju bombe.
int x, y;
public:
odluke
bomba()
{
x = (static_cast <float> (rand()) / RAND_MAX) * 620;
y = -((static_cast <float> (rand()) / RAND_MAX) * 480);
Petlje
}
void crtanje();
void brisanje();
};
Polja
void bomba :: crtanje()
Sadraj metode crtanje.
{
rectangle (x,y,(x+20),(y+5));
}
Obrada
y = y + 5;
if (y > 490)
{
Saimanje Veliki pro-
srand(time(NULL));
Formiranje triju objekta klase bom-
ba, bomba1, bomba2 i bomba3.
To su objekti koji se kreu odozgo
bomba bomba1, bomba2, bomba3;
prema dolje.
Sadraj
Ovdje se u svakom objektu klase
bomba poziva metoda za crtanje bom-
be na novoj poziciji.
Uvod
Neprestanim brisanjem bombe na sta-
roj poziciji i crtanjem na novoj stvara
se iluzija kretanja, odnosno padanja
program
Na prvi
bomba1.crtanje(); bombi.
bomba2.crtanje();
bomba3.crtanje();
Varijable
Naredba koja zaustavlja program odre-
eno vrijeme. Slui za regulaciju brzine
igre.
delay(1);
Donoenje Grafika
Ovdje ispitujemo je li pritisnuta neka
if (kbhit()) tipka na tipkovnici.
{
odluke
Ako je pritisnuta neka tipka na tipkovni-
ci, ovdje se kod pritisnute tipke sprema
odgovor = getch(); u varijablu odgovor.
Petlje
Ovdje se poziva metoda pomak koja e
brod.pomak(odgovor);
obrisati objekt na staroj poziciji.
}
nuti program.
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
289
C++ programiranje za apsolutne poetnike
Veliki programi
2 - Klik na Novo.
Sadraj
1 - Desni klik na Neimenovano1.
Uvod
program
Na prvi
Varijable
2 - Klik na Preimenuj datoteku.
Donoenje Grafika
odluke
Datoteku preimenujemo u bom- Petlje
Polja
ba.cpp i kliknemo na OK.
Obrada
teksta
Objekti
Saimanje Veliki pro-
koda grami
- bomba.h
- objekt.cpp
- objekt.h
Sadraj
U datoteku bomba.cpp spremimo me-
tode klase bomba; metodu crtanje i
Uvod
metodu brisanje.
program
Na prvi
Varijable
Donoenje Grafika
Ovaj dio isti je kao u programu koji
odluke
se nalazi u jednoj datoteci.
Petlje
Ovom naredbom ukljuuje se
datoteka bomba.h u kojoj se
#include <winbgim.h>
nalazi deklaracija klase bom-
Polja
#include "bomba.h"
ba.
void bomba :: crtanje()
Ovdje ukljuujmo datoteku u
{
kojoj se nalazi deklaracija kla-
Obrada
rectangle (x,y,(x+20),(y+5));
teksta
if (y > 490)
grami
{
y = -((static_cast <float> (rand()) / RAND_MAX) * 480);
x = (static_cast <float> (rand()) / RAND_MAX) * 620;
}
}
koda
#ifndef BOMBA_H
#define BOMBA_H
#ifndef BOMBA_H
#define BOMBA_H Kad bi se datoteka zvala npr. datoteka.h, ovaj
dio imao bi oblik:
class bomba
{ #ifndef DATOTEKA_H
private: #define DATOTEKA_H
int x, y;
public:
bomba()
{
x = (static_cast <float> (rand()) / RAND_MAX) * 620;
y = -((static_cast <float> (rand()) / RAND_MAX) * 480);
}
void crtanje();
void brisanje();
Naredbu #endif pisat emo na kraju
};
svake datoteke koja poinje nared-
bom #ifndef.
#endif
Sadraj
U datoteku objekt.cpp spremimo
metode klase bomba; metodu
Uvod
pomak i metodu crtaj.
program
Na prvi
Varijable
Donoenje Grafika
Naredbama #include
ukljuimo grafiku biblio-
teku winbgim.h i dato-
teku objekt.h u kojoj se
odluke
nalazi deklaracija klase
#include <winbgim.h> objekt.
#include "objekt.h"
Kad bi se deklaracija klase
Petlje
void objekt :: pomak(char tipka)
{ nalazila u drugaije nazvanoj
kretanje = tipka; datoteci, npr. datoteci naziv.h,
if (kretanje == 75) morali bismo napisati:
{
Polja
setcolor (WHITE); #include "naziv.h"
rectangle(x, 432, x+60, 438);
setcolor (BLACK); Naziv datoteka moemo birati,
x = x - 5; a nastavak h je obvezan. Na
Obrada
teksta
} program naredbom:
if (kretanje == 77)
{ #include <winbgim.h>
setcolor (WHITE);
Objekti
} bom:
grami
teku.
Sadraj
Glavni program se u ovoj #include <cstdlib>
inaici razlikuje od inaice #include <iostream>
koja se cijela nalazi u jednoj #include <winbgim.h>
Uvod
datoteci po tome to u ovoj #include <ctime>
inaici moramo osim:
#include <cstdlib>
program
Na prvi
using namespace std;
#include <iostream>
#include <winbgim.h> #include "objekt.h"
#include "bomba.h"
dodati i naredbe:
Varijable
int main()
#include "objekt.h" {
#include "bomba.h" int gdriver = 9;
int gmode = 2;
kojima se u program uklju-
Donoenje Grafika
initgraph(&gdriver, &gmode, "");
uju datoteke koje sadre setbkcolor(WHITE);
deklaracije klase objekt i setcolor(BLACK);
klase bomba. cleardevice();
char odgovor = 'd';
odluke
srand(time(NULL));
Glavni program nalazi se bomba bomba1, bomba2, bomba3;
u datoteci mani.cpp. objekt brod;
brod.crtaj();
Petlje
do
{
bomba1.brisanje();
bomba2.brisanje();
bomba3.brisanje();
bomba1.crtanje(); Polja
bomba2.crtanje();
bomba3.crtanje();
Obrada
delay(2);
teksta
if (kbhit())
{
odgovor = getch();
brod.pomak(odgovor);
Objekti
}
brod.crtaj();
}
while (odgovor != 'k');
Saimanje Veliki pro-
grami
return 0;
}
koda
Rezultat izvoenja
naeg programa iz-
gledat e otprilike
ovako.
Sadraj
main.cpp
U ovom shematskom prika-
using namespace std; zu naeg programa moe-
Uvod
mo vidjeti logiku po kojoj se
#include "objekt.h" program podijeljen u vie
datoteka povezuje u jednu
program
Na prvi
#include "bomba.h" cjelinu.
Varijable
} teka.
Donoenje Grafika
objekt.h bomba.h
odluke
#define OBJEKT_H #define BOMBA_H
Petlje
DEKLARACIJA KLASE; DEKLARACIJA KLASE;
}; };
Polja
#endif #endif
Obrada
teksta
objekt.cpp bomba.cpp
} }
grami
} }
Saimanje Veliki pro- Objekti Obrada Polja Petlje Donoenje Grafika Varijable Na prvi Uvod Sadraj
koda grami teksta odluke program
301
C++ programiranje za apsolutne poetnike
Saimanje koda
Mnoge naredbe mogu se, osim na nain koji smo do sada vidjeli, pisati na na-
in koji skrauje pisanje, ponekad ak ubrzava rad programa, ali koji je poet-
nicima moda neto manje razumljiv.
#include <cstdlib>
#include <iostream>
U sluaju da formi-
#include <cstdlib> ramo vie varijabli using namespace std;
#include <iostream> istog tipa, ne mo-
ramo svaku staviti int main()
using namespace std; u zasebni red, ne- {
go ih moemo for- int a, b, c;
int main() mirati u jednom cin >> a;
{ redu. cin >> b;
int a; c = a + b;
int b; Dakle umjesto: cout << c << endl;
int c; system("PAUSE");
cin >> a; int a; return 0;
cin >> b; int b; }
c = a + b; int c;
cout << c << endl;
system("PAUSE"); moemo napisati:
return 0;
} int a, b, c;
Sadraj
#include <cstdlib> Umjesto:
#include <iostream> #include <cstdlib>
int a; #include <iostream>
Uvod
using namespace std; a = 12;
using namespace std;
int main() moemo napisa-
ti: int main()
program
Na prvi
{
int a; {
a = 12; int a = 12; int a = 12;
cout << a << endl; cout << a << endl;
system("PAUSE"); system("PAUSE");
Varijable
return 0; return 0;
} }
Donoenje Grafika
U if naredbi mogu se
#include <cstdlib>
izbaciti vitiaste zagra-
#include <iostream>
de, ako se unutar viti-
astih zagrada nalazi
odluke
using namespace std;
jedan red.
int main()
Ako se nalazi vie re-
{
dova, uporaba vitias-
int a;
Petlje
tih zagrada je obvezna.
cin >> a;
if (a > 12)
{
cout << "Broj je veci od 12." << endl;
Polja
}
#include <cstdlib>
else
#include <iostream>
{
cout << "Broj nije veci od 12." << endl;
Obrada
}
cout << a << endl;
int main()
system("PAUSE");
{
return 0;
int a;
Objekti
}
cin >> a;
if (a > 12)
cout << "Broj je veci od 12." << endl;
else
Saimanje Veliki pro-
grami
zagradama.
#include <cstdlib>
#include <iostream>
#include <cmath>
int main()
{
float a, b;
cin >> a;
if (a < 0)
cout << "Broj je negativan." << endl;
else
Ako bismo ovom djelu vitiaste
b = sqrt(a);
zagrade izbacili, ne bismo dobili
cout << b << endl;
obavijest o greki, ali program
system("PAUSE");
ne bi ispravno radio, ako bismo
return 0;
pokuali izraunati kvadratni
}
korijen iz negativnog broja.
Sadraj
I u petljama se moe izostaviti vitiasta zag-
#include <cstdlib>
rada ako se unutar vitiaste zagrade nalazi
#include <iostream>
samo jedan red.
Uvod
using namespace std;
program
Na prvi
{ #include <iostream>
int x;
for (x=10; x<17; x=x+1) using namespace std;
{
cout << x << endl;
Varijable
int main()
} {
system("PAUSE"); int x;
return 0; for (x=10; x<17; x=x+1)
} cout << x << endl;
Donoenje Grafika
U ovoj inaici programa system("PAUSE");
unutar for petlje ne koriste return 0;
se vitiaste zagrade. }
odluke
#include <cstdlib> Umjesto x=x+1 moemo
#include <iostream> napisati:
Petlje
using namespace std; x++
int main() Pokrenemo li bilo koju od
{ ove tri inaice programa,
Polja
int x; dobit emo jednak rezultat.
for (x=10; x<17; x++)
cout << x << endl;
system("PAUSE");
Obrada
teksta
return 0;
}
Objekti
x = x - 1;
grami
napisati:
maka.)