Professional Documents
Culture Documents
programiranje
za apsolutne poetnike
PRO - MIL
Naslov knjige:
Autor:
Naklada:
Urednik:
Lektura:
Korektura:
PRO-MIL d.o.o.
Recenzija:
Naslovnica:
Tiskara:
ISBN:
953-7156-19-2
Copyright:
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.
PRO - MIL
Objekti
PRO - MIL
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Sadraj
Na prvi
program
Uvod
Sadraj
Sadraj
Uvod
to je to program, a to programiranje?
Zato ba C++?
Zato ba Dev-C++?
10
Kako se ui programiranje?
10
10
12
20
Instalacija grafike
22
Na prvi program
25
Formiranje projekta
26
Mogui problem
32
Pokretanje programa
34
Greka u programu
38
Analiza programa
40
42
Varijacije programa
43
Distribucija programa
47
49
Varijable
53
54
Varijable
58
PRO - MIL
71
Grafika
75
76
77
Analiza programa
78
Varijacije programa
83
Crtanje pravokutnika
86
Crtanje crte
88
Crtanje toke
95
Ispis teksta
97
Donoenje odluke
103
Funkcije
104
Donoenje odluke
108
Switch naredba
126
Petlje
129
For petlja
130
Do while petlja
168
170
179
PRO - MIL
Uvod
Na prvi
program
69
Varijable
Uljepavanje programa
Donoenje Grafika
odluke
67
Petlje
Problem dijeljenja
Polja
63
Obrada
teksta
Varijacije programa
Objekti
60
Analiza programa
Sadraj
Sadraj
Polja
183
Jednodimenzionalna polja
184
204
Dvodimenzionalna polja
212
Obrada teksta
215
String objekti
216
223
234
246
247
248
Objekti
251
252
262
Komunikacija s metodama
265
276
Uporaba konstruktora
278
Nasljeivanje
280
Veliki program
283
284
288
Saimanje koda
301
302
PRO - MIL
Objekti
Obrada
teksta
PRO - MIL
Polja
Petlje
Donoenje Grafika
odluke
Uvod
Varijable
Na prvi
program
Uvod
Sadraj
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.
Budui da su naredbe pisane naim jezikom, a raunalo razumije samo nule i
jedinice, program se nakon pisanja mora prevesti u oblik razumljiv raunalu. Taj
postupak se naziva prevoenje. Na engleskom jeziku naziva se Compile. Hrvatski programeri taj postupak obino nazivaju kompajliranje. U programu koji emo
mi koristiti, postupak prevoenja naredbi u oblik razumljiv raunalu naziva se
kompajlaj, a ovoj knjizi koristit emo izraz prevoenje.
Da bismo uspjeno programirali, oigledno je da nam treba program u kojem emo program pisati i program koji e napisani program prevesti u oblik razumljiv
raunalu. U dananje vrijeme sve te funkcije, a i mnoge dodatne objedinjene su u
jedan program koji emo u ovoj knjizi nazivati programska okolina. On e nam
omoguiti pisanje programa, prevoenje programa u oblik razumljiv raunalu,
traenje greaka i pokretanje programa. Postoji cijeli niz takvih programa, a mi
emo koristiti Dev-C++.
PRO - MIL
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
da programerska ekipa treba jo jednoga (jednu), vea je vjerojatnost da oni ve
koriste sustav s kojim znamo raditi.
Bjeite od genijalnih raunala, revolucionarnih sustava i drugaijih razmiljanja.
Zamislite koliko je ugodno ivjeti u malom gradu i biti jedini vlasnik takvog genijalnog 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.
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,
lako emo prijei na drugi. Da bi netko tko nikad nije programirao nauio jedan
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 razumijevati 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.
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
Zato to je to trenutno najraireniji jezik, osobito u profesionalnoj uporabi. U raunalstvu 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 koristi veina.
Polja
Zato ba C++?
Obrada
teksta
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 razumijete i da sporo napredujete.
Objekti
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 programiranje i odustati. Nakon tri mjeseca neemo puno toga razumjeti, ali nakon tri
godine sasvim sigurno hoemo.
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 pojmom nauiti programirati mislim na to da smo u stanju napisati program koji zadovoljava 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.
Sadraj
Uvod
Zato ba Dev-C++?
Programsko okruenje koje emo koristiti za pisanje naih programa naziva se
Dev-C++. Zato sam odabrao upravo ovo okruenje? Zato to je besplatno, ugodnog izgleda, na hrvatskom jeziku i malih dimenzija. Zbog toga to je malih dimenzija, zadovoljavajue e raditi i na starijim raunalima, a nove inaice mogue je u
prihvatljivom vremenu uitati s interneta i pomou spore internetske veze.
Iako je taj program relativno malih dimenzija, posjeduje sve osobine koje su potrebne za uenje programiranja, a mogao bi posluiti i za manje sloeno profesionalno programiranje.
Kako se ui programiranje?
Programiranje se ne ui tako da se naui sadraj neke knjige, a zatim se eventualno neto radi na raunalu. Programiranje se ui tako da se ukljui raunalo, otvori
knjiga, ita sadraj knjige i istovremeno prikazano u knjizi nastojimo napraviti na
raunalu.
Nakon to smo odreenu naredbu shvatili, nismo zavrili s uenjem. Nakon toga
treba napraviti nekoliko desetaka manjih programa u kojima emo tu naredbu koristiti da bismo stekli rutinu u njenom koritenju.
10
PRO - MIL
Uvod
Na prvi
program
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Polja
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.
Varijable
Donoenje Grafika
odluke
Petlje
ma, prouite upute za njegovo koritenje. Naravno, te upute ne moraju biti u obliku tiskane knjige. Najee e biti u obliku teksta na raunalu.
Sadraj
PRO - MIL
11
Uvod
Ako je Dev-C++ program ve instaliran, zaustavit emo postupak instalacije i deinstalirati staru inaicu programa.
Ako Dev-C++ nije instaliran na naem raunalu, klikom na U
redu nastavljamo instalaciju.
12
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
2 - Klikom na OK nastavljamo
instalaciju.
Donoenje Grafika
odluke
Varijable
Na prvi
program
1 - Izaberemo jezik.
Uvod
Sadraj
PRO - MIL
13
Uvod
2 - Instaliranje nastavljamo
klikom na Instaliraj.
14
PRO - MIL
Sadraj
Objekti
Obrada
teksta
Kliknemo na Da.
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
PRO - MIL
15
Uvod
Kliknemo na Kraj.
Kliknemo na U redu.
16
PRO - MIL
Klik na Next.
PRO - MIL
Na prvi
program
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Polja
Petlje
3 - Klik na Next.
Varijable
2 - Izaberemo Use XP
Theme.
Donoenje Grafika
odluke
1 - Izaberemo
hrvatski jezik.
Uvod
Sadraj
17
Uvod
Klik na Next.
Nakon klika na Next zapoet e instaliranje nekih dodatnih funkcija. Na sporijim raunalima taj proces moe
trajati i do pola sata, a na brima nekoliko minuta.
18
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
PRO - MIL
19
Uvod
20
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
21
Uvod
Instalacija grafike
Da bi Dev-C++ mogao koristiti naredbe za rad s grafikom,
runo moramo dodati nekoliko datoteka.
22
PRO - MIL
Bude li potekoa s instaliranjem programa, pogledajmo filmove na kojima moemo vidjeti cijeli tijek instalacije, a nalaze
se na priloenom CD-u.
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
disku.
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
23
Na prvi program
24
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
Na prvi program
C++ programiranje za apsolutne poetnike
25
Na prvi program
Formiranje projekta
1 - Kliknemo na Datoteka.
3 - Izaberemo Projekt.
2 - Izaberemo Nova.
26
PRO - MIL
1 - Izaberemo Basic.
5 - Biranje zavravamo
klikom na OK.
PRO - MIL
4 - Ovdje odredimo da
e na projekt sadravati C++ program.
Uvod
Na prvi
program
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Polja
Varijable
Windows Application izvodi se unutar klasinog windows prozora. Prednost ovog naina pisanja jest to emo dobiti program koji e izgledati
kao svaki drugi windows program. Nedostatak mu je to je ovaj nain pisanja programa neto sloeniji, pa je manje prikladan za poetnike.
Donoenje Grafika
odluke
U emu je razlika?
Petlje
Otvorit e se novi prozor koji se naziva Novi projekt i u kojem emo izabrati tip projekta. Najvaniji tipovi su Windows Application i Console Application.
Sadraj
27
Na prvi program
Kliknemo ovdje.
2 - Kliknemo na Spremi.
28
PRO - MIL
4 - Klik na Otvori.
Varijable
Saimanje Veliki programi
koda
2 - Klik na Spremi.
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Na prvi
program
Uvod
Sadraj
PRO - MIL
29
Na prvi program
Raunalo e automatski
generirati jednostavan
C++ program i time je
otvaranje projekta zavreno.
1 - Kliknemo na Alati.
30
PRO - MIL
PRO - MIL
Vidimo da se sada ispred svakog reda u programu automatski ispisuje broj reda.
Objekti
Obrada
teksta
Polja
Petlje
3 - Kliknemo na OK.
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
1 - Kliknemo na karticu
Prikaz.
Sadraj
31
Na prvi program
Mogui problem
1 - Ovo je prije spremljeni projekt.
3 - Klik na Spremi.
2 - Ovo je novi projekt. Ako elimo zadrati stari,
moramo mu promijeniti naziv. Ako stari projekt
ne elimo zadrati, ostavimo postojei naziv.
32
PRO - MIL
Sadraj
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
#include <cstdlib>
#include <iostream>
Objekti
Umjesto programa
koji je generiralo
raunalo
prilikom
otvaranja
novog
projekta, unesemo
ovakav program.
Na prvi
program
Uvod
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 razumjelo. Tako je i s programom.
Da bi raunalo razumjelo na program, najprije ga iz oblika koji smo upravo
napisali moramo prevesti u nule i jedinice, a tek nakon toga moemo narediti
raunalu da ga pokrene. Taj postupak prevoenja na engleskom se jeziku
naziva Compile, a prevoditelj naeg C++ programskog okruenja preveo je to
sa Kompajlaj. Mi emo u naoj knjizi za taj postupak koristiti izraz prevoenje.
U naem programskom okruenju imamo tri vane naredbe vezane uz prevoenje i pokretanje programa.
Ovo je prevedeno kao Pokreni. Ovu opciju moemo koristiti samo ako smo program ve preveli i
elimo ga jo jednom pokrenuti.
34
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
35
Na prvi program
Nakon klika na Kompajlaj i pokreni najprije e se otvoriti prozor u kojem emo moi
pratiti tijek prevoenja naeg programa u
nule i jedinice razumljive raunalu.
36
PRO - MIL
U tom sluaju, ako elimo zadrati stari program, novom emo dati neki drugi naziv npr.
main2.cpp i kliknut emo na Spremi.
Ako stari program ne elimo sauvati, ostavit
emo novom programu naziv main.cpp i kliknut
emo na Spremi.
PRO - MIL
Obrada
teksta
Objekti
Polja
Petlje
main.cpp
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Mogui problem
Sadraj
37
Na prvi program
Greka u programu
Gotovo je nemogue unijeti program, a da
se tijekom unosa ne pojavi greka.
Pogledajmo to e se dogoditi ako pokuamo pokrenuti program u kojem je dolo do
greke prilikom unosa.
1 - Umjesto
toke sa zarezom unesemo
dvotoje.
2 - Istovremeno se otvara
prozor u kojem moemo
vidjeti dodatne informacije
o uoenoj greki.
Ovdje moemo vidjeti sugestiju da umjesto dvotoja treba staviti toku sa
zarezom.
38
PRO - MIL
PRO - MIL
Na prvi
program
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Zato imajmo na umu da je oznaavanje redova u kojim se pojavila greka samo gruba
orijentacija, a ne precizni pokazatelj.
Petlje
Kad takav program pokuamo prevesti i pokrenuti, kao pogrean bit e oznaen deveti
red, jer je u njemu greka primijeena, iako
se greka zapravo nalazi u osmom redu.
Polja
Donoenje Grafika
odluke
Varijable
Oznaavanje pozicije greke prilino je nepouzdano budui da raunalo zapravo ne oznaava poziciju
greke, nego poziciju na kojoj je
greka primijeena. Pogledajmo
ovaj primjer.
Uvod
Sadraj
39
Na prvi program
Analiza programa
#include <cstdlib>
#include <iostream>
Ove naredbe emo pisati na poetku svakog C++ programa. Zato? C++ organiziran je tako da su njegove naredbe organizirane u grupe ili, kako bi programeri rekli, biblioteke i na poetku programa moramo rei raunalu koje biblioteke naredbi
namjeravamo koristiti.
#include - ovo je naredba kojom na poetku programa obavjetavamo raunalo
koje biblioteke naredbi elimo koristiti.
iostream - skup naredbi koje nam omoguuju komunikaciju s programom, npr.
ako to ne bismo ukljuili, ne bi bio mogu
ispis teksta Ovo je moj tekst. na ekran.
cstdlib - biblioteka standardnih naredbi.
int main()
40
PRO - MIL
return 0;
Ova vitiasta zagrada oznaava kraj prostora unutar kojeg se nalazi program.
PRO - MIL
Uvod
Obrada
teksta
Objekti
system("PAUSE");
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Sadraj
41
Na prvi program
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
Ovo su naredbe koje piemo na kraju programa. Slino kao to je to sluaj s naredbama na poetku programa, vrlo rijetko emo
ih mijenjati i trenutno nije bitno da u potpunost razumijemo znaenje svake od tih
naredbi.
system("PAUSE");
return 0;
}
42
Dovoljno je da znamo da te naredbe moramo napisati na kraju programa da bi program normalno radio.
PRO - MIL
int main()
{
cout << "Ovo je moj tekst." << endl;
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
Na prvi
program
Varijable
#include <cstdlib>
#include <iostream>
Donoenje Grafika
odluke
Jedna od najboljih metoda koje nam pomau da bolje razumijemo funkcioniranje programa i pojedinih naredbi jest da u program unosimo manje izmjene, a
zatim opaamo kakve posljedice e takve izmjene izazvati.
Petlje
Varijacije programa
Uvod
Sadraj
PRO - MIL
Obrada
teksta
Saimanje Veliki programi
koda
Objekti
int main()
{
cout << "OVDJE STAVLJAMO TEKST." << endl;
system("PAUSE");
return 0;
}
Polja
43
Na prvi program
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
cout << "Jaa jesm nism ghgh." << endl;
system("PAUSE");
return 0;
}
44
Navodnik koji
smo dodali.
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
cout << "Jaa jesm " nism ghgh." << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Uvod
Sadraj
Na prvi
program
#include <cstdlib>
#include <iostream>
Klikom na Kompajlaj i
pokreni pokrenemo program.
PRO - MIL
Donoenje Grafika
odluke
Petlje
Polja
int main()
{
cout << "Ovo je moj tekst.";
system("PAUSE");
return 0;
}
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
Vratimo na program u
prvobitno stanje, a zatim
ga pokrenimo klikom na
Kompajlaj i pokreni.
Ovako e izgledati rezultat rada naeg programa.
int main()
{
cout << "Ovo je moj tekst." << endl ;
system("PAUSE");
return 0;
}
Varijable
45
Na prvi program
#include <cstdlib>
#include <iostream>
Vidimo da se je dogodilo
ono to smo oekivali.
Izmeu prvog i drugog
reda teksta pojavio se je
jedan prazni red.
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
cout << "Ovo je moj tekst." << endl;
cout << endl;
cout << endl;
cout << endl;
system("PAUSE");
return 0;
}
Dodajmo u na program
jo nekoliko << endl naredbi.
46
PRO - MIL
Varijable
Na prvi
program
int main()
{
cout << "Ovo je moj tekst." << endl << endl << endl << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Ovom
naredbom
nareujemo raunalu
da prilikom ispisa
skoi u novi red.
Uoimo da ova naredba ini cjelinu s
<< oznakama.
Oznaava kraj
naredbe
ili
grupe naredbi
koje ine cjelinu.
Objekti
Iako nevelik,
ovo je JAKO
vaan dio programa.
Obrada
teksta
Polja
Uoimo da naredbu << endl ne moemo koristiti ako prije nismo stavili naredbu cout.
Uvod
Pokrenemo li ovu inaicu programa, uvjerit emo se da daje isti rezultat kao i prethodna.
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
Sadraj
47
Na prvi program
Distribucija programa
48
PRO - MIL
Sadraj
1 - Kliknemo na Datoteka.
3 - Na ovom popisu
kliknemo na projekt
koji elimo otvoriti.
PRO - MIL
Objekti
Na najjednostavniji nain
moemo uitati nekoliko
prethodnih spremanja.
Obrada
teksta
Polja
Petlje
Ako pokuamo ugasiti programsko okruenje, a da nismo spremili program, raunalo e nas upozoriti.
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
49
Na prvi program
1 - Kliknemo na Datoteka.
4 - Kliknemo na Otvori.
50
PRO - MIL
PRO - MIL
Na prvi
program
Varijable
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Nakon
to
se
spremljeni projekt
uitao, mogli bismo
biti zbunjeni injenicom da ga ne vidimo u prostoru u
kojem smo oekivali da emo ga
vidjeti.
Uvod
Sadraj
51
Varijable
52
PRO - MIL
Objekti
PRO - MIL
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Varijable
Na prvi
program
Uvod
Sadraj
53
Varijable
int main()
{
cout << 2+3;
cout << endl;
system("PAUSE");
return 0;
}
je na zaslon.
Pogledajmo
sada
U ovom redu
nareujemo raunalu da zbroj
broja 2 i broja 3,
a to je broj 5,
ispie na zaslon
raunala.
U ovom redu
nareujemo raunalo da skoi
u novi red.
dio promijenjen.
54
PRO - MIL
#include <cstdlib>
#include <iostream>
Objekti
int main()
{
cout << 12-8;
cout << endl;
system("PAUSE");
return 0;
}
Petlje
Donoenje Grafika
odluke
int main()
{
cout << 8+4;
cout << endl;
system("PAUSE");
return 0;
}
Uvod
Na prvi
program
#include <cstdlib>
#include <iostream>
Varijable
Sadraj
PRO - MIL
55
Varijable
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
cout << 2*3;
cout << endl;
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
cout << 12/4;
cout << endl;
system("PAUSE");
return 0;
}
56
PRO - MIL
Polja
int main()
{
cout << 15/3;
cout << endl;
system("PAUSE");
return 0;
}
Obrada
teksta
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
cout << 17/3;
cout << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Petlje
#include <cstdlib>
#include <iostream>
Donoenje Grafika
odluke
Varijable
Na prvi
program
int main()
{
cout << 13/4;
cout << endl;
system("PAUSE");
return 0;
}
Uvod
Objekti
#include <cstdlib>
#include <iostream>
Sadraj
57
Varijable
Varijable
Vidjeli smo da osnovne raunske operacije, osim dijeljenja, funkcioniraju, ali
ne ba na nain kako smo mi zamiljali
da bi program trebao raditi.
Problem naih dosadanjih programa
jest u tome to svaki program vri raunsku operaciju izmeu dva konkretna broja i ako elimo izvriti raunsku
operaciju izmeu druga dva broja, program moramo iznova pisati i prevoditi.
Postavlja se pitanje bismo li mogli napisati npr. program za zbrajanje koji ne bi
zbrajao dva konkretna broja, nego bi
mogao zbrojiti bilo koja dva broja.
To je, naravno, mogue. Unesimo, prevedimo i pokrenimo ovaj program.
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
int c;
cin >> a;
cin >> b;
c = a + b;
cout << c;
cout << endl;
system("PAUSE");
return 0;
}
58
PRO - MIL
PRO - MIL
Uvod
Donoenje Grafika
odluke
Obrada
teksta
Objekti
Pokrenimo bez ikakvih izmjena isti program jo jednom, ali sada unesimo neke
druge brojeve, npr. broj 12 i broj 14.
Polja
Petlje
Nakon pritiska na
Enter tipku na tipkovnici, a zaslonu
raunala ugledat
em o
r e zu lt at
zbrajanja broja 3 i
broja 5, a to je broj
8.
Varijable
Na prvi
program
Na tipkovnici izaberemo
drugi broj koji elimo
zbrajati, npr. broj 5 i
zatim pritisnemo Enter
tipku na tipkovnici.
Sadraj
59
Varijable
Analiza programa
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
Poetak programa.
a
int a;
int b;
int c;
cin >> a;
cin >> b;
c = a + b;
8
cout << c;
system("PAUSE");
return 0;
}
60
3
a
5
b
3
=
Sadraj prostora c, a to je
rezultat zbrajanja, ispiemo
na zaslon raunala.
5
+
c
8
Kraj programa.
PRO - MIL
int b;
int c;
PRO - MIL
cin >> a ;
Uvod
Saimanje Veliki programi
koda
Naredba za unos.
Objekti
Obrada
teksta
U taj prostor broj moemo staviti na vie naina, a jedan od njih je da ga unesemo pomou tipkovnice. Za to emo koristiti naredbu cin.
Na prvi
program
Varijable
int a ;
Donoenje Grafika
odluke
Naredba za formiranje
prostora.
Petlje
Na poetku taj prostor moemo zamisliti kao posudice u koje moemo staviti
brojeve, iako su to zapravo rezervirana mjesta u memoriji naeg raunala.
Polja
Sadraj
61
Varijable
cin >> b ;
Oznaka ; obvezno
dolazi na kraju naredbe.
c = a + b ;
Nakon to se naredba c = a + b; izvri, u prostoru c nalazit e se rezultat zbrajanja sadraja prostora a i prostora b, ali da korisnik vidio rezultat moramo narediti raunalu da sadraj prostora c ispie na zaslon raunala. To emo uiniti
ovom naredbom.
Naredba za ispis.
62
cout << c ;
Oznaka ; obavezno
dolazi na kraju naredbe.
PRO - MIL
Sad se postavlja pitanje po kojoj logici se biraju nazivi prostora za spremanje brojeva. Pogledajmo neka pravila i sugestije.
- Ne smiju se koristi naredbe; npr. int aaa; je dozvoljeno, a int cout; nije.
- Koriste se samo brojevi i slova engleske abecede, dakle bez .
- Naziv ne smije sadravati razmak; PrviBroj i prvi_broj je dozvoljeno, a
prvi broj nije.
- Ako naziv sadri brojeve, prvi znak mora biti slovo, dakle a1 je dozvoljeno, a 1a nije.
- Pametno je da naziv prostora govori to se u prostoru nalazi. Bolje je da
prostor u koji emo spremati povrinu nazovemo povrsina nego qqy1.
- Dva razliita prostora ne mogu imati isto ime.
PRO - MIL
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
int main()
{
int prvi;
int drugi;
int rezultat;
cin >> prvi;
cin >> drugi;
rezultat = prvi + drugi;
cout << rezultat;
cout << endl;
system("PAUSE");
return 0;
}
Polja
Ovaj program ima potpuno istu strukturu kao prethodni, samo to ima drugaije nazive prostora za spremanje brojeva.
Obrada
teksta
#include <cstdlib>
#include <iostream>
Objekti
Varijacije programa
Uvod
Sadraj
63
Varijable
#include <cstdlib>
#include <iostream>
64
PRO - MIL
int main()
{
int a;
int b;
int c;
cin >> a;
cin >> b;
c = a + b;
cout << "c";
cout << endl;
system("PAUSE");
return 0;
}
To se dogaa zato
to je program formalno ispravno napisan; cout << "c"; je
ispravna naredba, ali
ne radi ono to smo
htjeli.
PRO - MIL
Uvod
Objekti
Saimanje Veliki programi
koda
Obrada
teksta
Polja
Petlje
Na prvi
program
namespace
Varijable
using
std;
U ovom programu ovu naredbu nismo napisali u ispravnom obliku kao cout << c; nego
u obliku cout << "c"; dakle sadraj koji se
ispisuje stavili smo u navodnike kao to
smo to naviknuli prilikom ispisa teksta koritenjem cout naredbe.
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
Sadraj
65
Varijable
#include <cstdlib>
#include <iostream>
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;
}
#include <cstdlib>
#include <iostream>
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
Sadraje prostora za spremanje brojeva moemo dijeliti, ali e kao i proli put
kad smo pokuali dijeliti, rezultat biti
ispravan samo za brojeve iji rezultat
dijeljenja nije decimalni broj.
PRO - MIL
Petlje
Polja
#include <cstdlib>
#include <iostream>
Obrada
teksta
Objekti
Donoenje Grafika
odluke
int main()
{
int broj1;
int broj2;
int rezultat;
cin >> broj1;
cin >> broj2;
rezultat = broj1 / broj2;
cout << rezultat;
cout << endl;
system("PAUSE");
return 0;
}
Na prvi
program
#include <cstdlib>
#include <iostream>
Varijable
Problem dijeljenja
Uvod
Sadraj
67
Varijable
Oznaka ; obvezno
dolazi na kraju naredbe.
float broj1 ;
Postavlja se pitanje bismo li mogli u na program unijeti broj s decimalnim zarezom. Pokrenimo jo jednom program iz prethodnog primjera i pokuajmo.
68
PRO - MIL
Nai programi dodue rade, ali su tako runi da bi teko bili runiji. Korisnika
doeka crni ekran bez ikakvih uputa. Nakon to unesemo dva broja, dobit
emo trei bez ikakvog komentara to taj trei broj predstavlja.
Petlje
Polja
int main()
{
float broj1;
float broj2;
float rezultat;
cout << "Dijeljenje." << endl;
cout << "Unesite prvi broj." << endl;
cin >> broj1;
cout << "Unesite drugi broj." << endl;
cin >> broj2;
rezultat = broj1 / broj2;
cout << "Rezultat dijeljenja je:" << endl;
cout << rezultat;
cout << endl;
system("PAUSE");
return 0;
}
Obrada
teksta
U ovom programu na
poetku programa, te
prije svakog unosa i
ispisa rezultata naredbom cout ispisali smo
adekvatan komentar
koji pomae korisniku
da lake shvati emu
program slui, to mora
unijeti i to je dobio kao
rezultat.
Objekti
#include <cstdlib>
#include <iostream>
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uljepavanje programa
Uvod
Sadraj
PRO - MIL
69
Varijable
#include <cstdlib>
#include <iostream>
Naslov programa.
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;
Prazni red.
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> broj2;
Komentar drugog unosa.
cout << endl;
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.
70
Ispis rezultata.
PRO - MIL
Jedina novost je
komentar na poetku
programa
koji se nalazi iza //
oznaka i opisuje
namjenu programa.
PRO - MIL
Prilikom prevoenja programa, kad prevoditelj naie na // oznaku, skae u novi red
ne prevodei ostatak reda.
Na prvi
program
Varijable
Saimanje Veliki programi
koda
Objekti
int main()
{
float stranica_A;
float stranica_B;
float povrsina;
cout << "Povrsina." << endl;
cout << endl;
cout << endl;
cout << "Unesite prvu stranicu." << endl;
cin >> stranica_A;
cout << endl;
cout << "Unesite drugu stranicu." << endl;
cin >> stranica_B;
cout << endl;
povrsina = stranica_A * stranica_B;
cout << "Povrsina je:" << endl;
cout << povrsina;
cout << endl;
cout << endl;
system("PAUSE");
return 0;
}
Donoenje Grafika
odluke
Struktura je ista
kao i struktura
prethodnog programa, ali su prilagoeni komentari i
nazivi prostora za
spremanje brojeva.
Petlje
#include <cstdlib>
#include <iostream>
Polja
Ovo je program za
izraun povrine
pravokutnika. Unijet emo ga u raunalo i pokrenuti.
// *********************************
// Program za izraun povrine
// *********************************
Obrada
teksta
Uvod
Sadraj
71
Varijable
// ******************************
// Program za izraun brzine
// ******************************
#include <cstdlib>
#include <iostream>
Osim
to
komentare
72
PRO - MIL
Uvod
Na prvi
program
Varijable
Saimanje Veliki programi
koda
Objekti
Donoenje Grafika
odluke
Petlje
Polja
#include <cstdlib>
#include <iostream>
Obrada
teksta
// *********************************************
// Program za izraun volumena kvadrata
// *********************************************
Sadraj
PRO - MIL
73
Grafika
74
PRO - MIL
Objekti
PRO - MIL
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Grafika
Na prvi
program
Uvod
Sadraj
75
Grafika
1 - Kliknemo na Parametes.
2 - Ovdje unesemo -lbgi -lgdi32
Kliknemo na Ok.
76
PRO - MIL
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
Klikom na Kompajlaj i pokreni pokrenemo
cleardevice();
program.
circle(320,240,180);
getch();
Otvorit e se dva prozora:
closegraph();
return 0;
- tekstualni koji smo do sada koristili
}
Objekti
Obrada
teksta
Polja
Petlje
Na prvi
program
Varijable
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Donoenje Grafika
odluke
Uvod
Sadraj
PRO - MIL
77
Grafika
Analiza programa
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
Poetak programa. Za razliku od dosadanjih programa, u ovom smo korigirali poetak dodavi mu jo jednu naredbu.
Ovom naredbom u program ukljuujemo grafike naredbe.
int gdriver = 9;
int gmode = 2;
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
Brie stari sadraj zaslona i stare postavke boja. Pokuajmo pokrenuti program bez ove naredbe.
circle(320,240,180);
78
PRO - MIL
return 0;
}
PRO - MIL
Uvod
Na prvi
program
Objekti
int gdriver = 9 ;
Obrada
teksta
Polja
Varijable
closegraph();
Donoenje Grafika
odluke
Petlje
getch();
Ovom naredbom zaustavljamo izvoenje programa do trenutka dok ne pritisnemo neku tipku na tipkovnici. Ima
istu namjenu kao i system(PAUSE)
u normalnim programima.
Sadraj
79
Grafika
Nakon to smo naredbom int gdriver = 9; odabrali tip grafikog prozora, ovom
naredbom biramo rezoluciju grafikog prozora.
int gmode = 2 ;
Znaenje ovog broja ovisi o tipu grafikog prozora koji smo odabrali.
Ako smo naredbom int gdriver = 9; odabrali
VGA prozor, stavimo li ovdje broj 0, dobit emo
prozor veliine 640 X 200 toaka. Stavimo li 1,
dobit emo prozor veliine 640 X 350 toaka, a
stavimo li broj 2 koji smo mi odabrali, dobit emo prozor veliine 640 X 480 toaka.
Ako smo naredbom int gdriver = 6 ; odabrali
IBM 8514 prozor, stavimo li ovdje broj 0, dobit
emo prozor veliine 640 X 480 toaka, a stavimo li broj 1, dobit emo prozor veliine 1024
X 768 toaka.
setbkcolor( WHITE );
80
PRO - MIL
Dodat emo naredbu COLOR iza koje se nalaze tri broja ija vrijednost moe biti izmeu 0 i 255.
Boje u raunalu sastoje se od tri boje; crvene, zelene i plave. Sve ostale
boje nastaju mijeanjem tih boja.
Prvim brojem odreujemo intenzitet crvene boje, drugim intenzitet zelene i
treim intenzitet plave boje.
Varijable
Zelena.
Donoenje Grafika
odluke
Crvena.
Plava.
Petlje
Na prvi
program
Uvod
Osim navoenja imena boja, boje moemo odrediti i navoenjem njihove brojane vrijednosti.
Sadraj
setcolor(BLACK);
setcolor(COLOR (0,0,0));
PRO - MIL
Objekti
Ovom naredbom odreuje se boja kojom crtamo. Koristimo iste nazive boja
kao i u prethodnoj naredbi.
Obrada
teksta
Polja
Naredbom setbkcolor(COLOR(255,255,255)); dobit emo bijelu boju, a naredbom setbkcolor(COLOR(0,0,0)); dobit emo crnu boju.
81
Grafika
Udaljenost sredita od
lijevog ruba prozora
Udaljenost sredita od
gornjeg ruba prozora
Polumjer kruga.
640
240
320
180
irina prozora,
u naem sluaju 640 toaka.
480
82
PRO - MIL
Na prvi
program
Pokuajmo promijeniti
brojeve koji odreuju polumjer kruga i poloaj sredita kruga.
Objekti
Obrada
teksta
Polja
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle(320,240,220);
circle(320,240,165);
circle(320,240,110);
circle(320,240,55);
getch();
closegraph();
return 0;
}
Varijable
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Petlje
Varijacije programa
Uvod
Sadraj
PRO - MIL
83
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle(160,140,80);
circle(320,140,80);
circle(480,140,80);
getch();
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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
Uvod
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle(320,240,220);
circle(220,140,50);
circle(420,140,50);
circle(320,240,30);
getch();
closegraph();
return 0;
}
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (60, 60, 60);
circle (180, 180, 60);
circle (300, 300, 60);
getch();
closegraph();
return 0;
}
Na prvi
program
85
Grafika
Crtanje pravokutnika
Osim krunice moemo nacrtati
i druge oblike, npr. pravokutnik.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
640
100
380
160
480
480
86
Naredba za crtanje
pravokutnika.
PRO - MIL
Uvod
PRO - MIL
Varijable
Petlje
Donoenje Grafika
odluke
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
circle (220, 140, 50);
circle (420, 140, 50);
circle (320, 240, 30);
rectangle (260, 342, 380, 338);
getch();
closegraph();
return 0;
}
Polja
Obrada
teksta
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Objekti
Na prvi
program
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
rectangle (160, 100, 480, 380);
rectangle (190, 130, 450, 350);
rectangle (220, 160, 420, 320);
rectangle (250, 190, 390, 290);
getch();
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
87
Grafika
Crtanje crte
Crtu moemo nacrtati na vie
naina, a uporaba naredbe line
jedan je od njih.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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
crte.
640
100
380
120
500
480
88
Naredbom
line
crtamo crtu, a sa
etiri broja koji se
nalaze iza naredbe line odreujemo poetak i kraj
crte.
Funkciju pojedinih
brojeva moemo
vidjeti na crteu.
PRO - MIL
Uvod
Na prvi
program
PRO - MIL
Polja
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
circle (320, 240, 165);
circle (320, 240, 110);
circle (320, 240, 55);
line (100, 240, 540, 240);
line (320, 20, 320, 460);
getch();
closegraph();
return 0;
}
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Petlje
Donoenje Grafika
odluke
Varijable
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
line (100, 240, 540, 240);
line (320, 20, 320, 460);
getch();
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
89
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
640
100
380
120
500
480
90
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
moveto(160, 240);
lineto(160, 450);
getch();
closegraph();
return 0;
}
PRO - MIL
Polja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Obrada
teksta
Na prvi
program
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);
lineto(160, 240);
lineto(320, 120);
lineto(480, 240);
getch();
closegraph();
return 0;
}
Uvod
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
91
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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>
using namespace std;
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
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Varijable
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Petlje
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);
lineto(160, 240);
getch();
closegraph();
return 0;
}
Na prvi
program
PRO - MIL
Obrada
teksta
Objekti
Saimanje Veliki programi
koda
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);
lineto(160, 240);
lineto(320, 120);
getch();
closegraph();
return 0;
}
Polja
93
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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);
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
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);
lineto(160, 240);
lineto(320, 120);
lineto(480, 240);
getch();
closegraph();
return 0;
}
PRO - MIL
Crtanje toke
Ponekad nam je potrebna samo
jedna toka, kao u ovom primjeru gdje smo tokom oznaili
sredite kruga.
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Uvod
Sadraj
500
480
PRO - MIL
Obrada
teksta
380
Objekti
640
Naredba za crtanje
toke.
Polja
Petlje
Donoenje Grafika
odluke
Varijable
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
putpixel (320, 240, BLACK);
getch();
closegraph();
return 0;
}
95
Grafika
Ispis teksta
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
cout << "Ovo je krug." << endl;
circle (320, 240, 220);
getch();
closegraph();
return 0;
}
96
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Varijable
Polja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Donoenje Grafika
odluke
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
outtext ("Ovo je krug.");
circle (320, 240, 220);
getch();
closegraph();
return 0;
}
Petlje
Obrada
teksta
grafikog prozora.
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
97
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Brojevima odreujemo
poziciju ispisa.
Unutar navodnika je
tekst koji ispisujemo.
640
240
320
Ovo je krug.
480
98
PRO - MIL
Petlje
Donoenje Grafika
odluke
Varijable
ispis teksta.
Polja
settextstyle ( 9, HORIZ_DIR, 1 );
Veliina slova.
PRO - MIL
Obrada
teksta
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
settextstyle (9, HORIZ_DIR, 1);
outtextxy (320, 240, "Ovo je krug.");
circle (320, 240, 220);
getch();
closegraph();
return 0;
}
Objekti
Uvod
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
99
Grafika
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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);
outtextxy(320, 200, "Ovo je krug.");
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);
outtextxy(320, 320, "Ovo je krug.");
getch();
closegraph();
return 0;
}
100
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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);
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;
}
PRO - MIL
Uvod
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
Objekti
Saimanje Veliki programi
koda
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle (320, 240, 220);
settextstyle(0, HORIZ_DIR, 3);
outtextxy(320, 40, "Ovo je krug.");
settextstyle(1, HORIZ_DIR, 3);
outtextxy(320, 80, "Ovo je krug.");
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);
outtextxy(320, 200, "Ovo je krug.");
settextstyle(5, HORIZ_DIR, 3);
outtextxy(320, 240, "Ovo je krug.");
settextstyle(6, HORIZ_DIR, 3);
outtextxy(320, 280, "Ovo je krug.");
settextstyle(7, HORIZ_DIR, 3);
outtextxy(320, 320, "Ovo je krug.");
settextstyle(8, HORIZ_DIR, 3);
outtextxy(320, 360, "Ovo je krug.");
settextstyle(9, HORIZ_DIR, 3);
outtextxy(320, 400, "Ovo je krug.");
settextstyle(10, HORIZ_DIR, 3);
outtextxy(320, 440, "Ovo je krug.");
getch();
closegraph();
return 0;
}
Na prvi
program
101
Donoenje odluke
102
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
Donoenje odluke
C++ programiranje za apsolutne poetnike
103
Donoenje odluke
Funkcije
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float broj;
float potencija;
float rezultat;
cout << "Unesite broj:" << endl;
cin >> broj;
cout << endl;
cout << "Unesite potenciju:" << endl;
cin >> potencija;
cout << endl;
rezultat = pow(broj,potencija);
cout << "Rezultat je:" << endl;
cout << rezultat << endl;
cout << endl;
system("PAUSE");
return 0;
}
za
Naredba za potenciranje.
104
Potencija na koju
potenciramo.
PRO - MIL
Uvod
Na prvi
program
Polja
Petlje
int main()
{
float kut;
float rezultat;
cout << "Kut u radijanima:" << endl;
cin >> kut;
cout << endl;
rezultat = sin(kut);
cout << "Sinus kuta je:" << endl;
cout << rezultat << endl;
cout << endl;
system("PAUSE");
return 0;
}
Ako ne znate to je to
sinus, nemojte se time
optereivati. To nije bitno
za razumijevanje C++
programskog jezika.
Varijable
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <cmath>
Sadraj
PRO - MIL
Objekti
Obrada
teksta
105
Donoenje odluke
Ponekad je u programu
potrebno negativan broj
pretvoriti u pozitivan.
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
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
negativnog broja u pozitivan broj.
106
PRO - MIL
PRO - MIL
Varijable
Donoenje Grafika
odluke
Ako je 4 puta 4, odnosno 4 na kvadrat, jednako 16, onda je kvadratni korijen od 16 jedak
4.
Petlje
to je to uope kvadrati
korijen?
Polja
Pogledajmo program
za vaenje kvadratnog
korijena.
Obrada
teksta
int main()
{
float broj;
float rezultat;
cout << "Unesite broj:" << endl;
cin >> broj;
cout << endl;
rezultat = sqrt(broj);
cout << "Kvadratni korijen je:" << endl;
cout << rezultat << endl;
cout << endl;
system("PAUSE");
return 0;
}
Objekti
#include <cstdlib>
#include <iostream>
#include <cmath>
Na prvi
program
Uvod
Sadraj
107
Donoenje odluke
Donoenje odluke
Pokuajmo kvadrati korijen izraunati pomou ovakvog programa.
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float broj;
float rezultat;
cout << "Unesite pozitivan broj." << endl;
cin >> broj;
cout << endl;
if (broj < 0)
{
cout << "Broj je negativan!" << endl;
}
else
{
rezultat = sqrt(broj);
cout << "Kvadratni korijen je:" << endl;
cout << rezultat;
cout << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
108
kvadratni
negativan
broj.
PRO - MIL
Broj nula.
if (broj < 0)
Naredbom if ispitujemo
je li sadraj varijable manji od nule.
{
cout << "Broj je negativan!" << endl;
}
Ovaj dio programa izvodi se samo ako je sadraj varijable broj manji
od nule.
Uvod
Na prvi
program
Varijable
float broj;
float rezultat;
cout << "Unesite pozitivan broj." << endl;
cin >> broj;
cout << endl;
Formiranje varijabli i
unos broja iz kojeg emo vaditi kvadratni korijen.
Izvodi se prilikom svakog pokretanja programa.
Donoenje Grafika
odluke
int main()
{
Petlje
Polja
#include <cstdlib>
#include <iostream>
#include <cmath>
Sadraj
rezultat = sqrt(broj);
cout << "Kvadratni korijen je:" << endl;
cout << rezultat;
cout << endl;
}
PRO - MIL
Objekti
Obrada
teksta
else
109
Donoenje odluke
Svi programi koje smo do sada vidjeli izvodili su se redom od prve do posljednje naredbe. U sluaju programa za vaenje kvadratnog korijena to nam ne
odgovara jer elimo da program na jedan nain reagira ako unesemo pozitivan broj, a na drugi nain ako unesemo negativan.
Ako unesemo pozitivan broj, izraunat emo kvadratni korijen i neemo ispisivati obavijest da je broj negativan, a ako unesemo negativan broj, ispisat emo obavijest da je broj negativan i neemo raunati kvadratni korijen, budui
da iz negativnog broja nije mogue izraunati kvadratni korijen.
Za razliku od dosadanjih naredbi koje su se nalazile u jednom redu, naredba
koja nam omoguuje izvoenje jednog ili drugog dijela programa proteu se
kroz vie redova. Pogledajmo strukturu tog sustava.
if ( broj < 0 )
{
sadraj a
}
else
{
sadraj b
}
110
PRO - MIL
Varijable
#include <cstdlib>
#include <iostream>
Petlje
Donoenje Grafika
odluke
Polja
Obrada
teksta
int main()
{
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
cout << endl;
if (broj > 0)
{
cout << "Broj je veci od nule." << endl;
}
else
{
cout << "Broj nije veci od nule." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Uvod
Na prvi
program
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.
Sadraj
PRO - MIL
nije
Objekti
od nule.
111
Donoenje odluke
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
cout << endl;
if (broj == 0)
{
cout << "Broj je jednak nuli." << endl;
}
else
{
cout << "Broj nije jednak nuli." << endl;
}
cout << endl;
system("PAUSE");
return 0;
Da smo umjesto broj == 0 napisali broj = 0 program ne bi ispitivao je li sadraj varijable broj
jednak nuli, nego bi broj nula
stavio u varijablu broj.
112
PRO - MIL
Na prvi
program
Uvod
Sadraj
Polja
Objekti
Obrada
teksta
int main()
{
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
cout << endl;
if (broj < 100)
{
cout << "Broj je manji od sto." << endl;
}
else
{
cout << "Broj nije manji od sto." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Petlje
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
PRO - MIL
113
Donoenje odluke
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> drugi;
cout << endl;
if (prvi == drugi)
{
cout << "Brojevi su jednaki." << endl;
}
else
{
cout << "Brojevi su razliciti." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
114
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Saimanje Veliki programi
koda
Objekti
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> drugi;
cout << endl;
if (prvi < drugi)
{
cout << "Prvi broj je manji." << endl;
}
else
{
cout << "Prvi broj nije manji." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Petlje
Polja
#include <cstdlib>
#include <iostream>
Obrada
teksta
Sadraj
PRO - MIL
115
Donoenje odluke
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> drugi;
cout << endl;
if ((prvi < 5) && (drugi < 5))
{
cout << "Oba broja su manja od pet." << endl;
}
else
{
cout << "Oba broja nisu manja od pet." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
116
PRO - MIL
Sadraj
else
sadraj b
}
5, a mogue je i da nije.
Postavlja se pitanje u kojem sluaju e se
izvravati sadraj a, a u kojem sluaju sadraj b.
Ovim oznakama nareujemo raunalu da
e se sadraj a izvoditi samo onda kad su
zadovoljena oba uvjeta; u naem sluaju
kad je sadraj varijable prvi manji od 5 i kad
je sadraj varijable drugi manji od 5.
U svim ostalim sluajevima izvrit e se
sadraj b.
PRO - MIL
Petlje
Polja
Obrada
teksta
Objekti
sadraj a
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
uvjet, prvi i drugi nalaze se unutar svojih zagrada, a svi zajedno nalaze se
117
Donoenje odluke
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float prvi;
float drugi;
cout << "Unesite prvi broj." << endl;
cin >> prvi;
cout << endl;
cout << "Unesite drugi broj." << endl;
cin >> drugi;
cout << endl;
if ((prvi < 5) || (drugi < 5))
{
cout << "Barem jedan je manji od 5." << endl;
}
else
{
cout << "Niti jedan nije manji od 5." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
118
PRO - MIL
if (broj > 0)
if (broj == 0)
if (broj == 50)
if (broj != 50)
if (prvi == drugi)
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
if (broj < 0)
Polja
Obrada
teksta
Isto tako bilo koje dvije varijable koje se koriste u programu moemo meusobno usporeivati.
Objekti
Ovo su samo neki primjeri, dok je broj moguih kombinacija praktiki neogranien. Bilo koju varijablu koju koristimo u programu moemo usporediti s
bilo kojim brojem.
Ovdje moemo vidjeti primjere jednostavnih ispitivanja na temelju kojih raunalo donosi odluku koji dio programa e se izvoditi, a koji preskoiti.
Sadraj
119
Donoenje odluke
Uvjet je zadovoljen ako je sadraj varijable prvi ili sadraj varijable drugi ili
if (((prvi < 5) || (drugi < 5)) && (treci < 5))
sadraj obiju varijabli manji od 5 i ako
je sadraj varijable treci manji od 5.
Uvjet je zadovoljen ako su sve tri varijable manje od pet. Dovoljno je da jedif ((prvi < 5) && (drugi < 5) && (treci < 5))
na varijabla nije manja od 5 i uvjet nije
ispunjen.
120
PRO - MIL
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
Varijable
ristiti
za
isprobavanje
kombinacija s prethodne
stranice.
U ovom sluaju ukupni
uvjet je ispunjen ako je
Donoenje Grafika
odluke
Petlje
Polja
int main()
{
float prvi;
float drugi;
float treci;
cout << "Unesite prvi broj." <<
endl;
cin >> prvi;
cout << "Unesite drugi broj." << endl;
cin >> drugi;
cout << "Unesite treci broj." << endl;
cin >> treci;
if (((prvi < 5) || (drugi < 5)) && (treci < 5))
{
cout << "DA" << endl;
}
else
{
cout << "NE" << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Na prvi
program
5.
dio programa.
Ako
zadovoljen, izvest e se
ovaj dio programa.
PRO - MIL
Objekti
121
Donoenje odluke
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
if (broj < 0)
{
cout << "Broj je manji od 0." << endl;
}
else
{
if (broj > 0)
{
cout << "Broj je veci od 0." << endl;
}
else
{
cout << "Broj je 0." << endl;
}
}
cout << endl;
system("PAUSE");
return 0;
}
122
ovaj
prog-
PRO - MIL
strukturu
Uvod
#include <cstdlib>
#include <iostream>
Pogledamo
programa.
Sadraj
Poetak programa.
Varijable
int main()
{
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
Na prvi
program
if (broj > 0)
{
cout << "Broj je veci od 0." << endl;
}
else
{
cout << "Broj je 0." << endl;
}
}
cout << endl;
system("PAUSE");
return 0;
}
Kraj programa.
PRO - MIL
Petlje
Polja
else
Obrada
teksta
Objekti
Donoenje Grafika
odluke
if (broj < 0)
123
Donoenje odluke
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
if (broj < 0)
{
cout << "Broj je manji od 0." << endl;
}
else
{
if (broj > 0)
{
cout << "Broj je veci od 0." << endl;
}
else
{
cout << "Broj je 0." << endl;
}
}
cout << endl;
system("PAUSE");
return 0;
}
124
PRO - MIL
{
cout << "Broj je manji od 0." << endl;
}
else
{
if (broj > 0)
{
cout << "Broj je veci od 0." << endl;
}
else
{
cout << "Broj je 0." << endl;
}
}
cout << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Varijable
Na prvi
program
Uvod
Na toj razini pie se
veina
jednostavnih
naredbi.
Donoenje Grafika
odluke
if (broj < 0)
Petlje
Polja
float broj;
cout << "Unesite broj." << endl;
cin >> broj;
Obrada
teksta
int main()
{
Objekti
#include <cstdlib>
#include <iostream>
Pogledajmo strukturu
uvlaenja redova.
Sadraj
125
Donoenje odluke
Switch naredba
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float a;
float b;
int od;
cout << "Unesite 1. broj:" << endl;
cin >> a;
cout << "Unesite 2. broj:" << endl;
cin >> b;
cout << "Brojeve cemo:" << endl;
cout << "1 - zbrojiti" << endl;
cout << "2 - oduzeti" << endl;
cout << "3 - mnoziti" << endl;
cout << "4 - dijeliti" << endl;
cin >> od;
switch (od)
{
case 1:
cout << a << " + " << b << " = " << a + b << endl;
break;
case 2:
cout << a << " - " << b << " = " << a - b << endl;
break;
case 3:
cout << a << " x " << b << " = " << a * b << endl;
break;
case 4:
cout << a << " : " << b << " = " << a / b << endl;
break;
default:
cout << "Morate unijeti 1,2,3 ili 4." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
126
If naredba nam
omoguuje grananje na dvije
grane. Jedna e
se izvriti ako je
uvjet
zadovoljen, a druga ako
uvjet nije zadovoljen.
Primjena naredbe if nije elegantna ako se u
programu
javi
potreba za grananjem u vie
od dvije grane.
PRO - MIL
Pokuajmo je obrisati.
Pokrenimo
program i promatrajmo posljedice.
Naredbom case 2:
zapoinje dio programa koji e se
izvriti ako je sadraj varijable od
broj 2.
case 4:
cout << "Cetvrti izbor." << endl;
break;
Na temelju sline
logike biraju se
ostali case dijelovi
kojih moe biti proizvoljni broj.
default:
(U naem sluaju
imamo jo case 3:
i case 4:.)
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Naredbom break
zavrava case 1:
naredba.
case 1:
Petlje
Polja
Obrada
teksta
Objekti
switch (od)
Sadraj
127
Petlje
128
PRO - MIL
Objekti
Obrada
teksta
PRO - MIL
Polja
Petlje
Donoenje Grafika
odluke
Petlje
Varijable
Na prvi
program
Uvod
Sadraj
129
Petlje
For petlja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
130
PRO - MIL
Uvod
Sadraj
x < 365 ;
{
circle ( x, 240, 60 );
}
PRO - MIL
x=x+5 )
Ovdje odreujemo nain na koji e se vrijednost varijable x mijenjati.
U naem sluaju nakon
svakog ponavljanja for
naredbe,
vrijednost
varijable x uveat e se
za 5, a rezultat e se
spremiti u varijablu x.
Varijable
Donoenje Grafika
odluke
Petlje
for ( x = 260 ;
Polja
Obrada
teksta
Objekti
Petlja e se vrtjeti, odnosno petlja e ponavljati dio programa, tako dugo dok je
ovaj uvjet zadovoljen; u naem sluaju,
tako dugo dok je sadraj varijable x manji
od 365.
Na prvi
program
131
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
getch();
closegraph();
return 0;
}
132
PRO - MIL
Vidimo da se ponavlja
sadraj unutar vitiastih
zagrada for naredbe.
Sadraj prije i sadraj poslije for naredbe ne ponavlja se.
PRO - MIL
Uvod
Na prvi
program
Varijable
Saimanje Veliki programi
koda
Objekti
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;
}
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Petlje
Polja
Takve nedoumice prevladavaju se tako da napiemo odreenu koliinu programa jer emo jedino na taj nain do kraja shvatiti kako for naredba radi i
emu slui.
Obrada
teksta
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.
Sadraj
133
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int x;
cout << "Prije for naredbe." << endl;
for (x = 0; x < 9; x = x + 2 )
{
cout << x << endl;
}
cout << "Nakon for naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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;
}
134
PRO - MIL
Uvod
Sadraj
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Donoenje Grafika
odluke
int main()
{
int x;
cout << "Prije for naredbe." << endl;
for (x = 18; x > -9; x = x - 2 )
{
cout << x << endl;
}
cout << "Nakon for naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Polja
Petlje
int main()
{
int x;
cout << "Prije for naredbe." << endl;
for (x = 28; x > 9; x = x - 2 )
{
cout << x << endl;
}
cout << "Nakon for naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Varijable
135
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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;
}
136
PRO - MIL
Pokuamo sami mijenjati vrijednosti unutar for naredbe i promatrajmo kakve efekte e izazvati te promjene.
Varijable
Donoenje Grafika
odluke
Objekti
Obrada
teksta
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 60; x < 580; x = x + 5 )
{
circle(x,240,60);
}
getch();
closegraph();
return 0;
}
Petlje
Polja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Na prvi
program
Iako to nije uvijek sluaj, najee se za postizanje eljenih ciljeva koristi varijabla petlje. Pogledajmo nekoliko primjera.
Uvod
Sadraj
PRO - MIL
137
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 60; x < 390; x = x + 5 )
{
circle(320,x,60);
}
getch();
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 60; x < 390; x = x + 15 )
{
circle(320,x,60);
}
getch();
closegraph();
return 0;
138
PRO - MIL
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
PRO - MIL
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 640; x = x + 10 )
{
line (x, 20, x, 400);
}
getch();
closegraph();
return 0;
}
Donoenje Grafika
odluke
Varijable
using namespace std;
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Polja
polumjer kruga.
Obrada
teksta
Objekti
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 20; x < 210; x = x + 10 )
{
circle(320,240,x);
}
getch();
closegraph();
return 0;
}
Na prvi
program
139
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 640; x = x + 30 )
{
rectangle (x, 20, x+20, 380);
}
getch();
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
140
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
int r;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
r = 20;
for (x = 20; x < 475; x = x + 15 )
{
circle(x,240,r);
r = r + 5;
}
getch();
closegraph();
return 0;
}
PRO - MIL
int r;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
r = 20;
circle(x,240,r);
r = r + 5;
}
getch();
closegraph();
return 0;
}
PRO - MIL
Na prvi
program
Obrada
teksta
Varijable
Prije for naredbe u varijablu r spremimo poetnu vrijednost polumjera kruga. U naem sluaju spremili
smo broj 20.
Objekti
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Polja
Uvod
Sadraj
141
Petlje
Animacija
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 620; x = x + 30 )
{
rectangle (x, 20, x+20, 60);
}
getch();
closegraph();
return 0;
}
142
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 620; x = x + 1 )
{
cleardevice();
rectangle (x, 20, x+20, 60);
}
getch();
closegraph();
return 0;
}
PRO - MIL
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Varijable
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Donoenje Grafika
odluke
Petlje
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 200; x = x + 1 )
{
cleardevice();
circle (320, 240, x);
}
getch();
closegraph();
return 0;
}
Na prvi
program
PRO - MIL
Obrada
teksta
Objekti
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 10; x < 465; x = x + 1 )
{
cleardevice();
circle (320, x, 10);
}
getch();
closegraph();
return 0;
}
Polja
143
Petlje
Petlja u petlji
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
int r;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 30; x < 610; x = x + 60 )
{
for (r = 5; r < 31; r = r + 5)
{
delay(100);
cleardevice();
circle (x, 240, r);
}
}
getch();
closegraph();
return 0;
}
Ovdje vidimo tijek cijele animacije, iako e se tijekom animacije istovremeno vidjeti samo
jedan krug.
Vanjskom petljom pomiemo
sredite kruga u lijevu stranu,
a unutranjom petljom mijenjamo polumjer kruga.
144
PRO - MIL
Uvod
Na prvi
program
Polja
Petlje
int main()
{
int x;
int r;
cout << "Prije petlje." << endl;
for (x = 0; x < 2; x = x + 1 )
{
cout << "Vanjska petlja. x = " << x << endl;
for (r = 0; r < 3; r = r + 1)
{
cout << "Nutarnja petlja. r = " << r << endl;
}
}
cout << "Nakon petlje." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Varijable
Analiziranje ovog
programa pomoi
e nam da u potpunosti razumijemo nain funkcioniranja petlje unutar petlje.
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
Sadraj
PRO - MIL
Skok u novi
red.
Objekti
Obrada
teksta
145
Petlje
Niz petlji
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
int main()
{
int gdriver = 9;
int gmode = 2;
int x;
int r;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
for (x = 465; x > 100; x = x - 1 )
{
cleardevice();
Analiza ovog progcircle (320, x, 10);
rama pomoi e
}
nam da lake razufor (r = 10; r < 91; r = r + 1)
#include <cstdlib>
mijemo funkcionira{
#include <iostream>
nje niza petlji.
cleardevice();
circle (320, x, r);
using namespace std;
}
getch();
int main()
closegraph();
{
return 0;
int x;
}
int r;
cout << "Prije petlji." << endl;
for (x = 2; x > 0; x = x - 1 )
{
cout << "Prva petlja. x = " << x << endl;
}
for (r = 0; r < 3; r = r + 1)
{
cout << "Druga petlja. r = " << r << endl;
}
cout << "Nakon petlji." << endl;
cout << endl;
system("PAUSE");
return 0;
}
146
PRO - MIL
Sadraj
sluaju
PRO - MIL
Na prvi
program
Donoenje Grafika
odluke
Varijable
ovom
Ovakva ispreplete-
Petlje
Polja
Obrada
teksta
Objekti
Uvod
147
Petlje
While petlja
#include <cstdlib>
#include <iostream>
int main()
{
int broj;
int kvadrat;
Ovaj program radi upravo tako. Uneint odgovor;
semo li nakon prorauna broj 1, proodgovor = 1;
raun emo moi ponoviti, a unesewhile (odgovor == 1)
mo li 2, odnosno bilo koji broj razliit
{
od 1 program e se zaustaviti.
cout << "Unesite broj" << endl;
cin >> broj;
kvadrat = broj * broj;
cout << "Kvadrat unesenog broja je:" << endl;
cout << kvadrat;
cout << endl;
cout << "Ponovo = unesite 1." << endl;
cout << "Kraj = unesite 2." << endl;
cin >> odgovor;
}
cout << endl;
U ovom programu koristi se
system("PAUSE");
petlja, budui da se dio proreturn 0;
grama moe ponoviti vie
}
puta. Ova petlje nije realizirana for naredbom, nego
while naredbom.
U emu je razlika?
Naredba for pogodnija je za
tono odreen broj ponavljanja, a naredba while onda kad unaprijed ne moemo znati broj ponavljanja.
(U ovom sluaju mi ne moemo unaprijed znati koliko
puta e korisnik htjeti kvadrirati neki broj.)
148
PRO - MIL
a = 1;
Uvod
Petlje
Donoenje Grafika
odluke
Varijable
Zato to se neke stvari mogu lake realizirati for naredbom, a neke while
naredbom. Pogledajmo elemente while naredbe.
Na prvi
program
Sadraj
cin >> a;
}
Da bi se ponavljanje u
nekom trenutku prekinulo, unutar vitiastih
zagrada varijabli koju
while naredba ispituje
treba promijeniti vrijednost.
PRO - MIL
Obrada
teksta
Objekti
Polja
while (a == 1)
149
Petlje
odgovor = 1;
Naredba while ispituje je li sadraj
varijable odgovor jednak broju 1.
while (odgovor == 1)
{
cout << "Unesite broj" << endl;
cin >> broj;
kvadrat = broj * broj;
cout << "Kvadrat unesenog broja je:" << endl;
cout << kvadrat;
cout << endl;
cout << "Ponovo = unesite 1." << endl;
cout << "Kraj = unesite 2." << endl;
cin >> odgovor;
}
150
PRO - MIL
Uvod
Sadraj
PRO - MIL
Petlje
Saimanje Veliki programi
koda
Objekti
int main()
{
int odgovor;
odgovor = 1;
cout << "Prije while naredbe." << endl;
while (odgovor == 1)
{
cout << "Prvi red bloka ponavljanja" << endl;
cout << "1 = nastavak ili 2 = kraj." << endl;
cin >> odgovor;
cout << "Zadnji red bloka ponavljanja" << endl;
}
cout << "Nakon while naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Polja
Obrada
teksta
#include <cstdlib>
#include <iostream>
Donoenje Grafika
odluke
Varijable
Na prvi
program
151
Petlje
#include <cstdlib>
#include <iostream>
using namespace std;
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;
}
152
PRO - MIL
Ovdje se unosi slovo d ili slovo n na temelju ega e while naredba ponovo izvesti naredbe unutar vitiastih zagrada
ako smo unijeli slovo d ili e izvesti naredbe nakon vitiastih zagrada ako smo
Kraj programa.
PRO - MIL
unijeli slovo n.
Varijable
Donoenje Grafika
odluke
Petlje
char odgovor;
odgovor = 'd';
Polja
int broj;
int kvadrat;
Obrada
teksta
int main()
{
Objekti
#include <cstdlib>
#include <iostream>
Na prvi
program
Uvod
Sadraj
153
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
grafikih programa.
int main()
Mali krug kree se od gore pre{
int gdriver = 9;
ma dolje, a zatim nas raunalo
int gmode = 2;
pita elimo li ponoviti animaciju.
int x;
char odgovor;
odgovor = 'd';
U ovom programu koristimo dviinitgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
je razliite vrste petlji.
setcolor (BLACK);
while (odgovor != 'n')
{
While naredbom ponavlja se
cleardevice();
animacija, a for naredbom, koja
for (x = 10; x < 465; x = x + 1 )
{
se nalazi unutar while petlje,
cleardevice();
animira se kretanje kruga.
circle (320, x, 10);
}
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 naredreturn 0;
ba, nego getch() na}
redba.
154
PRO - MIL
Formiranje varijabli.
Otvaranje
prozora.
grafikog
Obrada
teksta
}
closegraph();
return 0;
PRO - MIL
Varijable
cleardevice();
Donoenje Grafika
odluke
Petlje
Polja
char odgovor;
odgovor = 'd';
Objekti
int gdriver = 9;
int gmode = 2;
int x;
int main()
{
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Uvod
Sadraj
155
Petlje
Umjesto:
int x;
x =290;
moemo napisati
int x = 290;
Umjesto:
char odgovor;
odgovor = d;
moemo napisati
char odgovor = 'd';
156
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
int x = 290;
char odgovor = 'd';
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
while (odgovor != 'k')
{
rectangle(x, 432, x+60, 438);
odgovor = getch();
if (odgovor == 75)
{
x = x - 5;
}
if (odgovor == 77)
{
x = x + 5;
}
cleardevice();
}
closegraph();
return 0;
}
PRO - MIL
Ako pritisnemo lijevu strelicu, varijabla x, koja odreuje udaljenost pravokutnika od lijeve strane, umanjit
e se za 5, pa e se pravokutnik
drugi put crtati pomaknut 5 toaka u
lijevu stranu.
closegraph();
return 0;
}
Kraj programa.
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
int main()
{
int gdriver = 9;
int gmode = 2;
int x = 290;
char odgovor = 'd';
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
Polja
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Sadraj
157
Petlje
int main()
{
int gdriver = 9;
int gmode = 2;
int x = 290;
int y = 220;
char odgovor = 'd';
initgraph(&gdriver, &gmode, "");
I u ovom sluaju program e se izvosetbkcolor (WHITE);
diti dok korisnik ne pritisne tipku k,
setcolor (BLACK);
odnosno dok je pritisnuta tipaka razlicleardevice();
ita od k.
while (odgovor != 'k')
{
rectangle(x, y, x+60, y+5);
Ovdje smo dodali dio programa u kojem ispiodgovor = getch();
tujemo je li pritisnuta strelica prema gore ili
if (odgovor == 75)
strelica prema dolje.
{
x = x - 5;
Zato ovdje koristimo broj 72, a ne strelicu
}
prema gore?
if (odgovor == 77)
{
Zato to strelicu prema gore ne moemo unix = x + 5;
jeti u program preko tipkovnice, a broj 72 je
}
ifra za strelicu prema gore. (75 za lijevo, 77
if (odgovor == 72)
za desno i 80 za dolje.)
{
y = y - 5;
}
if (odgovor == 80)
{
y = y + 5;
}
cleardevice();
}
closegraph();
return 0;
}
158
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Polja
Petlje
Varijable
Obrada
teksta
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();
while (odgovor != 'k')
{
rectangle(x, y, x+60, y+5);
odgovor = getch();
if (odgovor == 75)
{
x = x - 5;
}
if (odgovor == 77)
{
x = x + 5;
}
if (odgovor == 72)
{
y = y - 5;
}
if (odgovor == 80)
{
y = y + 5;
}
cleardevice();
}
closegraph();
return 0;
Ako ovu naredbu obriemo, pravokutnik e se crtati na novoj poziciji, ali e ostati i na staroj pa e
rezultat kretanja pravokutnika biti
trag na zaslonu raunala.
Obriimo ovu naredbu i pokrenimo program.
Objekti
Varijablama x i y odreena je
pozicija gornjeg lijevog ugla pravokutnika. Varijabla x odreuje
udaljenost od lijevog ruba, a
varijabla y od gornjeg ruba.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Donoenje Grafika
odluke
Da bismo dobili primitivni program za crtanje, dovoljno je da u prethodnom programu maknemo naredbu za brisanje zaslona raunala.
Sadraj
159
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
160
PRO - MIL
Sadraj
Uvod
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
PRO - MIL
Donoenje Grafika
odluke
Obrada
teksta
Objekti
Polja
Petlje
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();
while (odgovor != 'k')
{
circle(x, y, 20);
odgovor = getch();
if (odgovor == 75)
{
x = x - 5;
}
if (odgovor == 77)
{
x = x + 5;
}
if (odgovor == 72)
{
y = y - 5;
}
if (odgovor == 80)
{
y = y + 5;
}
}
closegraph();
return 0;
}
Varijable
161
Petlje
int main()
Naredbom while (!kbhit) nareujemo
{
raunalu da petlju izvodi tako dugo
int gdriver = 9;
dok ni jedna tipka nije pritisnuta.
int gmode = 2;
initgraph(&gdriver, &gmode, "");
Pritisnemo li bilo koju tipku na tipkovsetbkcolor (WHITE);
nici, zaustavlja se izvoenje petlje i
setcolor (BLACK);
prekida se program.
cleardevice();
while (!kbhit())
{
rectangle(mousex(),mousey(),mousex()+80,mousey()+80 );
}
closegraph();
return 0;
}
162
PRO - MIL
int main()
{
int gdriver = 9;
int gmode = 2;
while (!kbhit())
{
circle(mousex(),mousey(),100);
}
closegraph();
return 0;
Uvod
Kraj programa.
PRO - MIL
Objekti
Saimanje Veliki programi
koda
Obrada
teksta
Polja
Na prvi
program
Varijable
Poetak programa.
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Petlje
Sadraj
163
Petlje
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
while (!kbhit())
{
cleardevice();
circle(mousex(),mousey(),100);
}
closegraph();
return 0;
}
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
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();
Na slian nain moemo miem
return 0;
pomicati neto drugo, npr. dvije
}
crte koje bi u igri mogle biti nian.
164
PRO - MIL
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
while (!kbhit())
{
if (ismouseclick(WM_MOUSEMOVE))
{
cleardevice();
circle(mousex(),mousey(),100);
}
clearmouseclick(WM_MOUSEMOVE);
}
closegraph();
return 0;
}
PRO - MIL
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
Polja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Obrada
teksta
Objekti
Uvod
Sadraj
165
Petlje
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>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
while (!kbhit())
{
if (ismouseclick(WM_LBUTTONDOWN))
{
cleardevice();
circle(mousex(),mousey(),100);
}
clearmouseclick(WM_LBUTTONDOWN);
}
closegraph();
return 0;
}
166
PRO - MIL
ismouseclick(WM_LBUTTONDOWN)
clearmouseclick(WM_LBUTTONDOWN);
ismouseclick(WM_LBUTTONDBLCLK)
clearmouseclick(WM_LBUTTONDBLCLK)
ismouseclick(WM_RBUTTONDOWN)
clearmouseclick(WM_RBUTTONDOWN)
ismouseclick(WM_RBUTTONDBLCLK)
clearmouseclick(WM_RBUTTONDBLCLK)
ismouseclick(WM_MBUTTONDOWN)
clearmouseclick(WM_MBUTTONDOWN)
ismouseclick(WM_MBUTTONDBLCLK)
clearmouseclick(WM_MBUTTONDBLCLK)
Uvod
Na prvi
program
clearmouseclick(WM_MOUSEMOVE)
Varijable
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
ismouseclick(WM_MOUSEMOVE)
Donoenje Grafika
odluke
OITAVANJE MIA
Sadraj
167
Petlje
Do while petlja
Pokrenemo li ova dva
programa, vidjet emo
da je rezultat njihovog
rada potpuno jednak,
iako prvi koristi while
naredbu, a drugi do
while naredbu.
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
while (!kbhit())
{
if (ismouseclick(WM_LBUTTONDOWN))
{
circle(mousex(),mousey(),100);
}
clearmouseclick(WM_LBUTTONDOWN);
}
closegraph();
return 0;
}
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
do
{
if (ismouseclick(WM_LBUTTONDOWN))
{
circle(mousex(),mousey(),100);
}
clearmouseclick(WM_LBUTTONDOWN);
}
while (!kbhit());
closegraph();
return 0;
}
168
PRO - MIL
cin >> a;
}
Petlja do while zapoinje odreivanjem vrijednosti varijable koju e koristiti while naredba.
a = 1;
do
Uvod
Na prvi
program
Varijable
while (a == 1)
Donoenje Grafika
odluke
a = 1;
Petlje
Sadraj
while (a == 1);
U emu je razlika izmeu ovih dviju petlji, osim oigledne razlike u nainu
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 zadovoljen.
PRO - MIL
Obrada
teksta
Objekti
cin >> a;
Polja
169
Petlje
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int x;
for (x = 0; x < 11; x = x + 1)
{
cout << rand() << endl;
}
system("PAUSE");
return 0;
}
170
PRO - MIL
Sadraj
Na prvi
program
Uvod
PRO - MIL
Petlje
Polja
Obrada
teksta
#include <cstdlib>
#include <iostream>
Objekti
int main()
{
int x;
srand(1);
for (x = 0; x < 11; x = x + 1)
{
cout << rand() << endl;
}
system("PAUSE");
return 0;
}
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
171
Petlje
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
cout << time(NULL) << endl;
system("PAUSE");
return 0;
}
172
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Polja
Petlje
int main()
{
int x;
srand(time(NULL));
for (x = 0; x < 11; x = x + 1)
{
cout << rand() << endl;
}
system("PAUSE");
return 0;
}
Varijable
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <ctime>
Sadraj
173
Petlje
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int x;
srand(time(NULL));
rand();
for (x = 0; x < 11; x = x + 1)
{
cout << rand() << endl;
}
system("PAUSE");
return 0;
}
174
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
Polja
int main()
{
int x;
float sb;
srand(time(NULL));
rand();
for (x = 0; x < 11; x = x + 1)
{
sb = rand() / RAND_MAX;
cout << sb << endl;
}
system("PAUSE");
return 0;
}
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
#include <ctime>
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 toaka, bilo bi zgodno da generator sluajnih brojeva generira sluajni broj izmeu 0 i 640.
Sadraj
175
Petlje
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
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 naredba rand() i koji je int tipa, prije dijeljenja s RAND_MAX pretvori u float tip. To
emo uiniti naredbom:
static_cast <float> (rand())
176
PRO - MIL
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
#include <ctime>
Generira sluajne
brojeve.
Maksimalna vrijednost
koju rand() generira.
Dijeljenjem sluajnog broja maksimalnom moguom vrijednou dobivamo broj izmeu broja 0 i broja 1.
PRO - MIL
Mnoimo li
broj izmeu
0 i 1 brojem
640, dobit
emo brojeve izmeu 0
i 640.
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Ako je sluajni broj imao maksimalnu moguu vrijednost 1, rezultat e biti 640.
Obrada
teksta
Objekti
Ako je sluajni broj imao minimalnu moguu vrijednost 0, rezultat e biti nula.
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) * 640;
cout << sb << endl;
}
system("PAUSE");
Kako emo postii da program ne generireturn 0;
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.
Na prvi
program
177
Petlje
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
Ako elimo da raunalo generira broj izmeu 0 i 640 bez decimalnog zareza, sluajni broj emo spremiti u int varijablu.
Budui da je generirani sluajni broj float
tipa, raunalo e nas pri prvom pokretanju
programa upozoriti da je dolo do pretvaranja float tipa u int tip.
int main()
{
int x;
Kad float tip broja spremimo u int varijablu,
int sb;
raunalo e ga automatski pretvoriti u int
srand(time(NULL));
tip tako da e mu maknuti sve brojeve derand();
sno od decimalnog zareza.
for (x = 0; x < 11; x = x + 1)
{
sb = (static_cast <float> (rand()) / RAND_MAX) * 640;
cout << sb << endl;
}
system("PAUSE");
return 0;
}
178
PRO - MIL
Sadraj
Uvod
Na prvi
program
PRO - MIL
Petlje
Polja
int main()
{
int x;
int sx;
int sy;
Prvi emo spremiti u int varijablu
int gdriver = 9;
sx i bit e izmeu 0 i 640. Drugi
int gmode = 2;
emo
spremiti u sy i bit e izmeu
initgraph(&gdriver, &gmode, "");
0 i 480.
setbkcolor (WHITE);
setcolor (BLACK);
(Dimenzije grafikog prozora su
cleardevice();
640x480).
srand(time(NULL));
rand();
for (x = 1; x < 60; x = x + 1 )
{
sx = (static_cast <float> (rand()) / RAND_MAX) * 640;
sy = (static_cast <float> (rand()) / RAND_MAX) * 480;
circle(sx,sy,20);
}
getch();
closegraph();
return 0;
Poloaj kruga ovisit e o sluajno generiranim brojevima.
}
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
#include <ctime>
Donoenje Grafika
odluke
Varijable
179
Petlje
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
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;
}
180
PRO - MIL
Izvodi se ako je
zamiljeni broj vei
od unesenog.
Izvodi se ako je
zamiljeni broj manji od unesenog.
}
while (slucajni_br != odgovor);
cout << "Pogodili ste " << brojcanik << ". put." << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Ispitivanje se
ponavlja dok
uneseni broj
nije
jednak
zamiljenom.
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
srand(time(NULL));
rand();
Polja
int brojcanik = 0;
Obrada
teksta
int main()
{
int odgovor;
int slucajni_br;
Objekti
Varijablu brojcanik na poetku emo postaviti za nulu, a nakon svakog pogaanja uveat emo je za jedan i tako emo znati koliko
nam je pokuaja trebalo za pogaanje zamiljenog broja.
#include <cstdlib>
#include <iostream>
#include <ctime>
Uvod
Sadraj
181
Polja
182
PRO - MIL
Objekti
Obrada
teksta
PRO - MIL
Polja
Petlje
Donoenje Grafika
odluke
Polja
Varijable
Na prvi
program
Uvod
Sadraj
183
Polja
Jednodimenzionalna polja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK);
cleardevice();
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;
}
184
PRO - MIL
od njega.
Pogledamo li paljivo program,
vidjet emo da su nam svi elementi poznati od prije, osim neobino
#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();
PRO - MIL
Petlje
dama.
Polja
Obrada
teksta
Objekti
Donoenje Grafika
odluke
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,
550, 20, 550, 200, 550, 200, 560, 200, 560, 40,
600, 40, 600, 200, 620, 200, 620, 20, 635, 20,
635, 200, 640, 200
};
moveto (polje[0], polje[1]);
for (x = 2; x < 54; x = x + 2 )
{
lineto(polje[x], polje[x+1]);
}
getch();
closegraph();
return 0;
}
Uvod
Dobit emo ih tako da drimo pritisnutu AltGr tipku, a zatim kliknemo slovo f ili slovo g.
Na prvi
program
Varijable
Sadraj
185
Polja
#include <cstdlib>
#include <iostream>
using namespace std;
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;
}
Detaljno objanjenje funkcioniranja programa s prethodne stranice vidjet emo kasnije, a sada
emo pogledati kako funkcioniraju neobine varijable koje smo
uoili u prethodnom programu.
Ovaj program pomoi e nam da
lake shvatimo ovaj novi tip varijable.
int a = 12;
12
a
10
20
30
40
50
polje
186
PRO - MIL
Vidimo da
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
cout << polje[1] << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Uvod
Na prvi
program
Objekti
#include <cstdlib>
#include <iostream>
Obrada
teksta
Polja
Varijable
Donoenje Grafika
odluke
Petlje
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
od 1 do 5 nego od 0 do 4. U poetku e nas ta injenica esto zbunjivati.
Sadraj
187
Polja
#include <cstdlib>
#include <iostream>
Ovdje formiramo polje koje se sastoji od 5 elija. U prvu eliju spremamo broj 10, u drugu 20, u treu
30, u etvrtu 40 i u petu 50.
#include <cstdlib>
#include <iostream>
using namespace std;
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;
}
188
PRO - MIL
Sadraj
Na prvi
program
Uvod
int main()
{
char polje[5] = {'P', 'O', 'L', 'J', 'A'};
cout << polje[0] << endl;
cout << polje[1] << endl;
cout << polje[2] << endl;
cout << polje[3] << endl;
cout << polje[4] << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Objekti
#include <cstdlib>
#include <iostream>
Obrada
teksta
Polja
int main()
{
float polje[5] = {10.12, 20.14, 30.16, 40.18, 50.19};
cout << polje[0] << endl;
cout << polje[1] << endl;
cout << polje[2] << endl;
cout << polje[3] << endl;
cout << polje[4] << endl;
system("PAUSE");
return 0;
}
Petlje
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
189
Polja
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int a[3] = {2, 3, 0};
a[2] = a[0] + a[1];
cout << a[2] << endl;
system("PAUSE");
return 0;
}
Kao to je sluaj i kod varijabli, sadraj polja ne moramo definirati prilikom formiranja
polja.
U ovom sluaju sadraj prve i druge elije
polja unosimo cin naredbom, a u treu eliju spremamo rezultat zbrajanja.
190
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int b[3];
cin >> b[0];
cin >> b[1];
b[2] = b[0] + b[1];
cout << b[2] << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Sadraj
Na prvi
program
Uvod
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
int x;
for (x = 0; x < 5; x = x + 1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
}
PRO - MIL
Objekti
sluaju to je 4.
Pri ispisu umjesto polje[1] koristimo polje[x] to znai da se
ispisuje ono polje iji broj je
jednak
trenutnoj
varijable x.
Obrada
teksta
#include <cstdlib>
#include <iostream>
Petlje
vrijednosti
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;
}
Polja
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
191
Polja
#include <cstdlib>
#include <iostream>
using namespace std;
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>
using namespace std;
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
int x;
for (x = 4; x > -1; x = x - 1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
}
192
PRO - MIL
for (x = 0; x < 5; x = x + 1)
{
cin >> polje[x];
}
cout << "Ispis polja." << endl;
for (x = 0; x < 5; x = x + 1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
Uvod
smo cout << polje[x], a x for petlja mijenja od nula do etiri i tako
e se ispisati sadraj cijelog po-
Polja
Na prvi
program
int main()
{
int polje[5];
int x;
cout << "Unos polja." << endl;
Varijable
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
Sadraj
PRO - MIL
Objekti
Obrada
teksta
lja.
193
Polja
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Ovom naredbom
odreuje se poetak niza crta.
194
PRO - MIL
Sadraj
Uvod
int polje[5] =
{
10, 20, 30, 40, 50
};
Petlje
Varijable
naredbu
Donoenje Grafika
odluke
Ovu
Na prvi
program
Poetna vrijednost
varijable x je 2.
Udaljenost
kraja
crte od lijevog ruba
grafikog prozora.
PRO - MIL
Obrada
teksta
Objekti
od 2 do 52.
Polja
195
Polja
#include <cstdlib>
#include <iostream>
using namespace std;
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;
}
mo varijablama.
int main()
{
int polje[5] = {10, 20, 30, 40, 50};
int x;
for (x = 0; x < 5; x = x +1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
}
196
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int polje1 = 10;
int polje2 = 20;
int polje3 = 30;
int polje4 = 40;
int polje5 = 50;
cout << polje1 << endl;
cout << polje2 << endl;
cout << polje3 << endl;
cout << polje4 << endl;
cout << polje5 << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Uvod
Donoenje Grafika
odluke
Petlje
Saimanje Veliki programi
koda
Polja
r = polje[0];
for (x = 1; x < 5; x = x +1)
{
if (r < polje[x])
{
r = polje[x];
}
}
Obrada
teksta
Unos polja.
Objekti
int main()
{
int polje[5];
int x;
int r;
Varijable
#include <cstdlib>
#include <iostream>
Na prvi
program
Sadraj
PRO - MIL
197
Polja
r = polje[0];
u varijablu r.
taviti.
aj u vitiastim zagradama,
198
PRO - MIL
PRO - MIL
Odgovarajue
obavijesti.
preuredimo
ispis
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
int main()
{
int polje[5];
int x;
int r;
cout << "Unos polja." << endl;
for (x = 0; x < 5; x = x + 1)
{
cin >> polje[x];
}
r = polje[0];
for (x = 1; x < 5; x = x +1)
{
if (r > polje[x])
{
r = polje[x];
}
}
cout << "Najmanji je." << endl;
cout << r << endl;
system("PAUSE");
return 0;
}
Objekti
#include <cstdlib>
#include <iostream>
Sadraj
199
Polja
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int p[5];
int zamjena;
int privremeni;
int x;
cout << "Unos polja." << endl;
for (x = 0; x < 5; x = x + 1)
{
cin >> p[x];
}
do
{
zamjena = 0;
for (x = 0; x < 4; x = x + 1)
{
if (p[x] < p[x+1])
{
privremeni = p[x];
p[x] = p[x+1];
p[x+1] = privremeni;
zamjena = 1;
}
}
}
while (zamjena ==1);
cout << "Sortirano polje." << endl;
for (x = 0; x < 5; x = x +1)
{
cout << p[x] << endl;
}
Ovo je sasvim sigurno najsloeniji program koji smo do sada vidjeli u ovoj knjizi.
Slui za sortiranje polja. Unesemo razliite brojeve u polje,
a program e ih sortirati tako
da e u prvom polju biti najvei
broj, a u posljednjem najmanji.
system("PAUSE");
return 0;
}
200
PRO - MIL
}
}
while (zamjena ==1);
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
for (x = 0; x < 4; x = x + 1)
{
Polja
zamjena = 0;
Obrada
teksta
Objekti
do
Sortiranje se odvija u do ... while petlji. Petlja se ponavlja tako dugo dok je
varijabla zamjena jednaka broju 1.
Petlje
Sadraj
201
Polja
privremeni = p[x];
p[x] = p[x+1];
Nakon to smo u prethodnom koraku sadraj elije p[x] spremili u varijablu privremeni,
sadraj elije p[x+1] spremamo u eliju p[x].
Budui da p[x] usporeujemo sa p[x+1], x
mora bit za jedan manji od broja elija.
p[x+1] = privremeni;
zamjena = 1;
202
PRO - MIL
PRO - MIL
Uvod
Saimanje Veliki programi
koda
Pokuajmo napisati sline programe koji e vriti neke operacije izmeu polje; npr. programe koji e mnoiti ili dijeliti lanove dvaju polja i rezultat spremati u tree polje.
Objekti
Obrada
teksta
Polja
Petlje
int main()
{
int po1[5] = {10, 15, 20, 25, 30};
int po2[5] = {35, 40, 35, 50, 55};
int po3[5];
int a;
for (a = 0; a < 5; a = a +1)
{
po3[a] = po1[a] + po2[a];
cout << po1[a] << " + " << po2[a] << " = " << po3[a] << endl;
}
system("PAUSE");
return 0;
}
Na prvi
program
Varijable
#include <cstdlib>
#include <iostream>
Donoenje Grafika
odluke
Sadraj
203
Polja
204
PRO - MIL
PRO - MIL
Obrada
teksta
Objekti
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
205
Polja
Ovim programom proitat emo brojeve koji su spremljeni u datoteku podaci.txt, spremit emo ih u polje i na
kraju ispisati na zaslon raunala.
#include <cstdlib>
#include <iostream>
#include <fstream>
206
PRO - MIL
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
#include <cstdlib>
#include <iostream>
#include <fstream>
PRO - MIL
Polja
Obrada
teksta
Objekti
int main()
{
int x;
int polje[8];
float a = 0;
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
ulaz >> polje[x];
}
for (x = 0; x < 8; x = x +1)
{
a = a + polje[x];
}
a = a / 8;
cout << "Prosjek je " << a << endl;
cout << endl;
system("PAUSE");
return 0;
}
Petlje
207
Polja
#include <cstdlib>
#include <iostream>
#include <fstream>
int main()
{
int x;
int polje[8];
ofstream izlaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
cin >> polje[x];
}
for (x = 0; x < 8; x = x + 1)
{
izlaz << polje[x];
izlaz << " ";
}
208
PRO - MIL
int main()
{
int x;
int polje[8];
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
ulaz >> polje[x];
}
for (x = 0; x < 8; x = x +1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
}
PRO - MIL
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
using namespace std;
Petlje
#include <cstdlib>
#include <iostream>
#include <fstream>
Polja
Obrada
teksta
Objekti
Sadraj
209
Polja
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int x;
int p[8];
int zamjena;
int privremeni;
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
ulaz >> p[x];
}
cout << "Zapocinje sortiranje." << endl;
do
{
zamjena = 0;
for (x = 0; x < 7; x = x + 1)
{
if (p[x] < p[x+1])
{
privremeni = p[x];
p[x] = p[x+1];
p[x+1] = privremeni;
zamjena = 1;
}
}
}
while (zamjena ==1);
ofstream izlaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
izlaz << p[x];
izlaz << " ";
}
cout << "Sortiranje je zavrsilo" << endl;
system("PAUSE");
return 0;
}
210
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
int main()
{
int x;
int polje[8];
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
ulaz >> polje[x];
}
for (x = 0; x < 8; x = x +1)
{
cout << polje[x] << endl;
}
system("PAUSE");
return 0;
}
Petlje
Polja
#include <cstdlib>
#include <iostream>
#include <fstream>
Obrada
teksta
int main()
{
int x;
int polje[8];
ofstream izlaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
cin >> polje[x];
}
for (x = 0; x < 8; x = x + 1)
{
izlaz << polje[x];
izlaz << " ";
}
cout << "Spremanje je gotovo." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Objekti
#include <cstdlib>
#include <iostream>
#include <fstream>
Sadraj
211
Polja
Dvodimenzionalna polja
Ako postoje jednodimenzionalna polja, moraju postojati i dvodimenzionalna. (U
suprotnom bismo imali situaciju kao kad je jedan novinar govorio o lokalnim stanovnicima nekog mjesta, iako nam vjerojatno ne bi mogao objasniti kako izgledaju globalni stanovnici istog mjesta.)
1.stupac
2. stupac
3. stupac
4. stupac
1. red
11
12
13
14
2. red
21
22
23
24
#include <cstdlib>
#include <iostream>
Dvodimenzionalne
matrice pogodne su
za spremanje sadraja tabela.
212
PRO - MIL
Broj reda kojem pristupamo, u naem sluaju je to prvi red koji se oznaava
brojem nula. Dakle prvi red oznaava broj nula, a drugi broj jedan.
PRO - MIL
Varijable
Objekti
Obrada
teksta
Polja
Donoenje Grafika
odluke
int polje [2] [4] = { {11, 12, 13, 14} , {21, 22, 23, 24} };
Petlje
Naziv polja.
Na prvi
program
Uvod
Sadraj
213
Obrada teksta
214
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Obrada teksta
Sadraj
215
Obrada teksta
String objekti
elimo li napisati program za voenje telefonskog imenika ili program za voenje videoteke, osim obrade brojeva i grafike sasvim sigurno e nam trebati obrada teksta. Iako smo i do sada koristili tekstove za ispisivanje raznih obavijesti,
ostalo je nejasno na koji nain bismo mogli tekstove pretraivati ili sortirati.
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string odgovor;
cout << "Unesite vase ime." << endl;
cin >> odgovor;
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
string odgovor;
216
PRO - MIL
U naredbi cin koju koristimo za unos preko tipkovnice objekt odgovor koristimo kao to bismo koristili
varijablu.
Dok smo u varijablu char tipa mogli spremiti jedno
slovo, u objekt klase string moemo spremati vei
tekst.
PRO - MIL
Objekti
Obrada
teksta
Najprije e se ispisati
sadraj objekta odgovor,
zatim tekst unutar navodnika i konano skok u
novi red.
Petlje
Polja
Donoenje Grafika
odluke
Varijable
Uvod
Na prvi
program
#include <string>
Sadraj
217
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor;
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
odgovor.reserve(256)
218
PRO - MIL
Uvod
Sadraj
odgovor.capacity()
Objekt na koji se naredba odnosi.
PRO - MIL
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
odgovor.size()
Objekti
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor;
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
cout << "Imamo " << odgovor.size() << " slova." << endl;
cout << endl;
cout << "Imamo " << odgovor.capacity() << " prostora." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Varijable
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <string>
219
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor;
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
getline(cin, odgovor);
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
220
Ako umjesto cin naredbe upotrijebimo ovu naredbu, moi emo unijeti
vie rijei u objekt odgovor.
PRO - MIL
Uvod
getline(cin, odgovor);
Sadraj
U ovom sluaju, na
mjestu gdje se oekivalo da emo unijeti tekst,
mi smo unijeli brojeve.
Postavlja se pitanje na
koji bismo nain mogli
sprijeiti ili barem smanjiti mogunost unoenja besmislenih odgovora.
PRO - MIL
Petlje
Polja
Jedan od problema
pri izradi programa
javlja se kad korisnik
unese neodgovarajuu vrijednost.
Obrada
teksta
int main()
{
string odgovor;
odgovor.reserve(256);
cout << "Unesite vase ime." << endl;
cin >> odgovor;
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
Objekti
#include <cstdlib>
#include <iostream>
#include <string>
Donoenje Grafika
odluke
Varijable
Na prvi
program
221
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string odgovor;
do
{
cout << "Unesite vase ime." << endl;
getline(cin, odgovor);
}
while (odgovor.size() == 0);
cout << endl;
cout << odgovor << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
do
{
cout << "Unesite vase ime." << endl;
getline(cin, odgovor);
}
while (odgovor.size() == 0);
222
PRO - MIL
Sadraj
Na prvi
program
Uvod
#include <cstdlib>
#include <iostream>
#include <string>
Donoenje Grafika
odluke
Petlje
int main()
{
char niz[255];
cout << "Unesite vase ime." << endl;
cin.getline(niz,255);
cout << endl;
cout << niz << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
Varijable
PRO - MIL
Naziv niza.
Obrada
teksta
Objekti
char niz[255];
Tip niza. U
naem sluaju
niz je char
tipa.
Polja
Formiranje niza ije elije su char tipa. U svaku moemo staviti jedno slovo.
223
Obrada teksta
Ispisujem tekst
unutar navodnika.
Skok u
novi red.
#include <cstdlib>
#include <iostream>
#include <string>
Umjesto naredbe:
int main()
{
char niz[255];
cout << "Unesite vase ime." << endl;
cin >> niz;
cout << endl;
cout << niz << ", dobar dan!" << endl;
cout << endl;
system("PAUSE");
return 0;
}
cin.getline(niz,255);
Naredba za unos
teksta tipkovnicom.
224
PRO - MIL
PRO - MIL
Petlje
Polja
Obrada
teksta
Objekti
int main()
{
char niz[255];
int x;
int p;
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
#include <string>
do
{
cout << "Unesite vase ime." << endl;
cout << endl;
cin.getline(niz,255);
x = 0;
p = 1;
while (niz[x] != '\0')
{
if (isdigit(niz[x]))
{
p = 0;
}
x = x + 1;
}
}
while (p == 0);
Uvod
Na prvi
program
U ovu inaicu programa nije mogue unijeti broj na mjestu na kojem oekujemo tekst. U sluaju da unesemo brojeve, raunalo e zahtijevati da ponovimo
upis.
Sadraj
225
Obrada teksta
Cijeli ovaj dio nalazi se unutar do ... while petlji koja e se ponavljati ako korisnik
umjesto slova unese brojeve.
do
{
cout << "Unesite vase ime." << endl;
cout << endl;
Unos teksta.
cin.getline(niz,255);
x = 0;
p = 1;
Postavljanje odgovarajuih
vrijednosti varijabli.
{
p = 0;
}
If naredbom ispitujemo je
li znak u nizu broj.
x = x + 1;
}
}
while (p == 0);
Ovdje se ispituje je li
vrijednost varijable p
nula i ako jest, do ...
while petlja se ponavlja.
226
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Obrada
teksta
Objekti
x = 0;
p = 1;
while (niz[x] != '\0')
{
if (isdigit(niz[x]))
{
p = 0;
}
x = x + 1;
}
Polja
Petlje
do
Ovdje poinje petlja.
{
cout << "Unesite vase ime." << endl;
cout << endl;
cin.getline(niz,255);
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
{
posljedicu da e se do ... while petlja ponoviti,
p = 0;
odnosno da e se unos teksta ponoviti.
}
x = x + 1;
}
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.
Varijable
Ovdje se u varijablu p
sprema broj jedan. To je
varijabla o kojoj ovisi
hoe li se do ... while
petlja ponoviti ili ne.
Donoenje Grafika
odluke
Sadraj
227
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
char slovo;
cin >> slovo;
if (isdigit(slovo))
{
cout << "Ovo je broj " << slovo <<
endl;
}
else
{
cout << slovo << " nije broj." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
U ovom jednostavnom
programu moemo vidjeti
kako funkcionira ispitivanje je li unesen znak broj
ili nije.
Osim ispitivanje je li unijeti znak broj, mogua su
i druga ispitivanja.
U tablici s desne strane
moemo vidjeti druge
mogunosti.
228
PRO - MIL
if (iscntrl(slovo))
if (isgraph(slovo))
Je li sadraj varijable slovo neto to se ispisuje na zaslon raunala, dakle slovo, broj ili interpunkcija. U ovu
grupu ne pripada prazno mjesto izmeu dviju rijei.
if (islower(slovo))
if (isprint(slovo))
if (isupper(slovo))
if (ispunct(slovo))
PRO - MIL
Varijable
Donoenje Grafika
odluke
if (isalpha(slovo))
Petlje
Polja
if (isalnum(slovo))
Obrada
teksta
Objekti
if (isdigit(slovo))
ISPITIVANJE ZNAKOVA
Na prvi
program
Uvod
Sadraj
229
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
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;
}
230
PRO - MIL
Na prvi
program
Varijable
Petlje
Donoenje Grafika
odluke
if (isprint(slovo[6]))
{
cout << "Sedmi moze biti prazno mjesto." << endl;
}
if (isupper(slovo[7]))
{
cout << "Osmi je veliko slovo." << endl;
}
if (ispunct(slovo[8]))
{
cout << "Deveti je neka interpunkcija." << endl;
}
cout << endl;
system("PAUSE");
return 0;
Uvod
Sadraj
PRO - MIL
Obrada
teksta
Objekti
Vidimo da ne moemo odjednom ispitivati cijelo polje, nego da ispitujemo pojedine elije u polju.
Moemo vidjeti uporabu naredbi za ispitivanje znakova primijenjenu na polje char tipa.
Polja
231
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
char slovo1;
char slovo2;
cout << "Unesite prvo slovo." << endl;
cin >> slovo1;
cout << "Unesite drugo slovo." << endl;
cin >> slovo2;
232
PRO - MIL
Uvod
Sadraj
Petlje
int main()
{
char slovo = 'A';
char NizSlova[18] = "Ovo je niz slova.";
cout << "Jedno slovo je " << slovo << endl;
cout << "Tekst je: " << NizSlova << endl;
cout << endl;
system("PAUSE");
return 0;
}
Donoenje Grafika
odluke
Varijable
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <string>
Polja
#include <cstdlib>
#include <iostream>
#include <string>
PRO - MIL
Objekti
int main()
{
char slovo;
cout << "Unesite slovo." << endl;
cin >> slovo;
slovo = slovo - 1;
cout << "Prethodni znak je " << slovo << endl;
slovo = slovo + 2;
cout << "slijedeci znak je " << slovo << endl;
cout << endl;
system("PAUSE");
return 0;
}
Obrada
teksta
233
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string tekst1 = "Ovo je prvi tekst.";
string tekst2 = " Ovo je drugi tekst.";
string tekst3;
tekst3 = tekst1 + tekst2;
cout << tekst3 << endl;
cout << endl;
system("PAUSE");
return 0;
}
234
Objekte string klase moemo jednostavno zbrojiti i rezultat zbrajanja spremiti u trei objekt.
PRO - MIL
Uvod
Sadraj
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <string>
Donoenje Grafika
odluke
Petlje
Polja
Objekti
Obrada
teksta
int main()
{
string tekst1;
string tekst2;
cout << "Unesite prvu rijec." << endl;
cin >> tekst1;
cout << endl;
cout << "Unesite drugu rijec." << endl;
cin >> tekst2;
cout << endl;
if (tekst1 == tekst2)
{
cout << "Rijeci su jednake." << endl;
}
else
{
cout << "Rijeci nisu jednake." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Varijable
PRO - MIL
235
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string tekst1;
string tekst2;
cout << "Unesite prvu rijec." << endl;
cin >> tekst1;
cout << endl;
cout << "Unesite drugu rijec." << endl;
cin >> tekst2;
cout << endl;
if (tekst1 < tekst2)
{
cout << "Prva je manja." << endl;
}
else
{
cout << "Prva nije manja." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
236
PRO - MIL
Uvod
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
Polja
int main()
{
string odgovor;
getline(cin, odgovor);
cout << "Tekst sadrzi " << odgovor.size() << " znakova." << endl;
cout << endl;
system("PAUSE");
return 0;
Naredba size().
}
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
#include <string>
Varijable
Na prvi
program
Mogue su i sloenije manipulacije nad tekstom. Ponovno pogledajmo naredbu size() koju smo vidjeli na poetku ovog poglavlja. Omoguuje nam odreivanje broja znakova koje sadri tekst. Pri tome imajmo na umu da raunalo i
prazno mjesto izmeu rijei smatra jednim znakom.
Sadraj
PRO - MIL
237
Obrada teksta
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 zapoinje traeni tekst. (Prva pozicija nema broj jedan nego broj nula.)
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
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;
}
238
PRO - MIL
pozicija = tekst.find(trazi);
if (pozicija != string::npos)
elimo li ispitati sva pojavljivanja neke rijei, morat emo napisati malo sloeniji
program.
PRO - MIL
Objekti
Obrada
teksta
Polja
Donoenje Grafika
odluke
Naredba
za
pretraivanja.
Petlje
Varijable
Na prvi
program
Uvod
Sadraj
239
Obrada teksta
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>
using namespace std;
Program je u potpunosti identiint main()
an prethodnome, samo to
{
ovdje umjesto naredbe find
string tekst;
imamo naredbu rfind.
string trazi;
int pozicija;
Time smo raunalu naredili da
cout << "Unesite tekst." << endl;
pretraivanje zapone od kraja
getline(cin, tekst);
teksta koji se nalazi u objektu
cout << endl;
tekst.
cout << "Sto trazim?" << endl;
getline(cin, trazi);
cout << endl;
pozicija = tekst.rfind(trazi);
if (pozicija != string::npos)
{
cout << "Pocetak je na " << pozicija << ". poziciji." << endl;
}
else
{
cout << "Nema trazene rijeci." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
240
PRO - MIL
U ve poznatu naredbu find dodali smo broj 6 ime smo naredili raunalu da
pretraivanje objekta tekst zapone od znaka na poziciji 6.
Budui da prva rije radi poinje na 5, raunalo je nalo drugo pojavljivanje
rijei radi.
Pomou ove naredbe napravit emo program koji e pronai sva pojavljivanja neke rijei, a ne samo prvo ili posljednje.
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
int main()
Ovaj program smo tako korigirali da
{
smo, iako s naredbom find zapoistring tekst;
njemo pretraivanje s lijeve strane,
string trazi;
pronali drugo pojavljivanje traene
int pozicija;
rijei.
cout << "Unesite tekst." << endl;
getline(cin, tekst);
cout << endl;
cout << "Sto trazim?" << endl;
getline(cin, trazi);
cout << endl;
pozicija = tekst.find(trazi,6);
if (pozicija != string::npos)
{
cout << "Pocetak je na " << pozicija << ". poziciji." << endl;
}
else
{
cout << "Nema trazene rijeci." << endl;
}
cout << endl;
system("PAUSE");
return 0;
pozicija = tekst.find(trazi,6);
}
Objekti
#include <cstdlib>
#include <iostream>
#include <string>
Na prvi
program
Uvod
Sadraj
241
Obrada teksta
Ovaj program moe pronai svako pojavljivanje neke rijei u nekom tekstu.
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
U ovom programu koristimo nared{
bu find, a pozicija poetka pretraistring tekst;
vanja nije odreena brojem, nego
string trazi;
sadrajem varijable trenutno.
int duljina;
int trenutno = 0;
Varijabla trenutno je na poetku 0,
int polozaj;
da bi prvo pretraivanje poelo od
cout << "Unesite tekst." << endl;
poetka teksta. Ako na nekoj pozigetline(cin, tekst);
ciji pronaemo traenu rije, varicout << endl;
jablu trenutno uveavamo za tu
cout << "Sto trazim?" << endl;
poziciju + 1, da bi novo pretraivagetline(cin, trazi);
nje poelo nakon poetka ve nacout << endl;
ene rijei i da bi se eventualno
duljina = tekst.size();
pronala nova rije, a ne ponovo
while (trenutno < (duljina + 1))
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 programiratrenutno = duljina + 1;
nja, ovaj put je objanjenje funkcioniranja
}
programa neto skromnije.
}
cout << endl;
Pokuajmo shvatiti kako funkcionira progsystem("PAUSE");
ram i pokuajmo ga korigirati tako da ispie
return 0;
adekvatnu obavijest, ako se traena rije
}
uope ne pojavljuje. Pokuajmo isti program napisati koritenjem rfind naredbe.
242
PRO - MIL
Sadraj
Uvod
Na prvi
program
#include <cstdlib>
#include <iostream>
#include <string>
tekst.insert(6,umetak);
Polja
Donoenje Grafika
odluke
Petlje
int main()
{
string tekst = "Ovo je tekst.";
string umetak = " moj";
tekst.insert(6,umetak);
cout << tekst << endl;
cout << endl;
system("PAUSE");
return 0;
}
Varijable
Obrada
teksta
PRO - MIL
int main()
{
string tekst = "Ovo je tekst.";
tekst.insert(6," dobar");
cout << tekst << endl;
cout << endl;
system("PAUSE");
return 0;
Naredba insert moe se napisati
}
i na ovaj nain.
Objekti
243
Obrada teksta
Dio teksta spremljenog u objekt klase string moemo obrisati erase naredbom.
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string tekst = "Ovo je dobar tekst.";
tekst.erase(7,6);
cout << tekst << endl;
cout << endl;
system("PAUSE");
return 0;
}
Pozicija od kojem poinje brisanje.
Naredba za brisanje.
tekst.erase(7,6);
244
PRO - MIL
Varijable
Na prvi
program
Uvod
Naredbom replace moemo dio teksta koji se nalazi u objektu klase string
zamijeniti nekim drugim tekstom.
Sadraj
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
#include <string>
tekst.replace(7,5,drugi);
Sadraj kojim emo zamijeniti tekst u objektu tekst. Zamijenit emo 5 znakova, poevi od sedmog sa sadrajem objekta drugi. Umjesto objekta drugi
mogli bismo staviti i tekst unutar navodnika.
PRO - MIL
Polja
Obrada
teksta
Objekti
int main()
{
string tekst = "Ovo je dobar tekst.";
string drugi = "dodatan";
tekst.replace(7,5,drugi);
cout << tekst << endl;
cout << endl;
system("PAUSE");
return 0;
}
Petlje
245
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
Ovdje, na nain koji smo ve vidjeli u ovom pogchar niz[255];
lavlju, ime unosimo u char polje i provjeravamo
string tekst;
jesu li uneseni brojevi ili slova. Ako su uneseni
tekst.reserve(256);
brojevi, unos se ponavlja. Naredba isdigit ne bi
int x;
radila da smo koristili objekt klase string.
int p;
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 obif (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");
Naredba niz.size nije dozvoljena. Naredba
return 0;
size radi jedino s objektima, ali ne i s poljima.
}
246
PRO - MIL
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
PRO - MIL
Naziv objekta iz kojeg tekst selimo u char polje. U naem sluaju naziv objekta je tekst.
Objekti
Polja
Petlje
Obrada
teksta
int main()
{
string tekst = "Tekst.";
Donoenje Grafika
odluke
Varijable
Na prvi
program
Mogue je i tekst iz objekta klase string premjestiti u polje char tipa, ali je naredba kojom to izvodimo neto sloenija.
Uvod
Sadraj
247
Obrada teksta
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
int x;
Kad smo spremali brojeve, izmeu
string tekst[8];
brojeva
stavljali smo prazno mjesto
ofstream izlaz("podaci.txt");
da
bismo
znali gdje zavrava jedan
for (x = 0; x < 8; x = x + 1)
broj,
a
poinje
drugi.
{
getline(cin, tekst[x]);
U ovom programu prazna mjesta
}
nisu prikladna za razlikovanje sadrfor (x = 0; x < 8; x = x + 1)
aja pojedinih elija jer se prazna
{
mjesta
nalaze izmeu rijei.
izlaz << tekst[x];
izlaz << " # ";
}
cout << endl;
cout << "Spremanje je gotovo." << endl;
cout << endl;
system("PAUSE");
return 0;
}
248
PRO - MIL
Na prvi
program
Uvod
Sadraj
Varijable
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
PRO - MIL
Polja
Petlje
Zbog toga bi program
za unos teksta trebalo
tako modificirati da ne
dozvoljava unos # oznake.
Obrada
teksta
Objekti
int main()
{
int x;
string tekst[8];
string privremeni;
ifstream ulaz("podaci.txt");
for (x = 0; x < 8; x = x + 1)
{
do
{
ulaz >> privremeni;
if (privremeni != "#")
{
tekst[x] = tekst[x] + privremeni + " ";
}
}
while (privremeni != "#");
}
for (x = 0; x < 8; x = x +1)
{
cout << tekst[x] << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Donoenje Grafika
odluke
249
Objekti
250
PRO - MIL
Objekti
PRO - MIL
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Objekti
Na prvi
program
Uvod
Sadraj
251
Objekti
252
PRO - MIL
PRO - MIL
Uvod
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
int main()
{
tekst t;
t.pisi();
cout << endl;
system("PAUSE");
return 0;
}
Polja
class tekst
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
};
Petlje
#include <cstdlib>
#include <iostream>
Donoenje Grafika
odluke
Varijable
Na prvi
program
Imajmo u vidu da prednost uporabe objekata dolazi do izraaja u veim programima. Manji programi koje emo vidjeti u ovom poglavlju mogu se elegantnije napraviti bez uporabe objekata. Unato tome, mi emo vidjeti primjere
uporabe objekata u malim programima jer emo na primjerima malih programa lake shvatiti princip uporabe objekata.
Sadraj
253
Objekti
Najprije emo pogledati zanimljive dijelove naeg programa, a zatim funkcioniranje programa kao cjeline.
Ovaj dio programa izrazito je slian ovom dijelu programa iz prolog poglavlja.
tekst t;
t.pisi();
string tekst;
tekst.reserve(256);
tekst t ;
t . pisi() ;
Naziv objekta iju metodu emo koristiti. U naem sluaju koristit emo metodu t.
254
PRO - MIL
int main()
{
tekst reci;
reci.pisi();
cout << endl;
system("PAUSE");
return 0;
}
dobiva oblik:
reci.pisi();
int main()
{
int a;
a = 12;
cout << a << endl;
cout << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Objekti
#include <cstdlib>
#include <iostream>
Obrada
teksta
Polja
Varijable
class tekst
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
};
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
Na prvi
program
Uvod
Sadraj
255
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class tekst
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
};
int main()
{
tekst prvi;
tekst drugi;
tekst treci;
prvi.pisi();
drugi.pisi();
treci.pisi();
cout << endl;
system("PAUSE");
return 0;
}
class tekst
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
};
256
PRO - MIL
class BrdaIDoline
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
};
tekst t;
moramo napisati u obliku:
BrdaIDoline t;
Dakle, formiramo objekt t
klase BrdaIDoline.
(Drugo je to je pametno
da nam naziv klase govori emu klasa slui, pa je
loginije da se klasa za
ispis teksta zove tekst, a
ne BrdaIDoline.)
PRO - MIL
Uvod
Na prvi
program
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
int main()
{
BrdaIDoline t;
t.pisi();
cout << endl;
system("PAUSE");
return 0;
}
To je dozvoljeno, samo
to sad naredbu koja je
prije imala oblik:
Varijable
Donoenje Grafika
odluke
#include <cstdlib>
#include <iostream>
Petlje
class tekst
Polja
Sadraj
257
Objekti
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
{
cout << "Ovo je nas tekst." << endl;
}
258
PRO - MIL
PRO - MIL
t.pisi();
pisati u obliku:
t.Pero();
Kao i kod biranja naziva
varijabli i klasa, i ovdje je
pametno da nam naziv
metode govori to metoda radi. Zato je naziv pisi
za metodu koja ispisuje
tekst bolji od naziva Pero.
void pisi ()
Naziv metode biramo po volji, pazei na ogranienja o kojima smo govorili kad smo govorili
o biranju naziva varijabli.
Pametno je da naziv metode tako izaberemo
da nam govori emu metoda slui.
Na prvi
program
Varijable
Donoenje Grafika
odluke
To je dozvoljeno, samo
to emo naredbu koju
smo do sada pisali u obliku:
Petlje
int main()
{
tekst t;
t.Pero();
cout << endl;
system("PAUSE");
return 0;
}
Polja
class tekst
{
public:
void Pero()
{
cout << "Ovo je nas tekst." << endl;
}
};
Obrada
teksta
Objekti
#include <cstdlib>
#include <iostream>
Uvod
Sadraj
259
Objekti
260
Klasa se moe sastojati od vie tipova sadraja. Jedan od njih je public. Kasnije emo podrobnije vidjeti to oznaka public oznaava.
class tekst
{
public:
void pisi()
{
cout << "Ovo je nas tekst." << endl;
}
};
PRO - MIL
Sadraj
Na prvi
program
Uvod
PRO - MIL
Petlje
Polja
Obrada
teksta
int main()
{
tekst t;
t.pisi();
cout << endl;
system("PAUSE");
return 0;
}
Objekti
class tekst
{
public:
void pisi()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle(320,240,180);
getch();
closegraph();
}
};
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
261
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class tekst
{
public:
void prva()
{
cout << "Ovo je prva metoda." << endl;
}
void druga()
{
cout << "Ovo je druga metoda." << endl;
}
void treca()
{
cout << "Ovo je treca metoda." << endl;
}
};
int main()
{
tekst t;
t.prva();
t.druga();
t.treca();
cout << endl;
system("PAUSE");
return 0;
}
262
PRO - MIL
Sadraj
Na prvi
program
Uvod
PRO - MIL
Polja
Ovdje na temelju
svake klase formiramo objekt, a zatim pozivamo metodu od svake klase odnosno operaciju koju objekt
moe izvriti
Uoimo da je dozvoljeno da se metoda pod istim nazivom pisi() nalazi
u obje klase.
Obrada
teksta
int main()
{
cout << "Zovemo metodu klase tekst1." << endl;
tekst1 t1;
t1.pisi();
cout << endl;
cout << "Zovemo metodu klase tekst2." << endl;
tekst2 t2;
t2.pisi();
cout << endl;
system("PAUSE");
return 0;
}
Objekti
class tekst2
{
public:
void pisi()
{
cout << "Ovo je klasa tekst2." << endl;
}
};
class tekst1
{
public:
void pisi()
{
cout << "Ovo je klasa tekst1." << endl;
}
};
Petlje
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
263
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class tekst
{
public:
void pisi()
{
cout << "Upravo koristimo objekt." << endl;
}
};
int main()
{
tekst t;
cout << "Objekt koristimo 1. put." << endl;
t.pisi();
cout << endl;
cout << "Objekt koristimo 2. put." << endl;
t.pisi();
cout << endl;
cout << "Objekt koristimo 3. put." << endl;
t.pisi();
cout << endl;
system("PAUSE");
return 0;
}
264
Jednom
formirani
objekt moemo proizvoljni broj puta koristiti u programu.
To je jedna od prednosti koritenja klasa
i objekata.
Operaciju koja se u
programu esto ponavlja stavimo u klasu, u programu formiramo objekt i pozivamo odreenu operaciju kad god nam
zatreba, bez potrebe
da je ponovo piemo.
PRO - MIL
Sadraj
Komunikacija s metodama
#include <cstdlib>
#include <iostream>
using namespace std;
Petlje
private grupi, kla-
};
int main()
{
pravokutnik p;
p.naslov();
cout << "Povrsina je ";
cout << p.povrsina(2,3);
cout << endl << endl;
system("PAUSE");
return 0;
}
PRO - MIL
sa sadri i dvije
metode u public
grupi. To su metoda naslov() i me-
Obrada
teksta
Polja
Osim varijable u
Objekti
public:
void naslov()
{
cout << "Povrsina pravokutnika." << endl;
cout << endl;
}
Klasa pravokutnik
sadri jednu varijablu. To je varijabla
c int tipa, a nalazi
se u private grupi.
class pravokutnik
{
private:
int c;
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
265
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class pravokutnik
{
private:
int c;
public:
U public podruju dodali smo
int pov;
varijablu koju smo nazvali pov.
void naslov()
{
cout << "Povrsina pravokutnika." << endl;
cout << endl;
}
Sadraj varijable c koja je formirana u
int povrsina (int a, int b)
{
c = a * b;
pov = c;
return (c);
}
};
int main()
{
pravokutnik p;
p.naslov();
cout << "Povrsina je ";
cout << p.povrsina(2,3);
cout << endl;
cout << "p.pov je " << p.pov << endl;
// cout << "p.c je " << p.c << endl;
cout << endl << endl;
system("PAUSE");
return 0;
}
266
PRO - MIL
Dakle izvana moemo pristupiti samo onim varijablama koje su u public podruju formirane samostalno kao pov varijabla, a ne moemo onima koje su
formirane unutar neke metode.
PRO - MIL
Uvod
Donoenje Grafika
odluke
Saimanje Veliki programi
koda
Objekti
Obrada
teksta
};
To ne moemo uiniti tako da samo navedemo naziv varijable ili procedure nego tako da prvo navedemo naziv objekta, zatim toku i na
kraju naziv varijable
ili procedure. Ako
pristupamo proceduri, moramo navesti i
zagrade.
Petlje
public:
int pov;
void naslov()
{
cout << "Povrsina pravokutnika." << endl;
cout << endl;
}
Za razliku od private
podruja, svemu to
formiramo u public
podruju
moemo
pristupiti i izvan klase, odnosno izvan
objekta.
Polja
class pravokutnik
{
private:
int c;
Varijable
Na prvi
program
Sadraj
267
Objekti
private:
int c;
Unutar private podruja u ovom sluaju formirali smo samo varijablu c. Mogli bismo staviti i procedure, ali u tom
sluaju bismo tim procedurama mogli pristupiti samo
unutar klase odnosno samo unutar objekta. Nain pisanja bio bi isti kao i unutar public podruja.
Ovdje formiramo pov varijablu int tipa. Varijable unutar klase formiramo na potpuno jednak nain kao i unutar glavnog programa.
public:
int pov;
void naslov()
{
cout << "Povrsina pravokutnika." << endl;
cout << endl;
}
Naziv metode.
Ulazne varijable su
unutar zagrada.
to to znai?
To znai da e ova metoda
biti int tipa, odnosno da e
rezultat njenog rada biti broj
int tipa.
Naredbom:
cout << p.povrsina(2,3);
ispisat emo rezultat rada
metode povrsina na zaslon,
a rezultat je broj int tipa.
268
PRO - MIL
p.naslov(2,3);
void naslov ()
Petlje
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Sadraj
Mogue je jedino s:
return (c);
Ovom naredbom odreujemo koju vrijednost e procedura vraati u glavni program, odnosno to e
naredba cout << p.povrsina(2,3); ispisati.
PRO - MIL
c = a * b;
pov = c;
Objekti
Obrada
teksta
Polja
p.naslov();
269
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class racunaj
{
private:
int c;
public:
int metoda1(int a, int b)
{
c = a + b;
return (c);
}
int metoda2(int a, int b)
{
c = a + b;
return (a);
}
270
PRO - MIL
Sadraj
Uvod
#include <cstdlib>
#include <iostream>
Obrada
teksta
PRO - MIL
Donoenje Grafika
odluke
Varijable
p.unesi();
Polja
Petlje
p.povrsina(2,3);
Objekti
int main()
{
racunaj p;
p.unesi();
p.povrsina();
cout << endl;
system("PAUSE");
return 0;
}
class racunaj
{
private:
int a;
int b;
int c;
public:
void unesi(void)
{
cout << "Unesite stranicu a." << endl;
cin >> a;
cout << "Unesite stranicu b." << endl;
cin >> b;
}
void povrsina(void)
{
c = a * b;
cout << "Povrsina je " << c << endl;
}
};
Na prvi
program
271
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class racunaj
{
private:
int a;
int b;
int c;
public:
void unesi(void)
{
cout << "Unesite stranicu a." << endl;
cin >> a;
cout << "Unesite stranicu b." << endl;
cin >> b;
}
int povrsina(void)
{
c = a * b;
return (c);
}
Obratimo panju na
};
injenicu da unutar
glavnog programa smiint main()
jemo koristiti c varijab{
lu, iako c varijabla posint c;
toji u klasi racunaj.
int u;
racunaj p;
p.unesi();
cout << "Cijena kvadratnog metra." << endl;
cin >> c;
u = c * p.povrsina();
cout << "Cijena poda je " << u << endl;
cout << endl;
system("PAUSE");
return 0;
}
272
PRO - MIL
Uvod
Sadraj
Na prvi
program
#include <cstdlib>
#include <iostream>
PRO - MIL
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
U ovom sluaju u
metodi cijena mi
ispisujemo povrinu i cijenu.
Objekti
int main()
{
racunaj p;
p.unesi();
p.cijena();
class racunaj
{
private:
int a;
int b;
int c;
int p;
int u;
public:
void unesi(void)
{
cout << "Unesite stranicu a." << endl;
cin >> a;
cout << "Unesite stranicu b." << endl;
cin >> b;
cout << "Cijena kvadratnog metra." << endl;
cin >> c;
}
void cijena(void)
{
p = a * b;
cout << "Povrsina je " << p << endl;
u = p * c;
cout << "Cijena je " << u << endl;
}
};
Varijable
273
Objekti
Naredba cout << p.povrsina(2,3); zbunjujua je izmeu ostalog i zato to istovremeno slui za unos broja 2 i broja 3 u metodu i za ispis rezultata mnoenja,
odnosno rezultata rada metode.
return ( c );
}
274
PRO - MIL
Na prvi
program
Uvod
Sadraj
PRO - MIL
Polja
Obrada
teksta
Vidimo da naredbu:
p.povrsina(a1,b1)
moemo pisati i
tako da unutar
zagrada umjesto
konkretnih brojeva
stavimo varijable.
Objekti
int main()
{
float a1;
float b1;
pravokutnik p;
p.naslov();
cout << "Unesite stranicu a." << endl;
cin >> a1;
cout << "Unesite stranicu b." << endl;
cin >> b1;
cout << "Povrsina je ";
cout << p.povrsina(a1,b1);
cout << endl << endl;
system("PAUSE");
return 0;
}
Kao to smo ve
rekli, metode ne
moraju biti int tipa.
Mogu biti i nekog
drugog tipa. U
ovom
programu
imamo
metodu
float tipa.
class pravokutnik
{
private:
float c;
public:
void naslov()
{
cout << "Povrsina pravokutnika." << endl;
cout << endl;
}
float povrsina (float a, float b)
{
c = a * b;
return (c);
}
};
Petlje
Donoenje Grafika
odluke
Varijable
#include <cstdlib>
#include <iostream>
275
Objekti
#include <cstdlib>
#include <iostream>
using namespace std;
class pravokutnik
{
private:
int c;
public:
int povrsina (int a, int b);
};
int pravokutnik :: povrsina (int a, int b)
{
c = a * b;
return (c);
};
int main()
{
cout << "Povrsina pravokutnika" << endl;
cout << endl;
pravokutnik p;
cout << "Povrsina je = " << p.povrsina(2,3) << endl;
cout << endl;
system("PAUSE");
return 0;
}
276
Ovako napisanu
klasu koristimo
na isti nain kao
i klase koje smo
do sada koristili.
PRO - MIL
Naziv klase.
Naziv metode.
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
Definicija metode.
Ovdje
se nalazi program koji odreuje to ta
metoda radi,
odnosno svojstva metode.
Polja
Obrada
teksta
Obvezna ; oznaka
Deklaracija metode u deklaraciji klase. Ovdje je naveden naziv metode i ulazno-izlazna svojstva metode, ali ne i program metode.
Objekti
Sadraj
277
Objekti
Uporaba konstruktora
#include <cstdlib>
#include <iostream>
using namespace std;
class pravokutnik
{
private:
int a;
int b;
public:
pravokutnik(void)
{
cout << "Stranica a:" << endl;
cin >> a;
cout << "Stranica b:" << endl;
cin >> b;
}
int povrsina(void)
{
return (a * b);
}
};
int main()
{
pravokutnik p;
cout << "Povrsina je " << p.povrsina() << "." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Neobino je i to
to je nigdje ne
pozivamo.
U ovom redu
formiramo objekt
p klase pravokutnik, a ve u sljedeem redu pozivamo metodu
povrsina.
Iako nigdje u programu nije vidljivo pozivanje metode pravokutnik, njen sadraj
se oigledno izvrava. Oigledno je da prije izvoenja metode povrina raunalo 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.
278
PRO - MIL
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
class pravokutnik
{
U ovom programu imamo
private:
dva konstruktora.
int a;
int b;
Jednome je ulazni dio void
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);
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{
ga moe vrijednost unositi
a = a1;
tako da napiemo:
b = b1;
}
pravokutnik p2(3,4);
int povrsina(void)
{
return (a * b);
}
Ovdje formiramo objekt klase pravokutnik bez
};
vrijednosti u zagradi. U tom sluaju primijenit
e se pravokutnik(void) konstruktor.
int main()
{
pravokutnik p1;
cout << "Povrsina je " << p1.povrsina() << "." << endl;
cout << endl;
pravokutnik p2(3,4);
cout << "Za p2(3,4) povrsina je " << p2.povrsina() << "." << endl;
cout << endl;
system("PAUSE");
Objekt p2(3,4); u zagradi ima dva broja, pa e se u
return 0;
tom sluaju primijeniti pravokutnik(int a1, int b1) kon}
struktor. U tom sluaju povrina e se izraunati
mnoenjem brojeva 3 i 4, bez unosa tipkovnicom.
Objekti
#include <cstdlib>
#include <iostream>
Na prvi
program
Uvod
Sadraj
279
Objekti
Nasljeivanje
#include <cstdlib>
#include <iostream>
using namespace std;
class kvadrat
Klasa kvadrat napisana je na
{
uobiajeni nain.
protected:
int br;
public:
void unos (void)
Klasa kub napisana je na nain koji
{
do sada nismo koristili.
cout << "Unesite broj:" << endl;
cin >> br;
Naredbom:
}
int izracun (void)
class kub : public kvadrat
{
return (br * br);
formiramo klasu kub koja nasljeuje
}
varijable i metode klase kvadrat. Dak};
le klasa kub moe koristiti metodu
class kub : public kvadrat
unos, iako je ona definirana u klasi
{
unos.
public:
int izracun(void)
{
return (br * br * br);
}
};
Objekt objekt2 klase kub moe koristiti metodu 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;
cout << endl;
kub objekt2;
objekt2.unos();
cout << "Kub je " << objekt2.izracun() << endl;
cout << endl;
system("PAUSE");
return 0;
}
280
Metodu
izracun
posjeduju
obje
klase. U tom sluaju klasa kub koristit e svoju inaicu objekta izracun.
Inaica u klasi kub
prekrila je inaicu
u klasi kvadrat.
PRO - MIL
kub objekt2;
objekt2.unos();
Ovdje koristimo metodu unos, iako je klasa kub ne posjeduje. To je mogue jer
klasa kub nasljeuje klasu kvadrat, a klasa kvadrat sadri klasu unos.
objekt2.izracun()
Iako metodu izracun posjeduje i klasa kvadrat, objekt2 koristit e vlastitu inaicu metode izraun.
PRO - MIL
Varijable
Donoenje Grafika
odluke
Petlje
Polja
Obrada
teksta
Objekti
class kvadrat
Na prvi
program
Uvod
Pogledajmo meusobnu povezanost bitnih dijelova programa u kojem je primijenjena tehnika nasljeivanja klasa.
Sadraj
281
Veliki programi
282
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Veliki programi
Sadraj
283
Veliki programi
284
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Petlje
Polja
class bomba
{
Deklaracija sadri konstruktor koji odreuje poetprivate:
nu poziciju bombe.
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();
};
void bomba :: crtanje()
Sadraj metode crtanje.
{
rectangle (x,y,(x+20),(y+5));
}
void bomba :: brisanje()
Sadraj metode brisanje.
{
setcolor(WHITE);
rectangle (x,y,(x+20),(y+5));
setcolor(BLACK);
y = y + 5;
if (y > 490)
{
y = -((static_cast <float> (rand()) / RAND_MAX) * 480);
x = (static_cast <float> (rand()) / RAND_MAX) * 620;
}
}
Obrada
teksta
Objekti
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
podijeliti u vie manjih datoteka.
Sadraj
285
Veliki programi
Ovdje se nalazi glavni dio programa koji e koristiti prije formirane klase.
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
Odreivanja svojstva grafike, veliine grafikog prozora, boje pozadine i boje objekata.
srand(time(NULL));
objekt brod;
brod.crtaj();
do
{
bomba1.brisanje();
bomba2.brisanje();
bomba3.brisanje();
286
PRO - MIL
brod.pomak(odgovor);
}
brod.crtaj();
return 0;
}
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
Ako je pritisnuta neka tipka na tipkovnici, ovdje se kod pritisnute tipke sprema
u varijablu odgovor.
Petlje
odgovor = getch();
Polja
if (kbhit())
{
Obrada
teksta
delay(1);
Objekti
bomba1.crtanje();
bomba2.crtanje();
bomba3.crtanje();
Sadraj
287
Veliki programi
288
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
289
Veliki programi
2 - Klik na Novo.
290
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
PRO - MIL
291
Veliki programi
292
PRO - MIL
PRO - MIL
Uvod
Petlje
Polja
Obrada
teksta
#include <winbgim.h>
#include "bomba.h"
Objekti
Donoenje Grafika
odluke
Varijable
Na prvi
program
Sadraj
293
Veliki programi
Ovo je dio programa koji se u ovoj inaici razlikuje od inaice sa samo jednom datotekom.
Ako je naziv datoteke bomba.h, ovaj dio imat
e oblik:
#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 naredbom #ifndef.
#endif
294
PRO - MIL
PRO - MIL
Uvod
Petlje
Polja
#include "naziv.h"
Obrada
teksta
Objekti
#include <winbgim.h>
#include "objekt.h"
Naredbama #include
ukljuimo grafiku biblioteku winbgim.h i datoteku objekt.h u kojoj se
nalazi deklaracija klase
objekt.
Donoenje Grafika
odluke
Varijable
Na prvi
program
Sadraj
295
Veliki programi
296
PRO - MIL
PRO - MIL
Uvod
Na prvi
program
Varijable
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
char odgovor = 'd';
srand(time(NULL));
bomba bomba1, bomba2, bomba3;
objekt brod;
brod.crtaj();
do
{
bomba1.brisanje();
bomba2.brisanje();
bomba3.brisanje();
bomba1.crtanje();
bomba2.crtanje();
bomba3.crtanje();
delay(2);
if (kbhit())
{
odgovor = getch();
brod.pomak(odgovor);
}
brod.crtaj();
}
while (odgovor != 'k');
return 0;
}
Donoenje Grafika
odluke
#include "objekt.h"
#include "bomba.h"
Petlje
dodati i naredbe:
#include "objekt.h"
#include "bomba.h"
Polja
Obrada
teksta
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
Objekti
#include <cstdlib>
#include <iostream>
#include <winbgim.h>
#include <ctime>
Sadraj
297
Veliki programi
Rezultat
izvoenja
naeg programa izgledat e otprilike
ovako.
Ovo su bombe koje
se kreu odozgo prema dolje.
Ovo je brod koji
strelicom lijevo moemo pomicati u lijevu stranu i strelicom
desno u desnu stranu.
Prilikom prvog prevoenja i pokretanja ovog programa programska okolina e nas upozoriti da
je dolo do pretvaranja varijable
float tipa u varijablu int tipa.
Upozorenje emo zanemariti,
budui da to nije greka, ve
smo to uinili namjerno prilikom
generiranja sluajnog broja.
Prilikom sljedeeg prevoenja i
pokretanja programa ovo upozorenje se vie nee pojavljivati.
298
PRO - MIL
#ifndef OBJEKT_H
#define OBJEKT_H
#ifndef BOMBA_H
#define BOMBA_H
class objekt
{
class bomba
{
DEKLARACIJA KLASE;
DEKLARACIJA KLASE;
};
};
#endif
#endif
objekt.cpp
bomba.cpp
#include "objekt.h"
#include "bomba.h"
PRO - MIL
Na prvi
program
Varijable
Donoenje Grafika
odluke
bomba.h
Petlje
objekt.h
Polja
Obrada
teksta
int main()
{
GLAVNI PROGRAM;
}
#include "objekt.h"
Objekti
#include "bomba.h"
main.cpp
Uvod
Sadraj
299
Saimanje koda
300
PRO - MIL
PRO - MIL
Objekti
Obrada
teksta
Polja
Petlje
Donoenje Grafika
odluke
Varijable
Na prvi
program
Uvod
Sadraj
Saimanje koda
C++ programiranje za apsolutne poetnike
301
Saimanje koda
#include <cstdlib>
#include <iostream>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
int c;
cin >> a;
cin >> b;
c = a + b;
cout << c << endl;
system("PAUSE");
return 0;
}
302
moemo napisati:
int a, b, c;
PRO - MIL
#include <cstdlib>
#include <iostream>
using namespace std;
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
if (a > 12)
{
cout << "Broj je veci od 12." << endl;
}
else
{
cout << "Broj nije veci od 12." << endl;
}
cout << a << endl;
system("PAUSE");
return 0;
}
int main()
{
int a;
cin >> a;
if (a > 12)
cout << "Broj je veci od 12." << endl;
else
cout << "Broj nije veci od 12." << endl;
cout << a << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Uvod
Na prvi
program
Varijable
Donoenje Grafika
odluke
int a = 12;
int main()
{
int a = 12;
cout << a << endl;
system("PAUSE");
return 0;
}
Petlje
Polja
U if naredbi mogu se
izbaciti vitiaste zagrade, ako se unutar vitiastih zagrada nalazi
jedan red.
#include <cstdlib>
#include <iostream>
Obrada
teksta
int main()
{
int a;
a = 12;
cout << a << endl;
system("PAUSE");
return 0;
}
int a;
a = 12;
Objekti
Umjesto:
#include <cstdlib>
#include <iostream>
Sadraj
303
Saimanje koda
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a, b;
cin >> a;
if (a < 0)
{
cout << "Broj je negativan." << endl;
}
else
{
b = sqrt(a);
cout << b << endl;
}
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a, b;
cin >> a;
if (a < 0)
cout << "Broj je negativan." << endl;
else
b = sqrt(a);
cout << b << endl;
system("PAUSE");
return 0;
}
304
PRO - MIL
#include <cstdlib>
#include <iostream>
Umjesto
napisati:
x++
int main()
{
int x;
for (x=10; x<17; x++)
cout << x << endl;
system("PAUSE");
return 0;
}
PRO - MIL
x=x+1
moemo
Uvod
Na prvi
program
Varijable
int main()
{
int x;
for (x=10; x<17; x=x+1)
cout << x << endl;
system("PAUSE");
return 0;
}
Donoenje Grafika
odluke
Petlje
#include <cstdlib>
#include <iostream>
Polja
int main()
{
int x;
for (x=10; x<17; x=x+1)
{
cout << x << endl;
}
system("PAUSE");
return 0;
}
Obrada
teksta
Objekti
I u petljama se moe izostaviti vitiasta zagrada ako se unutar vitiaste zagrade nalazi
samo jedan red.
#include <cstdlib>
#include <iostream>
Sadraj
305
Saimanje koda
#include <cstdlib>
#include <iostream>
using namespace std;
#include <cstdlib>
#include <iostream>
int main()
{
Umjesto
if (x != 0)
moemo napisati
if (x)
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x != 0)
cout << "Broje nije nula." << endl;
else
cout << "Broje je nula." << endl;
system("PAUSE");
return 0;
}
306
int x;
for (x=5; x<51; x+=5)
cout << x << endl;
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x)
cout << "Broje nije nula." << endl;
else
cout << "Broje je nula." << endl;
system("PAUSE");
return 0;
}
PRO - MIL