C++ programiranje za apsolutne početnike
#include <cstdlib> Pogledajmo primjer promjene Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
#include <iostream> oblika slova.
#include <winbgim.h>
program
using namespace std;
odluke
int main()
{ Polja
int gdriver = 9; Sažimanje Veliki pro- Objekti Obrada teksta
int gmode = 2;
initgraph(&gdriver, &gmode, ""); grami
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;
}
koda
PRO - MIL 101
Donošenje odluke
102 PRO - MIL
PRO - MIL Donošenje odluke
103 Sažimanje Veliki pro- Objekti Obrada Polja Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj C++ programiranje za apsolutne početnike
koda grami teksta odluke program
Donošenje odluke Pojam funkcije zvuči jako
pametno, ali iza tog naziva
Funkcije kriju se uglavnom jednos-
tavne stvari, matematičke
#include <cstdlib> operacije poput potencira-
#include <iostream> nja ili vađenja kvadratnog
#include <cmath> korijena.
using namespace std; Pogledajmo program za
potenciranje.
int main()
{ Da bismo u programu mogli
koristiti matematičke funkci-
float broj; je, moramo u program uk-
float potencija; ljučiti biblioteku matematič-
float rezultat; kih funkcija.
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;
}
Varijabla u koju sprema-
mo rezultat potenciranja.
rezultat = pow ( broj, potencija ); Potencija na koju
potenciramo.
Naredba za potenciranje. Broj koji potenciramo.
104 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Ovo je program za izra- Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream> čun sinusa.
#include <cmath>
Ako ne znate što je to
using namespace std; sinus, nemojte se time
opterećivati. To nije bitno
int main() za razumijevanje C++
{ programskog jezika.
float kut; Važno je uočiti da ova
float rezultat; funkcija veličinu kuta ne
cout << "Kut u radijanima:" << endl; izražava stupnjevima ne-
cin >> kut; go radijanima.
cout << endl;
rezultat = sin(kut); odluke
cout << "Sinus kuta je:" << endl;
cout << rezultat << endl;
cout << endl;
system("PAUSE");
return 0;
}
Varijabla u koju sprema- Polja
mo rezultat.
Sažimanje Veliki pro- Objekti Obrada teksta
rezultat = sin ( kut );
Naredba za izračun sinusa kuta. Varijabla u koju spremamo veličinu grami
kuta kojem ćemo računati sinus. Kut
mora biti izražen u radijanima, a ne u koda
stupnjevima.
PRO - MIL 105
Donošenje odluke Ponekad je u programu
potrebno negativan broj
#include <cstdlib> pretvoriti u pozitivan.
#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;
}
Varijabla u koju sprema-
mo rezultat.
rezultat = abs ( broj );
Naredba za pretvaranje Varijabla u koju spremamo broj koji
negativnog broja u poziti- ćemo iz negativnog pretvoriti u poziti-
van broj. van.
106 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Pogledajmo program Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream> za vađenje kvadratnog
#include <cmath> korijena. odluke
using namespace std; Što je to uopće kvadrati Polja
korijen?
int main()
{ Ako je 4 puta 4, odnos-
no 4 na kvadrat, jedna-
float broj; ko 16, onda je kvadrat-
float rezultat; ni korijen od 16 jedak
cout << "Unesite broj:" << endl; 4.
cin >> broj;
cout << endl; Varijabla u koju spremamo
rezultat = sqrt(broj); broj čiji kvadratni korijen
cout << "Kvadratni korijen je:" << endl; želimo izračunati.
cout << rezultat << endl;
cout << endl; Naredba za izračun kvadra-
system("PAUSE"); tnog korijena.
return 0;
} Iako se nam na prvi
pogled može učiniti
Varijabla u koju spre- da je program ispra-
mamo rezultat. van, to na žalost nije
tako. Pokušamo li
rezultat = sqrt ( broj ); kvadratni korijen iz-
računati iz negativ-
nog broja dobit ćemo Sažimanje Veliki pro- Objekti Obrada teksta
besmisleni rezultat.
Do toga dolazi zato grami
što nije moguće izra-
čunati kvadratni kori- koda
jen iz negativnog
broja.
PRO - MIL 107
Donošenje odluke
Donošenje odluke
Pokušajmo kvadrati korijen izra-
čunati pomoću ovakvog progra-
ma.
#include <cstdlib> Ova inačica programa
#include <iostream> izračunava kvadratni
#include <cmath> korijen ako smo unijeli
pozitivan broj ili nas
using namespace std; obavještava da je une-
sen negativan broj ako
int main() unesemo negativan
{ broj.
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 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Pogledajmo bitne dijelo- Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream> ve našeg programa.
#include <cmath> odluke
Uobičajen početak prog-
using namespace std; rama. Izvodi se prilikom Polja
svakog pokretanja prog-
int main() rama Sažimanje Veliki pro- Objekti Obrada teksta
{
Formiranje varijabli i
float broj; unos broja iz kojeg će-
float rezultat; mo vaditi kvadratni kori-
cout << "Unesite pozitivan broj." << endl; jen.
cin >> broj; Izvodi se prilikom sva-
cout << endl; kog pokretanja progra-
ma.
Broj nula.
Naredbom if ispitujemo
if (broj < 0) je li sadržaj varijable ma-
nji od nule.
{
cout << "Broj je negativan!" << endl; Ovaj dio programa izvo-
di se samo ako je sadr-
} žaj varijable broj manji
od nule.
else
Naredbom else započi-
{ nje dio programa koji
rezultat = sqrt(broj); se izvodi samo ako
cout << "Kvadratni korijen je:" << endl; sadržaj varijable broj
cout << rezultat; nije manji od nule.
cout << endl;
}
grami
cout << endl; Uobičajeni kraj progra- koda
system("PAUSE"); ma. Izvodi se prilikom
return 0; svakog pokretanja prog-
} rama.
PRO - MIL 109
Donošenje odluke
Svi programi koje smo do sada vidjeli izvodili su se redom od prve do posljed-
nje naredbe. U slučaju programa za vađenje kvadratnog korijena to nam ne
odgovara jer želimo da program na jedan način reagira ako unesemo poziti-
van broj, a na drugi način ako unesemo negativan.
Ako unesemo pozitivan broj, izračunat ćemo kvadratni korijen i nećemo ispisi-
vati obavijest da je broj negativan, a ako unesemo negativan broj, ispisat će-
mo obavijest da je broj negativan i nećemo računati kvadratni korijen, budući
da iz negativnog broja nije moguće izračunati kvadratni korijen.
Za razliku od dosadašnjih naredbi koje su se nalazile u jednom redu, naredba
koja nam omogućuje izvođenje jednog ili drugog dijela programa protežu se
kroz više redova. Pogledajmo strukturu tog sustava.
Uvjet na temelju kojeg U našem slučaju ispituje se je li sadržaj
će računalo odlučiti hoće varijable broj manji od broja nula.
li se izvoditi sadržaj a ili
sadržaj b.
Naredbom if za- if ( broj < 0 ) Ovaj dio programa
počinje donoše- { unutar vitičastih zag-
nje odluke. rada izvršit će se ako
sadržaj a je uvjet zadovoljen,
Sadržaj a i sa- } tj. ako je sadržaj vari-
držaj b nalaze else jable broj manji od
se unutar vitiča- { nula.
stih zagrada.
sadržaj b Naredbom else za-
U početku često } počinje dio programa
će nam se deša- koji se izvršava ako
vati da izostavi- uvjet iza if naredbe
mo vitičaste za- nije zadovoljen, tj.
grade ili da ih ako sadržaj varijable
krivo napišemo. broj nije manji od
nule.
U tom slučaju izvodi
se sadržaj b, a ne
izvodi se sadržaj a.
110 PRO - MIL
C++ programiranje za apsolutne početnikePetlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
Da bismo lakše shvatili način korištenja if ... else naredbi, napravit ćemo niz
programa. Ti programi neće raditi ništa osobito korisno, već će im jedina svrha
biti uvježbavanje pisanja programa unutar kojih računalo donosi odluku.
#include <cstdlib> program
#include <iostream>
odluke
using namespace std;
Ovaj program samo Polja
int main() ispituje je li unesen
{ broj veći od nule.
float broj; Ako je broj veći od
cout << "Unesite broj." << endl; nule, izvodi se dio
cin >> broj; programa koji ispisu-
cout << endl; je tekst Broj je veći
if (broj > 0) od nule.
{ Ako broj nije veći od
cout << "Broj je veci od nule." << endl; nule, izvodi se dio
programa koji ispisu-
} je tekst Broj nije
else veći od nule.
{
cout << "Broj nije veci od nule." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sažimanje Veliki pro- Objekti Obrada teksta
grami
koda
PRO - MIL 111
Donošenje odluke
U ovom programu ispitivat će-
mo je li unesen broj jednak nuli.
Za to ispitivanje koristit ćemo
dvostruki znak jednakosti.
#include <cstdlib> Ako je odgovor na pitanje
#include <iostream> je li sadržaj varijable broj
jednak nuli DA, izvršit će
using namespace std; se ovaj dio programa.
Ispisat će se poruka Broj
int main() je jednak nuli.
{
Ako je odgovor na pitanje
float broj; je li sadržaj varijable broj
cout << "Unesite broj." << endl; jednak nuli NE, izvršit će
cin >> broj; se ovaj dio programa.
cout << endl; Ispisat će se poruka Broj
nije jednak nuli.
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 napi- PRO - MIL
sali broj = 0 program ne bi ispi-
tivao je li sadržaj varijable broj
jednak nuli, nego bi broj nula
stavio u varijablu broj.
112
C++ programiranje za apsolutne početnike
#include <cstdlib> Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream>
Vidjeli smo da možemo odluke
using namespace std; ispitivati je li varijabla
veća, manja ili jednaka Polja
int main() nekom broju.
{ U dosadašnjim primje-
rima to je bio broj nula,
float broj; ali to može biti bilo koji
cout << "Unesite broj." << endl; broj, npr. broj 100 kao
cin >> broj; što je to slučaj u ovom
cout << endl; primjeru.
if (broj < 100)
{
cout << "Broj je manji od sto." << endl;
}
else
{
cout << "Broj nije manji od sto." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sažimanje Veliki pro- Objekti Obrada teksta
grami
koda
PRO - MIL 113
Donošenje odluke
Osim varijable i broja, if nared-
bom možemo uspoređivati dvije
varijable.
#include <cstdlib> Ovdje ispitujemo jesu li sa-
#include <iostream> držaji dviju varijabli u koje
smo prethodno unijeli broje-
using namespace std; ve jednaki.
int main() Ako unesemo jednake bro-
{ jeve ispisat, će se obavijest
Brojevi su jednaki.
float prvi;
float drugi; Ako unesemo različite, ispi-
cout << "Unesite prvi broj." << endl; sat će se obavijest Brojevi
cin >> prvi; su različiti.
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
C++ programiranje za apsolutne početnikePetlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
U ovom primjeru ispitujemo je odluke
li sadržaj varijable prvi manji
od sadržaja varijable drugi.Polja
#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 << "Prvi broj je manji." << endl;
}
else
{
cout << "Prvi broj nije manji." << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sažimanje Veliki pro- Objekti Obrada teksta
grami
koda
PRO - MIL 115
Donošenje odluke
#include <cstdlib> Osim jednos-
#include <iostream> tavnih ispitiva-
nja if nared-
using namespace std; bom, moguća
su i složenija
int main() ispitivanja.
{
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
C++ programiranje za apsolutne početnikePetlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
Prilikom formiranja složenih uvjeta moramo paziti na raspored zagrada. Svaki
uvjet, prvi i drugi nalaze se unutar svojih zagrada, a svi zajedno nalaze se
unutar još jednog para zagrada.
if ( (prvi < 5) && (drugi < 5) ) program
{
sadržaj a Ovdje imamo dva uvjeta, prvi uvjet i drugi odluke
} uvjet. Svaki od ta dva uvjeta može biti zado-
else voljen ili nezadovoljen.
{
Moguće je da je sadržaj varijable prvi manji
sadržaj b od 5, a moguće je i da nije. Isto tako, mogu-
će je da je sadržaj varijable drugi manji od
5, a moguće je i da nije.
} Postavlja se pitanje u kojem slučaju će se Polja
izvršavati sadržaj a, a u kojem slučaju sadr- Sažimanje Veliki pro- Objekti Obrada
žaj b.
Ovim oznakama naređujemo računalu da teksta
će se sadržaj a izvoditi samo onda kad su
zadovoljena oba uvjeta; u našem slučaju grami
kad je sadržaj varijable prvi manji od 5 i kad
je sadržaj varijable drugi manji od 5.
U svim ostalim slučajevima izvršit će se koda
sadržaj b.
PRO - MIL 117
Donošenje odluke
#include <cstdlib> Ako umjesto ozna-
#include <iostream> ka && stavimo
oznake || ukupni
using namespace std; uvjet bit će zado-
voljen ako je ba-
int main() rem jedan od dva
{ uvjeta zadovoljen.
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;
}
Oznaku | dobijemo tako da drži-
mo lijevu AltGr tipku, a zatim
pritisnemo W tipku.
118 PRO - MIL
C++ programiranje za apsolutne početnikePetlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
Ovdje možemo vidjeti primjere jednostavnih ispitivanja na temelju kojih raču-
nalo donosi odluku koji dio programa će se izvoditi, a koji preskočiti.
Ovo su samo neki primjeri, dok je broj mogućih kombinacija praktički neog-
raničen. Bilo koju varijablu koju koristimo u programu možemo usporediti s
bilo kojim brojem.
Isto tako bilo koje dvije varijable koje se koriste u programu možemo među-
sobno uspoređivati.
if (broj < 0) Primjeri jednostavnih ispitivanja
Ispitujemo je li sadržaj varijable broj manji od broja nula.
if (broj > 0) Ispitujemo je li sadržaj varijable broj veći od broja nula. odluke
if (broj == 0) Ispitujemo je li sadržaj varijable broj jednak broju nula. Polja
if (broj < 50)
if (broj > 50) Ispitujemo je li sadržaj varijable broj manji od broja pede-
set.
Ispitujemo je li sadržaj varijable broj veći od broja pedeset.
if (broj == 50) Ispitujemo je li sadržaj varijable broj jednak broju pedeset. Sažimanje Veliki pro- Objekti Obrada teksta
if (broj != 50) Ispitujemo je li sadržaj varijable broj različit od broja pede- grami
if (prvi > drugi) set.
if (prvi < drugi) koda
if (prvi == drugi) Ispitujemo je li sadržaj varijable prvi veći od sadržaja vari-
jable drugi.
Ispitujemo je li sadržaj varijable prvi manji od sadržaja
varijable drugi.
Ispitujemo je li sadržaj varijable prvi jednak sadržaju vari-
jable drugi.
PRO - MIL 119
Donošenje odluke
Osim jednostavnih ispitivanja if naredbom, u programu možemo imati i veoma
složena ispitivanja.
Složena ispitivanja formiraju se korištenjem zagrada po logici sličnoj logici u
matematici i uporabom simbola || i &&.
Simbol && između dva uvjeta znači da oba uvjeta moraju biti zadovoljena da
bi bio zadovoljen ukupni uvjet.
Simbol || između dva uvjeta označuje da je dovoljno da je barem jedan od
uvjeta zadovoljen da bi bio zadovoljen ukupni uvjet.
Broj mogućih kombinacija praktički je neograničen, a koju kombinaciju ćemo
upotrijebiti ovisi o cilju koji programom želimo postići.
Primjeri složenih ispitivanja
if ((prvi < 5) && (drugi < 5)) Uvjet je zadovoljen ako je sadržaj vari-
jable prvi manji od 5 i ako je sadržaj
varijable drugi manji od 5.
if ((prvi < 5) || (drugi < 5)) Uvjet je zadovoljen ako je ili sadržaj
varijable prvi manji od 5, ili ako je sa-
držaj varijable drugi manji od 5, ili ako
su obje varijable manje od 5.
if (((prvi < 5) || (drugi < 5)) && (treci < 5)) Uvjet je zadovoljen ako je sadržaj vari-
jable prvi ili sadržaj varijable drugi ili
sadržaj obiju varijabli manji od 5 i ako
je sadržaj varijable treci manji od 5.
if ((prvi < 5) || (drugi < 5) || (treci < 5)) Uvjet je zadovoljen ako je barem jedna
od triju varijabli manja od pet, ili ako su
dvije manje od 5, ili ako su sve tri ma-
nje od 5.
Uvjet je zadovoljen ako su sve tri vari-
if ((prvi < 5) && (drugi < 5) && (treci < 5)) jable manje od pet. Dovoljno je da jed-
na varijabla nije manja od 5 i uvjet nije
ispunjen.
120 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream>
Ovdje vidimo primjer pro- odluke
using namespace std; grama koji možemo isko-
ristiti za isprobavanje Polja
int main() kombinacija s prethodne
{ stranice.
float prvi; U ovom slučaju ukupni
float drugi; uvjet je ispunjen ako je
float treci; prvi broj manji od 5 ili ako
cout << "Unesite prvi broj." << je drugi broj manji od 5 ili
endl; ako su oba manja od 5 i
cin >> prvi; ako je treći broj manji od
cout << "Unesite drugi broj." << endl; 5.
cin >> drugi;
cout << "Unesite treci broj." << endl; Ako je ukupni uvjet zado-
cin >> treci; voljen, izvest će se ovaj
if (((prvi < 5) || (drugi < 5)) && (treci < 5)) dio programa.
{ Ako ukupni uvjet nije
cout << "DA" << endl; zadovoljen, izvest će se
ovaj dio programa.
}
else
{
cout << "NE" << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Sažimanje Veliki pro- Objekti Obrada teksta
grami
koda
PRO - MIL 121
Donošenje odluke
#include <cstdlib> Osim što možemo u pro-
#include <iostream> gramu imati veoma slože-
na ispitivanja unutar if
using namespace std; naredbe, moguće je jed-
nu if naredbu staviti unu-
int main() tar druge if naredbe.
{
To je nužno ako želimo
float broj; ispitati više stvari, npr. je
cout << "Unesite broj." << endl; li neki broj veći od nule ili
cin >> broj; jednak nuli ili je manji od
if (broj < 0) nule. Takvo ispitivanje ne
možemo napraviti s jed-
{ nom if naredbom, nego
cout << "Broj je manji od 0." << endl; su nužne dvije if naredbe.
} Pogledajmo ovaj prog-
else ram.
{
if (broj > 0)
{
cout << "Broj je veci od 0." << endl;
}
else
{
cout << "Broj je 0." << endl;
}
}
cout << endl;
system("PAUSE");
return 0;
}
122 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Pogledamo strukturu Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
#include <iostream> programa.
using namespace std; Početak programa. program
int main() Prva if naredba. Ispitu-
{ je je li broj manji od 0.
float broj; Ako je uneseni broj
cout << "Unesite broj." << endl; manji od 0, izvodi se
cin >> broj; ovaj dio.
if (broj < 0) odluke
{ Ako uneseni broj nije Polja
cout << "Broj je manji od 0." << endl; manji od 0, izvodi se
ovaj dio. Unutar ovog Sažimanje Veliki pro- Objekti Obrada teksta
} dijela nalazi se druga
if naredba.
else
Ako je uneseni broj
{ veći od 0, izvodi se
if (broj > 0) ovaj dio.
{ Ako uneseni broj nije grami
cout << "Broj je veci od 0." << endl; veći od 0, izvodi se
ovaj dio.
}
Ako uneseni broj nije
else ni veći ni manji od
nule, onda znamo da
{ je nula.
cout << "Broj je 0." << endl;
Kraj programa. koda
}
123
}
cout << endl;
system("PAUSE");
return 0;
}
PRO - MIL
Donošenje odluke
#include <cstdlib> Pogledamo li pažljivo ovaj
#include <iostream> program, vidjet ćemo da je
using namespace std; potpuno identičan programu s
int main() prethodne stranice. Razlika je
{ jedino u tome što pojedini re-
float broj; dovi nisu uvučeni.
cout << "Unesite broj." << endl;
cin >> broj; Pokušamo li pokrenuti ovaj
if (broj < 0) program, vidjet ćemo da radi
{ potpuno jednako kao i inačica
cout << "Broj je manji od 0." << endl; s uvučenim redovima.
}
else U čemu je onda razlika? Zaš-
{ to bismo uopće uvlačili redove
if (broj > 0) kad program očigledno radi i
{ bez toga?
cout << "Broj je veci od 0." << endl;
} Razlika je u preglednosti. Pro-
else gram s uvučenim redovima
{ daleko je pregledniji.
cout << "Broj je 0." << endl;
} Usporedimo li program s uvu-
} čenim redovima na prethodnoj
cout << endl; stranici i ovaj bez uvučenih
system("PAUSE"); redova, vidjet ćemo da je na
return 0; inačici s uvučenim redovima
} daleko lakše uočiti gdje zapo-
činju, a gdje završavaju poje-
Ne postoje čvrsta pravila na koji način dine if naredbe; koje vitičaste
treba uvlačiti redove. Na početku je zagrade čine par i sl.
najbolje da u vlastitim programima
uvlačenja izvodimo slično kao u prim- Preglednost programa s uvla-
jerima danima u knjizi. čenjima redova osobito dolazi
do izražaja kod većih i slože-
Osnovna ideja je u tome da se uvuče nijih programa.
svaka cjelina za koju bi moglo biti
nejasno gdje počinje, a gdje završa-
va.
124 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Pogledajmo strukturu Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream> uvlačenja redova.
odluke
using namespace std; Bez uvlačenja piše se
početak programa i dvije Polja
int main() glavne vitičaste zagrade.
{ Sažimanje Veliki pro- Objekti Obrada teksta
Sadržaj unutar glavnih
float broj; vitičastih zagrada uvlači grami
cout << "Unesite broj." << endl; se u desnu stranu.
cin >> broj;
Na toj razini piše se
if (broj < 0) većina jednostavnih
naredbi.
{
cout << "Broj je manji od 0." << endl; Sadržaji unutar if na-
redbe dodatno se pomi-
} ču u desnu stranu.
else To nam pomaže da
lakše uočimo gdje poči-
{ nje, a gdje završava if
if (broj > 0) naredba.
{ Ako se unutar jedne if
cout << "Broj je veci od 0." << endl; naredbe nalazi druga if
naredba, njen sadržaj
} dodatno se pomiče u
desnu stranu.
else
To nam pomaže da
{ lakše uočimo gdje poči-
cout << "Broj je 0." << endl; nje i gdje završava dru-
ga if naredba te poma-
} že da njen sadržaj lak-
še razlikujemo od sadr-
} žaja prve if naredbe.
cout << endl;
system("PAUSE");
return 0;
}
koda
PRO - MIL 125
Donošenje odluke
Switch naredba
#include <cstdlib> If naredba nam
#include <iostream> omogućuje gra-
nanje na dvije
using namespace std; grane. Jedna će
se izvršiti ako je
int main() uvjet zadovo-
{ ljen, a druga ako
uvjet nije zado-
float a; voljen.
float b;
int od; Primjena nared-
cout << "Unesite 1. broj:" << endl; be if nije elegan-
cin >> a; tna ako se u
cout << "Unesite 2. broj:" << endl; programu javi
cin >> b; potreba za gra-
cout << "Brojeve cemo:" << endl; nanjem u više
cout << "1 - zbrojiti" << endl; od dvije grane.
cout << "2 - oduzeti" << endl;
cout << "3 - mnoziti" << endl; U ovom progra-
cout << "4 - dijeliti" << endl; mu biramo jed-
cin >> od; nu od četiri ra-
switch (od) čunske operaci-
{ je.
case 1: Program bismo
cout << a << " + " << b << " = " << a + b << endl; mogli realizirati i
break; uporabom više
if naredbi, ali
case 2: daleko je ele-
cout << a << " - " << b << " = " << a - b << endl; gantniji ako upo-
break; trijebimo switch
naredbu.
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 PRO - MIL
C++ programiranje za apsolutne početnike
Početak switch naredbe. Ovdje se nalazi int varijabla. Grana- Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
nje se vrši na temelju broja koji se
nalazi u varijabli. Int tip je obvezan.
switch (od) Naredbom case 1: započinje dio programa koji program
će se izvršiti ako se u varijabli od nalazi broj 1.
{ Naredbom break
case 1: završava case 1:
naredba.
cout << "Prvi izbor." << endl; Pokušajmo je obri-
break; sati. Pokrenimo
program i promat-
rajmo posljedice.
case 2: odluke
cout << "Drugi izbor." << endl;
break; Naredbom case 2: Polja
započinje dio pro-
case 3: grama koji će se
cout << "Treci izbor." << endl; izvršiti ako je sadr-
break; žaj varijable od
broj 2.
case 4: Na temelju slične Sažimanje Veliki pro- Objekti Obrada teksta
cout << "Cetvrti izbor." << endl; logike biraju se
break; ostali case dijelovi
kojih može biti pro-
izvoljni broj.
default: (U našem slučaju
cout << "Greska!!!" << endl; imamo još case 3:
i case 4:.)
} grami
Kraj switch naredbe. Ovaj dio izvršava se ako ni jedan case uvjet koda
nije zadovoljen, dakle ako u varijabli od nije bio
ni broj 1, ni broj 2, ni broj 3, ni broj 4.
PRO - MIL 127
Petlje
128 PRO - MIL
PRO - MIL Petlje
129 Sažimanje Veliki pro- Objekti Obrada Polja Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj C++ programiranje za apsolutne početnike
koda grami teksta odluke program
Petlje
For petlja
#include <cstdlib> Ovaj program crta niz krugova jedna-
#include <iostream> kog promjera. Svakome je središte
#include <winbgim.h> pomaknuto za pet točaka u desnu
stranu u odnosu na središte prethod-
using namespace std; nog.
int main() Vidimo da program funkcionira, ali nije
{ baš elegantan budući da moramo pu-
no puta ponoviti sličnu naredbu.
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE);
setcolor (BLACK); #include <cstdlib> Ovaj program radi isti
cleardevice(); #include <iostream> posao, ali je očigledno
circle(260,240,60); #include <winbgim.h> daleko elegantniji.
circle(265,240,60);
circle(270,240,60); using namespace std;
circle(275,240,60);
circle(280,240,60); int main()
circle(285,240,60); {
circle(290,240,60);
circle(295,240,60); int gdriver = 9;
circle(300,240,60); int gmode = 2;
circle(305,240,60); int x;
circle(310,240,60); initgraph(&gdriver, &gmode, "");
circle(315,240,60); setbkcolor (WHITE);
circle(320,240,60); setcolor (BLACK);
circle(325,240,60); cleardevice();
circle(330,240,60); for (x = 260; x < 365; x = x + 5 )
circle(335,240,60); {
circle(340,240,60);
circle(345,240,60); circle(x,240,60);
circle(350,240,60); }
circle(355,240,60); getch();
circle(360,240,60); closegraph();
getch(); return 0;
}
closegraph();
return 0;
}
130 PRO - MIL
C++ programiranje za apsolutne početnike
Ključna naredba u novoj inačici programa je for naredba. Omogućuje nam Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
izvršavanje dijela programa više puta. To višestruko ponavljanje dijela prog-
rama naziva se programska petlja. Slično kao if naredba, i for naredba je
veoma složena i proteže se kroz više redova programa.
Pogledajmo sastavne elemente for naredbe.
Ovdje se definira početna Petlja će se vrtjeti, odnosno petlja će po- program
vrijednost varijable koju navljati dio programa, tako dugo dok je
koristi for naredba i koju ovaj uvjet zadovoljen; u našem slučaju,
prije for naredbe moramo tako dugo dok je sadržaj varijable x manji
formirati. od 365.
U našem slučaju početna Kad uvjet više nije zadovoljen; tj. kad x više
vrijednost varijable x je ne bude manji od 365, program će nastavit
260. izvođenje od prve naredbe nakon druge
vitičaste zagrade.
odluke
for ( x = 260 ; x < 365 ; x = x + 5 )
{ Ovdje određujemo na- Polja
čin na koji će se vrijed-
circle ( x, 240, 60 ); nost varijable x mije- Sažimanje Veliki pro- Objekti Obrada teksta
njati.
} grami
U našem slučaju nakon
Udaljenost središta kruga od lije- svakog ponavljanja for koda
vog ruba nije određena brojem, naredbe, vrijednost
nego vrijednošću varijable x. varijable x uvećat će se
Budući da se pri svakom ponov- za 5, a rezultat će se
nom izvođenju sadržaj varijable x spremiti u varijablu x.
mijenja, jednako će se mijenjati i
udaljenost središta kruga od lije- Sadržaj unutar navodni-
vog ruba. ka ponavlja se svaki put
kad for naredba uveća
vrijednost varijable x i
provjeri je li x manji od
365.
PRO - MIL 131
Petlje
#include <cstdlib> Pogledajmo dijelove našeg programa.
#include <iostream> Uobičajeni početak programa.
#include <winbgim.h>
using namespace std;
int main()
{
int gdriver = 9; Naredbe za otvaranje grafičkog pro-
int gmode = 2; zora, određivanje svojstava grafike i
int x; formiranje varijable x koju koristimo u
initgraph(&gdriver, &gmode, ""); for naredbi.
setbkcolor (WHITE);
setcolor (BLACK); Ovdje definiramo petlju. Početna
cleardevice(); vrijednost varijable petlje x je 260,
uvećavat će se za 5, a izvršavat će
for (x = 260; x < 365; x = x + 5 ) se tako dugo dok je sadržaj varijable
x manji od 365.
{
circle(x,240,60); Pri svakom ponavljanju petlje po-
navlja se sadržaj unutar vitičastih
} zagrada.
getch(); U našem slučaju na grafičkom ek-
closegraph(); ranu će se crtati krug.
return 0;
} Udaljenost središta kruga od lije-
vog ruba nije određena brojem,
132 nego vrijednošću varijable x.
Budući da vrijednost varijable x pri
svakom ponavljanju raste za 5,
središe novog kruga bit će za pet
točaka pomaknuto u desnu stranu.
Uobičajeni kraj programa.
PRO - MIL
C++ programiranje za apsolutne početnike
Nemojmo se obeshrabriti ako nam trenutno nije previše jasno ni kako for Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
naredba radi, ni čemu bi to trebalo služiti. Na početku su takve nedoumice
normalne i nipošto nisu dokaz da nismo talentirani za programiranje.
Takve nedoumice prevladavaju se tako da napišemo određenu količinu pro-
grama jer ćemo jedino na taj način do kraja shvatiti kako for naredba radi i
čemu služi.
Drugačiji je problem ako nam se ne da pisati programe. Onda bismo doista
mogli konstatirati da programiranje nije za nas i trebali bismo se pokušati
baviti nečim intelektualno manje zahtjevnim, npr. nogometom ili politikom.
#include <cstdlib> Ovaj će nam program po- odluke
#include <iostream> moći da lakše shvatimo
#include <winbgim.h> funkcioniranje if naredbe. Polja
Vrijednost varijable x mije-
using namespace std; njat će se od 0 do 9 po 1. Sažimanje Veliki pro- Objekti Obrada teksta
int main() Jedino što ovaj program
{ radi jest ispisivanje sadržaj
varijable x.
int x;
cout << "Prije for naredbe." << endl; To nam omogućuje lako
for (x = 0; x < 9; x = x + 1 ) opažanje kako se sadržaj
{ varijable x mijenja, te koji
dio programa se ponavlja i
cout << x << endl; koliko puta.
}
cout << "Nakon for naredbe." << endl; Unošenjem varijacija u taj
cout << endl; program najlakše ćemo
system("PAUSE"); shvatiti for naredbu.
return 0;
}
Vidimo da se ponavlja grami
sadržaj unutar vitičastih
zagrada for naredbe. koda
Sadržaj prije i sadržaj pos- 133
lije for naredbe ne ponav-
lja se.
PRO - MIL
Petlje
#include <cstdlib> U prošlom primjeru vrijed-
#include <iostream> nost varijable x uvećavali
#include <winbgim.h> smo za 1, a u primjeru prije
toga za 5.
using namespace std;
Vrijednost varijable x u for
int main() naredbi možemo uvećavati
{ za bilo koju vrijednost koja
nam u programu treba, npr.
int x; za 2.
cout << "Prije for naredbe." << endl;
for (x = 0; x < 9; x = x + 2 ) U ovom slučaju vrijednost
{ varijable x raste od 0 do 9
po 2.
cout << x << endl;
}
cout << "Nakon for naredbe." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Mijenjati možemo početnu i #include <cstdlib>
krajnju vrijednost petlje. #include <iostream>
#include <winbgim.h>
U ovom slučaju x će se mijenja-
ti od 10 do 29. 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
C++ programiranje za apsolutne početnike
#include <cstdlib> Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream>
#include <winbgim.h> For naredba može brojiti i odluke
unatrag.
using namespace std;
U ovom slučaju vrijednost
int main() varijable x mijenja se od 28
{ do 9 po 2.
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;
}
U for naredbi mogu se koristi- #include <cstdlib> Polja
ti i negativni brojevi. #include <iostream>
#include <winbgim.h>
Sažimanje Veliki pro- Objekti Obrada teksta
using namespace std;
grami
int main()
{ koda
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 135
Petlje
#include <cstdlib> Prilikom formiranja for nared-
#include <iostream> be moguće je napraviti grešku
#include <winbgim.h> koja se naziva “mrtva petlja”.
using namespace std; Do te greške dolazi kad uvjete
za kraj petlje tako formuliramo
int main() da se oni nikad neće ispuniti,
{ pa će se petlja vječno izvoditi.
int x; U ovom primjeru početna vri-
cout << "Prije for naredbe." << endl; jednost je 18. Ta početna vri-
for (x = 18; x > -9; x = x + 2 ) jednost uvećava se za 2, a
{ petlja će se ponavljati tako
dugo dok je x veći od –9.
cout << x << endl;
} Ako 18 uvećavamo za 2, x će
cout << "Nakon for naredbe." << endl; uvijek biti veći od –9 i petlja se
cout << endl; nikad neće prekinuti.
system("PAUSE");
return 0;
}
Pogledajmo još jedan primjer #include <cstdlib>
“mrtve petlje”. #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
C++ programiranje za apsolutne početnike
Naredba for ne postoji zato da bi se niz brojeva ispisao na zaslon računala, Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
nego zato da bi se u programu postigli određeni efekti.
Iako to nije uvijek slučaj, najčešće se za postizanje željenih ciljeva koristi va-
rijabla petlje. Pogledajmo nekoliko primjera.
#include <cstdlib> program
#include <iostream>
#include <winbgim.h> Ovaj primjer sličan je primjeru odluke
na početku ovog poglavlja.
using namespace std;
Razlika je u tome što su u ovom
int main() slučaju drugačije početna i kraj-
{ nja vrijednost x varijable, pa
smo dobili drugačiji niz krugova.
int gdriver = 9;
int gmode = 2; U ovom slučaju vrijednost varija-
int x; ble x mijenja se od 60 do 580 po
initgraph(&gdriver, &gmode, ""); 5.
setbkcolor (WHITE);
setcolor (BLACK); Pokušamo sami mijenjati vrijed-
cleardevice(); nosti unutar for naredbe i pro-
for (x = 60; x < 580; x = x + 5 ) matrajmo kakve efekte će izaz-
{ vati te promjene.
circle(x,240,60); Polja
}
getch();
closegraph();
return 0;
}
Sažimanje Veliki pro- Objekti Obrada teksta
grami
koda
PRO - MIL 137
Petlje
#include <cstdlib> Varijablu x možemo staviti umjesto
#include <iostream>
#include <winbgim.h> broja koji određuje udaljenost središ-
using namespace std; ta od gornjeg ruba, pa će se krugovi
int main() crtati od gore prema dolje.
{
#include <cstdlib>
int gdriver = 9; #include <iostream>
int gmode = 2; #include <winbgim.h>
int x;
initgraph(&gdriver, &gmode, ""); using namespace std;
setbkcolor (WHITE);
setcolor (BLACK); int main()
cleardevice(); {
for (x = 60; x < 390; x = x + 5 )
{ int gdriver = 9;
int gmode = 2;
circle(320,x,60); int x;
} initgraph(&gdriver, &gmode, "");
getch(); setbkcolor (WHITE);
closegraph(); setcolor (BLACK);
return 0; cleardevice();
} for (x = 60; x < 390; x = x + 15 )
{
Uvećavamo li varijablu x za 15 um-
jesto za 5, pomak središta krugova circle(320,x,60);
bit će veći. }
getch();
Umjesto broja 15 pokušajmo staviti closegraph();
10, a zatim 20. return 0;
}
138 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream>
#include <winbgim.h> Osim pozicije središta kruga, odluke
using namespace std; varijablom x možemo mijenjati Polja
int main() polumjer kruga.
{
#include <cstdlib>
int gdriver = 9; #include <iostream>
int gmode = 2; #include <winbgim.h>
int x;
initgraph(&gdriver, &gmode, ""); using namespace std;
setbkcolor (WHITE);
setcolor (BLACK); int main()
cleardevice(); {
for (x = 20; x < 210; x = x + 10 )
{ int gdriver = 9;
int gmode = 2;
circle(320,240,x); int x;
} initgraph(&gdriver, &gmode, "");
getch(); setbkcolor (WHITE);
closegraph(); setcolor (BLACK);
return 0; cleardevice();
} for (x = 10; x < 640; x = x + 10 )
{
Na sličan način možemo crtati ni-
zove drugih geometrijskih oblika, line (x, 20, x, 400);
npr. crta. }
getch();
closegraph(); Sažimanje Veliki pro- Objekti Obrada teksta
return 0;
} grami
koda
PRO - MIL 139
Petlje Ovo je primjer programa koji crta
niz pravokutnika.
#include <cstdlib>
#include <iostream> #include <cstdlib>
#include <winbgim.h> #include <iostream>
using namespace std; #include <winbgim.h>
int main()
{ using namespace std;
int gdriver = 9; int main()
int gmode = 2; {
int x;
initgraph(&gdriver, &gmode, ""); int gdriver = 9;
setbkcolor (WHITE); int gmode = 2;
setcolor (BLACK); int x;
cleardevice(); int r;
for (x = 10; x < 640; x = x + 30 ) initgraph(&gdriver, &gmode, "");
{ setbkcolor (WHITE);
setcolor (BLACK);
rectangle (x, 20, x+20, 380); cleardevice();
} r = 20;
getch(); for (x = 20; x < 475; x = x + 15 )
closegraph(); {
return 0;
} circle(x,240,r);
r = r + 5;
U dosadašnjim programima koris- }
tili smo jednu varijablu. getch();
U ovom primjeru koristima dvije, closegraph();
jednom pomičemo udaljenost sre- return 0;
dišta od lijevog ruba, a drugom }
mijenjamo promjer.
PRO - MIL
140
C++ programiranje za apsolutne početnike
Pogledajmo bitne dijelove ovog programa. Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
#include <cstdlib> Za razliku od dosadašnjih primje- program
#include <iostream> ra, u ovom formiramo još jednu
#include <winbgim.h> varijablu koju smo nazvali r. odluke
using namespace std; Prije for naredbe u varijablu r spre- Polja
mimo početnu vrijednost polumje-
int main() ra kruga. U našem slučaju spremili Sažimanje Veliki pro- Objekti Obrada teksta
{ smo broj 20.
grami
int gdriver = 9; For naredba mijenja vrijednost
int gmode = 2; varijable x o 20 do 475 po 15.
int x;
U naredbi za crtanje kruga upotri-
int r; jebili smo dvije varijable.
Varijablom x određujemo udalje-
initgraph(&gdriver, &gmode, ""); nost središta kruga od lijevog ru-
setbkcolor (WHITE); ba, a varijablom r polumjer kruga.
setcolor (BLACK);
cleardevice(); Da bi kod svakog ponavljanja
polumjer kruga bio veći, nakon
r = 20; što smo nacrtali krug, unutar viti-
častih zagrada for naredbe, broj
for (x = 20; x < 475; x = x + 15 ) u varijabli r povećavamo za 5.
{ Zbog toga će pri svakom ponav-
ljaju polumjer kruga biti veći.
circle(x,240,r);
koda
r = r + 5;
}
getch();
closegraph();
return 0;
}
I u ovom slučaju promjena pojedinih
elemenata i opažanje rezultata po-
moći će nam da bolje razumijemo
program; npr umjesto r = r + 5 poku-
šajmo staviti r = r + 10; umjesto x = x
+ 15 pokušajmo staviti x = x + 5.
PRO - MIL 141
Petlje
Animacija
#include <cstdlib> Animaciju možemo napraviti
#include <iostream> veoma jednostavno.
#include <winbgim.h>
Ovaj program crta niz pravo-
using namespace std; kutnika.
int main() Dovoljno je da pravokutnik
{ prije crtanja na novoj poziciji
obrišemo na staroj i dobit će-
int gdriver = 9; mo iluziju kretanja.
int gmode = 2;
int x; #include <cstdlib>
initgraph(&gdriver, &gmode, ""); #include <iostream>
setbkcolor (WHITE); #include <winbgim.h>
setcolor (BLACK);
cleardevice(); using namespace std;
for (x = 10; x < 620; x = x + 30 )
{ int main()
{
rectangle (x, 20, x+20, 60);
} int gdriver = 9;
getch(); int gmode = 2;
closegraph(); int x;
return 0; initgraph(&gdriver, &gmode, "");
} setbkcolor (WHITE);
setcolor (BLACK);
Ovom inačicom programa dobit cleardevice();
ćemo privid kretanja pravokutnika. for (x = 10; x < 620; x = x + 1 )
{
Pravokutnik koji se kreće
na zaslonu računala. cleardevice();
rectangle (x, 20, x+20, 60);
Ovom naredbom brišemo ekran, a }
time i pravokutnik na staroj poziciji. getch();
closegraph();
return 0;
}
142 PRO - MIL
C++ programiranje za apsolutne početnike
#include <cstdlib> Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream>
#include <winbgim.h> Sve grafičke elemente koje smo odluke
do sada mijenjali možemo ani-
using namespace std; mirati. Polja
U ovom programu animiramo
int main() širenje kruga. Sažimanje Veliki pro- Objekti Obrada teksta
{
#include <cstdlib> grami
int gdriver = 9; #include <iostream>
int gmode = 2; #include <winbgim.h> koda
int x;
initgraph(&gdriver, &gmode, ""); using namespace std;
setbkcolor (WHITE);
setcolor (BLACK); int main()
cleardevice(); {
for (x = 10; x < 200; x = x + 1 )
{ int gdriver = 9;
int gmode = 2;
cleardevice(); int x;
circle (320, 240, x); initgraph(&gdriver, &gmode, "");
} setbkcolor (WHITE);
getch(); setcolor (BLACK);
closegraph(); cleardevice();
return 0; for (x = 10; x < 465; x = x + 1 )
} {
U ovom primjeru animiramo krug cleardevice();
koji pada od gornjeg prema do- circle (320, x, 10);
njem rubu . }
getch();
Pokušajmo sami smi- closegraph();
sliti slične programe. return 0;
}
PRO - MIL 143
Petlje Slično kao što možemo unutar if
naredbe staviti drugu if naredbu
Petlja u petlji tako unutar for petlje možemo stavi-
ti drugu for petlju.
#include <cstdlib>
#include <iostream> Kod ovakvih programa veoma je
#include <winbgim.h> važno pravilno uvlačiti redove, jer
tako lakše uočavamo početak i kraj
using namespace std; pojedinih for naredbi.
int main() Ovom naredbom naređujemo ra-
{ čunalu da na ovom mjestu stoji
onoliko milisekundi koliki broj smo
int gdriver = 9; stavili u zagradu.
int gmode = 2;
int x; U našem slučaju računalo će sta-
int r; jati 100 milisekundi.
initgraph(&gdriver, &gmode, "");
setbkcolor (WHITE); Ovom naredbom usporavamo iz-
setcolor (BLACK); vođenje animacije, ako je animaci-
cleardevice(); ja suviše brza.
for (x = 30; x < 610; x = x + 60 )
{ Na vašem računalu taj broj možete
promijeniti i tako izvođenje anima-
for (r = 5; r < 31; r = r + 5) cije prilagoditi brzini svog računa-
{ la. (Ako imamo sporo računalo,
ovu naredbu možemo izbaciti.)
delay(100);
cleardevice();
circle (x, 240, r);
}
}
getch();
closegraph();
return 0;
}
Ovdje vidimo tijek cijele anima- PRO - MIL
cije, iako će se tijekom anima-
cije istovremeno vidjeti samo
jedan krug.
Vanjskom petljom pomičemo
središte kruga u lijevu stranu,
a unutrašnjom petljom mijenja-
mo polumjer kruga.
144
C++ programiranje za apsolutne početnike
#include <cstdlib> Analiziranje ovog Petlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
#include <iostream> programa pomoći
će nam da u pot- odluke
using namespace std; punosti razumije-
mo način funkcio-
int main() niranja petlje unu-
{ tar petlje.
int x; Pri tome nismo
int r; ograničeni na to
cout << "Prije petlje." << endl; da možemo staviti
for (x = 0; x < 2; x = x + 1 ) jednu petlju unutar
{ petlje. Moguće je
unutar petlje staviti
cout << "Vanjska petlja. x = " << x << endl; petlju, a unutar te
for (r = 0; r < 3; r = r + 1) petlje još jednu
{ petlju i tako petlje
dodavati u skladu
cout << "Nutarnja petlja. r = " << r << endl; s ciljevima koje
} želimo postići.
}
cout << "Nakon petlje." << endl;
cout << endl;
system("PAUSE");
return 0;
}
Da bi rezultat rada programa Polja
bio bolje vidljiv, ovdje smo
naredbu cout koristili na na- Sažimanje Veliki pro- Objekti Obrada teksta
čin na koji je do sada nismo
koristili. U ovoj inačici sadrži
tri dijela.
cout << "Vanjska petlja. x = " << x << endl;
grami
Tekst unutar navodnika Sadržaj varijable x ispisu- Skok u novi koda
ispisuje se na zaslon raču- je se na zaslon računala. red.
nala.
PRO - MIL 145
Petlje
Niz petlji
#include <cstdlib> Osim što petlju možemo staviti unutar
#include <iostream> druge petlje, petlje možemo staviti
#include <winbgim.h> jednu iza druge.
using namespace std; U ovom slučaju prva petlja mali krug
pomiče od dolje prema gore, a zatim
int main() druga petlja mali krug širi tako da sve
{ zajedno tvori jednostavan prikaz vatro-
meta.
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 prog-
circle (320, x, 10);
} rama pomoći će
nam da lakše razu-
for (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
C++ programiranje za apsolutne početnikePetlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj
Dozvoljene i nedozvoljene kombinacije petlji
for (x = 30; x < 610; x = x + 60) Petlje se mogu na- program
{ laziti jedna unutar
druge.
for (r = 5; r < 31; r = r + 5)
{
circle (x, 240, r);
}
}
for (x = 465; x < 100; x = x - 1) Petlje se mogu na- odluke
{ laziti jedna iza dru-
ge
circle (320, x, 10);
} Polja
for (r = 10; r < 91; y = y + 1)
{
circle (320, x, r);
}
for (x = 465; x < 100; x = x - 1) U ovom slučaju Sažimanje Veliki pro- Objekti Obrada teksta
{ druga for naredba
nalazi se unutar grami
circle (320, x, 10); prve for naredbe.
for (r = 10; r < 91; y = y + 1) koda
} Ovakva ispreplete-
nost dviju for na-
{ redbi nije dozvolje-
circle (320, x, r); na.
} 147
PRO - MIL
Petlje
While petlja
#include <cstdlib> Do sada smo za svaki novi proračun
#include <iostream> programe morali iznova pokretati.
using namespace std; Daleko elegantnije bilo bi kad bi nas
program nakon proračuna pitao želi-
int main() mo li proračun ponoviti ili želimo pre-
{ kinuti izvođenje programa.
int broj;
int kvadrat; Ovaj program radi upravo tako. Une-
int odgovor; semo li nakon proračuna broj 1, pro-
odgovor = 1; račun ćemo moći ponoviti, a unese-
while (odgovor == 1) mo li 2, odnosno bilo koji broj različit
{ 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, budući da se dio pro-
return 0; grama može ponoviti više
} puta. Ova petlje nije realizi-
rana for naredbom, nego
while naredbom.
U čemu je razlika?
Naredba for pogodnija je za
točno određen broj ponav-
ljanja, a naredba while on-
da kad unaprijed ne može-
mo znati broj ponavljanja.
(U ovom slučaju mi ne mo-
žemo unaprijed znati koliko
puta će korisnik htjeti kvad-
rirati neki broj.)
148 PRO - MIL
C++ programiranje za apsolutne početnikePetlje Donošenje Grafika Varijable Naš prvi Uvod Sadržaj program
Ključna naredba u novoj inačici programa je while naredba. Logika uporabe
te naredbe slična je logici uporabe for naredbe i ako bismo se potrudili svaki
program realiziran for naredbom mogli bismo realizirati while naredbom i
svaki program realiziran while naredbom mogli bismo realizirati for nared-
bom.
Zašto imamo dvije naredbe ako rade isti posao?
Zato što se neke stvari mogu lakše realizirati for naredbom, a neke while
naredbom. Pogledajmo elemente while naredbe.
Prije naredbe while mo- Ovdje se unutar zagrada nalazi uvjet koji odluke
ramo varijabli koju će while naredba ispituje. Uvjeti se formiraju
while naredba koristiti po istoj logici kao i kod for naredbe. Polja
dati neku početnu vrije-
dnost. Ako je uvjet zadovoljen, izvršit će se na- Sažimanje Veliki pro- Objekti Obrada teksta
redbe unutar vitičastih zagrada, a nakon
a = 1; toga se računalo vraća na while naredbu i grami
ponovo ispituje je li uvjet zadovoljen.
while (a == 1) koda
Ako jest, ponovo se izvode naredbe unu-
{ tar vitičastih zagrada.
cin >> a; Ako nije, izvodi se prva naredba poslije
druge vitičaste zagrade.
}
U našem slučaju ispituje se je li sadržaj
Da bi se ponavljanje u varijable a jednak broju 1. Zato prije while
nekom trenutku preki- naredbe moramo u varijablu a staviti broj
nulo, unutar vitičastih jedan. Kad bi u varijabli a bio neki drugi
zagrada varijabli koju broj, računalo bi skočilo na prvi red nakon
while naredba ispituje druge vitičaste zagrade.
treba promijeniti vrijed-
nost. 149
PRO - MIL
Petlje Pogledajmo dijelove našeg programa.
#include <cstdlib> Uobičajeni početak programa i formi-
#include <iostream> ranje varijabli.
using namespace std;
int main() U varijablu odgovor stavljamo broj 1.
{ To moramo učiniti jer naredba while
ispituje je li u varijabli odgovor broj
int broj; 1.
int kvadrat;
int odgovor; Naredba while ispituje je li sadržaj
varijable odgovor jednak broju 1.
odgovor = 1; Ako jest, izvode se ove naredbe.
while (odgovor == 1)
{ U ovom djelu izra-
cout << "Unesite broj" << endl; čunava se kvadrat
cin >> broj; unesenog broja.
kvadrat = broj * broj;
cout << "Kvadrat unesenog broja je:" << endl; U ovom dijelu u
cout << kvadrat; varijablu odgovor
cout << endl; unosi se broj na
temelju kojeg će
cout << "Ponovo = unesite 1." << endl; while naredba od-
cout << "Kraj = unesite 2." << endl; lučiti treba li nared-
cin >> odgovor; be unutar vitičastih
} zagrada ponoviti.
cout << endl; Kraj programa. Izvodit će se kad
system("PAUSE"); while naredba ustanovi da sadržaj
return 0; varijable odgovor nije broj 1.
}
PRO - MIL
150