Professional Documents
Culture Documents
Programiranje (Moja Skripta)
Programiranje (Moja Skripta)
Programiranje
Programiranje je postupak osmiljavanja i izrade raunalnih programa. To je jedna od
najtemeljnijih informatikih disciplina. Programiranje je put od problema i ideje njegovog
rjeavanja do konane realizacije rjeenja u obliku raunalnog programa.
Algoritam
Detaljni opis niza konanog broja koraka koji vode rjeenju problema u odreenom
vremenskom intervalu tj. to je jasno definiran niz koraka koji vode do rezultata. Moemo
takoer redi da algoritam transformira ulazne podatke u izlazne tj. u konani rezultat.
Algoritam treba biti definiran prema sljededim pravilima:
treba imati 0 ili vie ulaza (Ulaz)
treba imati 1 izlaz (ili vie) (Izlaz)
svaka instrukcija algoritma treba biti nedvosmislena (Definitnost)
u algoritmu nakon izvrenja svake instrukcije treba biti nedvosmisleno jasno koja se
instrukcija sljededa izvodi (Determinantnost)
algoritam mora biti takav da raunalo ili ovjek nakon konanog broja koraka u
konanom vremenu doe do rezultata (Efektivnost)
Postoji nekoliko naina na koji se algoritam moe opisati:
prirodni jezik
pseudokod (formatirani opis u prirodnom jeziku)
kod u programskom jeziku (formalni jezik za opis algoritma na raunalu)
Izrada algoritma se zasniva na sljededem:
metoda izrade algoritma koja se najede koristi naziva se top-down metoda
izvan raunalstva ova se metoda naziva metoda konkretizacije
algoritam se opie u 3-7 opdenitih instrukcija i u svakom sljededem koraku se
usredotouje na svaku od opisanih instrukcija koja se potom konkretizira dok god je
to potrebno
za definiciju algoritma se koristi pseudokod koji se detaljizira sve dok se ne moe
izravno prevesti u kod nekog od programskih jezika
Problem
Problem je zadatak koji elimo rijeiti pomodu raunala. Prilikom zadavanja problema moraju
se potivati sljededa pravila:
problem mora biti zadan opdenito i pokrivati sve sluajeve koji se mogu dogoditi u
domeni problema koji se zadaje
problem mora biti zadan jasno i nedvosmisleno
Da bi problem bio dobro strukturiran njegov opis mora sadravati sljedede:
detaljan opis ulaznih podataka
opis rezultata i veze izmeu rezultata i ulaznih podataka
Opis ulaznih podataka:
ulazni se podaci zadaju opdenito, tako da obuhvadaju sve mogude sluajeve
- broj podataka
- tip podataka
- dodatna ogranienja nad podacima
Opis rezultata:
rezultati se zadaju jasnim opisom onoga u to se ele pretvoriti ulazni podaci
- tip podataka
- odnos rezultata prema ulaznim podacima
Za rezultat moemo redi da su to izlazni podaci koji se dobiju iz ulaznih podataka primjenom
algoritma.
Da bi se zadani problem rijeio pomodu raunala potrebno je definirati:
Podatke
Algoritam
Ideja
Ideja predstavlja rezultat procesa prouavanja problema, skiciranja pojedinih elemenata
problema i iznalaenja mogudnosti njegovog rjeenja. Ideja esto ne dolazi odjednom ved se
polako razvija, ponekad i kroz due razdoblje ukoliko se radi o velikim projektima i sloenim
problemima. S druge strane, u nekim sluajevima je ideja u potpunosti trivijalna jer je i sam
problem trivijalan.
Program
Raunalni program moemo definirati kao konaan niz instrukcija raunalu koje pretvaraju
ulazne podatke u eljeni rezultat. Raunalni program se realizira kodiranjem algoritma i
koritenjem pripadajudih podataka.
Podatak
Podatak je jednostavna i neobraena injenica koja ima neko znaenje (npr. broj, slovo, ...).
Podatke u programu dijelimo na:
ulazne podatke
meurezultate
izlazne podatke
Svakom podatku treba definirati tip podataka koji predstavlja domenu iz koje taj podatak
moe poprimiti vrijednost. Uobiajene domene podataka su:
cijeli brojevi
pozitivni cijeli brojevi (prirodni brojevi)
decimalni brojevi
slova
rijei
logike vrijednosti (da/ne, yes/no, true/false)
Povijest programskog jezika C++
Proceduralno C++
C BASIC
progamiranje
Pascal Fortran Oberon
Objektno
Strukturno
Orijentirano
programiranje
progamiranje
Svojstva jezika C
Niska razina Mogudnost pisanja efikasnih programa i time koritenje programskog
jezika C u sluajevima u kojima se prije njega moralo posezati za assemblerom,
Minimalnost Zbog efikasnosti u samoj jezgri programskog jezika se nalaze samo
najosnovnije naredbe, dok se ostale naredbe po potrebi ukljuuju u program iz
unaprijed pripremljenih biblioteka funkcija,
Portabilnost Programski kod napisan u programskom jeziku C moe se bez vedih
izmjena prevoditi i izvravati na razliitim raunalnim platformama.
Prvenstveno osmiljen za izradu sistemskog softvera, no sadri sve komponente potrebne
za opdu namjenu
Brz je
Strukturiran je
C++
C++ je prvi objektno orijentirani jezik koji je uao u iroku primjenu. C++ je postao de facto
standard za objektno orijentirane proceduralne programske jezike. Koncepti koji su dodani
programskom jeziku C jesu:
Klase sadravaju opis podataka, ali i metode (operacije) nad objektima klase
Objekti Instance pojedine klase, u kojima se konkretizira struktura podataka
opisana u klasi. Dakle, objekti sadre podatke opisane u klasi, ali ne i instance
metoda.
Return
Naredba kojom se zavrava rad funkcije i vrada rezultat programu ili funkciji koja ju je
pozvala. Glavna funkcija naeg programa pozvana je od strane operacijskog sustava, pa de se
operacijskom sustavu vratiti vrijednost 0. Pravilo dobrog programiranja je da se kod
uspjenog zavretka rada programa operacijskom sustavu uvijek vrada vrijednost 0.
Delimiter
Znak ;.
Vitiaste zagrade
Svaka funkcija odnosno blok naredbi se uvijek nalazi u vitiastim zagradama. Taj dio koda se
uvijek izvrava slijedno liniju po liniju i zbog toga se takav niz naredbi naziva slijed ili
sekvenca.
Varijabla
Varijabla nije nita drugo nego mjesto gdje moemo spremati nae podatke odnosno
brojeve, znakove i sl. Drugim rijeima varijabla je imenovani dio memorije. Dakle, varijabla
predstavlja dio memorije koji ima svoj naziv i unutar kojeg moemo spremiti neki podatak.
Svaka varijabla ima svoj identifikator (ime) i tip podataka. Vrijednost varijable se tijekom
rada programa moe mijenjati.
Pravila za imenovanje varijabli su sljededa:
Identifikatori varijabli mogu se sastojati od malih i velikih slova, brojki i specijalnog
znaka
Prvi znak u identifikatoru varijable ne smije biti brojka
cout <<
Tok podataka koji opisuje jedinicu na koju se podatak ispisuje, a s desne strane operatora
moramo upisati podatak koji elimo ispisati. U programskom jeziku C++ cout predstavlja
izlazni tok podataka vezan uz standardnu izlaznu jedinicu, tj. zaslon, dok je << operator u
izrazu koji predstavlja prosljeivanje podataka s desne strane izraza na izlaznu jedinicu.
Naime, programski jezik C++ s okolinom komunicira preko tokova podataka koji teku od
programa prema okolini i od okoline prema programu.
cin >>
Operator ovog izraza jest >>, operator koji oznaava itanje podataka s ulaznog toka
podataka. S cin se u programskom jeziku C++ oznaava standardna ulazna jedinica, tj.
tipkovnica. Kod izraza za uitavanje podataka kroz ulazni tok podatka s lijeve strane izraza
mora se nalaziti identifikator varijable u koju elimo upisati uitanu vrijednost.
Operator =
Ovaj operator predstavlja operator pridruivanja vrijednosti s desne strane varijabli koja se
nalazi na lijevoj strani izraza.
Endl
Konstanta endl je definirana u biblioteci iostream kao konstanta tipa char koja sadri
vrijednost '\n', odnosno 13, koja oznaava prijelaz u novi red. Dakle, konstanta endl de na
zaslonu uzrokovati prelazak kursora u novi red.
System
Funkcija system je funkcija preko koje s pozivaju komande operacijskog sustava. Naredba
pause je naredba DOS operacijskog sustava koja ispisuje poruku Press any key to
continue... te zaustavlja daljnje izvoenje programa sve dok korisnik ne pritisne neku
tipku na tipkovnici. Treba upozoriti da se funkcija system ne nalazi u jezgri programskog
jezika C++, ved u biblioteci cstdlib.
std::
Ispred svakog toka podataka, ali i ispred konstante endl u programu se nalazi std::. To
znai da je tok podataka koji koristimo definiran u klasi std, koja se naziva prostor imena.
Kako ne bismo ovo morali pisati svaki puta kada koristimo neto to je opisano u ovom
prostoru imena, u deklaracijskom dijelu programa moemo navesti da se sva imena nalaze u
prostoru imena pod nazivom std tako da napiemo using namespace std.
Int
Tip podataka koji sprema pozitivne, ali i negativne brojeve te zauzima 4B. Svaki od tih 4 byte-
a ima po 8 bitova, dakle sveukupno je to 32 bita, meutim jedan se bit koristi za predznak
tako da je to 31 bit. Bududi da svaki bit moe imati dva stanja (0 i 1), a bitova sveukupno ima
31, bazu binarnog brojevnog sustava (2) potenciramo sa 31 i dobijemo raspon brojeva koji
moemo smjestiti u ovaj tip podataka.
Meutim, ako se pak radi o tipu podataka unsigned int koji sprema samo pozitivne brojeve
tada naravno na raspolaganju imamo sva 32 bita jer bit za predznak nije potreban i moe se
iskoristiti za pohranu brojeva. Stoga pomodu njega moemo prikazati dvostruko vie
pozitivnih brojeva.
Tipovi podataka
Iomanip
Biblioteka koja sadri funkcije za formatiranje ispisa.
Setprecision
Klauzula kojom se definira broj znamenaka u ispisu decimalnih brojeva. U njoj se u
zagradama navodi broj znamenaka koje se prikazuju. Definicija broja znamenaka u ispisu
decimalnih brojeva vrijedit de i u sljededim ispisima, sve dok se ne definira drugaije.
Funkcija iz biblioteke iomanip koja se koristi unutar cout naredbe i definira broj znamenaka
koji se prikazuje kod prikaza decimalnih brojeva.
Using namespace
Naredba za definiranje prostora funkcijskih imena koja se koriste u programu.
Selekcije
Selekcije se koriste kada se izvravanje izvjesnog programskog bloka vee uz istinitost ili
lanost nekog logikog izraza. Selekcija je toka u programu u kojoj se odluuje temeljem
uvjeta (logikog izraza) koji de se, od nekoliko mogudih programskih blokova, izvesti.
Selekcija je jedan od elementa neega to nazivamo programski konstrukti (kontrolne
strukture). Kako samo ime kae, programski konstrukti su elementi od kojih konstruiramo
(gradimo) raunalni program.
U programske konstrukte ubrajamo:
sekvencu (slijed)
selekciju (odabir)
iteraciju (ponavljanje, petlja)
skok (naredbe goto, break, return i continue)
Sekvenca je jednostavno slijed tj. niz linija programskog koda koje se izvravaju jedna za
drugom.
Ugnjedene selekcije
Selekcije jedna unutar druge.
Operand
Neto nad ime vrimo operaciju.
Operator
Definira operaciju koja se provodi nad operandima.
Iteracija
Iteracija je dio programskog koda koji se izvrava vie puta uzastopno.
Goto
Naredba skoka koja predstavlja pomak na bilo koji programski dio sa bilo kojeg drugog
programskog dijela. Ona se u pravilu vie ne koristi ili se koristi jako malo jer naruava
strukturiranost programa. Primjerice uporabom ove naredbe moemo skoiti van iz petlje
prije nego to ona zavri svojim prirodnim putem. Problem je takoer i u tome da se je u
programskom kodu koji esto koristi goto iznimno teko snadi.
Switch
Programski konstrukt ija uporaba je slina uporabi if selekcije sa nekoliko if uvjeta. Selekcija
tipa switch testira vrijednost varijable i za svaku pojedinu vrijednost izvodi pripadajudi kod. U
zagradi se ne nalazi logiki ved aritmetiki, i to cjelobrojni izraz. Ovaj se izraz usporeuje po
jednakosti s vrijednostima navedenim u klauzulama i izvrava se onaj sluaj ija je vrijednost
jednaka izrazu u zagradama. Switch se ponaa kao niz goto skokova.
Ova se selekcija koristi kada se sluajevi mogu pobrojiti.
Break
Prekida rad bilo koje C++ kontrolne strukture osim if kontrolne strukture.
Continue
Naredba preskoka koja preskae ostatak dijela petlje do zavretka petlje i odmah zapoinje
novi korak petlje.
Default sluaj
Izvrava se u sluaju da se pojavi vrijednost za koju nije definiran case (sluaj). Nije ga
obavezno navoditi, no ako se navodi, mora biti jedan jedini i mora se nalaziti iza posljednjeg
case sluaja.
Pow
Funkcija iz biblioteke cmath za izraunavanje potencija. Barem jedan od argumenta funkcije
pow mora biti decimalni broj.
Aritmetiki operatori
Aritmetiki operatori su operatori koji vre aritmetike operacije nad jednim ili dva
operanda. Ukoliko se operacija izvodi nad jednim operandom govorimo o unarnim
operatorima, a ukoliko se operacija vri nad dva operanda govorimo o binarnim
operatorima.
Biblioteka cmath
Biblioteka koja sadri standardne matematike funkcije. Biblioteka cmath u sebi sadri itav
niz funkcija. Sve funkcije biblioteke cmath zahtijevaju da barem jedan njihov argument bude
decimalan broj.
Iteracije
Programski konstrukti koji omogudavaju da se neki programski blok ponavlja vie puta.
For iteracija
Iteracija s eksplicitnim brojaem. Uz ovu se iteraciju vezuje jedna cjelobrojna varijabla koja se
u svakom koraku iteracije automatski mijenja. Ta se varijabla naziva broja petlje. Prva dolazi
inicijalna vrijednost koja se pridruuje brojau petlje. Drugi je uvjet zavretka tj. logiki izraz
koji treba biti ispunjen kako bi se tijelo petlje izvrilo. Trede je promjena tj. izraz prema
kojem se u svakom sljededem koraku mijenja broja petlje.
While iteracija
Izvrava se sve dok je logiki uvjet koji je zadan u njenoj glavi istinit. Ova iteracija ima
sintaksu: while (logiki uvjet)
blok naredbi
Rad petlje:
Provjerava se logiki uvjet u glavi petlje
Ako je ispunjen izvrava se tijelo petlje i vrada na glavu petlje
Ako nije ispunjen, preskae se tijelo petlje i nastavlja se sa sljededom naredbom iza
tijela.
Dowhile iteracija
Njena je sintaksa: do
blok naredbi
while (logiki uvjet);
Do while je jedina iteracija iza ijeg kraja ide znak ;. Razlika izmeu ove i while iteracije je u
tome to se kod iteracije tipa do...while logiki uvjet provjerava tek nakon prvog prolaska
kroz tijelo petlje. Dakle, dok se kod iteracija tipa for i while moe dogoditi da se tijelo petlje
ne izvri ni jednom, kod iteracije tipa do...while tijelo se petlje mora izvriti najmanje
jedanput.
Programski konstrukti
Logiki operatori
Primaju kao operatore dvije logike vrijednosti i vradaju logiku vrijednost.
- !A - negacija
- A && B - konjunkcija (logiko i)
- A || B - disjunkcija (logiko ili)
Konstante
Konstante se deklariraju isto kao i varijable, osim to se ispred imena tipa podataka stavlja
kljuna rije const. Konstanta se uvijek prilikom deklaracije mora i inicijalizirati. U
programiranju je vano tedjeti memorijski prostor. Konstanta, za razliku od varijable, u
izvrnom kodu nede alocirati memorijski prostor, ved de se prilikom prevoenja svaka njena
pojava jednostavno zamijeniti njenom vrijednodu. Stoga je vano da se vrijednosti koje se u
programu ne mijenjaju ne deklariraju kao varijable, ved kao konstante.
Define
Konstanta de se razrjeavati prije prevoenja, u postupku preprocesiranja, odnosno provjere
sintaksne konzistentnosti programa i ukljuivanja biblioteka.
Rand()
Funkcija rand() vrada sluajni cijeli broj izmeu 0 i RAND_MAX. Rand je dio cstdlib biblioteke.
RAND_MAX je najede jednak INT MAX, tj. 32767, no to moe biti i razliito, ovisno o C++
prevodiocu i raunalu. Ako elimo dobiti brojeve izmeu 0 i 100, najuniformniju razdiobu
dobit emo ako dijelimo cjelobrojno RAND_MAX s RAND_MAX / 99, no onda emo dobiti
brojeve od 0 do 99, pa dobivenom broju treba dodati 1.
Ova funkcija vrada pseudosluajne brojeve.
Pseudosluajni brojevi
Nisu brojevi koji se odabiru nasumce, ved se svaki sljededi izraunava iz prethodnoga tako da
brojevi izgledaju sluajni. Pseudosluajnom nizu se na neki nain odredi promjenjivi prvi
element, koji se naziva sjeme (seed) pseudosluajnog niza. Postoji procedura srand
(unsigned int) koja odreuje sjeme pseudosluajnog niza.
Funkcija time
Funkcija koja se koristi s argumentom 0. Dio je ctime biblioteke.
Polje
Polje je mehanizam agregacije kojim se od jednostavnih tipova podataka tvori sloeniji tip
podataka. Ako uemo malo dublje u samu strukturu, moemo redi da polje nije nita drugo
nego niz varijabli istog tipa koje su imenovane zajednikim identifikatorom i nalaze se na
uzastopnim memorijskim lokacijama. Svaka varijabla u polju naziva se element polja.
Dovoljno je pamtiti samo memorijsku lokaciju nultog elementa polja s obzirom da se
memorijske lokacije ostalih elemenata mogu izraunati na sljededi nain:
lokacija 0-tog elementa + veliina elementa index.
Zbog tog svojstva se svakom elementu polja moe pristupiti u fiksnom vremenu, bez obzira
na indeks elementa i veliinu polja.
Polje se deklarira: tip_podataka identifikator[broj_elemenata];
Indeks polja
Predstavlja memorijski pomak u odnosu na adresu poetka polja.
Strlen
Funkcija pomodu koje dobivamo duljinu stringa.
cin.get()
Uitava jedan znak sa tipkovnice (ako je uneseno vie slova uitava se prvi znak a ostali
znakovi ostaju u spremniku za sljedede unose, dio je iostream biblioteke)
cin.getline(varijabla, max_duljina)
Uitava znakove sve do kraja retka bez obzira na razmake kao jedan string (dio je iostream
biblioteke)
cin.ignore()
Brie sadraj spremnika kako se ne bi unio neeljeni sadraj koji je zaostao od prije (dio je
iostream biblioteke).
Dvodimenzionalna polja
U jednodimenzionalnim poljima se lanovi polja dohvadaju preko jednog indeksa dok se kod
dvodimenzionalnih polja to radi s dva indeksa, pri emu je prvi indeks red matrice dok drugi
predstavlja stupac tj. prva dimenzija daje duljinu stringa, a druga broj stringova u polju.
Ako elimo inicijalizirati dvodimenzionalno polje pravila su ista kao i za jednodimenzionalno
meutim redovi se odvajaju zarezom, izostavimo li vitiaste zagrade, inicijalizacija poinje od
prvog reda pa sve do zadnjeg lana u tom redu i tek tada se preskae u drugi red.
Strcmp i Strcpy
Naredbe strcpy(u_string, iz_stringa) te strcmp(string1, string1), obje funkcije se nalaze u
cstring biblioteci. Strcmp slui za usporeivanje stringova, a strcpy za pridruivanje
vrijednosti jednog stringa drugome.
Strcmp radi:
- Ako je string1 < string2, vrada -1
- Ako je string1 == string2, vrada 0
- Ako je string1 > string2, vrada 1
Euklidov algoritam
Prvo je potrebno odrediti koji je od dvaju unesenih brojeva vedi i ulaz preurediti tako da
bude A > B. Nakon toga se rauna A%B, ako je to 0, onda je B najveda zajednika mjera, u
suprotnom se u varijablu A upisuje vrijednost varijable B, a u B vrijednost A%B i postupak se
ponavlja.
Eratostenovo sito
Svi brojevi od A do N se oznae kao prosti. Varijablu k mijenjamo od 2 do sqrt(N). Ako je k jo
uvijek prost broj, sve njegove viekratnike oznaimo kao sloene brojeve. Nakon to k
postane sqrt(N), oznaeni brojevi de biti prosti.
Pretraivanje polja
Postupak traenja neke vrijednosti u skupu svih vrijednosti tj. elemenata polja. Pretraivanje
polja je, uz sortiranje, jedan od najvanijih algoritama u raunalstvu uopde.
Slijedno pretraivanje
Elementi polja A se usporeuju redom jedan za drugim sa traenom vrijednodu K. Postupak
se nastavlja sve dok se ne pronae traena vrijednost ili dok se ne doe do kraja svih
elemenata polja bez da je traena vrijednost naena.
Sortiranje polja
Pretvorba niza elemenata polja iz poetnog oblika u oblik u kojem je niz poredan prema
eljenom kriteriju (uzlazno, silazno, abecedno, itd.).
Sortiranje izborom (Selection sort)
Algoritam sortiranja izborom je jedan od najjednostavnijih algoritama sortiranja. Algoritam
funkcionira tako da se u polju pronae element s najvedom vrijednosti i zatim se vrijednost
tog elementa zamjeni s vrijednosti posljednjeg elementa u polju. Nakon toga se postupak
ponavlja za sve elemente osim posljednjeg. Nakon toga se postupak ponavlja za sve
elemente osim posljednja dva, itd. sve dok se ne doe do samo jednog elementa. Tu se staje
jer naravno jedan element vie nema biti s ime usporeen pa nikakva zamjena niti ne dolazi
u obzir.
Vanjska for iteracija ide od kraja polja i smanjuje se za 1 u svakom koraku gdje de unutarnja
for iteracija u svakom koraku vanjske for iteracije pronadi najvedi element u polju i staviti ga
na kraj. Smanjenjem vrijednosti brojaa vanjske for petlje za 1 u svakom koraku, smanjujemo
broj elemenata polja koje de unutarnja for iteracija pretraivati u potrazi za najvedim
elementom, a ujedno demo pomicati prema naprijed poziciju na koju de biti smjeten najvedi
element polja nakon to je pronaen. Prilikom svake zamjene koristimo pomodnu varijablu
pom.
Definicija unije
U programskom jeziku C++ postoji mehanizam agregacije koji omoguduje da se alternativni
podaci uvaju u istom memorijskom prostoru. Taj se mehanizam naziva unija. Deklaracija
unije u potpunosti je jednaka po sintaksi i svojstvima kao i deklaracija strukture, osim u
kljunoj rijei union koja se koristi umjesto kljune rijei struct.
Sintaksa:
union ime unije {
alternativni podaci
} identifikatori varijabli;
Pokaziva
Pokaziva je varijabla koja sadri memorijsku adresu neke druge varijable. Pomodu
pokazivaa moemo pristupiti, preko operatora dereferencijacije (*), i do sadraja, ali i do
memorijske adrese gdje je taj sadraj spremljen. To je mehanizam koji omoguduje da se
tokom rada programa prema potrebi alocira memorijski prostor.
Sintaksa pokazivaa:
tip podataka *ime;
Tip podataka kod pokazivaa je potreban kako bi se znalo koliko je velika varijabla u
memorijskom prostoru na koji pokaziva pokazuje, tj.,koliko se memorije treba alocirati, ali i
zbog toga da bi se znalo na koji se nain interpretira podatak smjeten u toj memoriji, tj.
kojeg je taj podatak tipa podataka.
Vezana lista
Svaki element treba biti slog koji de, osim unesene vrijednosti sadravati i pokaziva na
sljededi uneseni element. Strukture koje se generiraju pomodu pokazivaa i alociranja
memorije koje oni omoguduju nazivaju se dinamike strukture.
Typedef
Definiramo novi tip podataka koji ima svoje ime i koji je pokaziva na strukturu odreenog
tipa.
Delete
Naredba dealokacije memorijskog prostora na koji pokazuje pokaziva.
Null
Nepostojeda se memorijska adresa definira pomodu konstante NULL. NULL je konstanta iz
biblioteke cstdlib koja predstavlja naziv za broj 0. Jasno je da de uvijek posljednji element u
vezanoj listi, odnosno onaj koji je prvi dodan sadravati NULL-pokaziva.
New
Naredba koja dinamiki alocira prostor. Ova alokacija se vri navodedi tip podataka za koji se
dani memorijski prostor alocira.
Operator dereferencijacije
Da bismo pristupili memorijskom prostoru na koji pokazuje neki pokaziva koristimo ovaj
operator ija je oznaka *.
Sortiranje prebrojavanjem
Nedostaci sortiranja prebrojavanjem su ti to ovo sortiranje nije efikasno ako elementi
glavnog polja poprimaju vrijednosti iz velikog intervala cijelih brojeva te nije primjenjivo na
decimalne brojeve.
Ako je interval iz kojeg elementi poprimaju vrijednosti relativno mali, onda se moe koristiti
jednostavan, ali efikasan algoritam sortiranja:
Generira se pomodno polje odreenog tipa koje ima onoliko elemenata koliko ima razliitih
vrijednosti koje elementi glavnog polja mogu poprimiti. Svi se elementi pomodnog polja
iniciraju na 0. Proe se jednom po glavnom polju i ako je vrijednost i-tog elementa glavnog
polja jednaka j, onda se j-ti element pomodnog polja poveda za 1. Na kraju de i-ti element
pomodnog polja sadravati broj pojava vrijednosti i u glavnom polju.
Hash tablica
Struktura koja omogudava lake pretraivanje podataka
Hash funkcija
Kriterij prema kojem se podaci dijele u odreeni broj pretinaca. Kada se podaci pretrauju,
onda se treba pretraivati samo pretinac u kojem se traeni podatak treba nalaziti s obzirom
na hash funkciju.
Funkcije
Funkcije su izdvojeni dijelovi programskog koda koji imaju svoje ime. Osnovna ideja funkcija
je da se neki dio koda napie na jednom mjestu, a zatim se, po potrebi poziva na vie mjesta.
Time se skraduje vrijeme pisanja cjelokupnog programa.
Elementi funkcije
Povratni tip podataka - definira tip podataka koji de funkcija vratiti nakon to se zavri njeno
izvoenje.
Ime funkcije naziv funkcije koji je proizvoljan, no mora zadovoljavati pravila ispravnog
imenovanja varijabli.
Argumenti ili parametri mogu se, a i ne moraju koristiti. Javljaju se u okruglim zagradama
nakon imena funkcije i moe ih biti jedan ili vie. Argumenti predstavljaju ulazne podatke
funkcije, a ponaaju se i deklariraju isto kao i varijable. Ulazni parametri su vidljivi unutar
funkcije, ali ne i izvan nje. Promjene vrijednosti parametara tijekom izvoenja funkcije nede
se reflektirati na vrijednosti varijable van funkcije.
Sintaksa funkcije
tip ime (parametri) {
tijelo funkcije
}
tip - Bilo koji elementarni tip podataka, pokaziva ili slog.
ime - Mora zadovoljavati pravila imenovanja varijabli.
parametri - Parametri se deklariraju isto kao i varijable u programu.
tip ime (parametri) Cijeli ovaj dio se naziva zaglavlje ili glava funkcije.
tijelo funkcije - Ispravan C++ kod koji u svakom sluaju treba zavriti naredbom
return (osim kada je funkcija tipa void) i vratiti podatak tipa koji je definiran
povratnim tipom funkcije.
Return
Zaustavlja rad funkcije i odmah vrada rezultat.
Void
Ne smije se koristiti kao tip za deklaraciju varijabli, ved samo kao povratni tip funkcije i kao
tip za deklaraciju pokazivaa. Tip void predstavlja izostanak povratnog tipa. Funkcija tipa void
u svom tijelu ne treba sadravati naredbu return.
Funkcija nita ne vrada.
Globalna varijabla
To su polja na globalnoj razini; varijable vidljive iz svih dijelova programa. Ukoliko unutar
funkcije deklariramo neku varijablu, ona je tada vidljiva samo unutar te funkcije. Ukoliko
elimo da varijabla bude dostupna globalno u svim dijelovima programa tada je moramo
deklarirati globalno u deklaracijskom dijelu programa, prije definiranja prve funkcije.
Referenca
Mehanizam koji se koristi da bi se rijeio problem prosljeivanja varijabli funkcijama. Slui
kako bi se definirala lokalna varijabla koja se pri pozivu funkcije ne stavlja na programski
stog.
Pokazivai Reference
Pokazivai omoguduju dinamiku
Reference samo pokazuju na statiki
alokaciju
alociranu varijablu
memorijskog prostora
Vrijednost pokazivaa se moe
Vrijednost reference je fiksna
mijenjati
Reference nisu varijable same po sebi i
Pokazivai u C++ su "nesigurni" preko njih se ne moe pristupati
nealociranom memorijskom prostoru
Rekurzija
Mehanizam koji omoguduje da funkcija poziva samu sebe s promijenjenim parametrima. Kao
takva, rekurzija predstavlja jo jedan mehanizam koji omoguduje iteracije (petlje) u
programima, ali je mnogo modnija od bilo koje petlje koja se moe nadi u bilo kojem
programskom jeziku. Moe se redi da je rekurzija mehanizam matematike indukcije u
programskim jezicima.
Koraci generiranja:
1. Generirati nerekurzivni sluaj (bazu indukcije) koji se rjeava izravno. Nerekurzivni
se sluaj naziva jo i rubni uvjet rekurzije.
2. Generirati rekurzivni sluaj (korak indukcije) koji se rjeava pozivom iste funkcije s
manjim ulazom.
Podijeli pa vladaj
Ova se metoda temelji na tri koraka. Prvi korak se temelji na tome da se originalni problem
podjeli na dva ili vie istih problema manjih dimenzija. Nakon toga se krede u rjeavanje
novostvorenih problema manjih dimenzija, a nakon toga se rjeenja potproblema spajaju u
rjeenja prvotnog problema.
Binarno pretraivanje
Koristi se kada je polje sortirano. Funkcionira na nain da se prvo usporedi element u sredini
polja s traenom vrijednosti i, s obzirom na to da li je on manji ili vedi od traene vrijednosti,
poduzimamo sljedede korake:
Ako je manji, onda traeni element (ako se nalazi u polju), mora biti u drugoj
polovici polja
Ako je jednak, onda smo ga pronali i zavravamo
Ako je vedi, onda se traeni element (ako postoji u polju), mora biti u prvoj polovici
polja
Kao to se moe i zakljuiti kod binarnog pretraivanja se traena vrijednost ne usporeuje
sa svakim elementom polja. U prvom se koraku pretraivanja eliminira pola elemenata, u
drugom jo pola od te polovice itd.
Tekstualna datoteka
Tekstualna datoteka je sekvencijalna datoteka u kojoj je sadraj zapisan slijedno tj. znak do
znaka. Unutar tekstualne datoteke postoje jo i dvije specijalne oznake, a to su oznaka za
kraj reda i oznaka za kraj same datoteke.
Sintaksa:
open (naziv datoteke, mod otvaranja)
Parametar 'naziv datoteke' je obavezan i on predstavlja fiziki naziv datoteke koja de biti
otvorena/stvorena. Parametar 'mod' nije obvezan a sastoji se od sljededih modova (naina):
ios::in otvara datoteku u modu za upis
ios::out otvara datoteku u modu za ispis
ios::binary otvara datoteku u binarnom modu (tekstualne datoteke nisu binarne)
ios::ate postavlja inicijalnu poziciju pokazivaa na kraj datoteke umjesto na poetak
ios::app sav upisani sadraj u datoteku de se dodati na kraj ved postojedeg sadraja.
Ovaj mod je mogud samo ukoliko je datoteka otvorena striktno za upis.
ios::trunc sav sadraj datoteke se brie prije upisa novog
Biblioteke za rad s tekstualnim datotekama
ofstream za upis u datoteku
ifstream za ispis iz datoteke
fstream za upis i ispis iz datoteke
Open
Pridruuje fiziku datoteku na disku stvorenom toku datoteka.
Close
Zatvara datoteku tj. izlazni tok pa ona ponovo postaje raspoloiva drugim procesima.
Datoteni objekt se oslobaa i moe se ponovo iskoristiti za povezivanje s nekom drugom
datotekom.
Funkcija is_open()
Da bismo provjerili da li je navedena linija koda prola korektno tj. da li je datotenom
objektu zaista pridruena fizika datoteka, moemo koristiti ovu funkciju koja vrada
true/false ovisno o tome da li je rezultat pozitivan ili negativan.
Funkcija eof()
Vrada true ukoliko je dosegnut kraj datoteke.
Binarne datoteke
Ova datoteka nema oblik teksta. Razlika izmeu ove datoteke i tekstualne je ta to binarne
datoteke imaju formatirane zapise fiksne duljine. Zato u njima moemo pristupati izravno
preko njihovog rednog broja u datoteci.
Datoteci su u programskom jeziku C++ pridruena dva kursora. Prvi kursor pokazuje na
poziciju u datoteci sa koje se ita sljededi zapis (postoji samo kod ifstream tokova ili kod
fstream tokova s opcijom ios::in). Drugi kursor pokazuje na poziciju u datoteci na koju se
upisuje sljededi zapis (postoji samo kod ofstream tokova ili kod fstream tokova s opcijom
ios::out). Kod otvaranja datoteke kursor za itanje je uvijek postavljen na poetak datoteke.
Kursor za zapisivanje je postavljen na poetak datoteke ako je datoteka otvorena s opcijom
ios::trunc, a na kraj datoteke ako je otvorena s opcijom ios::app.
Napomena: Ako se datoteka otvori s ios:app opcijom, onda nede biti mogude runo
auriranje ovih kursora.
Jo neke naredbe
Tellg- Naredba za itanje pozicije kursora za itanje.
Tellp- Naredba za itanje pozicije kursora za pisanje.
Seekg- Naredba za postavljanje kursora za itanje.
Seekp- Naredba za postavljanje kursora za pisanje.