際際滷

際際滷Share a Scribd company logo
1
Uvod u C++ programiranje
C++ je objektno orjentirani programski jezik kojim su pisani mnogi dana邸nji programi koje
sreete u svakodnevnom radu na raunalu.
Bez puno okoli邸anja i prie o samom C++ idemo odmah uiti.
Compilers (kompajleri/prevoditelji)
Kod programiranja u C++ esto ete vidjeti engleske rijei kao naredbe. U tu svrhu nam
koriste compileri da bi te naredbe razumljive ovjeku pretvorile u izvedbeni kod.
U izboru imate mnogo compilera za izabrati. Neki od njih se plaaju (i to dosta novaca) pa
vam ja preporuujem besplatno razvojno okru転enje i compiler Dev-C++
Prvi projekt
Kada ste instalirali Dev-C++ pokrenite ga i idite na File -> New -> Project. Odaberite ''Empty
Project'' te ga imenujte kao ''Prvi_program'' (tako bez razmaka). Oznaite dolje desno C++
Project i ukljuite kvaicu na ''Make Default Language''. Kliknite na OK, zatim na Save .
Kada ste to napravili, idite na File -> New -> Source File i kliknite na Yes. S time ste dobili
file gdje ete pisati va邸 C++ kod.
Pa napravimo jednostavan ''Hello World'' program za probu.
Upi邸ite ovaj kod:
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
2
return 0;
}
Primjetite da svaka naredba u C++ mora zavr邸avati sa sa znakom ;
Sada taj kod treba iskompajlirati. To ete uiniti tako da pritisnete tipku F9 na tipkovnici.
Program e se kompajlirati i pokrenuti.
Program e se pojaviti i odmah nestati tako da neete uspjeti vidjeti ni邸ta. To mo転ete rije邸iti
tako da izmeu cout << ''Hello World'!'; i return 0; upi邸ete
system("pause");
ili da program pokrenete iz Command Prompta.
Ovako pomou system("pause"); zadr転avamo program otvorenim na ekranu.
Pa da objasnimo sada dijelove cijelog koda ovog jednostavnog programa.
#include <iostream>
Program zahtjeva od prevoditelja da u program ukljui biblioteku iostream koja je standardna
ulazno/izlazna biblioteka koja nam omoguuje ispis na ekranu.
NAPOMENA: #include nije naredba u C++ nego se radi o pretprocesorskoj naredbi
using namespace std;
Svi elementi standardne C++ biblioteke su deklarirani u ovome 邸to pi邸e namespace sa
imenom std.
int main ()
Svaki program mora imati ni manje ni vi邸e nego jednu main funkciju. Sav kod unutar main
zagrada se izvr邸ava. Int pretstavlja Integer (cijeli broj) 邸to govori da e program pri zavr邸etku
izvoenja programa vratiti cijeli broj.
cout << "Hello World";
Ovo ispisuje Hello World! na ekran. Cout pretstavlja standardni ispisni tok. Mogli ste taj kod
napisati i ovako cout << ''Hello World <<endl;
A mo転ete i jednostavno nastaviti reenicu u novi red tako da napi邸ete
cout << "Hello World!" <<endl <<"Ja sam programer";
3
Endl pretstavlja End Line (kraj linije) odnosno ispis u novi red. Tako bi svaka reenica koju
napi邸ete bila u redu ispod.
return 0;
Tom naredbom glavni program javlja operacijskom sustavu da je program uspje邸no zavr邸en.
Komentari
Kod je potrebno ponekad komentirati kako se nebi izgubili u kodu, ili jednostavno kao
potsjetnik na neega.
Ovako mo転ete komentirati kod bez da taj tekst utjee na izvr邸avanje programa.
/* Ovo je moj prvi program, sa ovim nainom komentiranja
mogu svoje komentare pisati u vi邸e redova, tako da tu mo転e
biti svega... */
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!"; // komentiram samo jednu liniju
system("pause");
return 0;
}
4
Varijable
U pro邸lom tutorijalu smo napisali kako ispisati reenicu na ekran. U ovom tutorijalu emo
govoriti o varijablama.
ta su varijable?
Varijabla je mjesto u memoriji rezervisano za pohranu podatka. Svaka varijabla mora biti
odreena simbolikim imenom i oznakom tipa podatka koji e u nju biti pohranjen.
Varijable postoje u svakom programskom jeziku. U varijablama pohranjujete nekakve
vrijedosti, brojeve, slova, i sve druge znakove.
Evo primjera kako reenicu iz pro邸log tutorijala upisati u varijablu i zatim pomo varijable
ispisati istu na ekran.
#include<iostream>
using namespace std;
main()
{
string recenica;
recenica = "Hello World!";
cout << recenica;
system("pause");
return 0;
}
Dakle sa
string recenica
deklariramo da e varijabla ''recenica'' biti string odnosno skup nekakvih znakova. String je
tip podatka. O tome vi邸e u iduem tutorijalu. Zapamtite samo da se svaka varijabla mora
deklarirati prije pridru転ivanja vrijedosti.
recenica = ''Hello World'';
Sa ovime varijabli ''recenica'' pridru転ujemo vrijednost ''Hello World!''
cout << recenica;
Sa ovim ispisujemo varijablu. Primjetite da nema navodnika. Ako 転elite ne邸to pored toga
napisati 邸to nije sadr転ano u varijabli mo転ete to napisati ovako.
cout << recenica << " What's up?";
Dakle prvo ide varijabla ''recenica'' bez navodnika, zatim opet stavljamo strelice za ispis i u
navodnike pi邸emo nastavak reenice. Primjetite razmak izmeu navodnika i slova W u drugoj
5
reenici. To smo napravili tako da rijei ne budu spojene jer e se ispisati u isti red. Prisjetite
se da ako 転elite u novi red ispisati ne邸to mo転ete to napraviti sa ''<<endl'' Takoer u novi red
mo転ete ii ako napi邸ete negdje u navodnicima n, npr.
cout << recenica << "n What's up?";
Idemo sada napraviti mali program koji e izraunavati dva broja.
#include<iostream>
using namespace std;
main()
{
int a, b, rezultat;
a = 7;
b = 12;
rezultat = a + b;
cout << "Zbir ta dva broja je " << rezultat;
system("pause");
return 0;
}
Kao 邸to string oznaava niz znakova, tako int oznaava integer odnosno cijeli broj. Znai sve
邸to e biti pridodano varijablama a, b i rezultat e biti cijeli broj (nikakvi decimalni brojevi,
slova, drugi znakovi nego samo cijeli broj).
Primjetite da smo ovdje protiv nestajanja prozora koristili drugu varijablu da ne bi do邸lo do
konflikta.
Deklarirati varijable mo転ete ovako kao u primjeru a mo転ete i svaku posebno na ovaj nain:
int a;
int b;
int rezultat;
Nakon deklariranja varijabli slijedi naravno pridodavanje vrijednosti tim varijablama.
Pridodajemo varijabli a broj 7, varijabli b broj 12 a varijabla rezultat e pohraniti onaj zbir
koji daju varijable a i b. U ovom sluaju 7 + 12 = 19. Znai varijabli "rezultat" se pridru転uje
vrijednost 19.
Varijable mo転ete takoer deklarirati i pridru転iti im vrijednost odjednom. Dakle ovako:
int a = 7;
int b = 12;
int rezultat = a + b;
6
Probajte sada napisati ovakav program
#include<iostream>
using namespace std;
main()
{
int a, b, rezultat;
cout << "Unesite prvi broj: ";
cin >> a;
cout << "Unesite drugi broj: ";
cin >> b;
rezultat = a + b;
cout << "Zbir ta dva broja je " << rezultat;
system("pause");
return 0;
}
Dakle, ovo je skoro isto kao i prethodni primjer samo 邸to ovdje imamo
cin >> a;
Program oekuje da ete napisati neki broj i kada vi napi邸ete taj broj on e ga spremiti u
varijablu "a". Isto tako i dvije linije poslje za varijablu "b".
Signed i Unsigned
Ovo koristimo za varijable sa predznakom i bez predznaka.
Ako stavite
unsigned int a;
onda varijabli "a" neete moi pridru転iti broj sa predznakom (npr. -12) a ako umjesto
unsigned napi邸ete signed ili ostavite bez toga onda ete moi upisati predznak.
Doseg varijabli
Varijable mogu biti globalne ili lokalne. Globalne varijable su one varijable koje su
deklarirane u glavnom tijelu source koda, izvan svih funkcija dok su lokalne varijable one
varijable koje su deklarirane u funkciji ili bloku.
Vjerujem da e vam biti jasnije ako vam to objasnim primjerom.
Primjer lokalnih varijabla
7
#include<iostream>
using namespace std;
main()
{
int a, b, rezultat;
a = 2;
b = 5;
rezultat = a + b;
cout << rezultat;
system("pause");
return 0;
}
Primjer globalnih varijabli
#include<iostream>
using namespace std;
int a, b, rezultat;
main()
{ a = 2;
b = 5;
rezultat = a + b;
cout << rezultat;
system("pause");
return 0;
}
Globalnim varijablama se mo転e pristupiti bilo gdje u kodu, ak i u funkcijama dok je
lokalnim varijablama mogue pristupiti samo unutar vitiastih zagrada { i }
NAPOMENA: sve varijable moraju poeti sa slovom ili donjom crticom _ . Ne smiju poeti
brojevima niti iim drugim. Osim toga, sve varijable u svom nazivu smiju imati samo slova,
brojeve (od drugog mjesta na dalje), i crtice (_), a ne smiju sadr転avati razmake, navodnike i
sline simbole.
Takoer bitno je to da vam se varijable ne smiju zvati sljedeim imenima:
asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do,
double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if,
inline, int, long, mutable, namespace, new, operator, private, protected, public, register,
reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this,
throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile,
8
wchar_t, while, and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq
Jer su to kljune rijei i operatori jezika C++.
Jo邸 jedna napomena: C++ je case sensitive jezik, odnosno osjetljiv na velika i mala slova.
Tako da recenica i RecEnica nije ista varijabla.
Kao 邸to smo ve rekli, u sljedeem tutorijalu emo se pozabaviti tipovima podataka (to vam je
ono int, char, string i ostali... )
Tipovi podataka
Ovaj tutorijal se nadovezuje na varijable, jer kako smo u pro邸lom tutorijalu napisali da int, string i
char oznaavaju tip podakta koji e biti pridru転en varijabli. Pa emo sada detaljnije objasniti te i
ostele tipove podataka.
Kada programiramo, spremamo varijable u memoriju kompjutera, ali kompjuter mora znati 邸to emo
(kakav tip podatka) spremiti u varijablu. Jedan jednostavan broj nee zauzeti istu koliinu memorije
kao jedan veliki tekst ili veliki broj, i nee biti interpretirano na isti nain.
Memorija kompjutera je organizirana po bajtovima (bytes). Jedan bajt je minimalna koliina
memorije koju mo転emo sauvati u C++. Jedan bajt mo転e pohraniti relativno mali broj podataka.
Jedno slovo ili jedan cijeli broj od 0 do 255.
Osim toga, C++ mo転e upravljati mnogo kompleksnijim tipovima podataka koje dolaze grupiranjem
bajtova. Kao 邸to su dugaki brojevi (long numbers) i slino.
Evo jedne tablice sa osnovnim tj. bitnim tipovima podataka.
9
Zaboravio sam napisati, Floating Point Numbers su vam brojevi sa pominim zarezom.
Konstante (nepromjenjive)
Varijable su promjenjive dok su konstante su izrazi sa fiksnim, nepromjenjivim vrijednostima.
Morate inicirati konstantu kada ju napravite, i ne mo転ete joj prirdru転iti novu vrijednost
kasnije. Poslije kada je konstanta inicirana njezina vrijednost je nepromjenjiva.
Const float pi = 3.14;
Literal Constants (konkretne konstante)
C++ ima dva tipa konstanti: konkretne i slimboline (literal i symbolic)
Literal konstanta je vrijednost upisana direktno u program kada god je to potrebno. Npr.
int godine = 24;
godine je varijabla tipa integer, a 24 je literal konstanta. Ne mo転ete pridru転iti vrijednost na 24,
i ta vrijednost ne mo転e biti promijenjena.
Symbolic constants (simboline konstante)
Simbolina konstanta je konstanta koja je pretstavljena po imenu, ba邸 kao i varijabla. Ali
nakon 邸to je konstanta inicirana, njezina vrijednost ne mo転e biti promjenjena. Ako imate
jednu integer varijablu imenovanu "studenti" i drugu imenovanu "ucionica", mo転ete
procijeniti koliko studenata imate, i broj uionica, te ako znate da je 15 studenata po razredu.
10
sudenti = ucionice * 15;
U ovom primjeru, broj 15 je Literal konstanta. Kod bi bio puno jednostavniji za itanje i
jednostavniji za odr転avati ako biste tu vrijednost zamijenili simbolinom konstantom.
studenti = ucionice * ucenika_po_ucionici;
Ako kasnije odluite promijeniti broj studenata po ucionice, mozete to uciniti tako da
definirate konstantu ucenika_po_ucionici bez potrebe za izmjenama u svakom dijelu koda
gdje ste koristili tu vrijednost.
Definiranje konstanti sa #define
Da biste definirali konstantu na sa staromodnim, i lo邸im nainom unest ete
#define ucenika_po_razredu 15;
Primjetite da ucenika_po_ucionici nema konkretni tip (int, char itd.). Svaki puta kad
preprocesor vidi rije ucenika_po_razredu upisat e broj 15 u tekst.
Zbog toga 邸to se preprocesor pokree prije kompajlera, kompjuter nikad ne vidi va邸u
konstantu, ono vidi broj 15.
Definiranje konstanti sa const
Iako #define radi, postoji bolji, ukusniji nain definiranja konstanti u C++
const unsigned int ucenika_por_ucionici = 15;
U ovom primjeru se isto deklarira simbolina konstanta imenovana ucenika_po_ucionici, ali
ovaj puta ucenika_po_ucionici je napisano kao unsigned int (bez predznaka, cijeli broj)
S ovime imate vi邸e za tipkati ali nudi nekoliko prednosti.Najvea razlika je u tome 邸to ova
konstanta ima tip i kompajler mo転e prisliti da to bude kori邸teno po svom tipu.
Aritmetiki operatori
Operatori su simboli koji predstavljaju (zamjenjuju) odreene funkcije.
Operator je simbol koji predstavlja specifinu akciju. Ve smo kod primjera zbrajanja koristili
operator "+". Osim operatora + imamo jo邸 nekoliko aritmetikih operatora.
Evo tablice za pregled operatora.
11
% operator se naziva jo邸 i modulus operator .
Aritmetiki operatori jednako dobro rade sa negativnim brojevima kao i sa pozitivnim, sa
iznimkom modulus operatora, rade sa cijelim brojevima jednako dobro kao i sa brojevima sa
pominim zarezom.
Neki programski jezici imaju eksponent operator, 邸to nije sluaj kod C++. Umjesto toga C++
ima ugraenu funkciju pow koja je definirana u standardnoj biblioteci cmath
pow funkcija ima dva arumenta. Prvi argument je baza (glavni broj), a drugi broj je
eksponent.
Pogledajmo primjer:
#include <iostream>
#include <cmath> // ukljucili smo biblioteku cmath
using namespace std;
int main()
{
double baza, eksponent, rezultat;
cout << "Unesite broj ";
cin >> baza;
cout << "Unesite eksponent ";
cin >> eksponent;
rezultat = pow(baza, eksponent);
cout << "Rezultat = " << rezultat;
system("pause");
return 0;
}
Prvo novo 邸to morate primjetiti je to da smo ukljuili biblioteku cmath. Zatim smo deklarirali
broj, eksponent i rezultat kao double tip. (Zbog ogromnih brojeva ako npr. upi邸ete 10 na 10-
u). Zatim smo im sa cin >> pridru転ili vrijednosti, te su te vrijednosti zapravo parametri u
funkciji pow .
Odnosni (relacijski) operatori
12
U programskom jeziku C++ kao i u mnogim drugim programskim jezicima postoje odnosni
operatori. Takvi operatori se npr. koriste ako 転elite napraviti program koji e iz baze podataka
odrediti osobe sa vi邸e od 30 godina i slino.
Evo tih odnosnih operatora:
Odnosne naredbe
Kao i aritmetiki operatori, odnosni operatori su binarni tj. usporeuju dva operanda. Naredba
sa dva operanda i odnosnim operatorom zove se odnosna naredba (eng. relational
expression.)
Rezultat odnosne naredbe je Boolean vrijednost odnosno istinu ili la転 (true ili false). S ovom
tablicom mo転ete vidjeti kako to funkcionira
U ovoj tablici se koriste konkretne ( literal ) vrijednosti koje ne mogu biti promijenjene. 4 je
konkretna vrijednost (konstanta), i ona se ne mo転e mijenjati (moglo bi se mijenjati da je
umjesto konstanta koristimo varijable)
Isprobajmo sada ovaj kod koji umjesto konstanti koristi varijable
#include <iostream>
using namespace std;
int main()
{
int a = 4, b = 5;
13
cout << (a > b) << endl;
cout << (a >= b) << endl;
cout << (a == b) << endl;
cout << (a <= b) << endl;
cout << (a < b) << endl;
system("pause");
return 0;
}
Ovaj program e ispisati:
0
0
0
1
1
S time da 0 predstalja la転 (false) a 1 istinu (true).
Logiki operatori
Za rad s logikim podacima, postoje logike funkcije. Logike se funkcije zapisuju logikim
operatorima.
Naredba IF
Naredbu IF koristimo onda kada 転elimo izvr邸iti neki kod samo ako je vrijednost nekog
odnosnog izraza istinita.
Evo primjera:
#include<iostream>
using namespace std;
main()
{
string password;
cout << "Unesite password: ";
cin >> password;
14
if(password=="G2105Z") {
cout << "Password tocan!"; }
system("pause");
return 0;
}
Definirali smo string password, sa cin naredbom upisali ono 邸to korisnik upi邸e u varijablu
password, zatim slijedi provjera sa IF naredbom.
Sintaksa IF naredbe je zapravo:
if(uvjet) { kod koji se izv邸rava }
Naravno nije IF naredba ograniena samo na provjeravanje tonosti. Mo転ete koristiti sve
odnosne operatore koje smo objasnili u pro邸lom tutorijalu. Npr:
#include <iostream>
using namespace std;
int main()
{
int godine;
cout << "Koliko imate godina? ";
cin >> godine;
if (godine < 18 ) {
cout << "Maloljetni ste!"; }
system("pause");
return 0;
}
U svrhu uenja isprobajte sve odnosne operatore. Npr. probajte napisati mali program koji e
provjeriti da li je broj djeljiv sa 2 (bez ostatka).
U sljedeem tutorijalu emo uiti o IF...ELSE naredbi koja vam pru転a mogunost da uz IF
naredbu imate i naredbu koja e izvr邸iti neki kod ukoliko uvjet nije zadovoljen
If...Else naredba
If...Else naredba je pro邸irenje If naredbe. Kao 邸to smo ve rekli u pro邸lim tutorijalu, If
naredba omoguuje izvr邸avanje nekog koda ukoliko je uvjet zadovoljen, a ukoliko nije nee
se izvr邸iti ni邸ta.
15
Ako bi smo htjeli napraviti da ukoliko uvjet nije zadovoljen da se izvr邸i neki drugi kod onda
koristimo If...Else naredbu.
Evo primjera kako koristiti If...Else naredbu (koristit emo primjere iz pro邸log tutorijala)
#include<iostream>
using namespace std;
main()
{
string password;
cout << "Unesite password: ";
cin >> password;
if(password=="G2105Z") {
cout << "Password tocan!"; }
else {
cout << "Password netcan!"; }
system("pause");
return 0;
}
Kao sto vidite kod je isti kao i za if naredbe, else pa vitiaste zagrade i unutra kod za
izvr邸avanje.
Evo i onog drugog primjera:
#include <iostream>
using namespace std;
int main()
{
int godine;
cout << "Koliko imate godina? ";
cin >> godine;
if (godine < 18 ) {
cout << "Maloljetni ste!"; }
else {
cout << "Punoljetni ste!" }
system("pause");
return 0;
}
If...Else If...Else naredba
U pro邸lom tutorijalu smo govorili o IF...Else naredbi. Ovdje emo pro邸iriti tu naredbu tako da
mo転emo ispitati vi邸e uvjeta. Za to korisimo If...Else-If...Else narebu.
Evo primjera:
16
#include <iostream>
using namespace std;
int main()
{
int godine;
cout << "Koliko imate godina? ";
cin >> godine;
if (godine <= 17 ) {
cout << "Maloljetni ste!"; }
else if (godine>=18 and godine<=39) {
cout << "Punoljetni ste"; }
else if (godine>39 and godine<70) {
cout << "Najljepse godine"; }
else {
cout << "Stari ste"; }
system("pause");
return 0;
}
Dakle sa ovom narebom mo転emo ispitati vi邸e uvjeta. U ovom primjeru dosta koristimo
odnosne operatore, pa ako niste nauite ih (4 tutorijala ispred ovoga).
Sve je isto kao i naredba if...else samo 邸to ovdje mo転ete vi邸e puta staviti naredbu else if kako
biste ispitali vi邸e uvjeta.
else if mo転ete postaviti koliko god hoete puta, ali ako imate jako puno moguih uvjeta onda
vam preporuam da pogledate sljedei tutorijal u kojem emo vam objasniti kako se koristi
switch naredba za ispitivanje moguih uvjeta.
Naredba while
Oba petlja nam sluzi za definiranje ciklusa sa nepoznatim brojem ponavljanja.
Format naredbe je:
Sintaxa:
while (uvjet)
{
naredbe;
}
npr:
17
broj=1;
while (broj<5)
{
broj=broj+1; // proizvoljna naredba
}
U ovom primjeru broj je manji od 5 i ova petlja ce se izvr邸iti, tako da e se poveati za 1.
Slijedei put e broj biti jednako 2 pa ce se petlja opet izvrsiti. Da bi se ,onda kada broj dobije
vrijednost 5, petlja
preskoila tj. ne bi se izvr邸ila i izvr邸io bi se ostatak koda, jer se nije ispunio uvjet koji glasi da
broj mora da bude manji od 5.
#include<iostream.h>
int main ()
{
int broj=1;
while (broj<5)
{
broj=broj+1; //ovo se moze napisati i broj+=1;
}
cout<<"Ovo je broj: "<<broj<<endl;
return 0;
}
Rezultat ovog programa je:
Ovo je broj: 5
Naredba For
Naredba for
Kod while petlje smo imali da inicijlizaciju, uvjet i promjenu vrijednosti imamo na vi邸e
razlicitih mjesta, dok je kod for petlje to sve sadr転ano u jednom redu koda tj. izmedu malih
zagrada.
Format naredbe:
for (inicijalizacija; uvjet; promjena vrijednosti) naredba;.
ili kori邸tenjem blokova:
for (inicijalizacija; uvjet; promjena vrijednosti) {
naredbe;
}
Uvjet mora biti logicki izraz, dok inicijalizacija i promjena vrijednosti mogu biti bilo kakvi
izrazi. Petlja ce se izvr邸avati dok je uvjet tocan.
18
Npr:
//Brojac unatrag
#include <iostream.h>
int main ()
{
for (int i=10; i>0; i--) {
cout << i << ", ";
}
cout << "PALI!";
return 0;
}
Rezultat ovog programa:
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, PALI!
Ukoliko dodamo na kraju ovog dijela koda <<endl;
cout << i << ", "<<endl;
to ce znaciti da poslije svakog ispisa kursor 邸alje u novi red.
Nakon ovog rezultat ce biti:
10,
9,
8,
7,
6,
5,
4,
3,
2,
1,
PALI!
Evo na ovoj slici se jasno ilustrira format for petlje:
Naredba switch
Ova naredba sluzi za provjeravanje vi邸e uvjeta od jednom i
19
izvr邸avanja onoliko radnji koliko je uslova zadovoljeno odnosno tano.
Ova naredba je korisna ukoliko trebamo provjeriti vi邸e "stvari" a da ne petljamo
sa if i else if petljom :).
Format ove naredbe je:
switch (varijabla){
case mogucnost1:
naredba;
break;
case mogucnost2:
naredba;
break;
...
}
Pa da svaki red koda objasnimo pojedinacno:
switch (varijabla){
Ovaj dio prijavljuje varijablu (promjenljivu) iju emo tanost ispitivati.
case mogucnost1:
Ovaj dio provjerava da li je varijabla iz prvog reda jednaka nizu znakova (u ovom slucaju)
mogucnost1.
Obavezno : (dvotoka) na kraju.
naredba;
Ovdje upisujemo naredbu ili vi邸e njih koje e se izvr邸avati ukoliko je zadovoljen uvjet.
break;
Ovom rijecju se zatvara niz naredbi i daje se mogucnost novom uslovu.
case mogucnost2:
20
naredba;
break;
Ovo je samo primjer kako treba postaviti drugi uvjet, tako emo dodavati i ostale.
Ukoliko 転elimo da postavimo neki defaultni uvjet tj. naredbe koje e se izvr邸iti ukoliko
ni jedan uvjet nije zadovoljen onda emo dodati slijedee:
default:
naredbe;
Ovdje na kraju ne ide break; zato 邸to se podrazumjeva da e default kod biti na kraju tj. zadnji
uvjet i da nee
biti vi邸e uvjeta.
Ovo sve malo zvui zamr邸eno al na konkretnom primjeru e to drukije (jednostavnije)
izgledati.
#include<iostream.h>
int main()
{
int broj=0;
switch (broj){
//provjerava da li je broj=1
case 1:
//ako p邸ostoji ispisuje 'Broj je 1!!!'
cout<<"Broj je 1!!!"<<endl;
break;
case 2:
cout<<"Broj je 2!!!"<<endl;
break;
//Ukoliko broj nije jednak ni 1 niti 2 onda ispisuje
default:
cout<<"Broj je 0 (nula) !!!"<<endl;
}
system("pause");
return 0;
}
Evo sad za one koji misle da je lakse sa if petljama ispetljati vise uvjeta:
21
switch (x) {
case 1:
cout << "x je 1";
break;
case 2:
cout << "x je 2";
break;
default:
cout << "x je nepoznato";
}
if (x == 1) {
cout << "x je 1";
}
else if (x == 2) {
cout << "x je 2";
}
else {
cout << "x je nepoznato";
}
Vidimo jednu if i jednu else if petlju zamislite da moramo ispitati 50 vrijednosti tek onda bi
bilo petljanja.
Zato toplo preporuujem naredbu switch kod ispitivanja vi邸e razlicitih vrijednosti. Dok kod
jednostavnih tu je naravno
if i if else. ;)
Ukoliko uoite neku gre邸ku ili vam pak ne邸to nije jasno javite se na forum.
Jednodimenzionalni nizovni tipovi
Dosada邸nji primjeri koje smo radili mogli su da obrauju samo jednu vrijednost,
kombiniranje vi邸e vrijednosti jako komplicira rje邸enje.
Ako imamo 5 razliitih varijabli:
a,b,c,d,e i vrijednost svake se unosi sa tipkovnice, to bi izgledalo ovako
cout<<"Unesi a: ";
cin>>a;
cout<<"Unesi b: ";
cin>>b;
cout<<"Unesi c: ";
cin>>c;
22
cout<<"Unesi d: ";
cin>>d;
cout<<"Unesi e: ";
cin>>e;
To predstavlja problem ako moramo unijeti 50 i vi邸e vrijednosti.
Zato koristimo jednodimenzionalni nizovni tip. Pa e ovaj gore primjer izgledati ovako:
int niz[20],i;
for (i=0;i<=4;i++)
{
cout<<"Unesi vrijednost "<<i+1<<". varijable: ";
cin>>niz[i];
}
Pa da objasnimo 邸to radi koji dio koda:
int niz[20],i;
u ovom dijelu smo deklarirali varijablu niz i
u srednje zagrade smo stavili koliko maximalno mjesta mo転e zauzeti u memoriji (u nasem
primjeru 20)
for (i=0;i<=4;i++)
Pomou for petlje poveavamo vrijednost varijable "i" svaki put za jedan vi邸e. Poveavanje
e ii
sve dok vrijednost "i" ne dostigne 4. Za邸to 4? Zato 邸to smo htjeli da unosimo 5 varijabli pa
emo
imati 0,1,2,3,4 to je ukupno 5 brojeva. Mogli bismo staviti i=1 pa bi onda postavili i<=5 ali se
u praksi pogotovo kod c++ poetna vrijednost brojaa postavlja na 0 dok je kod Pascala od 1
itd.
cout<<"Unesi vrijednost "<<i+1<<". varijable: ";
Kako se varijabla "i" bude poveavala tako e i ispis ovog koda biti drugaiji.
Npr: za i=0 ispis e biti "Unesi vrijednost 1. varijable: ".
sad vidimo opet da pi邸e 1., sigurno se pitate za邸to nije 0.
Ovako...Postavili smo i+1 zato 邸to e na poetku "i" biti 0 i plus ono jedan=1 i zato je 1. ;)
cin>>niz[i];
23
Jednostavna naredba kojom unosimo niz brojeva.
Dvodimenzionalni nizovni tip
DVODIMENZIONALNI NIZOVI - MATRICE
Najefikasniji nain predstvljanja podataka je u obliku tabela ili matrica.
Ovi zadaci u programu se predstavljaju kao dvodimenzionalni niz.
Matricu tj. tabelu mo転emo predstaviti na slijedei nain:
SLIKA:
Sa indeksom j broje se elementi u redu, a sa i u koloni.
i=1,n - i ide od 1 do n
j=1,m - j ide od 1 do m
Elementi kod kojih su indeksi jednaki nazivamo glavnu dijagonalu,
nasuprot glavne dijagonale nalazi se sporedna dijagonala.
n=3
m=3
i=1
j=2
a11 - a12 - a13
a21 - a22 - a23
a31 - a32 - a33
Dvodimenzionalni niz ili matrice deklarisemo u vidu niza
24
npr:
int niz[20], i, j;
kod ispisa koristimo niz[i][j];

More Related Content

Uvod_u_C++.pdf

  • 1. 1 Uvod u C++ programiranje C++ je objektno orjentirani programski jezik kojim su pisani mnogi dana邸nji programi koje sreete u svakodnevnom radu na raunalu. Bez puno okoli邸anja i prie o samom C++ idemo odmah uiti. Compilers (kompajleri/prevoditelji) Kod programiranja u C++ esto ete vidjeti engleske rijei kao naredbe. U tu svrhu nam koriste compileri da bi te naredbe razumljive ovjeku pretvorile u izvedbeni kod. U izboru imate mnogo compilera za izabrati. Neki od njih se plaaju (i to dosta novaca) pa vam ja preporuujem besplatno razvojno okru転enje i compiler Dev-C++ Prvi projekt Kada ste instalirali Dev-C++ pokrenite ga i idite na File -> New -> Project. Odaberite ''Empty Project'' te ga imenujte kao ''Prvi_program'' (tako bez razmaka). Oznaite dolje desno C++ Project i ukljuite kvaicu na ''Make Default Language''. Kliknite na OK, zatim na Save . Kada ste to napravili, idite na File -> New -> Source File i kliknite na Yes. S time ste dobili file gdje ete pisati va邸 C++ kod. Pa napravimo jednostavan ''Hello World'' program za probu. Upi邸ite ovaj kod: #include <iostream> using namespace std; int main () { cout << "Hello World!";
  • 2. 2 return 0; } Primjetite da svaka naredba u C++ mora zavr邸avati sa sa znakom ; Sada taj kod treba iskompajlirati. To ete uiniti tako da pritisnete tipku F9 na tipkovnici. Program e se kompajlirati i pokrenuti. Program e se pojaviti i odmah nestati tako da neete uspjeti vidjeti ni邸ta. To mo転ete rije邸iti tako da izmeu cout << ''Hello World'!'; i return 0; upi邸ete system("pause"); ili da program pokrenete iz Command Prompta. Ovako pomou system("pause"); zadr転avamo program otvorenim na ekranu. Pa da objasnimo sada dijelove cijelog koda ovog jednostavnog programa. #include <iostream> Program zahtjeva od prevoditelja da u program ukljui biblioteku iostream koja je standardna ulazno/izlazna biblioteka koja nam omoguuje ispis na ekranu. NAPOMENA: #include nije naredba u C++ nego se radi o pretprocesorskoj naredbi using namespace std; Svi elementi standardne C++ biblioteke su deklarirani u ovome 邸to pi邸e namespace sa imenom std. int main () Svaki program mora imati ni manje ni vi邸e nego jednu main funkciju. Sav kod unutar main zagrada se izvr邸ava. Int pretstavlja Integer (cijeli broj) 邸to govori da e program pri zavr邸etku izvoenja programa vratiti cijeli broj. cout << "Hello World"; Ovo ispisuje Hello World! na ekran. Cout pretstavlja standardni ispisni tok. Mogli ste taj kod napisati i ovako cout << ''Hello World <<endl; A mo転ete i jednostavno nastaviti reenicu u novi red tako da napi邸ete cout << "Hello World!" <<endl <<"Ja sam programer";
  • 3. 3 Endl pretstavlja End Line (kraj linije) odnosno ispis u novi red. Tako bi svaka reenica koju napi邸ete bila u redu ispod. return 0; Tom naredbom glavni program javlja operacijskom sustavu da je program uspje邸no zavr邸en. Komentari Kod je potrebno ponekad komentirati kako se nebi izgubili u kodu, ili jednostavno kao potsjetnik na neega. Ovako mo転ete komentirati kod bez da taj tekst utjee na izvr邸avanje programa. /* Ovo je moj prvi program, sa ovim nainom komentiranja mogu svoje komentare pisati u vi邸e redova, tako da tu mo転e biti svega... */ #include <iostream> using namespace std; int main () { cout << "Hello World!"; // komentiram samo jednu liniju system("pause"); return 0; }
  • 4. 4 Varijable U pro邸lom tutorijalu smo napisali kako ispisati reenicu na ekran. U ovom tutorijalu emo govoriti o varijablama. ta su varijable? Varijabla je mjesto u memoriji rezervisano za pohranu podatka. Svaka varijabla mora biti odreena simbolikim imenom i oznakom tipa podatka koji e u nju biti pohranjen. Varijable postoje u svakom programskom jeziku. U varijablama pohranjujete nekakve vrijedosti, brojeve, slova, i sve druge znakove. Evo primjera kako reenicu iz pro邸log tutorijala upisati u varijablu i zatim pomo varijable ispisati istu na ekran. #include<iostream> using namespace std; main() { string recenica; recenica = "Hello World!"; cout << recenica; system("pause"); return 0; } Dakle sa string recenica deklariramo da e varijabla ''recenica'' biti string odnosno skup nekakvih znakova. String je tip podatka. O tome vi邸e u iduem tutorijalu. Zapamtite samo da se svaka varijabla mora deklarirati prije pridru転ivanja vrijedosti. recenica = ''Hello World''; Sa ovime varijabli ''recenica'' pridru転ujemo vrijednost ''Hello World!'' cout << recenica; Sa ovim ispisujemo varijablu. Primjetite da nema navodnika. Ako 転elite ne邸to pored toga napisati 邸to nije sadr転ano u varijabli mo転ete to napisati ovako. cout << recenica << " What's up?"; Dakle prvo ide varijabla ''recenica'' bez navodnika, zatim opet stavljamo strelice za ispis i u navodnike pi邸emo nastavak reenice. Primjetite razmak izmeu navodnika i slova W u drugoj
  • 5. 5 reenici. To smo napravili tako da rijei ne budu spojene jer e se ispisati u isti red. Prisjetite se da ako 転elite u novi red ispisati ne邸to mo転ete to napraviti sa ''<<endl'' Takoer u novi red mo転ete ii ako napi邸ete negdje u navodnicima n, npr. cout << recenica << "n What's up?"; Idemo sada napraviti mali program koji e izraunavati dva broja. #include<iostream> using namespace std; main() { int a, b, rezultat; a = 7; b = 12; rezultat = a + b; cout << "Zbir ta dva broja je " << rezultat; system("pause"); return 0; } Kao 邸to string oznaava niz znakova, tako int oznaava integer odnosno cijeli broj. Znai sve 邸to e biti pridodano varijablama a, b i rezultat e biti cijeli broj (nikakvi decimalni brojevi, slova, drugi znakovi nego samo cijeli broj). Primjetite da smo ovdje protiv nestajanja prozora koristili drugu varijablu da ne bi do邸lo do konflikta. Deklarirati varijable mo転ete ovako kao u primjeru a mo転ete i svaku posebno na ovaj nain: int a; int b; int rezultat; Nakon deklariranja varijabli slijedi naravno pridodavanje vrijednosti tim varijablama. Pridodajemo varijabli a broj 7, varijabli b broj 12 a varijabla rezultat e pohraniti onaj zbir koji daju varijable a i b. U ovom sluaju 7 + 12 = 19. Znai varijabli "rezultat" se pridru転uje vrijednost 19. Varijable mo転ete takoer deklarirati i pridru転iti im vrijednost odjednom. Dakle ovako: int a = 7; int b = 12; int rezultat = a + b;
  • 6. 6 Probajte sada napisati ovakav program #include<iostream> using namespace std; main() { int a, b, rezultat; cout << "Unesite prvi broj: "; cin >> a; cout << "Unesite drugi broj: "; cin >> b; rezultat = a + b; cout << "Zbir ta dva broja je " << rezultat; system("pause"); return 0; } Dakle, ovo je skoro isto kao i prethodni primjer samo 邸to ovdje imamo cin >> a; Program oekuje da ete napisati neki broj i kada vi napi邸ete taj broj on e ga spremiti u varijablu "a". Isto tako i dvije linije poslje za varijablu "b". Signed i Unsigned Ovo koristimo za varijable sa predznakom i bez predznaka. Ako stavite unsigned int a; onda varijabli "a" neete moi pridru転iti broj sa predznakom (npr. -12) a ako umjesto unsigned napi邸ete signed ili ostavite bez toga onda ete moi upisati predznak. Doseg varijabli Varijable mogu biti globalne ili lokalne. Globalne varijable su one varijable koje su deklarirane u glavnom tijelu source koda, izvan svih funkcija dok su lokalne varijable one varijable koje su deklarirane u funkciji ili bloku. Vjerujem da e vam biti jasnije ako vam to objasnim primjerom. Primjer lokalnih varijabla
  • 7. 7 #include<iostream> using namespace std; main() { int a, b, rezultat; a = 2; b = 5; rezultat = a + b; cout << rezultat; system("pause"); return 0; } Primjer globalnih varijabli #include<iostream> using namespace std; int a, b, rezultat; main() { a = 2; b = 5; rezultat = a + b; cout << rezultat; system("pause"); return 0; } Globalnim varijablama se mo転e pristupiti bilo gdje u kodu, ak i u funkcijama dok je lokalnim varijablama mogue pristupiti samo unutar vitiastih zagrada { i } NAPOMENA: sve varijable moraju poeti sa slovom ili donjom crticom _ . Ne smiju poeti brojevima niti iim drugim. Osim toga, sve varijable u svom nazivu smiju imati samo slova, brojeve (od drugog mjesta na dalje), i crtice (_), a ne smiju sadr転avati razmake, navodnike i sline simbole. Takoer bitno je to da vam se varijable ne smiju zvati sljedeim imenima: asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile,
  • 8. 8 wchar_t, while, and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq Jer su to kljune rijei i operatori jezika C++. Jo邸 jedna napomena: C++ je case sensitive jezik, odnosno osjetljiv na velika i mala slova. Tako da recenica i RecEnica nije ista varijabla. Kao 邸to smo ve rekli, u sljedeem tutorijalu emo se pozabaviti tipovima podataka (to vam je ono int, char, string i ostali... ) Tipovi podataka Ovaj tutorijal se nadovezuje na varijable, jer kako smo u pro邸lom tutorijalu napisali da int, string i char oznaavaju tip podakta koji e biti pridru転en varijabli. Pa emo sada detaljnije objasniti te i ostele tipove podataka. Kada programiramo, spremamo varijable u memoriju kompjutera, ali kompjuter mora znati 邸to emo (kakav tip podatka) spremiti u varijablu. Jedan jednostavan broj nee zauzeti istu koliinu memorije kao jedan veliki tekst ili veliki broj, i nee biti interpretirano na isti nain. Memorija kompjutera je organizirana po bajtovima (bytes). Jedan bajt je minimalna koliina memorije koju mo転emo sauvati u C++. Jedan bajt mo転e pohraniti relativno mali broj podataka. Jedno slovo ili jedan cijeli broj od 0 do 255. Osim toga, C++ mo転e upravljati mnogo kompleksnijim tipovima podataka koje dolaze grupiranjem bajtova. Kao 邸to su dugaki brojevi (long numbers) i slino. Evo jedne tablice sa osnovnim tj. bitnim tipovima podataka.
  • 9. 9 Zaboravio sam napisati, Floating Point Numbers su vam brojevi sa pominim zarezom. Konstante (nepromjenjive) Varijable su promjenjive dok su konstante su izrazi sa fiksnim, nepromjenjivim vrijednostima. Morate inicirati konstantu kada ju napravite, i ne mo転ete joj prirdru転iti novu vrijednost kasnije. Poslije kada je konstanta inicirana njezina vrijednost je nepromjenjiva. Const float pi = 3.14; Literal Constants (konkretne konstante) C++ ima dva tipa konstanti: konkretne i slimboline (literal i symbolic) Literal konstanta je vrijednost upisana direktno u program kada god je to potrebno. Npr. int godine = 24; godine je varijabla tipa integer, a 24 je literal konstanta. Ne mo転ete pridru転iti vrijednost na 24, i ta vrijednost ne mo転e biti promijenjena. Symbolic constants (simboline konstante) Simbolina konstanta je konstanta koja je pretstavljena po imenu, ba邸 kao i varijabla. Ali nakon 邸to je konstanta inicirana, njezina vrijednost ne mo転e biti promjenjena. Ako imate jednu integer varijablu imenovanu "studenti" i drugu imenovanu "ucionica", mo転ete procijeniti koliko studenata imate, i broj uionica, te ako znate da je 15 studenata po razredu.
  • 10. 10 sudenti = ucionice * 15; U ovom primjeru, broj 15 je Literal konstanta. Kod bi bio puno jednostavniji za itanje i jednostavniji za odr転avati ako biste tu vrijednost zamijenili simbolinom konstantom. studenti = ucionice * ucenika_po_ucionici; Ako kasnije odluite promijeniti broj studenata po ucionice, mozete to uciniti tako da definirate konstantu ucenika_po_ucionici bez potrebe za izmjenama u svakom dijelu koda gdje ste koristili tu vrijednost. Definiranje konstanti sa #define Da biste definirali konstantu na sa staromodnim, i lo邸im nainom unest ete #define ucenika_po_razredu 15; Primjetite da ucenika_po_ucionici nema konkretni tip (int, char itd.). Svaki puta kad preprocesor vidi rije ucenika_po_razredu upisat e broj 15 u tekst. Zbog toga 邸to se preprocesor pokree prije kompajlera, kompjuter nikad ne vidi va邸u konstantu, ono vidi broj 15. Definiranje konstanti sa const Iako #define radi, postoji bolji, ukusniji nain definiranja konstanti u C++ const unsigned int ucenika_por_ucionici = 15; U ovom primjeru se isto deklarira simbolina konstanta imenovana ucenika_po_ucionici, ali ovaj puta ucenika_po_ucionici je napisano kao unsigned int (bez predznaka, cijeli broj) S ovime imate vi邸e za tipkati ali nudi nekoliko prednosti.Najvea razlika je u tome 邸to ova konstanta ima tip i kompajler mo転e prisliti da to bude kori邸teno po svom tipu. Aritmetiki operatori Operatori su simboli koji predstavljaju (zamjenjuju) odreene funkcije. Operator je simbol koji predstavlja specifinu akciju. Ve smo kod primjera zbrajanja koristili operator "+". Osim operatora + imamo jo邸 nekoliko aritmetikih operatora. Evo tablice za pregled operatora.
  • 11. 11 % operator se naziva jo邸 i modulus operator . Aritmetiki operatori jednako dobro rade sa negativnim brojevima kao i sa pozitivnim, sa iznimkom modulus operatora, rade sa cijelim brojevima jednako dobro kao i sa brojevima sa pominim zarezom. Neki programski jezici imaju eksponent operator, 邸to nije sluaj kod C++. Umjesto toga C++ ima ugraenu funkciju pow koja je definirana u standardnoj biblioteci cmath pow funkcija ima dva arumenta. Prvi argument je baza (glavni broj), a drugi broj je eksponent. Pogledajmo primjer: #include <iostream> #include <cmath> // ukljucili smo biblioteku cmath using namespace std; int main() { double baza, eksponent, rezultat; cout << "Unesite broj "; cin >> baza; cout << "Unesite eksponent "; cin >> eksponent; rezultat = pow(baza, eksponent); cout << "Rezultat = " << rezultat; system("pause"); return 0; } Prvo novo 邸to morate primjetiti je to da smo ukljuili biblioteku cmath. Zatim smo deklarirali broj, eksponent i rezultat kao double tip. (Zbog ogromnih brojeva ako npr. upi邸ete 10 na 10- u). Zatim smo im sa cin >> pridru転ili vrijednosti, te su te vrijednosti zapravo parametri u funkciji pow . Odnosni (relacijski) operatori
  • 12. 12 U programskom jeziku C++ kao i u mnogim drugim programskim jezicima postoje odnosni operatori. Takvi operatori se npr. koriste ako 転elite napraviti program koji e iz baze podataka odrediti osobe sa vi邸e od 30 godina i slino. Evo tih odnosnih operatora: Odnosne naredbe Kao i aritmetiki operatori, odnosni operatori su binarni tj. usporeuju dva operanda. Naredba sa dva operanda i odnosnim operatorom zove se odnosna naredba (eng. relational expression.) Rezultat odnosne naredbe je Boolean vrijednost odnosno istinu ili la転 (true ili false). S ovom tablicom mo転ete vidjeti kako to funkcionira U ovoj tablici se koriste konkretne ( literal ) vrijednosti koje ne mogu biti promijenjene. 4 je konkretna vrijednost (konstanta), i ona se ne mo転e mijenjati (moglo bi se mijenjati da je umjesto konstanta koristimo varijable) Isprobajmo sada ovaj kod koji umjesto konstanti koristi varijable #include <iostream> using namespace std; int main() { int a = 4, b = 5;
  • 13. 13 cout << (a > b) << endl; cout << (a >= b) << endl; cout << (a == b) << endl; cout << (a <= b) << endl; cout << (a < b) << endl; system("pause"); return 0; } Ovaj program e ispisati: 0 0 0 1 1 S time da 0 predstalja la転 (false) a 1 istinu (true). Logiki operatori Za rad s logikim podacima, postoje logike funkcije. Logike se funkcije zapisuju logikim operatorima. Naredba IF Naredbu IF koristimo onda kada 転elimo izvr邸iti neki kod samo ako je vrijednost nekog odnosnog izraza istinita. Evo primjera: #include<iostream> using namespace std; main() { string password; cout << "Unesite password: "; cin >> password;
  • 14. 14 if(password=="G2105Z") { cout << "Password tocan!"; } system("pause"); return 0; } Definirali smo string password, sa cin naredbom upisali ono 邸to korisnik upi邸e u varijablu password, zatim slijedi provjera sa IF naredbom. Sintaksa IF naredbe je zapravo: if(uvjet) { kod koji se izv邸rava } Naravno nije IF naredba ograniena samo na provjeravanje tonosti. Mo転ete koristiti sve odnosne operatore koje smo objasnili u pro邸lom tutorijalu. Npr: #include <iostream> using namespace std; int main() { int godine; cout << "Koliko imate godina? "; cin >> godine; if (godine < 18 ) { cout << "Maloljetni ste!"; } system("pause"); return 0; } U svrhu uenja isprobajte sve odnosne operatore. Npr. probajte napisati mali program koji e provjeriti da li je broj djeljiv sa 2 (bez ostatka). U sljedeem tutorijalu emo uiti o IF...ELSE naredbi koja vam pru転a mogunost da uz IF naredbu imate i naredbu koja e izvr邸iti neki kod ukoliko uvjet nije zadovoljen If...Else naredba If...Else naredba je pro邸irenje If naredbe. Kao 邸to smo ve rekli u pro邸lim tutorijalu, If naredba omoguuje izvr邸avanje nekog koda ukoliko je uvjet zadovoljen, a ukoliko nije nee se izvr邸iti ni邸ta.
  • 15. 15 Ako bi smo htjeli napraviti da ukoliko uvjet nije zadovoljen da se izvr邸i neki drugi kod onda koristimo If...Else naredbu. Evo primjera kako koristiti If...Else naredbu (koristit emo primjere iz pro邸log tutorijala) #include<iostream> using namespace std; main() { string password; cout << "Unesite password: "; cin >> password; if(password=="G2105Z") { cout << "Password tocan!"; } else { cout << "Password netcan!"; } system("pause"); return 0; } Kao sto vidite kod je isti kao i za if naredbe, else pa vitiaste zagrade i unutra kod za izvr邸avanje. Evo i onog drugog primjera: #include <iostream> using namespace std; int main() { int godine; cout << "Koliko imate godina? "; cin >> godine; if (godine < 18 ) { cout << "Maloljetni ste!"; } else { cout << "Punoljetni ste!" } system("pause"); return 0; } If...Else If...Else naredba U pro邸lom tutorijalu smo govorili o IF...Else naredbi. Ovdje emo pro邸iriti tu naredbu tako da mo転emo ispitati vi邸e uvjeta. Za to korisimo If...Else-If...Else narebu. Evo primjera:
  • 16. 16 #include <iostream> using namespace std; int main() { int godine; cout << "Koliko imate godina? "; cin >> godine; if (godine <= 17 ) { cout << "Maloljetni ste!"; } else if (godine>=18 and godine<=39) { cout << "Punoljetni ste"; } else if (godine>39 and godine<70) { cout << "Najljepse godine"; } else { cout << "Stari ste"; } system("pause"); return 0; } Dakle sa ovom narebom mo転emo ispitati vi邸e uvjeta. U ovom primjeru dosta koristimo odnosne operatore, pa ako niste nauite ih (4 tutorijala ispred ovoga). Sve je isto kao i naredba if...else samo 邸to ovdje mo転ete vi邸e puta staviti naredbu else if kako biste ispitali vi邸e uvjeta. else if mo転ete postaviti koliko god hoete puta, ali ako imate jako puno moguih uvjeta onda vam preporuam da pogledate sljedei tutorijal u kojem emo vam objasniti kako se koristi switch naredba za ispitivanje moguih uvjeta. Naredba while Oba petlja nam sluzi za definiranje ciklusa sa nepoznatim brojem ponavljanja. Format naredbe je: Sintaxa: while (uvjet) { naredbe; } npr:
  • 17. 17 broj=1; while (broj<5) { broj=broj+1; // proizvoljna naredba } U ovom primjeru broj je manji od 5 i ova petlja ce se izvr邸iti, tako da e se poveati za 1. Slijedei put e broj biti jednako 2 pa ce se petlja opet izvrsiti. Da bi se ,onda kada broj dobije vrijednost 5, petlja preskoila tj. ne bi se izvr邸ila i izvr邸io bi se ostatak koda, jer se nije ispunio uvjet koji glasi da broj mora da bude manji od 5. #include<iostream.h> int main () { int broj=1; while (broj<5) { broj=broj+1; //ovo se moze napisati i broj+=1; } cout<<"Ovo je broj: "<<broj<<endl; return 0; } Rezultat ovog programa je: Ovo je broj: 5 Naredba For Naredba for Kod while petlje smo imali da inicijlizaciju, uvjet i promjenu vrijednosti imamo na vi邸e razlicitih mjesta, dok je kod for petlje to sve sadr転ano u jednom redu koda tj. izmedu malih zagrada. Format naredbe: for (inicijalizacija; uvjet; promjena vrijednosti) naredba;. ili kori邸tenjem blokova: for (inicijalizacija; uvjet; promjena vrijednosti) { naredbe; } Uvjet mora biti logicki izraz, dok inicijalizacija i promjena vrijednosti mogu biti bilo kakvi izrazi. Petlja ce se izvr邸avati dok je uvjet tocan.
  • 18. 18 Npr: //Brojac unatrag #include <iostream.h> int main () { for (int i=10; i>0; i--) { cout << i << ", "; } cout << "PALI!"; return 0; } Rezultat ovog programa: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, PALI! Ukoliko dodamo na kraju ovog dijela koda <<endl; cout << i << ", "<<endl; to ce znaciti da poslije svakog ispisa kursor 邸alje u novi red. Nakon ovog rezultat ce biti: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, PALI! Evo na ovoj slici se jasno ilustrira format for petlje: Naredba switch Ova naredba sluzi za provjeravanje vi邸e uvjeta od jednom i
  • 19. 19 izvr邸avanja onoliko radnji koliko je uslova zadovoljeno odnosno tano. Ova naredba je korisna ukoliko trebamo provjeriti vi邸e "stvari" a da ne petljamo sa if i else if petljom :). Format ove naredbe je: switch (varijabla){ case mogucnost1: naredba; break; case mogucnost2: naredba; break; ... } Pa da svaki red koda objasnimo pojedinacno: switch (varijabla){ Ovaj dio prijavljuje varijablu (promjenljivu) iju emo tanost ispitivati. case mogucnost1: Ovaj dio provjerava da li je varijabla iz prvog reda jednaka nizu znakova (u ovom slucaju) mogucnost1. Obavezno : (dvotoka) na kraju. naredba; Ovdje upisujemo naredbu ili vi邸e njih koje e se izvr邸avati ukoliko je zadovoljen uvjet. break; Ovom rijecju se zatvara niz naredbi i daje se mogucnost novom uslovu. case mogucnost2:
  • 20. 20 naredba; break; Ovo je samo primjer kako treba postaviti drugi uvjet, tako emo dodavati i ostale. Ukoliko 転elimo da postavimo neki defaultni uvjet tj. naredbe koje e se izvr邸iti ukoliko ni jedan uvjet nije zadovoljen onda emo dodati slijedee: default: naredbe; Ovdje na kraju ne ide break; zato 邸to se podrazumjeva da e default kod biti na kraju tj. zadnji uvjet i da nee biti vi邸e uvjeta. Ovo sve malo zvui zamr邸eno al na konkretnom primjeru e to drukije (jednostavnije) izgledati. #include<iostream.h> int main() { int broj=0; switch (broj){ //provjerava da li je broj=1 case 1: //ako p邸ostoji ispisuje 'Broj je 1!!!' cout<<"Broj je 1!!!"<<endl; break; case 2: cout<<"Broj je 2!!!"<<endl; break; //Ukoliko broj nije jednak ni 1 niti 2 onda ispisuje default: cout<<"Broj je 0 (nula) !!!"<<endl; } system("pause"); return 0; } Evo sad za one koji misle da je lakse sa if petljama ispetljati vise uvjeta:
  • 21. 21 switch (x) { case 1: cout << "x je 1"; break; case 2: cout << "x je 2"; break; default: cout << "x je nepoznato"; } if (x == 1) { cout << "x je 1"; } else if (x == 2) { cout << "x je 2"; } else { cout << "x je nepoznato"; } Vidimo jednu if i jednu else if petlju zamislite da moramo ispitati 50 vrijednosti tek onda bi bilo petljanja. Zato toplo preporuujem naredbu switch kod ispitivanja vi邸e razlicitih vrijednosti. Dok kod jednostavnih tu je naravno if i if else. ;) Ukoliko uoite neku gre邸ku ili vam pak ne邸to nije jasno javite se na forum. Jednodimenzionalni nizovni tipovi Dosada邸nji primjeri koje smo radili mogli su da obrauju samo jednu vrijednost, kombiniranje vi邸e vrijednosti jako komplicira rje邸enje. Ako imamo 5 razliitih varijabli: a,b,c,d,e i vrijednost svake se unosi sa tipkovnice, to bi izgledalo ovako cout<<"Unesi a: "; cin>>a; cout<<"Unesi b: "; cin>>b; cout<<"Unesi c: "; cin>>c;
  • 22. 22 cout<<"Unesi d: "; cin>>d; cout<<"Unesi e: "; cin>>e; To predstavlja problem ako moramo unijeti 50 i vi邸e vrijednosti. Zato koristimo jednodimenzionalni nizovni tip. Pa e ovaj gore primjer izgledati ovako: int niz[20],i; for (i=0;i<=4;i++) { cout<<"Unesi vrijednost "<<i+1<<". varijable: "; cin>>niz[i]; } Pa da objasnimo 邸to radi koji dio koda: int niz[20],i; u ovom dijelu smo deklarirali varijablu niz i u srednje zagrade smo stavili koliko maximalno mjesta mo転e zauzeti u memoriji (u nasem primjeru 20) for (i=0;i<=4;i++) Pomou for petlje poveavamo vrijednost varijable "i" svaki put za jedan vi邸e. Poveavanje e ii sve dok vrijednost "i" ne dostigne 4. Za邸to 4? Zato 邸to smo htjeli da unosimo 5 varijabli pa emo imati 0,1,2,3,4 to je ukupno 5 brojeva. Mogli bismo staviti i=1 pa bi onda postavili i<=5 ali se u praksi pogotovo kod c++ poetna vrijednost brojaa postavlja na 0 dok je kod Pascala od 1 itd. cout<<"Unesi vrijednost "<<i+1<<". varijable: "; Kako se varijabla "i" bude poveavala tako e i ispis ovog koda biti drugaiji. Npr: za i=0 ispis e biti "Unesi vrijednost 1. varijable: ". sad vidimo opet da pi邸e 1., sigurno se pitate za邸to nije 0. Ovako...Postavili smo i+1 zato 邸to e na poetku "i" biti 0 i plus ono jedan=1 i zato je 1. ;) cin>>niz[i];
  • 23. 23 Jednostavna naredba kojom unosimo niz brojeva. Dvodimenzionalni nizovni tip DVODIMENZIONALNI NIZOVI - MATRICE Najefikasniji nain predstvljanja podataka je u obliku tabela ili matrica. Ovi zadaci u programu se predstavljaju kao dvodimenzionalni niz. Matricu tj. tabelu mo転emo predstaviti na slijedei nain: SLIKA: Sa indeksom j broje se elementi u redu, a sa i u koloni. i=1,n - i ide od 1 do n j=1,m - j ide od 1 do m Elementi kod kojih su indeksi jednaki nazivamo glavnu dijagonalu, nasuprot glavne dijagonale nalazi se sporedna dijagonala. n=3 m=3 i=1 j=2 a11 - a12 - a13 a21 - a22 - a23 a31 - a32 - a33 Dvodimenzionalni niz ili matrice deklarisemo u vidu niza
  • 24. 24 npr: int niz[20], i, j; kod ispisa koristimo niz[i][j];