Upload
igor-joksimovic
View
182
Download
1
Embed Size (px)
DESCRIPTION
programiranje 2
Citation preview
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Filip Mari Predrag Janii
PROGRAMIRANJE 1
Osnove programiranja kroz programski jezik C
Beograd
2015.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Autori:
dr Filip Mari, docent na Matematikom fakultetu u Beogradu
dr Predrag Janii, redovni profesor na Matematikom fakultetu u Beogradu
PROGRAMIRANJE 1
Izdava: Matematiki fakultet Univerziteta u Beogradu
Studentski trg 16, 11000 Beograd
Za izdavaa: prof. dr Zoran Raki, dekan
Recenzenti:
dr Gordana Pavlovi-Laeti, redovni profesor na Matematikom fakultetu u
Beogradu
dr Miodrag ivkovi, redovni profesor na Matematikom fakultetu u Beogradu
dr Dragan Uroevi, nauni savetnik na Matematikom institutu SANU
Obrada teksta, crtei i korice: autori
ISBN 978-86-7589-100-0
c2015. Filip Mari i Predrag JaniiOvo delo zatieno je licencom Creative Commons CC BY-NC-ND 4.0 (Attribution-
NonCommercial-NoDerivatives 4.0 International License). Detalji licence mogu se
videti na veb-adresi http://creativecommons.org/licenses/by-nc-nd/4.0/. Do-
zvoljeno je umnoavanje, distribucija i javno saoptavanje dela, pod uslovom da se
navedu imena autora. Upotreba dela u komercijalne svrhe nije dozvoljena. Prerada,
preoblikovanje i upotreba dela u sklopu nekog drugog nije dozvoljena.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Sadraj
Sadraj 5
I Osnovni pojmovi raunarstva i programiranja 10
1 Raunarstvo i raunarski sistemi 11
1.1 Rana istorija raunarskih sistema . . . . . . . . . . . . . . . . . 12
1.2 Raunari fon Nojmanove arhitekture . . . . . . . . . . . . . . . 16
1.3 Oblasti savremenog raunarstva . . . . . . . . . . . . . . . . . . 21
1.4 Hardver savremenih raunara . . . . . . . . . . . . . . . . . . . 22
1.5 Softver savremenih raunara . . . . . . . . . . . . . . . . . . . . 26
2 Reprezentacija podataka u raunarima 38
2.1 Analogni i digitalni podaci i digitalni raunari . . . . . . . . . . 38
2.2 Zapis brojeva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.3 Zapis teksta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4 Zapis multimedijalnih sadraja . . . . . . . . . . . . . . . . . . 55
3 Algoritmi i izraunljivost 61
3.1 Formalizacije pojma algoritma . . . . . . . . . . . . . . . . . . 61
3.2 er-Tjuringova teza . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3 ur maine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4 Enumeracija urm programa . . . . . . . . . . . . . . . . . . . . 69
3.5 Neizraunljivost i neodluivost . . . . . . . . . . . . . . . . . . 71
3.6 Vremenska i prostorna sloenost izraunavanja . . . . . . . . . 73
4 Vii programski jezici 78
4.1 Kratki pregled istorije programskih jezika . . . . . . . . . . . . 79
4.2 Klasifikacije programskih jezika . . . . . . . . . . . . . . . . . . 80
4.3 Leksika, sintaksa, semantika programskih jezika . . . . . . . . . 80
5
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
4.4 Pragmatika programskih jezika . . . . . . . . . . . . . . . . . . 83
II Jezik C 90
5 Osnovno o programskom jeziku C 91
5.1 Standardizacija jezika . . . . . . . . . . . . . . . . . . . . . . . 91
5.2 Prvi programi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6 Predstavljanje podataka i operacije nad njima 101
6.1 Promenljive i deklaracije . . . . . . . . . . . . . . . . . . . . . . 101
6.2 Osnovni tipovi podataka . . . . . . . . . . . . . . . . . . . . . . 104
6.3 Konstante i konstantni izrazi . . . . . . . . . . . . . . . . . . . 109
6.4 Operatori i izrazi . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.5 Konverzije tipova . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.6 Nizovi i niske . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.7 Korisniki definisani tipovi . . . . . . . . . . . . . . . . . . . . . 140
7 Naredbe i kontrola toka 151
7.1 Naredba izraza . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
7.2 Sloene naredbe (blokovi) . . . . . . . . . . . . . . . . . . . . . 152
7.3 Naredbe grananja . . . . . . . . . . . . . . . . . . . . . . . . . . 152
7.4 Petlje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8 Funkcije 168
8.1 Primeri definisanja i pozivanja funkcije . . . . . . . . . . . . . . 168
8.2 Deklaracija i definicija funkcije . . . . . . . . . . . . . . . . . . 170
8.3 Parametri funkcije . . . . . . . . . . . . . . . . . . . . . . . . . 171
8.4 Prenos argumenata . . . . . . . . . . . . . . . . . . . . . . . . . 172
8.5 Konverzije tipova argumenata funkcije . . . . . . . . . . . . . . 174
8.6 Povratna vrednost funkcije . . . . . . . . . . . . . . . . . . . . 175
8.7 Nizovi i funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
8.8 Korisniki definisani tipovi i funkcije . . . . . . . . . . . . . . . 178
8.9 Rekurzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
8.10 Funkcije sa promenljivim brojem argumenata . . . . . . . . . . 179
9 Organizacija izvornog i izvrnog programa 186
9.1 Od izvornog do izvrnog programa . . . . . . . . . . . . . . . . 187
9.2 Organizacija izvornog programa . . . . . . . . . . . . . . . . . . 193
9.3 Organizacija izvrnog programa . . . . . . . . . . . . . . . . . . 219
10 Pokazivai i dinamika alokacija memorije 234
10.1 Pokazivai i adrese . . . . . . . . . . . . . . . . . . . . . . . . . 234
10.2 Pokazivai i argumenti funkcija . . . . . . . . . . . . . . . . . . 239
10.3 Pokazivai i nizovi . . . . . . . . . . . . . . . . . . . . . . . . . 241
10.4 Pokazivaka aritmetika . . . . . . . . . . . . . . . . . . . . . . . 244
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
10.5 Pokazivai i niske . . . . . . . . . . . . . . . . . . . . . . . . . . 247
10.6 Nizovi pokazivaa i viedimenzioni nizovi . . . . . . . . . . . . . 251
10.7 Pokazivai i strukture . . . . . . . . . . . . . . . . . . . . . . . 254
10.8 Pokazivai na funkcije . . . . . . . . . . . . . . . . . . . . . . . 255
10.9 Dinamika alokacija memorije . . . . . . . . . . . . . . . . . . . 258
11 Pregled standardne biblioteke 269
11.1 Zaglavlje string.h . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.2 Zaglavlje stdlib.h . . . . . . . . . . . . . . . . . . . . . . . . . 272
11.3 Zaglavlje ctype.h . . . . . . . . . . . . . . . . . . . . . . . . . 274
11.4 Zaglavlje math.h . . . . . . . . . . . . . . . . . . . . . . . . . . 275
11.5 Zaglavlje assert.h . . . . . . . . . . . . . . . . . . . . . . . . . 276
12 Ulaz i izlaz programa 277
12.1 Standardni tokovi . . . . . . . . . . . . . . . . . . . . . . . . . . 277
12.2 Ulaz iz niske i izlaz u nisku . . . . . . . . . . . . . . . . . . . . 285
12.3 Ulaz iz datoteka i izlaz u datoteke . . . . . . . . . . . . . . . . 286
12.4 Argumenti komandne linije programa . . . . . . . . . . . . . . 294
A Tabela prioriteta operatora 300
B Reenja zadataka 301
Indeks 373
7
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Predgovor
Ova knjiga pisana je kao udbenik za predmet Programiranje 1 na smeru
Informatika Matematikog fakulteta u Beogradu. U ovom predmetu i u ovoj
knjizi, centralno mesto ima programski jezik C, ali predmet i knjiga nisu samo
kurs ovog jezika, ve pokuavaju da dju ire osnove programiranja, ilustrovane
kroz jedan konkretan jezik.
Knjiga je nastala na osnovu materijala za predavanja koja smo na ovom
predmetu drali od 2005. godine. Ipak, vremenom je materijal proiren i de-
lovima koji se u okviru tog predmeta ne predaju ili se predaju u vrlo ogranie-
nom obimu. Zahvaljujui tome, ova knjiga i njen nastavak (Programiranje 2
Osnove programiranja kroz programski jezik C) mogu se koristiti kao udbenici
za vie razliitih kurseva. Za predmet na studijama na kojima nema drugih
(ili nema mnogo drugih) raunarskih predmeta, predlaemo obraivanje i-
tave knjige, s tim to obraivanje glave 4 preporuujemo samo za studije sa
jakom matematikom orijentacijom. itaocima (studentima) koji poznaju os-
nove raunarstva i programiranja, a ne znaju jezik C, preporuujemo itanje
samo drugog dela knjige (Jezik C). Za kurs Programiranje 1 na smeru Infor-
matika preporuujemo samo ubrzano upoznavanje sa glavama 1 i 2 (jer se ti
sadraji izuavaju u okviru drugih predmeta na prvoj godini). Za ovaj kurs
preporuujemo i upoznavanje sa glavama 3 i 4, a upoznavanje sa glavama 10 i
12 preporuujemo za drugi semestar.
Na kraju veine poglavlja naveden je vei broj pitanja i zadataka koji mogu
da slue za proveru znanja. Meu ovim pitanjima su praktino sva pitanja
koja su zadata na testovima i ispitima iz predmeta Programiranje 1 u peri-
odu od pet godina. Odgovori na pitanja nisu eksplicitno navoeni, jer su ve
implicitno sadrani u osnovnom tekstu knjige. Na kraju knjige navedena su
reenja zadataka, te se moe smatrati da ova knjiga obuhvata i potpunu prateu
zbirku zadataka. Za zadatka tipa ta ispisuje naredni program? nisu navoeni
odgovori jer italac to moe da proveri na svom raunaru (i knjiga pokuava
da ohrabri itaoca da itanje knjige kombinuje sa radom na raunaru).
U pripremi knjige koristili smo mnoge izvore, pre svega sa interneta. Od
8
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
izvora o jeziku C, pomenimo ovde znamenitu knjigu Programski jezik C (The
C Programming Language, K&R) Brajana Kernigana i Denisa Riija koja je
dugo sluila kao nezvanini standard jezik, knjigu Knjiga o C-u (The C Book)
Majka Banahana, Deklana Brejdija i Marka Dorana, kao i ISO standarde jezika
C. Za pripremu glave Algoritmi i izraunljivost koristili smo knjigu Teorija al-
goritama, jezika i automata - zbirka zadataka, Irene Spasi i Predraga Janiia.
Na veoma paljivom itanju i brojnim korisnim savetima zahvaljujemo re-
cenzentima Gordani Pavlovi-Laeti, Miodragu ivkoviu i Draganu Uroe-
viu. Na brojnim sugestijama i ispravkama zahvalni smo i nastavnicima Matem-
atikog fakulteta Mileni Vujoevi-Janii, Nenadu Mitiu i Mladenu Nikoliu,
kao i studentima Nikoli Premevskom, Mladenu Canoviu, Nemanji Mioviu,
Vojislavu Grujiu, Stefanu oreviu, Petru Vukmiroviu, Bobanu Piskuliu,
Jani Proti, Ljubici Peleksi, Ivanu Baleviu, Danielu Doi, Milou Samardiji,
Stefanu Saviu, Petru Kovrliji i Tomislavu Milovanoviu.
Ova knjiga dostupna je (besplatno) u elektronskom obliku preko internet
strana autora. Sadraj tampanog i elektronskog izdanja je identian. Be-
splatna dostupnost elektronskog oblika knjige odraava stav autora o otvorenim
sadrajima kdu programa i sadraju knjiga.
Autori
Beograd, april 2015. godine
9
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Deo I
Osnovni pojmovi raunarstva i
programiranja
10
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Glava 1
Raunarstvo i raunarski sistemi
Raunarstvo i informatika predstavljaju jednu od najatraktivnijih i naj-
vanijih oblasti dananjice. ivot u savremenom drutvu ne moe se zamis-
liti bez korienja razliitih raunarskih sistema: stonih i prenosnih raunara,
tableta, pametnih telefona, ali i raunara integrisanih u razliite maine (au-
tomobile, avione, industrijske maine, itd). Definicija raunarskog sistema je
prilino iroka. Moe se rei da se danas pod digitalnim raunarskim sistemom
(raunarom) podrazumeva maina koja moe da se programira da izvrava ra-
zliite zadatke svoenjem na elementarne operacije nad brojevima. Brojevi
se, u savremenim raunarima, zapisuju u binarnom sistemu, kao nizovi nula
i jedinica tj. binarnih cifara, tj. bitova (engl. bit, od binary digit). Koristei
bitova, moe se zapisati 2 razliitih vrednosti. Na primer, jedan bajt(B)oznaava osam bitova i moe da reprezentuje 28, tj. 256 razliitih vrednosti.1
Raunarstvo se bavi izuavanjem raunara, ali i optije, izuavanjem teorije
i prakse procesa raunanja i primene raunara u raznim oblastima nauke,
tehnike i svakodnevnog ivota
2
.
Raunari u dananjem smislu nastali su polovinom XX veka, ali koreni
raunarstva su mnogo stariji od prvih raunara. Vekovima su ljudi stvarali
mehanike i elektromehanike naprave koje su mogle da reavaju neke numer-
ike zadatke. Dananji raunari su programabilni, tj. mogu da se isprogrami-
raju da vre razliite zadatke. Stoga je oblast programiranja, kojom se ova
knjiga bavi, jedna od najznaajnijih oblasti raunarstva. Za funkcionisanje
modernih raunara neophodni su i hardver i softver. Hardver (tehniki sis-
tem raunara) ine opipljive, fizike komponente raunara: procesor, memo-
1
Koliina podataka i kapacitet memorijskih komponenti savremenih raunara obino se
iskazuje u bajtovima ili izvedenim jedinicama. Obino se smatra da je jedan kilobajt (KB)
jednak 1024 bajtova (mada neke organizacije podrazumevaju da je jedan KB jednak 1000
bajtova). Slino, jedan megabajt (MB) je jednak 1024 KB ili 10242 B, jedan gigabajt (GB)je jednak 1024 MB, a jedan teraabajt (TB) je jednak 1024 GB.
2
esto se kae da se raunarstvo bavi raunarima isto onoliko koliko se astronomija bavi
teleskopima, a biologija mikroskopima. Raunari nisu sami po sebi svrha i samo su sredstvo
koje treba da pomogne u ostvarivanju razliitih zadataka.
11
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
12 1. Raunarstvo i raunarski sistemi
rija, matina ploa, hard disk, DVD ureaj, itd. Softver (programski sistem
raunara) ine raunarski programi i pratei podaci koji odreuju izrauna-
vanja koja vri raunar. Raunarstvo je danas veoma iroka i dobro utemeljena
nauna disciplina sa mnotvom podoblasti.
1.1 Rana istorija raunarskih sistema
Programiranje u savremenom smislu postalo je praktino mogue tek kra-
jem Drugog svetskog rata, ali je njegova istorija znatno starija. Prvi pre-
cizni postupci i sprave za reavanje matematikih problema postojali su jo
u vreme antikih civilizacija. Na primer, kao pomo pri izvoenju osnovnih
matematikih operacija koriene su raunaljke zvane abakus. U IX veku per-
sijski matematiar Al Horezmi
3
precizno je opisao postupke raunanja u indo-
arapskom dekadnom brojevnom sistemu (koji i danas predstavlja najkorieniji
brojevni sistem). U XIII veku Leonardo Fibonai
4
doneo je ovaj nain zapi-
sivanja brojeva iz Azije u Evropu i to je bio jedan od kljunih preduslova za
razvoj matematike i tehnikih disciplina tokom renesanse. Otkrie logaritma
omoguilo je svoenje mnoenja na sabiranje, dodatno olakano raznovrsnim
analognih spravama (npr. klizni lenjir iber)
5
. Prve mehanike sprave koje
su mogle da potpuno automatski izvode aritmetike operacije i pomau u rea-
vanju matematikih zadataka su napravljene u XVII veku. Blez Paskal
6
kon-
struisao je 1642. godine mehanike sprave, kasnije nazvane Paskaline, koje su
sluile za sabiranje i oduzimanje celih brojeva. Gotfrid Lajbnic
7
konstruisao je
1672. godine mainu koja je mogla da izvrava sve etiri osnovne aritmetike
operacije (sabiranje, oduzimanje, mnoenje i deljenje) nad celim brojevima.
Ova maina bila je zasnovana na dekadnom brojevnom sistemu, ali Lajbnic je
prvi predlagao i korienje binarnog brojevnog sistema u raunanju.
Slika 1.1: Abakus. iber. Paskalina
3
Muhammad ibn Musa al-Khwarizmi (780850), persijski matematiar.
4
Leonardo Pisano Fibonacci, (11701250), italijanski matematiar iz Pize.
5
Zanimljivo je da su klizni lenjiri noeni na pet Apolo misija, ukljuujui i onu na Mesec,
da bi astronautima pomagali u potrebnim izraunavanjima.
6
Blaise Pascal (16231662), francuski filozof, matematiar i fiziar. U njegovu ast jedan
programski jezik nosi ime PASCAL.
7
Gottfried Wilhelm Leibniz (16461716), nemaki filozof i matematiar.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
13 1. Raunarstvo i raunarski sistemi
Mehanike maine. ozef Mari akard
8
konstruisao je 1801. godine prvu
programabilnu mainu mehaniki tkaki razboj koji je koristio buene kar-
tice kao svojevrsne programe za generisanje kompleksnih ara na tkanini. Svaka
rupa na kartici odreivala je jedan pokret maine, a svaki red na kartici odgo-
varao je jednom redu are.
U prvoj polovini XIX veka, arls Bebid
9
dizajnirao je, mada ne i real-
izovao, prve programabilne raunske maine. Godine 1822. zapoeo je rad
na diferencijskoj maini koja je trebalo da rauna vrednosti polinomijalnih
funkcija (i eliminie este ljudske greke u tom poslu) u cilju izrade to pre-
ciznijih logaritamskih tablica. Ime je dobila zbog toga to je koristila tzv. metod
konanih razlika da bi bila eliminisana potreba za mnoenjem i deljenjem.
Maina je trebalo da ima oko 25000 delova i da se pokree runo, ali nije
nikada zavrena
10
. Ubrzo nakon to je rad na prvom projektu utihnuo bez
rezultata, Bebid je zapoeo rad na novoj maini nazvanoj analitika maina.
Osnovna razlika u odnosu na sve prethodne maine, koje su imale svoje speci-
fine namene, bila je u tome to je analitika maina zamiljena kao raun-
ska maina opte namene koja moe da se programira (programima zapisanim
na buenim karticama, slinim akardovim karticama). Program zapisan na
karticama kontrolisao bi mehaniki raunar (pokretan parnom mainom) i
omoguavao sekvencijalno izvravanje naredbi, grananje i skokove, slino pro-
gramima za savremene raunare. Osnovni delovi raunara trebalo je da budu
mlin (engl. mill) i skladite (engl. store), koji po svojoj funkcionalnosti sasvim
odgovaraju procesoru i memoriji dananjih raunara. Ada Bajron
11
zajedno
sa Bebidem napisala je prve programe za analitiku mainu i, da je maina
uspeno konstruisana, njeni programi bi mogli da raunaju odreene sloene ni-
zove brojeva (takozvane Bernulijeve brojeve). Zbog ovoga se ona smatra prvim
programerom u istoriji (i njoj u ast jedan programski jezik nosi ime Ada).
Ona je bila i prva koja je uvidela da se raunske maine mogu upotrebiti i za
nematematike namene, ime je na neki nain anticipirala dananje namene
digitalnih raunara.
Elektromehanike maine. Elektromehanike maine za raunanje koristili
su se od sredine XIX veka do vremena Drugog svetskog rata.
Jedna od prvih je maina za itanje buenih kartica koju je konstruisao
Herman Holerit
12
. Ova maina koriena je 1890. za obradu rezultata popisa
stanovnitva u SAD. Naime, obrada rezultata popisa iz 1880. godine trajala
je vie od 7 godina, a zbog naglog porasta broja stanovnika procenjeno je
8
Joseph Marie Jacquard (17521834), francuski trgovac.
9
Charles Babbage (17911871), engleski matematiar, filozof i pronalaza.
10
Dosledno sledei Bebidev dizajn, 1991. godine (u nauno-popularne svrhe) uspeno
je konstruisana diferencijska maina koja radi besprekorno. Neto kasnije, konstruisan je i
tampa koji je Bebid dizajnirao za diferencijsku mainu, tj. tamparska presa povezana
sa parnom mainom koja je tampala izraunate vrednosti.
11
Augusta Ada King (ro. Byron), Countess of Lovelace, (18151852), engleska matem-
atiarka. U njenu ast nazvan je programski jezik ADA.
12
Herman Hollerith (18601929), ameriki pronalaza.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
14 1. Raunarstvo i raunarski sistemi
Slika 1.2: akardov razboj. Bebidova diferencijska maina.
da bi obrada rezultata iz 1890. godine trajala vie od 10 godina, to je bilo
neprihvatljivo mnogo. Holerit je sproveo ideju da se podaci prilikom popisa za-
pisuju na mainski itljivom medijumu (na buenim karticama), a da se kasnije
obrauju njegovom mainom. Koristei ovaj pristup obrada rezultata popisa
uspeno je zavrena za godinu dana. Od Holeritove male kompanije kasnije je
nastala uvena kompanija IBM.
Godine 1941, Konrad Cuze
13
konstruisao je 22-bitnu mainu raunanje Z3
koji je imao izvesne mogunosti programiranja (podrane su bile petlje, ali
ne i uslovni skokovi), te se esto smatra i prvim realizovanim programabilnim
raunarom
14
. Cuzeove maine tokom Drugog svetskog rata naile su samo na
ograniene primene. Cuzeova kompanija proizvela je oko 250 razliitih tipova
raunara do kraja ezdesetih godina, kada je postala deo kompanije Simens
(nem. Siemens).
U okviru saradnje kompanije IBM i univerziteta Harvard, tim Hauarda
Aikena
15
zavrio je 1944. godine mainu Harvard Mark I . Ova maina itala je
instrukcije sa buene papirne trake, imala je preko 760000 delova, duinu 17m,
visinu 2.4m i masu 4.5t. Mark I mogao je da pohrani u memoriji (korienjem
elektromehanikih prekidaa) 72 broja od po 23 dekadne cifre. Sabiranje i
oduzimanje dva broja trajalo je treinu, mnoenje est, a deljenje petnaest
sekundi.
Elektronski raunari. Elektronski raunari koriste se od kraja 1930-ih do
danas.
Jedan od prvih elektronskih raunara ABC (specijalne namene reavanje
13
Konrad Zuse (19101995), nemaki inenjer.
14
Maini Z3 prethodile su jednostavnije maine Z1 i Z2, izgraeni 1938. i 1940. godine.
15
Howard Hathaway Aiken (19001973).
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
15 1. Raunarstvo i raunarski sistemi
Slika 1.3: Holeritova maina. Harvard Mark I. ENIAC (proces reprogrami-
ranja).
sistema linearnih jednaina) napravili su 1939. godine Atanasov
16
i Beri
17
.
Maina je prva koristila binarni brojevni sistem i elektrine kondenzatore (engl.
capacitor) za skladitenje bitova sistem koji se u svojim savremenim vari-
jantama koristi i danas u okviru tzv. DRAM memorije. Maina nije bila pro-
gramabilna.
Krajem Drugog svetskog rada, u Engleskoj, u Bleli parku (engl. Bletch-
ley Park) u kojem je radio i Alan Tjuring
18
, konstruisan je raunar Kolos
(engl. Colossus) namenjen deifrovanju nemakih poruka. Raunar je omoguio
razbijanje nemake ifre zasnovane na maini Enigma, zahvaljujui emu su
saveznici bili u stanju da prate komunikaciju nemake podmornike flote, to
je znaajno uticalo na ishod Drugog svetskog rata.
U periodu izmeu 1943. i 1946. godine od strane amerike vojske i tima
univerziteta u Pensilvaniji koji su predvodili Don Mokli
19
i Dej Ekert
20
kon-
struisan je prvi elektronski raunar opte namene ENIAC (Electronic Nu-
merical Integrator and Calculator). Imao je 1700 vakuumskih cevi, duinu
30m i masu 30t. Raunske operacije izvravao je hiljadu puta bre od elek-
tromehanikih maina. Osnovna svrha bila mu je jedna specijalna namena
raunanje trajektorije projektila. Bilo je mogue da se maina preprogramira i
za druge zadatke ali to je zahtevalo intervencije na preklopnicima i kablovima
koje su mogle da traju danima.
16
John Vincent Atanasoff (19031995).
17
Clifford Edward Berry (19181963).
18
Alan Turing (19121954), britanski matematiar.
19
John William Mauchly (19071980).
20
J. Presper Eckert (19191995).
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
16 1. Raunarstvo i raunarski sistemi
1.2 Raunari fon Nojmanove arhitekture
Rane maine za raunanje nisu bile programabilne ve su radile po un-
apred fiksiranom programu, odreenom samom konstrukcijom maine. Takva
arhitektura se i danas koristi kod nekih jednostavnih maina, na primer, kod
kalkulatora (digitrona). Da bi izvravali nove zadatke, rani elektronski rau-
nari nisu programirani u dananjem smislu te rei, ve su sutinski redizajni-
rani. Tako su, na primer, operaterima bile potrebne nedelje da bi prespojili
kablove u okviru kompleksnog sistema ENIAC i tako ga instruisali da izvrava
novi zadatak.
Potpuna konceptualna promena dola je kasnih 1940-ih, sa pojavom rauna-
ra koji programe na osnovu kojih rade uvaju u memoriji zajedno sa podacima
raunara sa skladitenim programima (engl. stored program computers). U
okviru ovih raunara, postoji jasna podela na hardver i softver. Iako ideje
za ovaj koncept datiraju jo od arlsa Bebida i njegove analitike maine i
nastavljaju se kroz radove Tjuringa, Cuzea, Ekerta, Moklija, za rodonaelnika
ovakve arhitekture raunara smatra se Don fon Nojman
21
. Fon Nojman se u
ulozi konsultanta prikljuio timu Ekerta i Moulija i 1945. godine je u svom
izvetaju EDVAC (Electronic Discrete Variable Automatic Computer) opisao
arhitekturu koja se i danas koristi u najveem broju savremenih raunara i u
kojoj se programi mogu uitavati isto kao i podaci koji se obrauju. Rau-
nar EDVAC, naslednik raunara ENIAC, koristio je binarni zapis brojeva, u
memoriju je mogao da upie hiljadu 44-bitnih podataka i bio je jedan od prvih
raunara koji su mogli da uitaju programe u memoriju. Iako je dizajn rau-
nara EDVAC bio prvi opis fon Nojmanove arhitekture, pre 1951. godine - kada
je EDVAC puten u rad, ve je nekoliko raunara sline arhitekture bilo kon-
struisano i funkcionalno njega (Mark 1 i EDSAC - 1949. godine i MESM u
tadanjem SSSR, 1950. godine).
Osnovni elementi fon Nojmanove arhitekture raunara su procesor (koji
ine aritmetiko-logika jedinica, kontrolna jedinica i registri) i glavna memo-
rija, koji su meusobno povezani. Ostale komponente raunara (npr. ulazno-
izlazne jedinice, spoljanje memorije, . . . ) smatraju se pomonim i povezuju
se na centralni deo raunara koji ine procesor i glavna memorija. Sva obrada
podataka vri se u procesoru. U memoriju se skladite podaci koji se obrauju,
ali i programi, predstavljeni nizom elementarnih instrukcija (kojima se proce-
soru zadaje koju akciju ili operaciju da izvri). I podaci i programi se zapisuju
obino kao binarni sadraj i nema nikakve sutinske razlike izmeu zapisa pro-
grama i zapisa podataka. Tokom rada, podaci i programi se prenose izmeu
procesora i memorije. S obzirom na to da i skoro svi dananji raunari imaju
fon Nojmanovu arhitekturu, nain funkcionisanja ovakvih raunara bie opisan
detaljnije u poglavlju o savremenim raunarskim sistemima.
Moderni programabilni raunari se, po pitanju tehnologije koju su koristili,
mogu grupisati u etiri generacije, sve zasnovane na fon Nojmanovoj arhitek-
21
John Von Neumann (19031957), ameriki matematiar.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
17 1. Raunarstvo i raunarski sistemi
turi.
Slika 1.4: Osnovni gradivni elementi korieni u etiri generacije raunara:
vakuumska cev, tranzistor, integrisano kolo i mikroprocesor
I generacija raunara (od kraja 1930-ih do kraja 1950-ih) koristila je vaku-
umske cevi kao logika kola i magnetne doboe (a delom i magnetne trake) za
memoriju. Za programiranje su korieni mainski jezik i asembler a glavne
primene su bile vojne i naune. Raunari su uglavnom bili unikatni (tj. za
veinu nije postojala serijska proizvodnja). Prvi realizovani raunari fon No-
jmanove arhitekture bili su Manesterska Beba (engl. Manchester Baby)
eksperimentalna maina, razvijena 1949. na Univerzitetu u Manesteru, na
kojoj je testirana tehnologija vakuumskih cevi i njen naslednik Manesterski
Mark 1 (engl. Manchester Mark 1) , EDSAC razvijen 1949. na Univerzitetu
u Kembridu, MESM razvijen 1950. na Kijevskom elektrotehnikom institutu
i EDVAC koji je prvi dizajniran, ali napravljen tek 1951. na Univerzitetu u
Pensilvaniji. Tvorci raunara EDVAC, poeli su 1951. godine proizvodnju pr-
vog komercijalnog raunara UNIVAC UNIVersal Automatic Computer koji
je prodat u, za to doba neverovatnih, 46 primeraka.
II generacija raunara (od kraja 1950-ih do polovine 1960-ih) koristila je
tranzistore umesto vakuumskih cevi. Iako je tranzistor otkriven jo 1947. go-
dine, tek sredinom pedesetih poinje da se koristi umesto vakuumskih cevi kao
osnovna elektronska komponenta u okviru raunara. Tranzistori su izgraeni
od tzv. poluprovodnikih elemenata (obino silicijuma ili germanijuma). U
poreenju sa vakuumskih cevima, tranzistori su manji, zahtevaju manje en-
ergije te se manje i greju. Tranzistori su unapredili ne samo procesore i mem-
oriju ve i spoljanje ureaje. Poeli su da se iroko koriste magnetni diskovi
i trake, zapoelo je umreavanja raunara i ak korienje raunara u zabavne
svrhe (implementirana je prva raunarska igra Spacewar za raunar PDP-1 ).
U ovo vreme razvijeni su i prvi jezici vieg nivoa (FORTRAN, LISP, ALGOL,
COBOL). U to vreme kompanija IBM dominirala je tritem samo raunar
IBM 1401, prodat u vie od deset hiljada primeraka, pokrivao je oko treinu
tada postojeeg trita.
III generacija raunara (od polovine 1960-ih do sredine 1970-ih) bila je za-
snovana na integrisanim kolima smetenim na silicijumskim (mikro)ipovima.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
18 1. Raunarstvo i raunarski sistemi
Prvi raunar koji je koristio ovu tehnologiju bio je IBM 360, napravljen 1964. go-
dine.
Slika 1.5: Integrisana kola dovela su do minijaturizacije i kompleksni iani
spojevi su mogli biti realizovani na izuzetno maloj povrini.
Nova tehnologija omoguila je poslovnu primenu raunara u mnogim oblas-
tima. U ovoj eri dominirali su mejnfrejm (engl. mainframe)mejnfrejm raunari
raunari koji su bili izrazito moni za to doba, ija se brzina merila milionima
instrukcija u sekundi (engl. MIPS; na primer, neki podmodeli raunara IBM
360 imali su brzinu od skoro 1 MIPS) i koji su imali mogunost skladitenja i
obrade velike koliine podataka te su korieni od strane vlada i velikih korpo-
racija za popise, statistike obrade i slino. Kod raunara ove generacije uve-
den je sistem deljenja vremena (engl. timesharing) koji dragoceno procesorsko
vreme raspodeljuje i daje na uslugu razliitim korisnicima koji istovremeno
rade na raunaru i komuniciraju sa njim putem specijalizovanih terminala. U
ovo vreme uvedeni su prvi standardi za jezike vieg nivoa (npr. ANSI FOR-
TRAN). Korieni su razliiti operativni sistemi, uglavnom razvijeni u okviru
kompanije IBM. Sa udelom od 90%, kompanija IBM je imala apsolutnu domi-
naciju na tritu ovih raunara.
Pored mejnfrejm raunara, u ovom periodu iroko su korieni i mini rau-
nari (engl. minicomputers) koji se mogu smatrati prvim oblikom linih (person-
alnih) raunara. Procesor je, uglavnom, bio na raspolaganju iskljuivo jednom
korisniku. Obino su bili veliine ormana i retko su ih posedovali pojedinci
(te se ne smatraju kunim raunarima). Tritem ovih raunara dominirala je
kompanija DEC Digital Equipment Corporation sa svojim serijama raunara
poput PDP-8 i VAX. Za ove raunare, obino se vezuje operativni sistem Unix
i programski jezik C razvijeni u Belovim laboratorijama (engl. Bell Laborato-
ries), a esto i hakerska
22
kultura nastala na univerzitetu MIT (engl. Mas-
sachusetts Institute of Technology).
IV generacija raunara (od ranih 1970-ih) zasnovana je na visoko inte-
grisanim kolima kod kojih je na hiljade kola smeeno na jedan silikonski ip.
22
Termin haker se obino koristi za osobe koje neovlaeno pristupaju raunarskim sis-
temima, ali hakeraj kao programerska podkultura podrazumeva anti-autoritaran pristup
razvoju softvera, obino povezan sa pokretom za slobodan softver. U oba sluaja, hakeri
su pojedinici koji na inovativan nain modifikuju postojee hardverske i softverske sisteme.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
19 1. Raunarstvo i raunarski sistemi
Slika 1.6: Mejnfrejm raunar: IBM 7094. Mini raunar: DEC PDP 7
U kompaniji Intel 1971. godine napravljen je prvi mikroprocesor Intel 4004
celokupna centralna procesorska jedinica bila je smetena na jednom ipu. Iako
prvobitno namenjena za ugradnju u kalkulatore, ova tehnologija omoguila je
razvoj brzih a malih raunara pogodnih za linu tj. kunu upotrebu.
asopis Popular electronics nudio je 1975. godine itaocima mogunost
naruivanja delova za sklapanje mikroraunara MITS Altair 8800 zasnovanog
na mikroprocesoru Intel 8080 (nasledniku mikroprocesora Intel 4004 ). In-
teresovanje meu onima koji su se elektronikom bavili iz hobija bio je izuzetno
pozitivan i samo u prvom mesecu prodato je nekoliko hiljada ovih uradi-sm
raunara. Smatra se da je Altair 8800 bio inicijalna kapisla za revoluciju
mikroraunara koja je usledila narednih godina. Altair se vezuje i za nas-
tanak kompanijeMicrosoft danas jedne od dominantnih kompanija u oblasti
proizvodnje softvera. Naime, prvi proizvod kompanije Microsoft bio je inter-
pretator za programski jezik BASIC za Altair 8800.
Nakon Altaira pojavljuje se jo nekoliko raunarskih kompleta na skla-
panje. Prvi mikroraunar koji je prodavan ve sklopljen bio je Apple, na ijim
temeljima je nastala istoimena kompanija, danas jedan od lidera na tritu
raunarske opreme.
Kuni raunari koristili su se sve vie uglavnom od strane entuzijasta
za jednostavnije obrade podataka, uenje programiranja i igranje rau-
narskih igara. Kompanija Commodore je 1977. godine predstavila svoj rau-
narom Commodore PET koji je zabeleio veliki uspeh. Commodore 64, jedan
od najuspenijih raunara za kunu upotrebu, pojavio se 1982. godine. Iz
iste kompanije je i serija Amiga raunara sa kraja 1980-ih i poetka 1990-ih.
Pored kompanije Commodore, znaajni proizvoai raunara toga doba bili su
i Sinclair (sa veoma popularnim modelom ZX Spectrum), Atari, Amstrad, itd.
Kuni raunari ove ere bili su obino jeftini, imali su skromne karakteristike i
najee koristili kasetofone i televizijske ekrane kao ulazno-izlazne ureaje.
Najznaajnija raunarska kompanija toga doba IBM ukljuila se na
trite kunih raunara 1981. godine, modelom IBM PC 5150, poznatijem jed-
nostavno kao IBM PC ili PC (engl. Personal computer). Zasnovan na In-
telovom mikroprocesoru Intel 8088, ovaj raunar veoma brzo je zauzeo trite
raunara za linu poslovnu upotrebu (obrada teksta, tabelarna izraunavanja,
. . . ). Pratei veliki uspeh IBM PC raunara, pojavio se odreen broj klonova
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
20 1. Raunarstvo i raunarski sistemi
Slika 1.7: Prvi mikroprocesor: Intel 4004. Naslovna strana asopisa Popular
electronics sa Altair 8800. Commodore 64. IBM PC 5150.
raunara koji nisu proizvedeni u okviru kompanije IBM, ali koji su kompat-
ibilni sa IBM PC raunarima. PC arhitektura vremenom je postala standard
za kune raunare. Sredinom 1980-ih, pojavom naprednijih grafikih (VGA) i
zvunih (SoundBlaster) kartica, IBM PC i njegovi klonovi stekli su mogunost
naprednih multimedijalnih aplikacija i vremenom su sa trita istisli sve ostale
proizvoae. I naslednici originalnog IBM PC raunara (IBM PC/XT, IBM
PC/AT, . . . ) bili su zasnovani na Intelovim mikroprocesorima, pre svega na
x86 seriji (Intel 80286, 80386, 80486) i zatim na seriji Intel Pentium. Opera-
tivni sistem koji se tradicionalno vezuju uz PC raunare dolaze iz kompanije
Microsoft prvo MS DOS, a zatim MS Windows. PC arhitektura podrava i
korienje drugih operativnih sistema (na primer, GNU/Linux).
Jedini veliki konkurent IBM PC arhitekturi koji se sve vreme odrao na
tritu (pre svega u SAD) je serija raunara Macintosh kompanije Apple. Mac-
intosh, koji se pojavio 1984., je prvi komercijalni kuni raunar sa grafikim
korisnikim interfejsom i miem. Operativni sistem koji se i danas koristi na
Apple raunarima je Mac OS.
Iako su prva povezivanja udaljenih raunara izvrena jo krajem 1960-ih
godina, pojavom interneta (engl. internet) i veba (engl. World Wide Web
WWW), veina raunara postaje meusobno povezana sredinom 1990-ih god-
ina. Danas se veliki obim poslovanja izvrava u internet okruenju, a domen
korienja raunara je veoma irok. Dolo je do svojevrsne informatike revolu-
cije koja je promenila savremeno drutvo i svakodnevni ivot. Na primer, tokom
prve decenije XXI veka dolo je do pojave drutvenih mrea (engl. social net-
works) koje postepeno preuzimaju ulogu osnovnog medijuma za komunikaciju.
Tritem dananjih raunara dominiraju raunari zasnovani na PC arhitek-
turi i Apple Mac raunari. Pored stonih (engl. desktop) raunara popularni
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
21 1. Raunarstvo i raunarski sistemi
Slika 1.8: Stoni raunar. Prenosni raunar: IBM ThinkPad. Tablet: Apple
Ipad 2. Pametni telefon: Samsung Galaxy S2.
su i prenosni (engl. notebook ili laptop) raunari. U najnovije vreme, javlja
se trend tehnoloke konvergencije koja podrazumeva stapanje razliitih ure-
aja u jedinstvene celine, kao to su tableti (engl. tablet) i pametni telefoni
(engl. smartphone). Operativni sistemi koji se danas uglavnom koriste na ovim
ureajima su IOS kompanije Apple, kao i Android kompanije Google.
Pored linih raunara u IV generaciji se i dalje koriste mejnfrejm raunari
(na primer, IBM Z serija) i superraunari (zasnovani na hiljadama procesora).
Na primer, kineski superraunar Tianhe-2 radi brzinom od preko 30 petaflopsa
(dok proseni lini raunar radi brzinom reda 10 gigaflopsa).
23
1.3 Oblasti savremenog raunarstva
Savremeno raunarstvo ima mnogo podoblasti, kako praktinih, tako i teori-
jskih. Zbog njihove isprepletenosti nije jednostavno sve te oblasti sistematizo-
vati i klasifikovati. U nastavku je dat spisak nekih od oblasti savremenog
raunarstva (u skladu sa klasifikacijom amerike asocijacije ACM Associa-
tion for Computing Machinery, jedne od najveih i najuticajnijih raunarskih
zajednica):
Algoritmika (procesi izraunavanja i njihova sloenost); Strukture podataka (reprezentovanje i obrada podataka);23
Flops je mera raunarskih performansi, posebno pogodna za izraunavanja nad broje-
vima u pokretnom zarezu (i pogodnija nego generika mera koja se odnosi na broj instrukcija
u sekundi). Broj flopsa govori koliko operacija nad brojevima u pokretnom zarezu moe da
izvri raunar u jednoj sekundi. Brzina dananjih raunara se obino izraava u gigaflopsima
(109 flopsa), teraflopsima (1012 flopsa) i petaflopsima (1015 flopsa).
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
22 1. Raunarstvo i raunarski sistemi
Programski jezici (dizajn i analiza svojstava formalnih jezika za opisivanjealgoritama);
Programiranje (proces zapisivanja algoritama u nekom programskom je-ziku);
Softversko inenjerstvo (proces dizajniranja, razvoja i testiranja pro-grama);
Prevoenje programskih jezika (efikasno prevoenje viih programskihjezika, obino na mainski jezik);
Operativni sistemi (sistemi za upravljanje raunarom i programima); Mreno raunarstvo (algoritmi i protokoli za komunikaciju izmeu rau-nara);
Primene (dizajn i razvoj softvera za svakodnevnu upotrebu); Istraivanje podataka (pronalaenje relevantnih informacija u velikim sku-povima podataka);
Vetaka inteligencija (reavanje problema u kojima se javlja kombina-torna eksplozija);
Robotika (algoritmi za kontrolu ponaanja robota); Raunarska grafika (analiza i sinteza slika i animacija); Kriptografija (algoritmi za zatitu privatnosti podataka); Teorijsko raunarstvo (teorijske osnove izraunavanja, raunarska matem-atika, verifikacija softvera, itd).
1.4 Hardver savremenih raunara
Hardver ine opipljive, fizike komponente raunara. Iako je u osnovi savre-
menih raunarskih sistema i dalje fon Nojmanova maina (procesor i memo-
rija), oni se danas ne mogu zamisliti bez niza hardverskih komponenti koje
olakavaju rad sa raunarom.
Iako na prvi pogled deluje da se jedan uobiajeni stoni raunar sastoji od
kuita, monitora, tastature i mia, ova podela je veoma povrna, podlona
promenama (ve kod prenosnih raunara, stvari izgledaju znatno drugaije) i
nikako ne ilustruje koncepte bitne za funkcionisanje raunara. Mnogo znaa-
jnija je podela na osnovu koje raunar ine:
procesor tj. centralna procesorska jedinica (engl. Central Processing Unit,CPU), koja obrauje podatke;
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
23 1. Raunarstvo i raunarski sistemi
glavna memorija (engl. main memory), u kojoj se istovremeno uvaju ipodaci koji se obrauju i trenutno pokrenuti programi (takoe zapisani
binarno, u obliku podataka);
razliiti periferijski ureaji ili ulazno-izlazne jedinice (engl. peripherals,input-output devices, IO devices), kao to su mievi, tastature, ekrani,
tampai, diskovi, a koje slue za komunikaciju korisnika sa sistemom i
za trajno skladitenje podataka i programa.
Sve nabrojane komponente meusobno su povezane i podaci se tokom rada
raunara prenose od jedne do druge. Veza izmeu komponenti uspostavlja se
hardverskim sklopovima koji se nazivaju magistrale (engl. bus). Magistrala
obuhvata provodnike koji povezuju ureaje, ali i ipove koji kontroliu protok
podataka. Svi periferijski ureaji se sa memorijom, procesorom i magistralama
povezuju hardverskim sklopovima koji se nazivaju kontroleri . Matina ploa
(engl. motherboard) je tampana ploa na koju se prikljuuju procesor, mem-
orijski ipovi i svi periferijski ureaji. Na njoj se nalaze ipovi magistrale, a
danas i mnogi kontroleri periferijskih ureaja. Osnovu hardvera savremenih
raunara, dakle, ine sledee komponente:
Procesori. Procesor je jedna od dve centralne komponente svakog rau-
narskog sistema fon Nojmanove arhitekture. Svi delovi procesora su danas
objedinjeni u zasebnu jedinicu (CPU) realizovanu na pojedinanom ipu
mikroprocesoru. Procesor se sastoji od kontrolne jedinice (engl. Control Unit)
koja upravlja njegovim radom i aritmetiko-logike jedinice (engl. Arithmetic
Logic Unit) koja je zaduena za izvoenje aritmetikih operacija (sabiranje,
oduzimanje, mnoenje, poreenje, . . . ) i logikih operacija (konjunkcija, ne-
gacija, . . . ) nad brojevima. Procesor sadri i odreeni, manji broj, registara
koji privremeno mogu da uvaju podatke. Registri su obino fiksirane irine
(8 bitova, 16 bitova, 32 bita, 64 bita). Komunikacija sa memorijom se ranije
vrila iskljuivo preko specijalizovanog registra koji se nazivao akumulator. Ar-
itmetiko logika jedinica sprovodi operacije nad podacima koji su smeteni u
registrima i rezultate ponovo smeta u registre. Kontrolna jedinica procesora
ita instrukciju po instrukciju programa zapisanog u memoriji i na osnovu njih
odreuje sledeu akciju sistema (na primer, izvri prenos podataka iz proce-
sora na odreenu memorijsku adresu, izvri odreenu aritmetiku operaciju
nad sadrajem u registrima procesora, uporedi sadraje dva registra i ukoliko
su jednaki izvri instrukciju koja se nalazi na zadatoj memorijskoj adresi i
slino). Brzina procesora meri se u milionima operacija u sekundi (engl. Mil-
lion Instructions Per Second, MIPS) tj. poto su operacije u pokretnom zarezu
najzahtevnije, u broju operacija u pokretnom zarezu u sekundi (engl. FLoat-
ing Point Operations per Second, FLOPS). Dananji standardni procesori rade
oko 10 GFLOPS (deset milijardi operacija u pokretnom zarezu po sekundi).
Dananji procesori mogu da imaju i nekoliko jezgara (engl. core) koja istovre-
meno izvravaju instrukcije i time omoguuju tzv. paralelno izvravanje.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
24 1. Raunarstvo i raunarski sistemi
CPU
Kontrolna
jedinica
Aritmetiko
logika jedinica
registri
Memorija
Ulazni
ureaji
Izlazni
ureaji
magistrala
Slika 1.9: Shema raunara fon Nojmanove arhitekture
Vane karakteristike procesora danas su broj jezgara (obino 1, 2 ili 4),
irina rei (obino 32 bita ili 64 bita) i radni takt (obino nekoliko gigaherca
(GHz)) vei radni takt obino omoguava izvravanje veeg broja operacija
u jedinici vremena.
Memorijska hijerarhija. Druga centralna komponenta fon Nojmanove arhi-
tekture je glavna memorija u koju se skladite podaci i programi. Memorija je
linearno ureeni niz registara (najee bajtova), pri emu svaki registar ima
svoju adresu. Kako se kod ove memorije sadraju moe pristupati u sluajnom
redosledu (bez unapred fiksiranog redosleda), ova memorija se esto naziva
i memorija sa slobodnim pristupom (engl. random access memory, RAM).
Osnovni parametri memorija su kapacitet (danas obino meren gigabajtima
(GB)), vreme pristupa koje izraava vreme potrebno da se memorija pripremi
za itanje odnosno upis podataka (danas obino mereno u nanosekundama
(ns)), kao i protok koji izraava koliinu podataka koji se prenose po jedinici
merenja (danas obino mereno u GBps).
U savremenim raunarskim sistemima, uz glavnu memoriju uspostavlja se
itava hijerarhija memorija koje slue da unaprede funkcionisanje sistema.
Memorije neposredno vezane za procesor koje se koriste iskljuivo dok je rau-
nar ukljuen nazivaju se unutranje memorije, dok se memorije koje se ko-
riste za skladitenje podataka u trenucima kada raunar nije ukljuen nazivaju
spoljne memorije. Procesor obino nema naina da direktno koristi podatke
koji se nalaze u spoljnim memorijama (jer su one znatno sporije od unutran-
jih), ve se pre upotrebe svi podaci prebacuju iz spoljnih u unutranju memo-
riju.
Memorijska hijerarhija predstavlja se piramidom. Od njenog vrha ka dnu
opadaju kvalitet i brzina memorija, ali zato se smanjuje i cena, pa se kapacitet
poveava.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
25 1. Raunarstvo i raunarski sistemi
CPU
registri
Ke memorija
RAM
ROM/BIOS
USB diskovi
hard diskovi
CD, DVD, Blu-ray, magnetne trake
niacena/veikapacitet
veaveliina/manjabrzina
viacena/manjikapacitet
manjaveliina/veabrzina
podnapajanjembeznapajanja
Slika 1.10: Memorijska hijerarhija
Registri procesora predstavljaju najbru memoriju jer se sve aritmetike i
logike operacije izvode upravo nad podacima koji se nalaze u njima.
Ke (engl. cache) je mala koliina brze memorije (nekoliko hiljada puta
manjeg kapaciteta od glavne memorije; obino nekoliko megabajta) koja se
postavlja izmeu procesora i glavne memorije u cilju ubrzanja rada raunara.
Ke se uvodi jer su savremeni procesori postali znatno bri od glavnih mem-
orija. Pre pristupa glavnoj memoriji procesor uvek prvo pristupa keu. Ako
traeni podatak tamo postoji, u pitanju je tzv. pogodak kea (engl. cache hit) i
podatak se dostavlja procesoru. Ako se podatak ne nalazi u keu, u pitanju je
tzv. promaaj kea (engl. cache miss) i podatake se iz glavne memorije prenosi
u ke zajedno sa odreenim brojem podataka koji za njim slede (glavni fak-
tor brzine glavne memorije je njeno kanjenje i praktino je svejedno da li se
prenosi jedan ili vie podataka jer je vreme prenosa malog broja bajtova mnogo
manje od vremena kanjenja). Motivacija ovog pristupa je u tome to programi
esto pravilno pristupaju podacima (obino redom kojim su podaci smeteni u
memoriji), pa je velika verovatnoa da e se naredni traeni podaci i instrukcije
nai u ke-memoriji.
Glavna memorija uva sve podatke i programe koje procesor izvrava. Mali
deo glavne memorije ini ROM (engl. read only memory) nepromenljiva mem-
orija koja sadri osnovne programe koji slue za kontrolu odreenih kompone-
nata raunara (na primer, osnovni ulazno-izlazni sistem BIOS). Znatno vei
deo glavne memorije ini RAM privremena promenljiva memorija sa slobod-
nim pristupom. Terminoloki, podela glavne memorije na ROM i RAM nije
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
26 1. Raunarstvo i raunarski sistemi
najpogodnija jer ove vrste memorije nisu sutinski razliite nepromenljivi
deo (ROM) je takoe memorija sa slobodnim pristupom (RAM). Da bi RAM
memorija bila to bra, izrauje se uvek od poluprovodnikih (elektronskih)
elemenata. Danas se uglavnom realizuje kao sinhrona dinamika memorija
(SDRAM). To znai da se prenos podataka izmeu procesora i memorije vri
u intervalima odreenim otkucajima sistemskog sata (esto se u jednom otku-
caju izvri nekoliko prenosa). Dinamika memorija je znatno jeftinija i jednos-
tavnija, ali zato sporija od statike memorije od koje se obino gradi ke.
Spoljne memorije uvaju podatke trajno, i kada raunar ostane bez elek-
trinog napajanja. Kao centralna spoljna skladita podataka uglavnom se ko-
riste hard diskovi (engl. hard disk) koji uvaju podatke korienjem magnetne
tehnologije, a u novije vreme se sve vie koriste i SSD ureaji (engl. solid state
drive) koji uvaju podatke korienjem elektronskih tzv. fle memorija (engl.
flash memory). Kao prenosne spoljne memorije koriste se uglavnom USB fle-
memorije (izraene u slinoj tehnologiji kao i SSD) i optiki diskovi (CD, DVD,
Blu-ray).
Ulazni ureaji. Osnovni ulazni ureaji dananjih raunara su tastature i
mievi. Prenosni raunari imaju ugraenu tastaturu, a umesto mia moe se
koristiti tzv. taped (engl. touchpad). Tastature i mievi se sa raunarom
povezuju ili kablom (preko PS/2 ili USB prikljuaka) ili beino (najee ko-
rienjem BlueTooth veze). Ovo su uglavnom standardizovani ureaji i nema
velikih razlika meu njima. Skeneri sliku sa papira prenose u raunar. Princip
rada je slian digitalnom fotografisanju, ali prilagoen slikanju papira.
Izlazni ureaji. Osnovni izlazni ureaji savremenih raunara su monitori.
Danas dominiraju monitori tankog i ravnog ekrana (engl. flat panel display),
zasnovani obino na tehnologiji tenih kristala (engl. liquid crystal display,
LCD) koji su osvetljeni pozadinskim LED osvetljenjem. Ipak, jo uvek su
ponegde u upotrebi i monitori sa katodnom cevi (engl. cathode ray tube, CRT).
Grafiki kontroleri koji slue za kontrolu slike koja se prikazuje na monitoru
ili projektoru danas su obino integrisani na matinoj ploi, a ponekad su i na
istom ipu sa samim procesorom (engl. Accelerated Processing Unit, APU).
to se tehnologije tampe tie, danas su najzastupljeniji laserski tampai
i inkdet tampai (engl. inkjet). Laserski tampai su ee crno-beli, dok su
ink-det tampai obino u boji. Sve su dostupniji i 3D tampai.
1.5 Softver savremenih raunara
Softver ine raunarski programi i pratei podaci koji odreuju izrauna-
vanja koje vri raunar. Na prvim raunarima moglo je da se programira
samo na mainski zavisnim programskim jezicima na jezicima specifinim
za konkretnu mainu na kojoj program treba da se izvrava. Polovinom 1950-
ih nastali su prvi jezici vieg nivoa i oni su drastino olakali programiranje.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
27 1. Raunarstvo i raunarski sistemi
Danas se programi obino piu u viim programskim jezicima a zatim prevode
na mainski jezik jezik razumljiv raunaru. Bez obzira na to kako je nastao,
da bi mogao da se izvri na raunaru, program mora da budu smeten u mem-
oriju u obliku binarno zapisanih podataka (tj. u obliku niza nula i jedinica)
koji opisuju instrukcije koje su neposredno podrane arhitekturom raunara.
U ovom poglavlju bie prikazani osnovni principa rada raunara kroz nekoliko
jednostavnih primera programa.
1.5.1 Primeri opisa izraunavanja
Program specifikuje koje operacije treba izvriti da bi se reio neki zadatak.
Principi rada programa mogu se ilustrovati na primeru nekoliko jednostavnih
izraunavanja i instrukcija koje ih opisuju. Ovi opisi izraunavanja dati su u
vidu prirodno-jezikog opisa ali direktno odgovaraju i programima na viim
programskim jezicima.
Kao prvi primer, razmotrimo izraunavanje vrednosti 2+ 3 za datu vred-nost . U programiranju (slino kao i u matematici) podaci se predstavljajupromenljivama. Meutim, promenljive u programiranju (za razliku od matem-
atike) vremenom mogu da menjaju svoju vrednost (tada kaemo da im se
dodeljuje nova vrednost). U programiranju, svakoj promenljivoj pridrueno je
(jedno, fiksirano) mesto u memoriji i tokom izvravanja programa promenljiva
moe da menja svoju vrednost, tj. sadraj dodeljenog memorijskog prostora.
Ako je promenljiva ija je vrednost ulazni parametar oznaena sa , a promen-ljiva ija je vrednost rezultat izraunavanja oznaena sa , onda se pomenutoizraunavanje moe opisati sledeim jednostavnim opisom.
y := 2*x + 3
Simbol * oznaava mnoenje, + sabiranje, a := oznaava da se promenljivoj
sa njene leve strane dodeljuje vrednost izraza sa desne strane.
Kao naredni primer, razmotrimo odreivanje veeg od dva data broja. Ra-
unari (tj. njihovi procesori) obino imaju instrukcije za poreenje brojeva, ali
odreivanje vrednosti veeg broja zahteva nekoliko koraka. Pretpostavimo da
promenljive i sadre dve brojevne vrednosti, a da promenljiva treba dadobije vrednost vee od njih. Ovo izraunavanje moe da se izrazi sledeim
opisom.
ako je x >= y onda
m := x
inae
m := y
Kao malo komplikovaniji primer razmotrimo stepenovanje. Procesori skoro
uvek podravaju instrukcije kojima se izraunava zbir i proizvod dva cela broja,
ali stepenovanje obino nije podrano kao elementarna operacija. Sloenije
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
28 1. Raunarstvo i raunarski sistemi
operacije se mogu ostvariti korienjem jednostavnijih. Na primer, -ti ste-pen broja (tj. vrednost ) mogue je izraunati uzastopnom primenommnoenja: ako se krene od broja 1 i puta sa pomnoi brojem , rezultate biti . Da bi moglo da se osigura da e mnoenje biti izvreno tano puta, koristi se brojaka promenljiva koja na poetku dobija vrednost 0, azatim se, prilikom svakog mnoenja, uveava sve dok ne dostigne vrednost .Ovaj postupak moemo predstaviti sledeim opisom.
s := 1, i := 0
dok je i < n radi sledee:
s := sx, i := i+1
Kada se ovaj postupak primeni na vrednosti = 3 i = 2, izvodi se naredniniz koraka.
s := 1, i := 0, poto je i(=0) manje od
n(=2), vre se dalje ope-
racije
s := sx = 13 = 3, i := i+1 = 0+1 = 1, poto je i(=1) manje odn(=2), vre se dalje ope-
racije
s := sx = 33 = 9, i := i+1 = 1+1 = 2, poto i(=2) nije manje odn(=2), ne vre se dalje
operacije.
1.5.2 Mainski programi
Mainski programi su neposredno vezani za procesor raunara na kojem se
koriste procesor je konstruisan tako da moe da izvrava odreene elemen-
tarne naredbe. Ipak, razvoj najveeg broja procesora usmeren je tako da se
isti mainski programi mogu koristiti na itavim familijama procesora.
Primitivne instrukcije koje podrava procesor su veoma malobrojne i jed-
nostavne (na primer, postoje samo instrukcije za sabiranje dva broja, kon-
junkcija bitova, instrukcija skoka i slino) i nije lako kompleksne i apstraktne
algoritme izraziti korienjem tog uskog skupa elementarnih instrukcija. Ipak,
svi zadaci koje raunari izvravaju svode se na ove primitivne instrukcije.
Asemblerski jezici. Asemblerski (ili simboliki) jezici su jezici koji su veoma
bliski mainskom jeziku raunara, ali se, umesto korienja binarnog sadraja
za zapisivanje instrukcija koriste (mnemotehnike, lako pamtljive) simbolike
oznake instrukcija (tj. programi se unose kao tekst). Ovim se, tehniki, olakava
unos programa i programiranje (programer ne mora da direktno manipulie bi-
narnim sadrajem), pri emu su sve mane mainski zavisnog programiranja i
dalje prisutne. Kako bi ovako napisan program mogao da se izvrava, neop-
hodno je izvriti njegovo prevoenje na mainski jezik (tj. zapisati instrukcije
binarnom azbukom) i uneti na odgovarajue mesto u memoriji. Ovo prevoenje
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
29 1. Raunarstvo i raunarski sistemi
je jednostavno i jednoznano i vre ga jeziki procesori koji se nazivaju asem-
bleri .
Sva izraunavanja u primerima iz poglavlja 1.5.1 su opisana neformalno,
kao uputstva oveku a ne raunaru. Da bi se ovako opisana izraunavanja
mogla sprovesti na nekom raunaru fon Nojmanove arhitekture neophodno je
opisati ih preciznije. Svaka elementarna operacija koju procesor moe da izvri
u okviru programa zadaje se procesorskom instrukcijom svaka instrukcija
instruie procesor da izvri odreenu operaciju. Svaki procesor podrava un-
apred fiksiran, konaan skup instrukcija (engl. instruction set). Svaki program
raunara predstavljen je nizom instrukcija i skladiti se u memoriji raunara.
Naravno, raunari se razlikuju (na primer, po tome koliko registara u proce-
soru imaju, koje instrukcije moe da izvri njihova aritmetiko-logika jedinica,
koliko memorije postoji na raunaru, itd). Meutim, da bi se objasnili osnovni
principi rada raunara nije neophodno razmatrati neki konkretan raunar, ve
se moe razmatrati neki hipotetiki raunar. Pretpostavimo da procesor sadri
tri registra oznaena sa ax, bx i cx i jo nekoliko izdvojenih bitova (tzv. zas-
tavica). Dalje, pretpostavimo da procesor moe da izvrava naredne aritmetike
instrukcije (zapisane ovde u asemblerskom obliku):
Instrukcija add ax, bx oznaava operaciju sabiranja vrednosti brojevakoji se nalaze u registrima ax i bx, pri emu se rezultat sabiranja smeta
u registar ax. Operacija add moe se primeniti na bilo koja dva registra.
Instrukcija mul ax, bx oznaava operaciju mnoenja vrednosti brojevakoji se nalaze u registrima ax i bx, pri emu se rezultat mnoenja smeta
u registar ax. Operacija mul moe se primeniti na bilo koja dva registra.
Instrukcija cmp ax, bx oznaava operaciju poreenja vrednosti brojevakoji se nalaze u registrima ax i bx i rezultat pamti postavljanjem zastavice
u procesoru. Operacija cmp se moe primeniti na bilo koja dva registra.
Program raunara je niz instrukcija koje se obino izvravaju redom, jedna
za drugom. Meutim, poto se javlja potreba da se neke instrukcije ponove vei
broj puta ili da se odreene instrukcije preskoe, uvode se instrukcije skoka.
Da bi se moglo specifikovati na koju instrukciju se vri skok, uvode se labele
oznaena mesta u programu. Pretpostavimo da na procesor moe da izvrava
sledee dve vrste skokova (bezuslovne i uslovne):
Instrukcija jmp label, gde je label neka labela u programu, oznaavabezuslovni skok koji uzrokuje nastavak izvravanja programa od mesta u
programu oznaenog navedenom labelom.
Uslovni skokovi prouzrokuju nastavak izvravanja programa od instruk-cije oznaene navedenom labelom, ali samo ako je neki uslov ispunjen.
Ukoliko uslov nije ispunjen, izvrava se naredna instrukcija. U nas-
tavku e se razmatrati samo instrukcija jge label, koja uzrokuje uslovni
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
30 1. Raunarstvo i raunarski sistemi
skok na mesto oznaeno labelom label ukoliko je vrednost prethodnog
poreenja brojeva bila vee ili jednako.
Tokom izvravanja programa, podaci se nalaze u memoriji i u registrima
procesora. S obzirom na to da procesor sve operacije moe da izvri iskljuivo
nad podacima koji se nalaze u njegovim registrima, svaki procesor podrava
i instrukcije prenosa podataka izmeu memorije i registara procesora (kao i
izmeu samih registara). Pretpostavimo da na procesor podrava sledeu
instrukciju ove vrste.
Instrukcija mov oznaava operaciju prenosa podataka i ima dva parame-tra prvi odreuje gde se podaci prenose, a drugi koji odreuje koji
se podaci prenose. Parametar moe biti ime registra (to oznaava da
se pristupa podacima u odreenom registru), broj u zagradama (to oz-
naava da se pristupa podacima u memoriji i to na adresi odreenoj
brojem u zagradama) ili samo broj (to oznaava da je podatak ba taj
navedeni broj). Na primer, instrukcija mov ax bx oznaava da se sadraj
registra bx prepisuje u registar ax, instrukcija mov ax, [10] oznaava da
se sadraj iz memorije sa adrese 10 prepisuje u registar ax, instrukcija
mov ax, 1 oznaava da se u registar ax upisuje vrednost 1, dok instruk-
cija oznaava mov [10], ax da se sadraj registra ax upisuje u memoriju
na adresu 10.
Sa ovakvim procesorom na raspolaganju, izraunavanje vrednosti 2 + 3moe se ostvariti na sledei nain. Pretpostavimo da se ulazni podatak (broj
) nalazi u glavnoj memoriji i to na adresi 10, a da rezultat treba smestiti naadresu 11 (ovo su sasvim proizvoljno odabrane adrese). Izraunavanje se onda
moe opisati sledeim programom (nizom instrukcija).
mov ax, [10]
mov bx, 2
mul ax, bx
mov bx, 3
add ax, bx
mov [11], ax
Instrukcija mov ax, [10] prepisuje vrednost promenljive (iz memorije saadrese 10) u registar ax. Instrukcija mov bx, 2 upisuje vrednost 2 u registar
bx. Nakon instrukcije mul ax, bx vri se mnoenje i registar ax sadri vrednost
2. Instrukcija mov bx, 3 upisuje vrednost 3 u registar bx, nakon instrukcijeadd ax, bx se vri sabiranje i u registru ax se nalazi traena vrednost 2+ 3.Na kraju se ta vrednost instrukcijom mov [11], ax upisuje u memoriju na
adresu 11.
Odreivanje veeg od dva broja moe se ostvariti na sledei nain. Pret-
postavimo da se ulazni podaci nalaze u glavnoj memoriji i to broj na adresi
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
31 1. Raunarstvo i raunarski sistemi
10, broj na adresi 11, dok rezultat treba smestiti na adresu 12. Program(niz instrukcija) kojima moe da se odredi maksimum je sledei:
mov ax, [10]
mov bx, [11]
cmp ax, bx
jge vecix
mov [12], bx
jmp kraj
vecix:
mov[12], ax
kraj:
Nakon prenosa vrednosti oba broja u registre procesora (instrukcijama mov
ax, [10] i mov bx, [11]), vri se njihovo poreenje (instrukcija cmp ax, bx).
Ukoliko je broj vei od ili jednak broju prelazi se na mesto oznaeno labe-lom vecix (instrukcijom jge vecix) i na mesto rezultata upisuje se vrednost
promenljive (instrukcijom mov[12], ax). Ukoliko uslov skoka jge nije is-punjen (ako nije vee ili jednako ), na mesto rezultata upisuje se vrednostpromenljive (instrukcijom mov [12], bx) i bezuslovno se skae na kraj pro-grama (instrukcijom jmp kraj) (da bi se preskoilo izvravanje instrukcije koja
na mesto rezultata upisuje vrednost promenljive ).Izraunavanje stepena moe se ostvariti na sledei nain. Pretpostavimo da
se ulazni podaci nalaze u glavnoj memoriji i to broj na adresi 10, a broj na adresi 11, i da konaan rezultat treba da bude smeten u memoriju i to na
adresu 12. Pretpostavimo da e pomone promenljive i koje se koriste upostupku biti smetene sve vreme u procesoru, i to promenljiva u registruax, a promenljiva u registru bx. Poto postoji jo samo jedan registar (cx), unjega e naizmenino biti smetane vrednosti promenljivih i , kao i konstanta1 koja se sabira sa promenljivom . Niz instrukcija kojim opisani hipotetikiraunar moe da izrauna stepen je sledei:
mov ax, 1
mov bx, 0
petlja:
mov cx, [11]
cmp bx, cx
jge kraj
mov cx, [10]
mul ax, cx
mov cx, 1
add bx, cx
jmp petlja
kraj:
mov [12], ax
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
32 1. Raunarstvo i raunarski sistemi
Ilustrujmo izvravanje ovog programa na izraunavanju vrednosti 32. Inici-jalna konfiguracija je takva da se na adresi 10 u memoriji nalazi vrednost = 3,na adresi 11 vrednost = 2. Poetna konfiguracija (tj. vrednosti memorijskihlokacija i registara) moe da se predstavi na sledei nain:
10: 3 ax: ?
11: 2 bx: ?
12: ? cx: ?
Nakon izvravanja prve dve instrukcije (mov ax, 1 i mov bx, 0), postavlja
se vrednost registara ax i bx i prelazi se u sledeu konfiguraciju:
10: 3 ax: 1
11: 2 bx: 0
12: ? cx: ?
Sledea instrukcija (mov cx, [11]) kopira vrednost 2 sa adrese 11 u regis-
tar cx:
10: 3 ax: 1
11: 2 bx: 0
12: ? cx: 2
Vri se poreenje sa registrom bx (cmp bx, cx) i kako uslov skoka (jge kraj)
nije ispunjen (vrednost 0 u bx nije vea ili jednaka od vrednosti 2 u cx), nas-
tavlja se dalje. Nakon kopiranja vrednosti 3 sa adrese 10 u registar cx (in-
strukcijom mov cx, [10]), vri se mnoenje vrednosti u registrima ax i cx
(instrukcijom mul ax, cx) i dolazi se u sledeu konfiguraciju:
10: 3 ax: 3
11: 2 bx: 0
12: ? cx: 3
Nakon toga, u cx se upisuje 1 (instrukcijom mov cx, 1) i vri se sabiranje
vrednosti registara bx i cx (instrukcijom add bx, cx) ime se vrednost u reg-
istru bx uveava za 1.
10: 3 ax: 3
11: 2 bx: 1
12: ? cx: 1
Bezuslovni skok (jmp petlja) ponovo vraa kontrolu na poetak petlje,
nakon ega se u cx opet prepisuje vrednost 2 sa adrese 11 (mov cx, [11]).
Vri se poreenje sa registrom bx (cmp bx, cx) i kako uslov skoka (jge kraj)
nije ispunjen (vrednost 1 u bx nije vea ili jednaka vrednosti 2 u cx), nastavlja
se dalje. Nakon jo jednog mnoenja i sabiranja dolazi se do konfiguracije:
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
33 1. Raunarstvo i raunarski sistemi
10: 3 ax: 9
11: 2 bx: 2
12: ? cx: 1
Bezuslovni skok ponovo vraa kontrolu na poetak petlje, nakon ega se
u cx opet prepisuje vrednost 2 sa adrese 11. Vri se poreenje sa registrom
bx, no, ovaj put je uslov skoka ispunjen (vrednost 2 u bx je vea ili jednaka
vrednosti 2 u cx) i skae se na mesto oznaeno labelom kraj, gde se posled-
njom instrukcijom (mov [12], ax) konana vrednost iz registra ax kopira u
memoriju na dogovorenu adresu 12, ime se stie u zavrnu konfiguraciju:
10: 3 ax: 9
11: 2 bx: 2
12: 9 cx: 1
Mainski jezik. Fon Nojmanova arhitektura podrazumeva da se i sam pro-
gram (niz instrukcija) nalazi u glavnoj memoriji prilikom njegovog izvravanja.
Potrebno je svaki program (poput tri navedena) predstaviti nizom nula i je-
dinica, na nain razumljiv procesoru na mainskim jeziku. Na primer,
mogue je da su binarni kdovi za instrukcije uvedeni na sledei nain:
mov 001
add 010
mul 011
cmp 100
jge 101
jmp 110
Takoe, poto neke instrukcije primaju podatke razliite vrste (neposredno
navedeni brojevi, registri, apsolutne memorijske adrese), uvedeni su posebni
kdovi za svaki od razliitih vidova adresiranja. Na primer:
neposredno 00
registarsko 01
apsolutno 10
Pretpostavimo da registar ax ima oznaku 00, registar bx ima oznaku 01, a
registar cx oznaku 10. Pretpostavimo i da su sve adrese osmobitne. Pod nave-
denim pretpostavkama, instrukcija mov [10], ax se, u ovom hipotetikom
mainskom jeziku, moe kodirati kao 001 10 01 00010000 00. Kd 001 dolazi
od instrukcije mov, zatim slede 10 i 01 koji ukazuju da prvi argument pred-
stavlja memorijsku adresu, a drugi oznaku registra, za im sledi memorijska
adresa (10)16 binarno kodirana sa 00010000 i na kraju oznaka 00 registra ax.Na slian nain, celokupan prikazani mainski kd navedenog asemblerskog
programa koji izraunava 2+ 3 je mogue binarno kodirati kao:
001 01 10 00 00010000 // mov ax, [10]
001 01 00 01 00000010 // mov bx, 2
011 00 01 // mul ax, bx
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
34 1. Raunarstvo i raunarski sistemi
001 01 00 01 00000011 // mov bx, 3
010 00 01 // add ax, bx
001 10 01 00010001 00 // mov [11], ax
Izmeu prikazanog asemblerskog i mainskog programa postoji veoma direk-
tna i jednoznana korespondencija (u oba smera) tj. na osnovu datog mainskog
kda mogue je jednoznano rekonstruisati asemblerski kd.
Specifini hardver koji ini kontrolnu jedinicu procesora dekodira jednu po
jednu instrukciju i izvrava akciju zadatu tom instrukcijom. Kod realnih proce-
sora, broj instrukcija i naini adresiranja su mnogo bogatiji a prilikom pisanja
programa potrebno je uzeti u obzir mnoge aspekte na koje se u navedenim
jednostavnim primerima nije obraala panja. Ipak, mainske i asemblerske
instrukcije stvarnih procesora veoma su sline navedenim hipotetikim instruk-
cijama.
1.5.3 Klasifikacija savremenog softvera
Raunarski programi veoma su sloeni. Hardver raunara sainjen je od
elektronskih kola koja mogu da izvre samo elementarne operacije i, da bi rau-
nar mogao da obavi i najjednostavniji zadatak zanimljiv korisniku, neophodno
je da se taj zadatak razloi na mnotvo elementarnih operacija. Napredak
raunara ne bi bio mogu ako bi programeri morali svaki program da opisuju
i razlau do krajnjeg nivoa elementarnih instrukcija. Zato je poeljno da pro-
grameri naredbe raunaru mogu zadavati na to apstraktnijem nivou. Rau-
narski sistemi i softver se grade slojevito i svaki naredni sloj oslanja se na
funkcionalnost koju mu nudi sloj ispod njega. U skladu sa tim, softver savre-
menih raunara se obino deli na aplikativni i sistemski . Osnovni zadatak
sistemskog softvera je da posreduje izmeu hardvera i aplikativnog softvera
koji krajnji korisnici koriste. Granica izmeu sistemskog i aplikativnog soft-
vera nije kruta i postoje programi za koje se moe smatrati da pripadaju obema
grupama (na primer, editori teksta).
Aplikativni softver. Aplikativni softver je softver koji krajnji korisnici rau-
nara direktno koriste u svojim svakodnevnim aktivnostima. To su pre svega
pregledai Veba, zatim klijenti elektronske pote, kancelarijski softver (pro-
grami za kucanje teksta, izradu slajd-prezentacija, tabelarna izraunavanja),
video igre, multimedijalni softver (programi za reprodukciju i obradu slika,
zvuka i video-sadraja) itd.
Sistemski softver. je softver ija je uloga da kontrolie hardver i prua
usluge aplikativnom softveru. Najznaajniji skup sistemskog softvera, danas
prisutan na skoro svim raunarima, ini operativni sistem (OS). Pored OS,
sistemski softver sainjavaju i razliiti usluni programi : editori teksta, alat za
programiranje (prevodioci, dibageri, profajleri, integrisana okruenja) i slino.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
35 1. Raunarstvo i raunarski sistemi
Korisnici OS esto identifikuju sa izgledom ekrana tj. sa programom koji
koriste da bi pokrenuli svoje aplikacije i organizovali dokumente. Meutim,
ovaj deo sistema koji se naziva korisniki interfejs (engl. user interface UI)
ili koljka (engl. shell) samo je tanak sloj na vrhu operativnog sistema i OS je
mnogo vie od onoga to krajnji korisnici vide. Najvei i najznaajni deo OS
naziva se jezgro (engl. kernel). Osim to kontrolie i apstrahuje hardver, op-
erativni sistem tj. njegovo jezgro sinhronizuje rad vie programa, rasporeuje
procesorsko vreme i memoriju, brine o sistemu datoteka na spoljanjim mem-
orijama itd. Najznaanjni operativni sistemi danas su Microsoft Windows,
sistemi zasnovani na Linux jezgru (na primer, Ubuntu, RedHat, Fedora, Suse)
i Mac OS X.
OS upravlja svim resursima raunara (procesorom, memorijom, periferi-
jskim ureajima) i stavlja ih na raspolaganje aplikativnim programima. OS je
u veoma tesnoj vezi sa hardverom raunara i veliki deo zadataka se izrvrava uz
direktnu podrku specijalizovanog hardvera namenjenog iskljuivo izvravanju
OS. Nekada se hardver i operativni sistem smatraju jedinstvenom celinom i
umesto podele na hardver i softver razmatra se podela na sistem (hardver i
OS) i na aplikativni softver.
Programer ne bi trebalo da misli o konkretnim detaljima hardvera, tj. po-
eljno je da postoji odreena apstrakcija hardvera. Na primer, mnogo je pogod-
nije ako programer umesto da mora da kae Neka se zavrti ploa diska, neka
se glava pozicionira na odreenu poziciju, neka se zatim tu upie odreeni bajt
itd. moe da kae Neka se u datu datoteku na disku upie odreeni tekst.
OS je taj koji se brine o svim detaljima, dok se programer (tanije, aplikacije
koje on isprogramira), kada god mu je potrebno obraa sistemu da mu tu
uslugu prui. Konkretni detalji hardvera poznati su u okviru operativnog sis-
tema i komande koje programer zadaje izvravaju se uzimajui u obzir ove
specifinosti. Operativni sistem, dakle, programeru prua skup funkcija koje
on moe da koristi da bi postigao eljenu funkcionalnost hardvera, sakrivajui
pritom konkretne hardverske detalje. Ovaj skup funkcija naziva se program-
ski interfejs za pisanje aplikacija
24
(engl. Aplication Programming Interface,
API ). Funkcije se nazivaju i sistemski pozivi (jer se OS poziva da izvri odreeni
zadatak). Programer nema mogunost direktnog pristupa hardveru i jedini
nain da se pristupi hardveru je preko sistemskih poziva. Ovim se osigurava
odreena bezbednost celog sistema.
Postoji vie nivoa na kojima se moe realizovati neka funkcionalnost. Pro-
gramer aplikacije je na vrhu hijerarhije i on moe da koristi funkcionalnost
koju mu prua programski jezik koji koristi i biblioteke tog jezika. Izvrni
programi esto koriste funkcionalnost specijalne rantajm biblioteke (engl. run-
time library) koja koristi funkcionalnost operativnog sistema (preko sistemskih
poziva), a zatim operativni sistem koristi funkcionalnost samog hardvera.
24
Ovaj termin se ne koristi samo u okviru operativnih sistema, ve i u irem kontekstu,
da oznai skup funkcija kroz koji jedan programski sistem koristi drugi programski sistem.
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
36 1. Raunarstvo i raunarski sistemi
Pitanja za vebu
Pitanje 1.1. Nabrojati osnovne periode u razvoju raunara i navesti njihove
osnovne karakteristike i predstavnike.
Pitanje 1.2. Ko je i u kom veku konstruisao prvu mehaniku spravu na kojoj
je bilo mogue sabirati prirodne brojeve, a ko je i u kom veku konstruisao prvu
mehaniku spravu na kojoj je bilo mogue sabirati i mnoiti prirodne brojeve?
Pitanje 1.3. Kojoj spravi koja se koristi u dananjem svetu najvie odgovaraju
Paskalove i Lajbnicove sprave?
Pitanje 1.4. Kakva je veza izmeu tkakih razboja i raunara s poetka XIX
veka?
Pitanje 1.5. Koji je znaaj arlsa Bebida za razvoj raunarstva i programi-
ranja? U kom veku je on dizajnirao svoje raunske maine? Kako se one
zovu i koja od njih je trebalo da bude programabilna? Ko se smatra prvim
programerom?
Pitanje 1.6. Na koji nain je Herman Holerit doprineo izvravanju popisa
stanovnika u SAD 1890? Kako su bili uvani podaci sa tog popisa? Koja
uvena kompanija je nastala iz kompanije koju je Holerit osnovao?
Pitanje 1.7. Kada su nastali prvi elektronski raunari? Nabrojati nekoliko
najznaajnijih.
Pitanje 1.8. Na koji nain je programiran raunar ENIAC, a na koji raunar
EDVAC?
Pitanje 1.9. Koje su osnovne komponente raunara fon Nojmanove arhitek-
ture? ta se skladiti u memoriju raunara fon Nojmanove arhitekture? Gde se
vri obrada podataka u okviru raunara fon Nojmanove arhitekture? Od kada
su raunari zasnovani na fon Nojmanovoj arhitekturi?
Pitanje 1.10. ta su to raunari sa skladitenim programom? ta je to hard-
ver a ta softver?
Pitanje 1.11. ta su procesorske instrukcije? Navesti nekoliko primera.
Pitanje 1.12. Koji su uobiajeni delovi procesora? Da li se u okviru samog
procesora nalazi odreena koliina memorije za smetanje podataka? Kako se
ona naziva?
Pitanje 1.13. Ukratko opisati osnovne elektronske komponente svake gen-
eracije raunara savremenih elektronskih raunara? ta su bile osnovne elek-
tronske komponente prve generacije elektronskih raunara? Od koje generacije
raunara se koriste mikroprocesori? Koji tipovi raunara se koriste u okviru
III generacije?
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
37 1. Raunarstvo i raunarski sistemi
Pitanje 1.14. U kojoj deceniji dolazi do pojave raunara za kunu upotrebu?
Koji je najprodavaniji model kompanije Commodore? Da li je IBM proizvo-
dio raunare za kunu upotrebu? Koji komercijalni kuni raunar prvi uvodi
grafiki korisniki interfejs i mia?
Pitanje 1.15. Koja serija Intelovih procesora je bila dominantna u PC rau-
narima 1980-ih i 1990-ih godina?
Pitanje 1.16. ta je to tehnoloka konvergencija? ta su to tableti, a ta
pametni telefoni?
Pitanje 1.17. Koje su osnovne komponente savremenog raunara? ta je
memorijska hijerarhija? Zato se uvodi ke-memorija? Koje su danas najko-
rienije spoljne memorije?
Pitanje 1.18. U koju grupu jezika spadaju mainski jezici i asemblerski jezici?
Pitanje 1.19. Da li je kd na nekom mainskom jeziku prenosiv sa jednog na
sve druge raunare? Da li asembler zavisi od maine na kojoj se koristi?
Pitanje 1.20. Ukoliko je raspoloiv asemblerski kd nekog programa, da li
je mogue jednoznano konstruisati odgovarajui mainski kd? Ukoliko je
raspoloiv mainski kd nekog programa, da li je mogue jednoznano konstru-
isati odgovarajui asemblerski kd?
Zadatak 1.1. Na opisanom asemblerskom jeziku opisati izraunavanje vred-
nosti izraza x := x*y + y + 3. Generisati i mainski kd za napisani pro-
gram.
Zadatak 1.2. Na opisanom asemblerskom jeziku opisati izraunavanje:
ako je (x < 0)
y := 3*x;
inace
x := 3*y;
Zadatak 1.3. Na opisanom asemblerskom jeziku opisati izraunavanje:
dok je (x
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
Glava 2
Reprezentacija podataka u
raunarima
Dananji raunari su digitalni . To znai da su svi podaci koji su u njima
zapisani, zapisani kao nizovi celih brojeva. Dekadni brojevni sistem koji ljudi
koriste u svakodnevnom ivotu nije pogodan za zapis brojeva u raunarima jer
zahteva azbuku od 10 razliitih simbola (cifara). Bilo da se radi o elektronskim,
magnetnim ili optikim komponentama, tehnologija izrade raunara i medijuma
za zapis podataka koristi elemente koji imaju dva diskretna stanja, to za
zapis podataka daje azbuku od samo dva razliita simbola. Tako, na primer,
ukoliko izmeu dve take postoji napon vii od odreenog praga, onda se smatra
da tom paru taaka odgovara vrednost 1, a inae mu odgovara vrednost 0.Takoe, polje hard diska moe biti ili namagnetisano to odgovara vrednosti 1ili razmagnetisano to odgovara vrednosti 0. Slino, laserski zrak na povrinikompakt diska bui rupice kojim je odreen zapis podataka pa polje koje
nije izbueno predstavlja vrednost 0, a ono koje jeste izbuesno predstavljavrednost 1. U nastavku e biti pokazano da je azbuka od samo dva simboladovoljna za zapisivanje svih vrsta brojeva, pa samim tim i za zapisivanje svih
vrsta digitalnih podataka.
2.1 Analogni i digitalni podaci i digitalni raunari
Kontinualna priroda signala. Veina podataka koje raunari koriste nas-
taje zapisivanjem prirodnih signala. Najznaajniji primeri signala su zvuk i
slika, ali se pod signalima podrazumevaju i ultrazvuni signali, EKG signali,
zraenja razliite vrste itd.
Signali koji nas okruuju u prirodi u veini sluajeva se prirodno mogu pred-
staviti neprekidnim funkcijama. Na primer, zvuni signal predstavlja promenu
pritiska vazduha u zadatoj taki i to kao neprekidnu funkciju vremena. Slika se
moe opisati intenzitetom svetlosti odreene boje (tj. odreene talasne duine)
u datom vremenskom trenutku i to kao neprekidna funkcija prostora.
38
El
e
k
t
r
o
n
s
k
o
i
z
d
a
n
j
e
(
2
0
1
5
)
39 2. Reprezentacija podataka u raunarima
Analogni zapis. Osnovna tehnika koja se primenjuje kod analognog zapisa
signala je da se kontinualne promene signala koji se zapisuje opiu kontinualnim
promenama odreenog svojstva medijuma na kojem se signal zapisuje. Tako,
na primer, promene pritiska vazduha koji predstavlja zvuni signal direktno
odgovaraju promenama nivoa namagnetisanja na magnetnoj traci na kojoj se
zvuk analogno zapisuje. Koliina boje na papiru direktno odgovara intenzitetu
svetlosti u vremenskom trenutku kada je fotografija bila snimljena. Dakle,
analogni zapis uspostavlja analogiju izmeu signala koji je zapisan i odreenog
svojstva medijuma na kome je signal zapisan.
Osnovna prednost analogne tehnologije je da je ona obino veoma jednos-
tavna ukoliko se zadovoljimo relativno niskim kvalitetom (jo su drevni narodi
mogli da naprave nekakav zapis zvuka uz pomo jednostavne igle prikaene na
trepereu membranu).
Osnovni problem analogne tehnologije je to je izrazito teko na medijumu
napraviti veran zapis signala koji se zapisuje i izrazito je teko napraviti dva
identina zapisa istog signala. Takoe, problem predstavlja i inherentna nestal-
nost medijuma, njegova promenljivost tokom vremena i podlonost spoljanjim
uticajima. S obzirom na to da varijacije medijuma direktno dovode do vari-
jacije zapisanog signala, vremenom neizbeno dolazi do pada kvaliteta analogno
zapisanog signala. Obrada analogno zapisanih signala je obino veoma komp-
likovana i za svaku vrstu obrade signala, potrebno je da postoji ureaj koji je
specijalizovan za tu vrste obrade.
Digitalni zapis. Osnovna tehnika koja se koristi kod digitalnog zapisa po-
dataka je da se vrednost signala izmeri u odreenim vremenskim trenucima ili
odreenim takama prostora i da se onda na medijumu zapiu izmerene vred-
nosti. Ovim je svaki digitalno zapisani signal predstavljen nizom brojeva koji
se nazivaju odbirci ili semplovi (engl. sample). Svaki od brojeva predstavlja
vred