Download as pdf or txt
Download as pdf or txt
You are on page 1of 82

U NIVERZITET PIM BANJA L UKA

Negovan Stamenković

Simboličko računanje

BANJA L UKA , 2019.


2
Sadržaj

1 Uvod 5

2 Računarski sistemi 11
2.1 Istorijski razvoj računara . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Von Neumannova mašina . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Struktura savremenog računarskog sistema . . . . . . . . . . . . . . . . 19
2.3.1 Tehnički sistem računara . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Programski sistem računara . . . . . . . . . . . . . . . . . . . 24
2.3.3 Funkcionisanje računarskog sistema . . . . . . . . . . . . . . . 29
2.4 Programski jezici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.1 Mašinski jezik . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.2 Asemblerski jezik . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.3 Programski jezici višeg nivoa . . . . . . . . . . . . . . . . . . . 34
2.5 Pitanja za proveru znanja . . . . . . . . . . . . . . . . . . . . . . . . . 36

3 Osnove MATLAB-a 39

R
3.1 Osnovne mogućnosti MATLAB a . . . . . . . . . . . . . . . . . . . . . 40

R
3.2 Jednostavna MATLAB izračunavanja . . . . . . . . . . . . . . . . . . . 42
3.3 Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.1 Operator dodele . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Matrična izračunavanja . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.1 Matrice specijalne strukture . . . . . . . . . . . . . . . . . . . 46
3.4.2 Sabiranje i oduzimanje matrica . . . . . . . . . . . . . . . . . . 47
3.4.3 Množenje matrica . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.4 Indeksiranje elemenata matrica . . . . . . . . . . . . . . . . . . 50
3.4.5 Operator dvotačka . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5 Polinomi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

R
3.6 Programiranje u MATLAB u . . . . . . . . . . . . . . . . . . . . . . . 53
3.7 Skript datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.7.1 Kontrolne petlje . . . . . . . . . . . . . . . . . . . . . . . . . . 54

R
3.8 Efikasnost izvršavanja programa u MATLAB u . . . . . . . . . . . . . . 59

3
4 SADRŽAJ

3.8.1 Merenje vremena izvršavanja programa . . . . . . . . . . . . . 59


3.8.2 Povećanje efikasnosti izvršavanja programa . . . . . . . . . . . 59
3.9 Grafički prikaz podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.10 Simbolička analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
R
3.10.1 MATLAB kao simbolički kalkulator . . . . . . . . . . . . . . 62
3.10.2 Simbolički izrazi . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.10.3 Simboličke operacije nad polinomima . . . . . . . . . . . . . . 65
3.10.4 Prikazivanje rezultata . . . . . . . . . . . . . . . . . . . . . . . 66
3.11 Rešavanje jednačina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.12 Integralni i diferencijalni račun . . . . . . . . . . . . . . . . . . . . . . 69
3.13 Crtanje simboličkih funkcija . . . . . . . . . . . . . . . . . . . . . . . . 71
3.14 Pitanja za proveru znanja . . . . . . . . . . . . . . . . . . . . . . . . . 74

Literatura 80

Indeks pojmova 82
Glava 1

Uvod

A koliko različite bile, sve definicije računarstva se manje-više slažu u kon-


M stataciji da računarstvo deli zajedničke naučne metode sa matematikom,
prirodnim naukama i tehnikom. Paradigma koja ga vezuje za matematiku je teorija,
sa prirodnim naukama vezuje ga eksperimentalni naučni metod, dok je projekto-
vanje zajedničko za računarstvo i tehniku. To se ogleda i kroz istoriju razvoja
računarstva, ali i kroz savremeni razvoj računarstva kao spoja teorije algoritama,
matematičke logike i pronalasaka elektronskog računara sa pamćenjem programa.
Kratko rečeno, računarstvo je sistematično izučavanje algoritamskih procesa
koji opisuju i transformišu informaciju: njihove teorije, analize, projektovanja,
efikasnosti, implementacije i primene. Osnovno pitanje koje se postavlja pred celo
računarstvo je: Šta se može efikasno automatizovati. Kako je u središtu računarstva
računar, on se može opisati (prema Enciklopdeiji Larousse) kao mašina za transfor-
maciju informacije iz jednog oblika u drugi. To dalje implicira da je sam računar
jedna matematička mašina koja se ponaša prema strogo definisanim principima i
zakonima, i da je potpuno nezavisan od svog spoljašnjeg oblika koji se kroz istoriju
veoma menjao, i koji će se još dramatično menjati.
Naučni progres računarske nauke je značajno komplikovan rastom računarske
industrije. Eksplozija tehnologije prinudila je projektante mašina na “ad hoc”
rešenja da bi iskoristili brzo smanjenje odnosa cena/kvalitet, često bez prilike da
ud-u duboko u istraživanje najadekvatnije arhitekture. Danas je razvoj računarske
nauke zasenjen, i više nego pre deceniju ili dve (mada se i onda to zapažalo),
tehnološkim razvojem u industriji, uzastopnim revolucijama komponenti računara.
Slično, ljudi u računarskoj nauci su tako blizu aplikacijama i neprestanim zahte-
vima za rešavanjem tekućih tehničkih problema, da zanemaruju bazični naučni
razvoj. Računarstvo se razlikuje i od drugih tehnika po tome što se tehnološka

5
6 GLAVA 1. UVOD

baza menja suviše brzo. Sve što se uči “ad hoc” zastareva vrlo brzo.
Ipak, računarska tehnologija čini računarstvo jednim od stubova savremenog
društva. Informaciono društvo, kao oblik društvenog ured-enja u ovom veku,
nameće nove kriterijume razvoja privrede i društva, a oni se baziraju na brzini
stvaranja informacije i dostupnosti informaciji. Kao preteča globalne informa-
cione infrastrukture vidi se Internet, pa se veliki broj privrednih grana orijentiše
ka njegovom korišćenju i uključuje u digitalnu ekonomiju i poslovanje.
Matematička logika pruža formalni jezik za opisivanje i orud-a za analizu
problema koji se istražuju u računarstvu, a i sama je poligon za primenu rezul-
tata iz te oblasti, recimo za automatske dokazivače teorema. Razne klasične i
neklasične logike i drugi formalni sistemi se koriste u sistemima zaključivanja,
poput ekspertnih sistema i verifikaciji programa i elektronskih sklopova računara.
Jedan od ciljeva razvoja matematičke logike je konstrukcija dovoljno jakih sis-
tema koji će biti u stanju da formalizuju sve šire oblasti ljudskog mišljenja, tako
da njihova složenost bude u granicama tehnološke ostvarljivosti. Rezonovanja o
znanju se pokazalo korisnim u veštačkoj inteligenciji, ali i u teoriji igara i anal-
izi paralelnih računarskih sistema. I druge oblasti matematičke logike nalaze
primene u računarstvu. Recimo, jedan efikasno implementiran segment klasične
predikatske logike prvog reda se nalazi u osnovi sistema baza podataka i jezika
SQL (engl. Structured Query Language). Teorija tipova čini okvir za razvoj i
analizu programskih jezika u kome se pogodno prikazuju napredni koncepti savre-
menih jezika, poput nasled-ivanja i polimorfizma, omogućava rezonovanje o pro-
gramima i predlažu nove tehnike za kreiranje efikasnijih prevodilaca. Ideja o pro-
gramskom jeziku Prolog i logičkom programiranju proizašla je iz istraživanja na
polju automatskog dokazivanja teorema. Uopšte, postojeća sredstva matematičke
logike u toj meri zauzimaju centralno mesto u računarstvu da se logika često sma-
tra računom računarstva, čak i u većoj meri nego što je to matematika za prirodne
nauke.
Osnivač teorije formalnih jezika i automata je Noam Chomsky (Čomski, 1928).
U njoj se raspravljaju pitanja opisivanja formalnih jezika i strukture odred-enih
klasa formalnih jezika. Formalni jezici i njima odgovarajući automati predstav-
ljaju, izmed-u ostalog, osnov za kreiranje i implementaciju programskih jezika, ali
i za razne druge algoritme prepoznavanja oblika, verifikacije itd.
Par reči o računarskoj terminologiji. Razmišljanje je najintimnija aktivnost, a
u značajnoj meri se otkriva načinom na koji se koristi (ili zloupotrebljava) jezik.
Analize jezika pak počinju sa rečnicima. Tako se u jednoj vrsti rečnika engleskog
jezika, koja opisuje savremenu upotrebu jezika - Websters New Collegiate Dic-
tionary, u jednom od novijih izdanja pojavilo novo značenje reči “inteligentan”:
sposoban za obavljanje nekih funkcija računara (inteligentan računarski termi-
7

nal). Antropomorfizmi u računarstvu (terminal -“inteligentan”, računar -“on”)


naneli su veliku štetu samoj oblasti, jer podrazumevaju identifikaciju program-
era sa programima i mašinama. Identifikovanje programa sa osobom koja živi u
vremenu identifikuje program sa njegovom operacionom semantikom, tj. sa nje-
govim ponašanjem pri izvršavanju (npr. testiranju), mada je mnogo umesnije iden-
tifikovati program sa njegovom formalnom semantikom koja se može izvesti iz
samog teksta programa. Upotreba antropomorfizama karakteriše nedoraslu, pre-
naučnu fazu računarstva. Da citiramo Dejkstru (Edsger Dijkstra), “onaj koji se
bavi računarskom naukom ne zaslužuje taj naziv pre nego što se odvaži da “bag”
(engl. bug) - bubu nazove pravim imenom - greška, i da time krivicu za neispravan
program prebaci onome kome i pripada - programeru. Izraz “bube u programu”
sugeriše da su se one nekako “uvukle” u program; ako ih je malo, program “nije
loš”. Ali, ako se “bube” nazovu greškama, i jedna od njih čini program, jednos-
tavno, pogrešnim, i to krivicom programera.
Prevod računarske terminologije predstavlja poseban problem. Bez razvoja
jezika o novoj tehnologiji nema ni razvoja sopstvene tehnologije - preuzimanjem
jezika preuzima se i tehnologija. Zato je potrebno raditi na stručnom i adekvatnom
prevodu kao i razvijanju sopstvene terminologije. Ovo ne treba shvatiti mehanički;
ustaljeni termini kao što je hardver (hardware) ili softver (software) mogu se i
preuzeti, mada to odmah stvara probleme sa terminima istog korena (npr. mid-
dleware). Jedan konzistentan pristup prevodu računarske terminologije predstavlja
prevod Oksfordskog rečnika računarstva u izdanju NOLIT-a.
Posmatrajući računarstvo u globalu, najbolje je da se ono posmatra hijerarhi-
jski. Na nižem nivou imamo računarsko inženjerstvo koje se na nivou “cipova”
bavi unutrašnjim strujnim kolima i elektronikom računara. Sledi nivo računarskih
nauka koji je dosta širok, pošto je potrebno poznavati materiju nižeg nivoa, a takod-e
i programiranje višeg nivoa koje se povezuje sa čipovima i kolima kako bi računske
mašine radile. Dakle, računarske nauke se odnose na procese koji koriste izradu
računarskih programa, dok primene tih programa u poslovanju se odnosi na Infor-
macione tehnologije.
Posebna klasa veštačkih jezika, u slučaju da je jedan od korisnika jezika
računar, jesu programski jezici. Osnovni motiv za uvod-enje programskih jezika
je potreba da se premosti razlika u nivou apstrakcije čoveka i računara. Dok čovek
ima potrebu i mogućnost da razmišlja na različitim, ponekad visokim nivoima ap-
strakcije, računar je ograničen mogućnostima koje su definisane u trenutku njegove
izgradnje i izgradnje njegovog operativnog sistema. Programski jezici omogućuju
čoveku da formuliše poruku na način koji je za njega relativno prirodan i jednos-
tavan. Dakle, programski jezik je veštački jezik koji se može koristiti za kontrolu
ponašanja mašine, a naročito računara.
8 GLAVA 1. UVOD

Programski jezik je bilo koji od veštačkih jezika kojim je moguće dati detaljne
instrukcije računaru. Te instrukcije se mogu izvršavati direktno kada su ugrad-ene
u računar u posebnom obliku koji je odredio proizvod-ač, tzv. mašinski jezik, posle
jednostavnog procesa zamene izražene u odgovarajućem asemblerskom jeziku, ili
posle prevod-enja iz nekog jezika višeg nivoa.
Po stepenu zavisnosti programskog jezika od računara programski jezici mogu
biti:

• Mašinski zavisni jezici su jezici niskog nivoa, koji zahtevaju od programera


da se posveti upravljanju svim procedurama vezanim za čuvanje podataka
i operacije nad njima. Mašinski jezici izgrad-eni su nad binarnom azbukom
(0,1), te im nije potrebno prevod-enje. Vezani su za konkretan računar (svaka
familija procesora ima svoj mašinski jezik). Za programiranje u mašinski
zavisnim jezicima potrebno je dobro poznavanje načina rada i arhitekture
odred-enog računara.
Simbolički jezici su takod-e jezici niskog nivoa i uvode mnemotehničke
skraćenice za operacije i simboličke oznake podataka. Jednoj naredbi
mašinskog jezika odgovara jedna naredba simboličkog. Program koji pre-
vodi simbolički u mašinski jezik zove se asembler
• Mašinski nezavisni jezici (jezici višeg nivoa) su bliži prirodnom jeziku
i oslobad-aju programera brige koja se onosi na poznavanje arhitekture
računara. Bliži su prirodnom jeziku, citljiviji su i lakši su za pisanje pro-
grama. Imaju visok stepen nezavisnosti od arhitekture računara

Pored Uvoda, koji je ujedno i prva glava, knjiga sadrži još sedam poglavlja:
Računarski sistemi, Predstavljanje podataka, Logičke osnove obrade podataka,
R
Računarske komunikacije, Microsoft Office Excel, LATEX2e i Osnove MATLAB -a.
U drugoj glavi Računarski sistemi nalazi se prikaz računara kao mašine u ko-
joj se mogu razlikovati dva nivoa (tehnički i programski), pri čemu je svaki od
nivoa detaljno opisan. Čitalac može da se upozna sa istorijskim razvojem računara.
Posebna pažnja je posvećena arhitekturi von Neumanove mašine čiji je princip još
uvek osnova za sve računare.
U trećoj glavi Predstavljanje podataka objašnjava se pojam brojnog sistema
i osnove brojnog sisteme i daju algoritmi za prevod-enje brojeva iz jedne u drugu
osnovu. Naročito su istaknuti binarni, oktalni i heksadecimalni brojni sistem kao
najzastupljeniji u računarstvu. Pored standardnih brojnih sistema ova glava sadrži
i aritmetiku po modulu koja nalazi sve veću primenu u sistemima za paralelnu
obradu podataka.
Četvrta glava sadrži Logičke osnove obrade podataka. Na najnižem hardver-
9

skom nivou nivou eletronike, projektuju se moduli poput logičkih kola. Logička
kola definišemo kao fizičke objekte koji implementiraju neku od funkcija alge-
barske logike. Povezivanje logičkih elemenata dobijamo kombinacione mreže -
implementaciju složenih logičkih funkcija. Pomoću kombinacionih mreža mogu
se implementirati samo one funkcije računara koje ne zahtevaju memorisanje po-
dataka ili informacije o prethodnom stanju. Prikazana su pet načina za prikazi-
vanje logičke funkcije: kombinaciona tablica, u algebarski oblik, skupom indeksa,
Karnaughova mapa i šematski pomoću logičkih kola. Na kraju je izložen metod
minimizacije logičkih funkcija u cilju smanjivanja složenosti njihove realizacije.
U petoj glavi Računarske komunikacije objašnjavaju se Internet protokol IPv4
i programski jezik HTML. Razmatraju se klase IPv4 adresa kao i mrežno i
podmrežno adresiranje. Ukazno je na razliku izmed-u javnih i privatnih mreža.
Imajući u vidu da je svaka internet stranica HTML dokument u drugom delu
ove glave date su osnove programskog jezika HTML. Programski jezik HTML,
kao i tekst procesor LATEX o kome će biti reči u sedmoj glavi, spada u grupu jezika
za obeležavanje. Jezik za obeležavanje odred-uje skup obeležja (tagova, markera,
privezaka, labela, etiketa, ...) i skup pravila za njihovo korišćenje. Pomoću jezika
za obeležavanje opisuje se dokument koji može biti smešten u jednu ili više da-
toteka. Ovako obeleženi dokumenti se zatim korišćenjem odgovarajućih prevodi-
laca prevode i prikazuju u obliku koji čovek može lako da čita. Ovi prevodioci
mogu biti bilo zasebni programi (što je slučaj kod LATEX-a, gde se na osnovu
obeleženog ulaza gradi završni dokument, najčešće u pdf formatu), bilo integrisani
u druge programe kao što su npr. pregledači Weba (engl. Web browser) (što je
slučaj sa jezikom HTML). Dakle, svrha Web čitača jeste čitanje Web stranice, Web
čitač ne prikazuje HTML oznake, već pomenute oznake koristi kako bi korisniku
interpretirao sadržaj stranice.
Šesta glava objašnjava programski paket Microsoft Office Excel koji uglavnom
služi za rešavanje problema matematičkog tipa pomoću tablica i polja koje je
moguće povezivati različitim formulama. Može poslužiti i za izradu jedno-
stavnijih baza podataka. Na temelju unesenih podataka, lako se iz tablica mogu
stvarati grafikoni. Takod-e omogućuje dodavanje različitih objekata: tablica, slika,
grafikona, itd. Za razliku od statičke tabele koju bi rukom napisali na papiru, u Ex-
celu ako se podaci automatski (dinamički) menjaju u ćelijama, menja se i rezultat
u odgovarajućoj ćeliiji.
Programski paket TEX i njegovi makro paketi LATEX i AMS-LATEX, koji je
opisan u sedmoj glavi, predstavlja svetski standard za obradu matematičkih,
inženjerskih i drugih tekstova koji sadrže matematičke formule. Većina mate-
matičkih časopisa u svetu danas zahteva da tekstovi koje oni publikuju budu
pripremljeni u nekoj od varijanti TEX-a. LATEX nije WYSIWYG tekst procesor
10 GLAVA 1. UVOD

koji se izučava na nižim nivoima obrazovanja, već se oblik završnog dokumanta


dobija odred-enom transformacijom. Glava je napisana tako da može poslužiti
početnicima i kao podsetnik onima koji već imaju iskustvo sa LATEX-om. Treba
napomenuti da ova glava sadži i neke specifičnosti LATEX-a vezane za pisanje hemi-
jskih formula i za ćirilično pismo.
Imajući u vidu da ogroman broj naučnih i tehničkih disciplina neizostavno za-

R
htevaju korišćenje programskog paketa MATLAB -a, u osmoj galvi su date nje-
R
gove osnove. MATLAB pored svojih prvenstveno razvojnih i programabilnih
mogućnosti poseduje još jednu zaista moćnu alatku koja je jedna od osnovnih od-

R
lika ovog paketa. Naime, vrlo jednostavno se u MATLAB -u mogu kreirati sop-
stvene funkcije zasnovane na ugrad-enim funkcijama koje daju rešenja na postav-
ljene zahteve. Skup ovako kreiranih funkcija (m-fajlova) objedinjenih u jednu
R R
celinu predstavlja osnovnu strukturu MATLAB -a. MATLAB dakle predstavlja
mnogo više od kolekcije upotrebljivih fajlova, jer je u njima objedinjen trud velikih
svetskih istraživača u raznim područjima nauke. Ovo poglavlje takod-e sadrži sim-
boličku analizu zasnovanu na ovom programskom paketu. Treba napomenuti, da
se tabele iz programskog paketa Excel mogu koristiti za proračune u programskom
R
paketu MATLAB . Isto tako, tekst proocesor LATEX može se koristiti za ispisivanje
R
složenih matematičkih izraza na graficima koji se crtaju uz pomoć MATLAB pro-
gramskog paketa.
Na kraju svakog poglavlja, u okviru Pitanja za proveru znanja data su pitanja i
zadaci za samostalno rešavanje, koji sudentima treba da posluže kao provera znanja
na temu koja je razmatrana u poglavlju. Pitanja i zadaci su odabrani tako da u
potpunosti pokrivaju predvid-eno gradivo , pa se mogu koristiti i za pripremu ispita.
Na kraju želimo napomenuti da je za obradu teksta korišćen tekst procesor
LATEX2e a da su slike crtane uz pomoć programskog paketa PSTrick koji je sas-
tavni deo programskog paketa LATEX2e. Da bi se olakšalo crtanje slika napisan je
programski paket koji sadrži makroe za generisanje osnovnih logičkih kola. Pro-
gram za crtanje Karnaughovih mapa Karnaugh.sty dobili smo od dr Stefana
Hösta1 na čemu mu zahvaljujemo.
Knjiga je namenjena studentima Prirodno-matematičkog fakuleta u Kosovskoj
Mitrovici, radi korišćenja u savladavanju materije iz kursa R A ČUNARSVO I PRO -
GRAMSKI JEZICI , koji ovaj predmat slušaju dva semestra. Što se tiče predhodnih
znanja, ona se pre svega odnose na poznavanje osnovnih funkcija računara, sa ko-
jima su se studenti upoznati u predhodnom školovanju.

1 University of Lund, Sweden, Department of Information Theory


Glava 2

Računarski sistemi

A ČUNARI su elektronski ured-aji koji su namenjeni za rad sa podacima,


R odnosno za obradu podataka. Oni spadaju u ured-aje koji se nazivaju mašine
ili automati.
U opštem slučaju termin mašina (automat) označava ured-aj koji bez
neposrednog učešća čoveka izvršava operacije dobijanja, pretvaranja (transfor-
macije), prenosa i korišćenja energije, materijala ili informacija. Kada mašina
funkcioniše prema unapred zadatom programu, ona se naziva programski up-
ravljana mašina ili mašina sa programskim upravljanjem. Ovde termin program
označava plan delovanja koji izvršava automatski ured-aj. Program je sastavljen
od konačnog skupa instrukcija ili naredbi, pri čemu svaka instrukcija opisuje neku
elementarnu operaciju koju automatski ured-aj može direktno da izvrši. Računar ili
tačnije elektronski računar, predstavlja programski upravljanu mašinu, realizovanu
digitalnim elektronskim kolima, koja nad podacima izvršava razne brojčane i ne-
brojčane operacije. Često se za računar koristi tačniji termin - računarski sistem
ili sistem za obradu podataka, jer savremeni računar predstavlja kompleks ured-aja
koji zajedno, kao celina, obavljaju obradu podataka.
Proces intenziviranja proizvodnje i usavršavanje načina poslovanja, zajedno
sa tehnološkim razvojem transporta i načina komuniciranja, značajno je povećao
obim podataka i informacija i doveo je do tzv. informacione krize, odnosno do
rekordnog porasta informacionih tokova. S druge strane, čovekove ograničene
biološke sposobnosti za pamćenje, obradu i distribuciju podataka i informacija i
tradicionalna sredstva kojima je on raspolagao za rad sa njima, nisu bili u stanju
da prate i reše nastali problem. Ovo je posebno važno ako se ima u vidu da
nivo obezbed-enosti informacijama stručnjaka, naučnika i rukovodilaca predstavlja
jedan od osnovnih faktora napretka društva.

11
12 GLAVA 2. RAČUNARSKI SISTEMI

Jedan od najvažnijih pronalazaka koji je omogućio nagli razvoj informatike


bio je pronalazak nove vrste mašina (ured-aja) koji su bili u stanju da pomognu
čoveku u njegovom umnom radu. Time je čovekov rad na obradi podataka i infor-
macija zamenjen radom mašine nazvane računarom, jer je njena prvobitna namena
bila mehaničko (”automatsko”) izvršavanje računskih operacija. Danas su oblasti
primene i mogućnosti računara znatno proširene, tako da ”stari” termin računar
više ne odražava u potpunosti suštinu njegovog korišćenja, već označava ured-aj ili
sistem koji prihvata podatke, izvršava nad njima operacije transformacije (razne
numeričke ili nenumeričke operacije) i saopštava rezultate obrade.
Savremeni period u razvoju ljudskog društva često se naziva informaciona era
ili era računara. Ova era karakteriše se širokim korišćenjem sistema zasnovanih na
računarima u kojima se prikupljaju, pamte (skladište), obrad-uju, dostavljaju (dis-
tribuiraju), razmenjuju putem Interneta i koriste podaci i informacije. Internet je
jedan od najefektivnijih resursa koje preduzeće koristi da bi povećalo efikasnost.
Dakle, ovaj period karakteriše stalni porast brzine promena i višestrukog rasta svih
društvenih funkcija i procesa, zajedno sa društvenim, tehnološkim i drugim vi-
dovima razvoja. Internet predstavlja metaforu novog digitalnog doba.
Računari su posebno postali značajan činilac u obradi podataka i informacija
u organizacijama kao sastavni deo sistema koji se nazivaju informacioni sistemi
ili upravljački informacioni sistemi. Njihova je namena da podrže funkcije opera-
tivnog praćenja, rukovod-enja i donošenju odluka.
Postoji više podela računarskih sistema. Ovde će biti spomenute samo četiri.

1. Prema primeni računari mogu biti:


(a) Serveri- veliki, moćni računari, koriste se za poslovnu primenu.
(b) Personalni- računari za ličnu upotrebu.
(c) Računari specijalne namene- za upravljanje procesima u industriji ili
ured-ajima u svakodnevnom ivotu.
2. Prema strukturi gradivnih komponenti:
(a) Modularni
(b) Integrisani
3. Prema broju korisnika:
(a) Višekorisnički
(b) Jednokorisnički
4. Prema broju naredbi i broju podataka koje mogu da izvršavaju u jednom
trenutku (Flynnova notacija):
2.1. ISTORIJSKI RAZVOJ RAČUNARA 13

(a) SISD (Single Instruction Single Data) - Jedan procesor uzima instruk-
cije i izvršava sve operacije procesiranja podataka. Ova arhitektura se
naziva i Von Neumannov računar.
(b) SIMD (Single Instruction Multiple Data) - Ova kategorija obuhvata
računare koji imaju mnogo identičnih med-usobno povezanih proce-
sora pod supervizijom jednog procesora. Procesor simultano šalje in-
strukciju svim procesorima, a oni simultano izvršavaju tu instrukciju.
Svaki procesor radi nad podacima iz svoje memorije. Svakom proce-
soru mora biti dopušteno da završi svoju instrukciju pre nego što se
uzme sledeća instrukcija za izvršenje. Primer Grafički procesor.
(c) MIMD (Multiple Instruction Multiple Data) - Većina multi-
procesorskih i multi-računarnih sistema se mogu svrstati u ovu kate-
goriju. MIMD računar ima mnogo med-usobno povezanih procesora.
Procesori rade nad svojim podacima sa svojim instrukcijama. Zadaci
izvršeni od strane različitih procesora mogu početi ili završiti u različito
vreme. Za razliku od SIMD računara zadaci se rade asinhrono.

2.1 Istorijski razvoj računara


Ljudi su od davnih vremena pokušavali da naprave ured-aje za računanje. Najpoz-
natiji je abak (ili abakus) - računaljka u obliku sistema žica sa klizećim perlama. U
XVII i XVIII veku bilo je više pokušaja izgradnje mehaničkih mašina za računanje
(kalkulatora), gde su se posebno isticali radovi Pascala1 , Leibniza2 i Babbagea3 .
Napomenio da je Leibnizov mehanički kalkulator izvršavao sve četiri računske
radnje.
1 Blaise Pascal (franc. filozof i naučnik) izumeo je 1642. godine prvi mehanički kalkulator naz-
vavši ga Pascalina. To je bila metalna kutija sa zupčanicima koja je mogla sabirati i oduzimati velike
brojeve.
2 Oko 1673. godine Gottfried Leibniz (nemački filozof i matematičar) izradio je tzv. Leibnit-

zov kalkulator, ured-aj sastavljen od nazubljenih valjaka koji je osim sabiranja i oduzimanja mogao
izvoditi operacije množenja i deljenja (usavršen Pascalov kalkulator). Postavio je princip izrade
mehaničkih računara koji su se koristili gotovo tri veka (mehaničke registar kase na blagajnama tr-
govina). Proučavao je i binarni brojni sistem, ali ga nije povezao sa računarom.
3 1822. godine Charles Babbage (engl. matematičar i pronalazač) napravio je projekat za difer-

encijalni ured-aj koji je omogućavao unos velikog broja podataka i primenu velikog broja formula
(sabiranje i oduzimanje), a rezultat je davao u obliku štampane liste. Ured-aj je bio mehanički i tre-
balo je da ga pokreće parna mašina. Zbog niza finansijskih i tehnoloških okolnosti ured-aj nikada nije
bio dovršen. 1833. godine Babbage dolazi na ideju da konstruiše tzv. analitički ured-aj koji je trebalo
da obavlja sve vrste računanja. Prvi mehanički računar opše namene s programom nije, zbog ne-
savršene tehnologije i nedostatka novca završen u to vreme, ali je Babbage nazvan “ocem računara”
jer je njime postavio principe i način rada prema kojima su se kasnije izgrad-ivali elektronski računari.
14 GLAVA 2. RAČUNARSKI SISTEMI

Smatra se da istorija razvoja računara počinje od elektronskih računara. Prvi


elektronski računar ENIAC (engl. Electronic Numerical Integrator and Computer)
napravljen je 1946. godine. Te godine predložen je i model arhitekture računara
sa upamćenim programom koja se i danas koristi a nazivaju se računari sa Von
Neumannovom arhitekturom.
Von Neumanova arhitektura računara se zasniva na četiri podsistema: memo-
rije, ulzno-izlazne jedinice, aritmetičko-ligičke jedinice i kontrolne jedinice. Mem-
orija se koristi za čuvanje podataka i programskih instrukcija. Programske instruk-
cije su kodirani podaci koji govore računaru šta treba da uradi, naprimer, da sabere
dva broja. Podaci su proste informacije koje koristi programska instrukcija, na
primer, dva broja koje treba sabrati. Centralna procesorska jedinica, koja se sas-
toji od aritmetičko logičke jedinice, kontrolne jedinice i registara za privremeno
pamćenje podataka, pribavlja instrukcije i/ili podatke iz memorije, dekodira in-
strukcije i izvršava programsku sekvencu. Pribavljanje instrukcije iz memorije,
dekodiranje instrukcije i izvršavanje naznačene operacije se naziva ”pribavljanje-
izvršavanje” ciklus (engl. fetch-execute cycle).
Dosadašnji razvoj računara opisuje se pomoću generacija računara - karakter-
ističnih vremenskih perioda koji su obično odred-eni promenama u dominantnoj
tehnologiji korišćenoj za realizaciju računara. Pri tome je svaka nova generacija
računara omogućila uvod-enje nove klase računara.
Opšta saglasnost o broju generacija računara uglavnom postoji, ali kod
raznih autora postoje male razlike u početku i kraju trajanja svake generacije
računara. Osim toga, period do elektronskih računara nije obuhvaćen generacijama
razvoja računara, iako je bilo predloga za realizaciju računskih ured-aja pomoću
mehaničkih i elektromehaničkih komponenata.
Generacije računara su:

• Prvu generaciju (1946 -1955) karakteriše upotreba elektronskih cevi


i kablovskih veza izmed-u komponenti što je uslovilo velike gabarite
računarskih sistema, veliku potrošnju električne energije i česte kvarove
komonenti računarskog sistema. Na primer, računar ENIAC je bio težak
30 tona, sastojao se od sedamnaest hiljada elektronskih cevi i trošio je snagu
od 174 kW, dok je za hlad-enje elektonskih cevi bila potrebna isto tolika
snaga. Programi su pisani na mašinskom jeziku što je zahtevalo specijalizo-
vana programska znanja korisnika računarskog sistema.
• Druga generacija (1956 -1963) se zasnivala na tranzistorima i štampanim
kolima tako da su dimenzije znatno smanjene a povećala se sigurnost u radu.
Povećani su i memorijski kapaciteti i usavršavani su ulazni ured-aji. Soft-
ver se takod-e usavršavao tako da se manje koristio mašinski jezik, a više
2.1. ISTORIJSKI RAZVOJ RAČUNARA 15

simbolički jezici kao što su prve verzije programa Cobol i Fortran.


• U trećoj generaciji (1964 -1977) hardverske komponente su usavršene tako
da se koriste integrisana kola malog4 Small Scale Integration - SSI i sred-
njeg5 Medium Scale Integration - MSI stepena integracije, što omogućije još
manje dimenzije računara, bržu obradu podataka, veći kapacitet memorije i
veću pouzdanost u radu. Poboljšanje karakteristika osnovnih komponenti
omogućilo je povezivanje više perifernih ured-aja u računarski sistem. Us-
avršene komponente su omogućile multiprogramski rad, kao i komunikaciju
izmed-u računara putem telefonskih linija. Za upravljanje i kontrolu računara
razvijaju se operativni sistemi, a koriste se i viši programski jezici.
• U četvrtoj generaciji (1978 - 1989) tehnologija kompnenti računarskog sis-
tema se zasniva na LSI tehnologiji ( Large Scale Integrated), tj. tehnologiji
izrade elektronskih kola velike integracije6 , i VLSI tehnologije ( Very
Large Scale Integration), tj. izrade elktronskih kola vrlo velike integracije7 .
Poboljšanje karakteristika i dimenzija hardverskih komponenti dovelo je do
smanjenja dimenzija računara, povećnje kapaciteta operativne memorije i
znatno povećane brzine obrade podataka. Operativni sistemi su fleksibil-
niji i jednostavniji za upotrebu širem krugu korisnika, a programski jezici
i prevodioci pogodniji za kreiranje aplikativnih programa, što je dovelo do
proizvodnje personalnih računara i radnih stanica.
• Peta generacija (od 1990.) zasnovana je na paralelnoj arhitekturi i
višeprocesorskim računarima.

Može se uočiti da su u svakoj novoj generaciji računara povećavana brzina


rada procesora, kapacitet operativne memorije i sistemski softver, a korišćeni su
sve bolji programski jezici. Od četvrte generacije računara počinje i sve masovnije
povezivanje računara u računarske mreže.
Prema Mooreovom zakonu koji je 1965. godine formulisao Gordon Moore
(saosnivač kompanije Intel), broj tranzistora po integrisanom kolu bi se udvostručio
svakih 18 meseci. Moore je predvideo da će se taj trend održati sledećih deset
godina. Intel je uspeo da sledi taj zakon u mnogo dužem vremenskom periodu. U
1978. godini, mikroprocesor 8086 je radio na frekvenciji od 4.77 MHz i imao je
manje od 30000 tranzistora. Do kraja prethodnog milenijuma, Pentium 4 je stigao
do zapanjujuih 42 milion tranzistora na čipu i radio je na frekvenciji od 1.5GHz.
4 Kola malog stepena inegracije sadrže do 100 komponenti na silicijumskoj podlozi
5 Kola srednjeg stepena integracije sadrže od 100 do 1000 komponenata na slicijumskoj podlozi.
6 Kola velikog stepena integracije sadrže od 1000 do 10 000 komponenti na slicijumskoj podlozi.
7 Kola vrlo velikog stepena integracije sadrže preko 10 000 komponenti na slicijumskoj podlozi.

Najsloženija savremena VLSI kola sadrže oko 125 000 000 komponenata na slicijumskoj pločici.
16 GLAVA 2. RAČUNARSKI SISTEMI

Danas se radi na razvoju još jedne nove klase računara - neuroračunara, zasno-
vanih na korišćenju veštačkih neuronskih mreža sličnih neuronima mozga, koji će
imati, verovatno, principijelno drugačiju arhitekturu od dosadašnje, a biće u stanju
da znatno bolje rešavaju neke ”teške” probleme. Naime, kognitivni (spoznajni)
problemi kao što su prepoznavanje likova, učenje govora, razumevanje prirodnog
jezika, pretraživanje tekstualne informacije u memoriji ili vod-enje mehaničke ruke
robota radi hvatanja predmeta su primeri problema koje brzo rešava ljudski mozak
a koji su teški za rešavanje pomoću konvencionalnih računara.
Zakoni fizike ograničavaju projektante u beskrajnom povećavanju brzine gen-
eratora takta, i mada se frekvencija takta povećava svake godine, to samo po sebi
ne bi dalo ona poboljšanja performanse na koja smo navikli. To je razlog zašto
inženjeri stalno tragaju za novim načinima da što više uposle procesor u svakom
otkucaju generatora takta. Jedna od pristupa je da se prošire magistrala podataka i
registri. Čak i 4-bitni procesor može da sabere dva 32-bitna broja, ali bi za to bilo
potrebno dosta instrukcija, dok bi 32-bitni procesor mogao da izvrši taj zadatak u
jednoj jedinoj instrukciji. Većina današnjih procesora imaju 32-bitnu arhitekturu,
ali već stižu i 64-bitne varijante.
Kada se kaže da se ”stvari dešavaju sa svakim otkucajem generatora takta”,
onda je potrebno znati koliko u stvari treba vremena da bi se izvršila jedna instruk-
cija. Tradicionalno, bilo je potrebno pet otkucaja (ciklusa) jedan da se prihvati
instrukcija iz memorije, jedan da se ona dekoduje, jedan da se dodje do podatka,
jedan da se instrukcija izvrši i jedan da se ispiše rezultat. U tom slučaju, evidentno
je da bi procesor koji radi na frekvenciji od 100 MHz bio u stanju da izvrši samo
20 miliona instrukcija u sekundi.

2.2 Von Neumannova mašina


Svaki računar se sastoji od pet osnovnih funkcionalnih celina koje se nazivaju je-
dinice računara. To su: ulazna jedinica, izlazna jedinica, memorija (sastoji se
od osnovne i spoljne memorije), upravljačka (komandna) jedinica i aritmetičko-
logička jedinica. Aritmetičko-logička i upravljačka jedinica često se razmatraju
kao celina koja se naziva centralni procesor ili kratko procesor. Ulazni i izlazni
ured-aji često se nazivaju periferni ured-aji. Na slici 2.1 prikazana je Von Neuman-
nova arhitektura računara i tok podataka i upravljačkih signala.
Struktura savremenog računara veoma je slična strukturi Von Neumannove
mašine8 (projektovane kasnih 1940. godina), pa se za savremene elektronske
8 Rod-en je u Budimpešti 28. decembra 1903. godine kao Johann von Neumann i već sa šest

godina znao je da deli osmocifarske brojeve. Studirao i diplomirao hemiju, a doktorirao matematiku
2.2. VON NEUMANNOVA MAŠINA 17

Memorija

Aritmetičko
Upravljačka logička jedinica
jedinica
Akumulator

Ulaz Izlaz

Sl. 2.1: Von Neumannova strukturna šema računara

računare kaže da u osnovi imaju Von Neumannovu arhitekturu. Opišimo


ukratko arhitekturu Von Neumannove mašine. Uobičajeni naziv za von Neuman-
novu arhitektura prema Flynnovoj notaciji je SISD (videti Flynnovu notaciju na
strani 12).
Elementarni fizički objekat Von Neumannove mašine (pa i savremenih elek-
tronskih računara elektronska cev, tanzistor), koji može da bude u dva diskretna
stanja protiče struja/ne protiče struja, tj. da “registruje” binarnu cifru 0 ili 1, naziva
se ćelija. U njoj se može prikazati jedna binarna cifra tj. jedan bit informacije (engl.
“binary digit” binarna cifra). Ćelije se u Von Neumannovoj mašini organizuju u
nizove fiksne dužine koji se nazivaju registar.
Memorija se sastojala od 1024 registra od kojih je svaki imao svoju adresu
(mesto, lokaciju) broj od 1 do 1024, a svaki registar je imao po 40 bita. Sadržaj
svakog registra mogao je da se interpretira kao jedan ceo broj u binarnom obliku,
ili kao dve (20-bitne) instrukcije. Program se sastojao od niza binarnih instrukcija
(instrukcija zapisanih binarnom azbukom), tj. bio je na mašinskom jeziku.
Von Neumannova mašina imala je sledeće karakteristike:

• Celi brojevi bili su jedini oblik podataka. Oni su predstavl-


jani u binarnom obliku i to tako što se dekadni broj dn dn−1 . . . d0
(d0 , d1 , . . . dn ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}) predstavlja binarnim brojem
bm bm−1 . . . b0 (b0 , b1 . . . bm ∈ {0, 1}), tako da je dn × 10n + dn−1 × 10n−1 +
1928. godine. Pozvan ja na univerzitet u Princetonu 1930. godine gde postaje redovni profesor
1933. godine, i to ostaje do kraja života 8. februara 1957. godine. Radi na matematikim osnovama
za kvantnu fiziku. Oko 1940. godine sa teorijskih istraživana naglo prelazi na primijenjena. Za
vrijeme rata sudeluje u izradi atomske, a nakon rata i hidrogenske bombe.
18 GLAVA 2. RAČUNARSKI SISTEMI

· · · + d1 × 101 + d0 × 100 = bm × 2m + bm−1 × 2m−1 + · · · + b1 × 21 + b0 × 20 .


• Mašina je mogla da sabira, oduzima, množi, deli i računa apsolutnu vrednost
broja. Rezultat sabiranja ili oduzimanja je smeštan u registar koji se zvao
akumulator. Rezultat množenja ili deljenja smeštan je u par registara (aku-
mulator i registar R). Svaka instrukcija je imala deo koji je odred-ivao vrstu
operacije i deo koji je odred-ivao adresu operanda u memoriji. Na primer,
instrukcija 0011 11001000 00001011 imala je značenje “dodati” (na vred-
nost u akumulatoru) vrednost sa lokacije (adrese) 968 (niz od osam LSB
bitova,00001011, jeste kôd operacije “dodati”, a preostalih dvanaest MSB
binarnih cifara predstavljaju celobrojnu adresu operanda 968). Ova mašinska
instrukcija mogla bi se zapisati i tzv. simboličkim jezikom, npr. u obliku
ADD J, gde je ADD naziv operacije dodavanja (i odgovara binarnom kôdu
00001011), a J simbolička adresa lokacije 968 (Von Neumannova mašina
nije imala mogućnost zapisa instrukcija na simboličkom jeziku).
• Memorijskoj lokaciji (memorijskom registru) se može dodeliti vrednost iz
akumulatora. Akumulatoru ili registru podataka R može se dodeliti vrednost
iz specificiranog memorijskog registra.
• Tok upravljanja je bio jedna instrukcija za drugom, osim u slučaju “goto”
instrukcije koja je ukazivala na memorijsku lokaciju gde je trebalo naći in-
strukciju za izvršenje.

U memoriji savremenih računara čuvaju se programi koji upravljaju radom


računara i podaci koji se pri radu računara obrad-uju. Podatke za obradu računar
dobija od raznih ulaznih ured-aja kao što su: tastatura, miš, jedinice magnetnih
diskova, razni senzori (pretvarači), telekomunikacione linije, itd. Posle obrade u ar-
itmetičko-logičkoj jedinici (procesoru) računar pamti rezultate obrade na spoljnoj
memoriji ili ih prosled-uje na jedan ili više izlaznih ured-aja, koji su takod-e vrlo
raznovrsni. To mogu biti: ekrani, razne vrste štampača, jedinice magnetnih
diskova, telefonske linije, itd.
Računar radi tako što pribavlja (čita) iz memorije jednu po jednu instrukciju
programa, dekodira je i izvršava. Ako iz računara ili njegovog okruženja nema
zahteva za prekid ivršenja tekućeg programa, računar pribavlja sledeću instruk-
ciju tekućeg programa. Ako takvih zahteva ima, računar prekida ivršenje tekućeg
programa, i prelazi na izvršenje specijalnog programa koji se aktivira prispelim
zahtevom za prekid, koji se naziva analizator prekida. Glavni zadatak analizatora
prekida je da utvrdi koji ured-aj je tražio prekid, da preda kontrolu odgovarajućem
programu koji opslužuje taj ured-aj, i kasnije vrati kontrolu glavnom programu koji
je prekinut. Ovakav način rada se ponavlja sve dok je računar uključen.
Arhitekturu savremenih računara, kao i računara o kome je bilo reči, često se
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 19

nazivaju računari sa Von Neumannovom arhitekturom, odlikuju sledeće karakter-


istike.

1. Jedinstvena adresivna memorija sa proizvoljnjim pristupom. Programi i po-


daci čuvaju se u istoj memoriji. Memorija je linearna i jednodimenzionalna,
tj. oblika je vektora reči čije adrese obrazuju niz oblika 1, 2, . . ..
2. Nema eksplicitne razlike izmed-u instrukcije i podatka. Oni se razlikuju im-
plicitno pri radu računara. Na primer, objekat adresiran instrukcijom skoka
tretira se kao instrukcija; operandi koji se navode u instrukciji sabiranja, tre-
tiraju se kao podaci. Takav prećutni dogovor omogućuje, npr. obraćanje
instrukciji kao podatku (i njeno modifikovanje), komponovanje instrukcije
od reči podataka ili skok na reč podatka i tretiranje te reči kao instrukcije.
3. Nema, na primer, nikakvih elemenata koji omogućuju eksplicitno razliko-
vanje niza bitova, koji predstavljaju broj sa pokretnom tačkom, od niza
bitova koji predstavljaju niz znakova. Namena podataka se odred-uje logikom
programa. Ako računar pribavi iz memorije instrukciju sabiranja brojeva
sa pokretnom tačkom, pretpostavlja se da su operandi brojevi sa pokretnom
tačkom, i ti se operandi sabiraju prema pravilima sabiranja brojeva sa pokret-
nom tačkom. Na isti način se mogu sabrati dva operanda, koji su u stvarnosti
nešto drugo, na primer, nizovi znakova.

2.3 Struktura savremenog računarskog sistema


Savremeni računarski sistem sastoji se od dve osnovne komponente: tehničkog
sistema računara (u osnovi Von Neumannove arhitekture) i programskog sistema
računara. Osnovna karakteristika računarskog sistema je integralna povezanost
tehničke i softverske strukture. Iz tog razloga je razvoj tehničke strukture pratio i
razvoj softverske strukture.

2.3.1 Tehnički sistem računara


Tehnički sistem računara hardver (engl. hardware) čine svi ured-aji računarskog
sistema. Tehnički sistem, kao osnovne komponente koje obezbed-uju njegovu
funkcionalnost, uključuje komponentu za obradu podataka (procesor), i skladište
(memoriju) za pamćenje programa i podataka. Ove dve komponente zajedno
nazivaju se računar. Osim ovih, tehnički sistem uključuje i komponente ulaznih
i izlaznih informacionih tehnologija, prilagod-ene ulazu podataka u računar i
izdavanju rezultata obrade, kao i komponente komunikacione tehnologije koje
omogućuju komunikaciju med-u pojedinim komponentama.
20 GLAVA 2. RAČUNARSKI SISTEMI

Pored računarske (operativne) memorije, čiji se sadržaj gubi prestankom elektri


čnog napajanja, praktična potreba trajnog čuvanja programa i podataka nameće i
postojanje “spoljašnjeg” skladišta spoljašnje memorije, čiji sadržaj ostaje sačuvan
trajno.
Dakle, tehnički sistem računara globalno se može podeliti na računar i per-
iferne ured-aje. Računar se sastoji od procesora i operativne (unutrašnje) memorije,
dok periferni ured-aji uključuju ulazno/izlazne ured-aje i spoljašnju memoriju.
Procesor, operativna memorija, spoljašnja memorija i ulazno/izlazni ured-aji
med-usobno su povezani komunikacionim kanalima, tzv. magistralama (engl. bus).
Procesor (engl. CPU - Central Processing Unit) je osnovna komponenta raču-
narskog sistema jer se izvršavanje programa odvija u procesoru. Procesor ima dve
značajne funkcije u računaru: da obrad-uje podatke i da upravlja radom ostalih de-
lova računarskog sistema ulaznih, komunikacionih, izlaznih ured-aja, memorije.
Procesor je izgrad-en na silikonskom poluprovodničkom čipu sa više desetina mil-
iona tranzistora (od kojih svaki može da “registruje” 0 ili 1).
Procesor ima specifične elemente (delove) koji izvršavaju pojedine mašinske
instrukcije, i konačni (obično neveliki) skup registara opšte namene (koji mogu da
prime podatke), i specijalne namene, kao što su akumulator (za privremeno čuvanje
rezultata), brojač instrukcija (za memorijsku adresu instrukcije koja je na redu
za izvršavanje), registar adresa (za memorijske adrese podataka koji se obrad-uju
tekućom instrukcijom), registar instrukcija (za tekuću instrukciju), itd. Skup in-
strukcija koje procesor može da izvrši, zajedno sa skupom registara, definiše
arhitekturu procesora. Arhitektura se razlikuje od procesora do procesora.
Procesor se sastoji od obradne jedinice tj. jedinice za aritmetičku i logičku
obradu podataka (pa po tome i “aritmetičko-logičke jedinice”, engl. ALU -
Arithmetic-Logic Unit), i upravljačke jedinice, (engl. CU - Control Unit) koja
odred-uje koju komponentu ALU treba aktivirati u kom trenutku.
Aritmetičko-logička jedinica je deo procesora u kome se izvršavaju elemen-
tarne operacije aritmetičke, npr. sabiranje, oduzimanje, celobrojno sabiranje, celo-
brojno oduzimanje i logičke, npr. pored-enje dva broja. Ova jedinica prima ulazne
električne signale ({0, 1}) koji predstavljaju ulazne podatke, i elektronski ih trans-
formiše u električne signale koji predstavljaju rezultate. Ulazni signali dolaze u
aritmetičko-logičku jedinicu (npr. u njene registre opšte namene) iz nekih polja
operativne memorije (čija je adresa sastavni deo instrukcije), a izlazni signal (iz
akumulatora ili registra opšte namene šalje se u odredišno polje memorije (koje se
takod-e navodi u instrukciji).
Upravljačka jedinica upravlja signalima i odgovorna je za to koje operacije i
kada izvršiti za vreme izvršavanja programa. Ova jedinica sadrži komponentu koja
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 21

dekodira operaciju tekuće intsrukcije. Ova jedinica izvršava i posebne instrukcije


kao što su uslovni i bezuslovni skok i zaustavljanje programa.
Operativna ili unutrašnja memorija je veoma tesno vezana sa procesorom.
I ona se gradi na poluprovodničkim silikonskim čipovima sa stotinama miliona
tranzistora. Ova memorija služi za čuvanje informacija neposredno potrebnih u
procesu obrade, a to su programi operativnog sistema, programi koji se upravo
izvršavaju, i podaci potrebni tim programima. Memorija se sastoji iz niza bitova
organizovanih u nizove dužine 8 koji se nazivaju bajt. Bajtovima su dodeljene
adrese, (brojevi od 1 do ukupnog broja bajtova). Bjat je najmanja adresibilna je-
dinica količine podataka. Bajtovi mogu se dalje grupišati u logičke skupove dužine
(obično 2, 4 ili 8 bajtova) sa adresama koje predstavljaju najmanje adrese bajta koji
učestvuju u tom registru.

Nibl je grupa od 4 bita, fizički skup bitova ali ne i adresibilni.


Oktet je grupa od 8 bitova i češće se koristi reč bajt umesto oktet jer se po-
drazumeva da je to isto.
Reč je veća grupa bitova, obično 2 bajta, ali nije standardizovana (postoje arhitek-
ture sa rečima od 4, 8 ili više bajtova). Kod 32-bitnih mikroprocesora
najčešće je reč 32-bitni podatak, polureč 16-bitni podatak, a 64-bitni podatak
dupla reč. Reč je najčešća adresibilna memorijska jedinica za podatke i za
program. Računarske arhitekture se razlikuju po dužini reči , pa se govori o
šesnaestobitnoj, tridesetdvobitnoj ili šezdesetčetvorobitnoj arhitekturi.

Veličina memorije se meri u bajtovima (B), odnosno krupnijim jedinicama KB


(kilobajt = 1024 bajta), MB (megabajt = 1024KB), GB (gigabajt = 1024MB), TB
(terabajt = 1024GB).
Adresa memorije predstavlja ceo pozitivan broj iz intervala [2n − 1], gde je n
dužina adrese i njome se može adresirati 2n memorijskih lokacija. Dužina adresi-
bilne memorijske lokacije iznosi jadan bajt.
Uvodjenjem koncepta adrese i adresiranja stvoren je bitan mehanizam za
funkcionisanje računara - stvorena je mogućnost da se svaka instrukcija i svaki
podatak smešta u odredjenu memorijsku adresu, da bi mu se kasnije, posredstvom
te adrese moglo pristupiti. Pri tome su nad memorijom moguće dve operacije -
upisivanje i čitanje sadržaja neke adrese. Realizacija ovih operacija omogućena je
posredstvom dva registra, od kojih se jedan naziva adresnim registrom memorije
(ARM), a drugi prihvatnim registrom memorije (PRM). Operacija čitanja sadržaja
odred-ene memorijske lokacije (Slika 2.2(a)) obavlja se tako što se adresa lokacije
kojoj se želi pristupiti upisuje u ARM, a zatim se inicira izvršenje same operacije,
da bi se kao rezultat njenog dejstva sadržaj posmatrane lokacije upisao u PRM.
22 GLAVA 2. RAČUNARSKI SISTEMI

ARM 102 ARM 104

0 0
1 1
2 2

102 20 104 60

n−1 n−1

PRM 20 PRM 60
(a) (b)

Sl. 2.2: Čitanje sadržaja memorijske adrese (a) i upisivanje novog sadržaja u
memorijsku adresu (b).

Operacija upisivanja podatka u odredjenu memorijsku lokaciju odvija se na


sličan način. Podatak koji treba da se upiše unosi se u PRM, a adresa lokacije u
koju se vrši upisivanje unosi se u ARM, a zatim se inicira operacija upisivanja.
Rezultat operacije upisivanja (Slika 2.2(b)), je da se podatak iz PRM upisuje u
posmatranu ćeliju, pri čemu se, naravno, njen prethodni sadržaj uništava.
Unutar operativne memorije postoje različite lokacije (adrese) za čuvanje razli
čitih vrsta podataka i programa deo memorije za ulazne podatke (koji dolaze sa
ulaznih ured-aja), deo memorije za izlazne podatke (one koji se šalju na izlazne
ured-aje), deo za smeštanje programa, radni prostor za smeštanje med-urezultata,
itd. Ova raspodela unutrašnje memorije nije statična i zavisi od programa koji se
izvršavaju.
Računar obično poseduje nekoliko različitih tipova operativne memorije, koji
se koriste za različite svrhe.
RAM (engl. Random Access Memory) su memorijski čipovi čijim se
proizvoljnim lokacijama može pristupiti direktno, radi upisa ili čitanja podataka
ili instrukcija.
ROM (engl. Read Only Memory) čipovi koriste se za trajno čuvanje nekih in-
strukcija. Te instrukcije su obično deo operativnog sistema koji proverava hardver
kadgod se računar uključi na napajanje. Sadržaj ROM čipa se ne gubi kada se
računar isključi, i ne može se menjati.
PROM (engl. Programmable ROM) čip je sličan ROM-u, osim što je na
početku prazan, a pomoću specijalnog ured-aja nabavljač računara ga popunjava
željenim instrukcijama. Od tog trenutka PROM se ponaša isto kao ROM.
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 23

EPROM (engl. Erasable PROM) čip je varijanta PROM čipa čiji se sadržaj
može menjati pomoću ultravioletnih zraka i specijalne opreme.
Ulazno/izlazni ured-aji obezbed-uju unošenje i izdavanje informacija u računar
tj. iz računara, i predstavljaju sredstvo komunikacije računara sa spoljašnjom sredi-
nom.
Primer ulaznih ured-aja su tastatura terminala, miš, ured-aji za prepoznavanje
govora (svi oni uključuju čoveka u proces ulaza informacija), ili skaneri, optički
čitači, senzori, kojima se eliminiše čovek iz procesa unošenja informacija. Po-
daci koji se unose preko ovih ulaznih ured-aja, bilo da su to brojevi, tekst, slika,
zvuk, smeštaju se, transformisani u binarni oblik, u deo primarne memorije na-
menjen ulazu podataka. Na primer, skaner, uz specifični softver, skanira sliku
gradeći u memoriji bitmapu mapu ćelija, od kojih se svakoj pridružuje binarni
kod (broj) koji odgovara njenoj osvetljenosti ili boji. Tek iz memorije se svi ti
podaci mogu koristiti ili za obradu ili za predstavljanje, sada opet transformisani
u, za čoveka, pogodni oblik (dekadni broj, slova, sliku, zvuk) na izlazne ured-aje.
Posebno zanimljiv u tom pogledu je slučaj tastature koja je bliska čak i onim koris-
nicima koji nisu imali nikakav dodir sa računarom, zbog njene sličnosti sa pisaćom
mašinom. Postoji, med-utim, bitna razlika izmed-u pisaće mašine i tastature. Pri-
tisak na tipku pisaće mašine proizvodi ispisivanje odgovarajućeg slova na papir
to je sve jedna, nedeljiva operacija. Pritisak na tipku tastature ima sasvim drugi
efekat. On proizvodi niz eketronskih impulsa koji predstavljaju taj znak u bina-
rnom obliku, zatim se ti impulsi usmeravaju na odred-enu adresu unutrašnje mem-
orije gde se privremeno čuvaju, i zatim se usmeravaju na ekran terminala, koji ih
transformiše nazad u znak spoljašnje azbuke. Dakle, za ulaz sa tastature vezane
su dve operacije jedna kojom se znak upisuje u memoriju, i druga kojom se znak
iz memorije ispisuje na ekran. One se izvršavaju u paru samo zbog udobnosti za
korisnika (da bi video šta je ukucao), inače, što se rada računara tiče, druga bi se
operacija mogla eliminisati.
Primeri izlaznih ured-aja su ekran terminala, štampač, crtač, ured-aj za izlaz na
mikrofilm, ured-aji za glasovni izlaz, itd. Da bi se ekran mogao koristiti za izdavanje
znakova, brojeva, ali i slika i crteža, neophodna je i odgovarajuća grafička kartica
koja obezbed-uje odgovarajuću rezoluciju (broj osvetljenih tačaka na ekranu).
Potreba za trajnim čuvanjem velikih količina informacija podataka i programa
dovela je do koncepta “spoljašnjeg” skladišta spoljašnje memorije, čiji sadržaj os-
taje sačuvan trajno. Spoljašnja memorija se ponaša kao medij za ulazne i izlazne
podatke, i koristi se uz pomoć ured-aja koji omogućuje upravljanje njom (tzv. kon-
troleri spoljašnje memorije, npr. kontroler diska), i programa koji omogućuju
čitanje i pisanje iz (u) spoljašnje memorije (npr. pogonaš diska engl. disk driver).
24 GLAVA 2. RAČUNARSKI SISTEMI

Podaci i programi koji se čuvaju u spoljašnjoj memoriji po potrebi se prenose u


operativnu memoriju i koriste u procesu obrade. Vreme pristupa spoljašnjoj mem-
oriji je mnogo veće od vremena pristupa unutrašnjoj, ali je zato kapacitet neupore-
divo veći.
Kao prvi oblici medija spoljašnje memorije korišćeni su papirne kartice i pa-
pirne trake, koje nemaju mnogo sličnosti sa današnjim medijima spoljašnje mem-
orije. Kao mediji spoljašnje memorije koriste se danas najčešće magnetni disk,
pokretni disk (disketa), i optički (kompakt) disk (CD-ROM, koji se može samo
čitati ), ili čitati i pisati (proizvoljan broj puta) CD-R (CD-RW), DVD (engl. Dig-
ital Video Disk), fleš disk. Optički diskovi se koriste za distribuciju velikih pro-
gramskih paketa (CD do 650MB, DVD do 4.7GB).
Sadržaj savremenih medija spoljašnje memorije je skup tzv. spoljašnjih da-
toteka organizovanih na razne načine npr. u hijerarhiju kataloga kao kod DOS-a.
Spoljašnja datoteka je niz znakova (bajtova) kome je pridruženo ime, i koji se može
interpretirati na razne načine npr. kao tekst, kao program na programskom jeziku,
kao program preveden na mašinski jezik, kao slika, crtež, zvuk, itd. Na sadržaj
datoteke tj. način na koji ga treba interpretirati, ukazuje ekstenzija uz ime datoteke
(npr. txt, pas, c, out, obj, exe, bmp, itd).
Magistrale se razlikuju med-u sobom po tome šta se preko njih prenosi i po svo-
joj “širini”, tj. broju bitova koji se istovremeno mogu prenositi magistralom. Tako
se razlikuju magistrala adresa preko koje se prenose memorijske adrese podataka
ili instrukcija, magistrala podataka preko koje se prenose podaci iz memorije ili u
memoriju, i kontrolna magistrala preko koje se prenose signali za čitanje ili upis,
iz memorije ili sa ulaznih ured-aja odnosno u memoriju ili na izlazne ured-aje. Što
se tiče širine, ona se može razlikovati med-u magistralama adresa, podataka i kon-
trole i u jednom računarskom sistemu. Ranije su magistrale podataka obično bile
8-bitne, adresne magistrale. Danas su magistrale 32-bitne ili 64-bitne.
Osnovna karakteristika računarskog sistema je konfiguracija, tj. sastav
tehničkog sistema: koji računar (koji procesor, koju i koliku operativnu memoriju),
i koje periferne ured-aje sadrži tehnički sistem. Jedan isti računar može se koristiti
sa raznim perifernim ured-ajima i tako učestvovati u različitim konfiguracijama, u
zavisnosti od namene računarskog sistema.

2.3.2 Programski sistem računara

Postoje dva tipa programskih sistema - softvera: sistemski softver i aplikativni soft-
ver. Programski sistem računara je skup programa koji kontroliše i koordinira rad
različitih tipova opreme u računarskom sistemu, i omogućuje korisniku efikasno
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 25

i udobno korišćenje raspoložive opreme. Aplikativni softver omogućuje primenu


računara za rešavanje specifičnih problema ili izvršavanje specifičnih zadataka.
Programski sistem računara je nadgradnja tehničkog sistema, i u prvoj gen-
eraciji savremenih elektronskih računara nije ni postojao. Korisnik je neposredno
preko ulazno/izlaznih ured-aja komunicirao sa računarom da bi izvršio svoje pro-
grame napisane na mašinskom jeziku računara. Podaci su takod-e bili u binarnom
zapisu, a programiranje i korišćenje računara veoma složeno.
Osnovne komponente programskog sistema računara mogu da se grupišu u
operativne sisteme, jezičke procesore i uslužne programe (ili pomoćne programe)
kao što je prikazano na Slici 2.3.

Programski sistem
• Operativni sistemi;
• Programski prevosioci;
• Uslužni programi;

Uslužni programi
Programski prevodioci
• Editor
• Asembleri i makroasembleri
• Povezivač
• Kompilatori
• Sredstva za testiranje i otklanjanje
• Interpretatori
grešaka
• Pretprocesori
• Pomoćni programi

Sl. 2.3: Komponente programskog sistema

Operativni sistem je osnovna komponenta programskog sistema računara. To je


skup programa koji ima tri osnovne funkcije: dodeljivanje sistemskih resursa (npr.
procesora, memorije), raspored-ivanje različitih operacija koje treba da se obave i
nadgledanje sistemskih aktivnosti. Operativni sistema je uvek u operativnoj mem-
oriji kada je računar uključen. On prima signale sa ured-aja i naredbe od korisnika
i omogućuje njihovu obradu i izvršavanje.
Operatvini sistem omogućuje različite dodele računarskih resursa (procesora i
memorije) različitim programima (procesima). Serijsko izvršavanje programa ili
paketna obrada označava izvršavanje jednog programa od početka do kraja, pre
nego što drugi program može da započne svoje izvršavanje. Multiprogramiranje
dopušta većem broju korisnika da istovremeno izvršavaju svoje programe, tj. da
njihovi programi istovremeno budu u operativnoj memoriji. Jednom od programa
se dodeljuje procesor i taj program se izvršava dok ne dod-e na red izvršavanje neke
njegove ulazno/izlazne operacije. Takva operacija zahteva korišćenje ulazno/i-
26 GLAVA 2. RAČUNARSKI SISTEMI

zlaznih ured-aja a ne procesora, pa se tada procesor dodeljuje drugom programu koji


počinje (ili nastavlja) da se izvršava drugi program. Ovakva procedura se primen-
juje na programe svih korisnika. Ovaj oblik multiprogramiranja bio je karakter-
ističan za rane računare kod kojih je izvršavanje I/O operacija bilo dugo. Alterna-
tivni metod za istovremeno izvršavanje većeg broja programa je rad u razdeljenom
vremenu (engl. time sharing). Svakom programu dodeljuje se mali vremenski
interval (engl. time slot), npr 20 ms (milisekundi), u kome može da koristi proce-
sor. Procesor se dodeljuje kružno, tako da svaki program u kratkim vremenskim
razmacima dobija procesor na korišćenje, čime se svakom korisniku stvara utisak
da sâm koristi procesor. Rad u razdeljenom vremenu se kombinuje sa klasičnim
multiprogramiranjem, pri čemu je kriterijum za oduzimanje procesora programu ili
potrošeni vremenski interval ili zahtev za ulazno/izlaznom operacijom. Multitask-
ing omogućuje istovremeno (paralelno) izvršavnje većeg broja procesa - bilo da
pripadaju jednom ili većem broju korisnika, bez obzira na politiku dodele proce-
sora i memorije, i u tom smislu obuhvata prethodne politike. Jedan od razloga
za multitasking uopšte jesu sistemi za rad u realnom vremenu, kod kojih neki
spoljašnji dogad-aji zahtevaju trenutnu dodelu procesora programu koji kontroliše
odgovarajući dogad-aj. Savremeni operativni sistemi uglavnom koriste neki oblik
rada u razdeljenom vremenu, uz primenu većeg broja nivoa prioriteta. Multipro-
cesiranje je režim rada računara koji koristi veći broj procesora za izvršavanje in-
strukcija. Ovaj režim omogućuje paralelno (u punom smislu) izvršavanje instruk-
cija jednog programa ili većeg broja programa.
Termin programski prevodioci označava jezičke procesore koji prihvataju pro-
grame pisane na nekom od programskih jezika i generišu funkcionalno ekviva-
lentne programe na nekom drugom jeziku: Kompilator je prevodilac čiji je ulazni
jezik viši programski jezik, a izlazni jezik je mašinski jezik. Interpretator je pre-
vodilac čiji je ulazni jezik viši programski jezik a izlazni jezik je neka posredna
forma koja se interpretira (izvršava). Za razliku od asemblera kompilator i in-
terpretator, po pravilu, za jednu naredbu napisanu u višem programskom jeziku
generišu više instrukcija mašinskog jezika. Kompilator i interpretator se razlikuju
po tome što kompilator prevodi na interni mašinski jezik čitav program pa se tek
onda pristupa njegovom izvršavanju, dok interpretator prevodi jednu naredbu iz
višeg programskog jezika na niz instrukcija mašinskog jezika, pristupa izvršavanju
ovih instrukcija, potom prelazi na prevodjenje i izvršenje sledeće naredbe, itd.
Kompilacija programa se može razložiti na dva glavna zadatka:

(a) analizu - utvrdjivanje strukture izvornog programa, i


(b) sintezu - generisanje (konstrukciju) ciljnog programa ekvivalentnog
izvornom programu.
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 27

U procesu analize izvorni program se konvertuje u apstraktnu formu koja sadrži


sva bitna svojstva algoritma. Analiza obuhvata leksičku analizu i sintaksnu analizu.
Leksičkom analizom se razlažu ulazne jedinice odredjenog značenja, kao što su
npr. imena, konstante, rezervisane reci, operatori. Semantička analiza, predstavlja
proces odludjivanja da li je niz ulaznih simbola rečenica datog jezika i, ako jeste,
odredjivanje sintaksne strukture tog niza.
Proces sinteze sadrži dva posebna dela: generisanje koda i asembliranje.
Generisanje koda transformiše apstraktni izvorni program u ekvivalentni mašinski
program. Asembliranjem se vrši konverzija mašinskih naredbi u odgovarajući
izlazni format i formira se objektni modul prilagodjen obradi od strane povezivača
ciljne mašine.
Interpretatorski način realizacije prevodioca najviše se primenjuje kod inter-
aktivnih programskih jezika, kao što je npr. Bejzik (engl. BASIC) i kod raznih
komandnih jezika. Kad god stigne nova ulazna linija dalje akcije preuzima kon-
troler obrade koji poziva:

(a) program homogenizator radi konverzije ulazne programske linije u neki stan-
dardni interni format, ili
(b) sintaksni analizator i generator koda radi sintaksne provere i generisanja
mašinskog koda, ili
(v) procesor komandi radi obrade upravljačke (kontrolne) naredbe, npr. RUN,
ali ne i njenog izvršenja.

Izvršenje prevedenog programa spada u nadležnost izvršioca. Realizuje se


čitanjem odgovarajućeg mašinskog koda i njegovim izvršavanjem. Stoga je stvarno
izvršavanje prevedenog programa mešavina interpretativnog i mašinskog koda, s
tim što se većina naredbi izvršava preko mašinskog koda a kontrola prelaska s
jedne na drugu naredbu podržava se interpretativno.
Treća važna komponenta programskog sistama su uslužni (pomoćni) programi
(engl. utilities). To su programi koji pomažu u analiziranju, optimizaciji ili
održavanju računara. Obično se nazivaju alatima (engl. utility, tool). To su, na
primer, antivirus programi, programi za arhiviranje, pravljenje rezervnih kopija,
čišćenje i komprimovanje diska, screensaver i sl. Ovde pripadaju i programi za
pokretanje i korišćenje ured-aja kao što su DVD, miš, USB flash i sl.
Priprema (unošenje) programa obavlja se u posebnoj fazi razvoja programa
koja se naziva editovanje, a deo sistemskog softvera koji realizuje tu fazu naziva se
editor programa ili editor teksta. Namenjen je za unos i modifikaciju tekstualnih
podataka, npr. programa na višim programskim jezicima, knjiga i drugih tekstual-
nih dokumenata. Rezultat editovanja programa je izvorni program.
28 GLAVA 2. RAČUNARSKI SISTEMI

Editori teksta čine bitan deo korisničkog interfejsa i najčešće su korišćeni de-
lovi sistemskog softvera u interaktivnim računarskim sistemima. Za većinu koris-
nika oni predstavljaju glavnu spregu sa računarom. Mogu biti linijski editori, kada
se tekst posmatra kao niz linija razdvojenih upravljačkim znakom za kraj linije, ili
ekranski editori. Kod ekranskih editora sadržaj ekrana predstavlja prozor u tekst
unutar kojeg se kursor može dovesti na mesto gde će se vršiti umetanje, brisanje i
druge editorske funkcije.
Jedna od važnih karakteristika editora je skup editorskih funkcija koje su stav-
ljene na raspolaganje korisniku. Taksonomija9 mogućnosti editora obuhvata poten-
cijalno preko 200 funkcija koje se njime mogu izvršavati. Ovde ćemo opisati samo
neke od najvažnijih i najčeš će koriš ćenih funkcija nad tekstualnim objektima, gde
se pod objektom podrazumeva: znak, reč, linija, rečenica, paragraf i sekcija, koji
kao celina podležu odredjenoj operaciji editovanja:

• umetanje objekata u tekst,


• uklanjanje (brisanje) objekata iz teksta,
• zamena objekata u tekstu novim objektima,
• premeštanje objekata s jedne na drugu poziciju u tekstu,
• kopiranje objekata na razne pozicije u tekstu,
• razdvajanje i spajanje više objekata u tekstu na više delova,
• selekcija (označavanje) pojedinih delova teksta,
• traženje objekta u tekstu, itd.

Rezultat prevodjenja programa pomoću kompilatora ne dobija se direktno u


mašinskoj već u formi koja se naziva objektni modul. Da bi se program mogao
izvršavati u računaru neophodno je dovesti ga u izvršnu formu i smestiti ga u oper-
ativnu memoriju. Izvršna forma programa se dobija povezivanjem objektnih mod-
ula u jednu celinu tzv. modul punjenja i njegovo svodjenje na direktnu mašinsku
formu (mašinski jezik). Celokupan posao oko generisanja izvršne forme i njenog
smeštanja u operativnu memoriju obavlja se u posebnoj fazi razvoja programa koja
se naziva povezivanje. Ova faza sledi posle procesa prevodjenja. Deo sistemskog
softvera koji realizuje funkciju povezivanja naziva se povezivač ili editor veza. Pos-
toje razne verzije povezivača a ponekad oni vrše i punjenje izvršne forme programa
u operativnu memoriju.
9 Taksonomija (od grčkog, tassein, “razvrstati” i nomos, “zakon”) je izraz koji se može odnositi na

predstavljanje hijerarhijske klasifikacije pojmova, stvari, objekata, mesta, bića, dogad-aja ili principa
koji se klasifikuju. Stablo ili drvo je struktura koja omogućava definisanje hijerarhijske veze med-u
rečima.
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 29

Otklanjanje grešaka ili prečiš ćavanje programa predstavlja proces identi-


fikacije i odstranjivanja lokalizovanih grešaka iz programa. Nasuprot tome testi-
ranje nastoji da ustanovi da li greške postoje, ali ih ne izoluje niti ih otklanja.
Otklanjanje grešaka u programu predstavlja dvodelni proces koji počinje in-
dikacijom o postojanju greške kao rezultata uspešnog testiranja, i nastavlja sa
sledećim aktvnostima:

(a) precizno odredjivanje prirode uočene greške i


(b) lokalizacija i otklanjanje greške.

Pomoćni programi predstavljaju skup programa koji nisu fundamentalne


prirode, ali se njima proširuju mogućnosti računarskog sistema i time poboljšava
kvalitet usluga raspoloživih korisniku. Broj i vrsta ovih programa koji su zas-
tupljeni u sistemskom softveru se razlikuje od sistema do sistema. Ovde ćemo
navesti samo nekoliko tipova pomoćnih programa:

• formiranje programskih biblioteka,


• održavanje datoteka: brisanje, formiranje, spajanje, kopiranje, preimeno-
vanje, itd,
• korišćenje datoteka: modifikacija, ažuriranje, čitanje, prikaz na ekranu, itd.
• rad sa katalozima (imenicima),
• konverzija datoteka iz jednog formata u drugi,
• štampanje sadržaja datoteka,
• uporedjivanje sadržaja dve datoteke, itd.

2.3.3 Funkcionisanje računarskog sistema


Pošto se napiše program na višem programskom jeziku, unese u računar, prevede
na mašinski jezik i poveže sa drugim prevedenim programskim celinama (i tako
dobije program (koji, npr. u MS-DOS-u ima ekstenziju .EXE, u verzijama
linux-a obično bez ekstenzije), može se uneti u operativnu memoriju i izvršavati.
Izvršavanje mašinskog programa odvija se instrukcija po instrukcija.
Izvršavanje pojedinačne mašinske instrukcije odvija se u mašinskom ciklusu.
On se sastoji od dve faze: prvo, upravljačka jedinica donosi instrukciju iz opera-
tivne memorije, dekodira je i odgovarajuće delove smešta u procesorske registre
(registar adresa, registar instrukcija). Zatim se potrebni podaci donose iz memo-
rije u registre podataka, ALU izvršava operaciju, a rezultat privremeno smešta u
akumulator, do njegovog smeštanja u memoriju. Zatim se izvršava sledeća instruk-
cija, a adresa na kojoj se ona nalazi izračunava se na osnovu adrese prethodne
30 GLAVA 2. RAČUNARSKI SISTEMI

izvršene instrukcije, dodavanjem broja bajtova koje je zauzimala prethodna in-


strukcija. Mašinski ciklusi se ponavljaju do instrukcije zaustavljanja tj. kraja pro-
grama.
Ovakva metoda izvršavanja programa naziva se sekvencijalna ili serijska
obrada, i odgovara konceptu Von Neumannove mašine. Osim ovakvog, postoji i
paralelni način obrade, pri čemu se program razbija na delove koji se istovremeno
izvršavaju na desetine, stotine ili čak hiljade raznih procesora (tzv. masovno par-
alelni računari).

2.4 Programski jezici

Računar je mašina bez inteligencije, on izvršava samo ono što mu je zadato i to na


način na koji mu je zadato. Programom zadajemo računaru način na koji izvršava
poslove. Da bismo rešili neki problem korišćenjem računara, moramo računaru
precizno opisati sve korake-instrukcije (naredbe) koje on izvršava zadatim redosle-
dom. Skup instrukcija napisan za rešavanje nekog problema naziva se program, a
pisanje instrukcija programiranje.
Ljudi za med-usobnu komunikaciju koriste jezik. Jezik je sredstvo za pred-
stavljanje i prenošenje informacija. Čovek mora na neki način da saopšti računaru
niz instrukcija koje treba da izvrši. Programski jezik je sredstvo kojim čovek
saopštava računaru program. Čovek i računar komuniciraju pomoću programskog
jezika. Prirodni jezici dopuštaju nejednoznačnost i nepreciznost. Računar može
“razumeti” samo formalni zapis, ne tolerišući ni najmanje nepreciznosti. Program-
ski jezici računaru omogućavaju zapis niza instrukcija koje se ne mogu višeznačno
protumačiti. Jednoznačnost svake konstrukcije programskog jezika je njegova na-
jbitnija karakteristika. Programski jezik je skup pravila kojim se računaru pred-
stavljaju instrukcije i opisuju podaci.
Programske jezike možemo podeliti po stepenu zavisnosti programskog jezika
i računara na:

• Mašinski jezik.
• Simbolički (asemblerski) jezik.
• Jezici višeg nivoa

Mašinski i simbolički jezici su zavisni od računara i njih nazivamo mašinski


zavisnim jezicima. Jezici višeg nivoa pripadaju skupini koje nazivamo mašinski
nezavisni jezici.
2.4. PROGRAMSKI JEZICI 31

2.4.1 Mašinski jezik

Najjednostavniji programski jezik je interni jezik računara mašinski jezik. Naj-


važniji delovi računara izgrad-eni su od elektronskih i magnetnih komponenti, koje
karakterišu dva stabilna stanja (ima napona nema napona, teče struja - ne teče
struja, severni pol južni pol). Zbog jednostavnije tehničke realizacije u računaru
se sve predstavlja pomoću dva simbola, 0 i 1, binarnom azbukom. Sve operacije i
svi podaci predstavljeni su nizovima bitova. U zavisnosti od arhitekture računara,
ti nizovi bitova imaju različita tumačenja i različite su veličine.
Kako se mašinski program sastoji od niza nula i jedinica i zahteva dobro poz-
navanje načina rada i arhitekture odred-enog računara, vrlo je teško programirati na
njemu. Programi na prvim računarima bili su zapisani mašinskim jezikom što je
uslovilo da uzak krug ljudi piše i održava programe.
Da bi se premostile poteškoće pisanja programa na mašinskom jeziku, dolazi
do razvoja simboličkih jezika. Umesto instrukcija pisanih nizom bitova, uvedene
su mnemotehničke skraćenice za operacije i simboličke oznake podataka, npr.
naredbom add a, b vrši se sabiranje podataka a i b. Na taj način proces pro-
gramiranja je u znatnoj meri olakšan, ali i dalje zavisi od konkretnog procesora, tj.
i dalje je potrebno poznavati tehničke karakteristike konkretnog računara za koji
pišemo program.
Da bi se program napisan na simboličkom jeziku izvršavao na računaru, mora
se prethodno prevesti na mašinski jezik. Kako svakoj naredbi simboličkog jezika
odgovara jedna naredba mašinskog jezika, posao je automatizovan tako što je
napisan program koji kao ulaz dobija program napisan u simboličkom jeziku, a
kao izlaz odgovarajući program na mašinskom jeziku. Program koji vrši pre-
vod-enje iz simboličkog u mašinski jezik naziva se asembler (translator). Zato se
simbolički jezik često naziva asemblerski jezik ili kraće asembler. Napomenimo
da skup naredbi simboličkog jezika zavisi od arhitekture računara, pa program
napisan u simboličkom jeziku za jedan računar ne može se koristiti za računar
druge arhitekture, već se mora ponovo pisati. Često za mašinske i simboličke
jezike kažemo da su mašinski zavisni jezici. Važno je istaći da pri programiranju
na mašinski zavisnim jezicima programer mora vrlo detaljno, u malim koracima
opisati rešavanje problema. Možemo to uporediti sa procesom gradnje kuće pri
čemu moramo voditi računa o položaju svake cigle, daske i slično. Jasno je da pri-
likom izgradnje kuće u jednom momentu moramo detaljno opisati položaj svake
cigle, tj. elemente kuće predstavljati na taj način. Med-utim, pri izradi samog pro-
jekta, lakše i razumljivije je govoriti o većim jedinicama, npr. soba, kuhinja, vrata,
prozor i slično. Kako to izgleda kada koristimo računare upoznaćemo na sledećem
primeru. Pretpostavimo da treba da saberemo četiri broja. U višim programskim
32 GLAVA 2. RAČUNARSKI SISTEMI

jezicima to radimo korišćenjem jedne instrukcije (npr. x = a + b + c + d), a kada


koristimo simbolički jezik, prvom instrukcijom šaljemo prvi broj u poseban reg-
istar (akumulator) a zatim sledećom instrukcijom dodajemo drugi broj sadržaju
registra i tako dok ne dodamo i poslednji broj. Poslednja instrukcija je premeštanje
konačnog rezultata iz registra u memoriju.
Mašinski jezik predstavlja skup mašinskih naredbi kojima se specificiraju ele-
mentarne operacije koje računar direktno prepoznaje i izvršava. Ove elementarne
operacije su zadate u binarnom obliku i nazivaju se mašinske instrukcije. Svaki
procesor ima svoj skup ugrad-enih mašinskih instrukcija koje direktno izvršava.
Dakle, instrukcije su ugrad-ene u hardver računara. Broj i vrsta mašinskih instruk-
cija ugrad-enih u jedan računar zavisi od tipa i karakteristika procesora.

2.4.2 Asemblerski jezik

Asemblerski (ili simbolički) jezici su jezici koji su veoma bliski mašinskom jeziku
računara, pri čemu se, umesto korišćenja binarnog sadržaja za zadavanje instrukcija
koriste (mnemotehničke, lako pamtljive) simboličke oznake instrukcija (tj. pro-
grami se unose kao tekst). Ovim se, tehnički, olakšava unos programa i programi-
ranje (programer ne mora da direktno manipuliše binarnim sadržajem), pri čemu
su sve mane mašinski zavisnog programiranja i dalje prisutne. Kako bi ovako
napisan program mogao da se izvršava, neophodno je izvršiti njegovo prevodenje
na mašinski jezik (tj. zapisati instrukcije binarnom azbukom) i uneti na odgo-
varajuće mesto u memoriji. Ovo prevodenje je jednostavno i jednoznačno i vrše ga
jezički procesori koji se nazivaju asembleri.
Ilustrujmo programiranje na mašinski zavisnim jezicima na minijaturnom
modelu računara Von Neumannove arhitekture. Neka procesor računara sadrži dva
osmobitna registra ax i bx i neka podržava sledeće instrukcije:

mov x y ; premešta se broj ili sadržaj lokacije y na lokaciju x, a lokacija može


biti ili registar ili memorijska adresa;
add r1 r2 ; sabira sadržaj registara r1 i r2 i zbir smešta u registar r1;
mul r1 r2 ; množi sadržaj registara r1 i r2 i zbir smešta u registar r1;
cmp x y ; poredi vrednosti x i y i pamti rezultat,
jle label ; ukoliko je vrednost prethodnog poredenja vrednosti (instrukcijom
cmp) manja ili jednaka, skače na datu labelu.

Razmotrimo niz instrukcija:


2.4. PROGRAMSKI JEZICI 33

loop:
mov ax, [10]
mov bx, [11]
mul ax, bx
mov bx, 1
add ax, bx
mov [10], ax
cmp ax, 7F
jle loop
Nakon izvršenja prve instrukcije sadržaj memorijske adrese 10 se upisuje u
registar tt ax. Nakon izvršenja druge instrukcije sadržaj memorijske adrese 11 se
upisuje u registar bx. Trećom instrukcijom množi se sadržaj registara ax i bx i
rezultat se smešta u ax. Nakon toga, u registar bx upisuje se vrednost 1 i sabira
se sa tekućom vrednošću registra ax, smeštajući rezultat u registar ax. Zatim se
tekuća vrednost registra ax (a to je proizvod vrednosti sa adresa 10 i 11 uvećan
za 1) prenosi nazad na adresu 10. Nakon toga, vrši se pored-enje tekuće vrednosti
registra ax (koja se nije promenila prenosom u memoriju) i vrednosti 7F i ukoliko
je vrednost ax manja ili jednaka ceo postupak se ponavlja.
Na primer, binarne kodove za svaku od pet različitih instrukcija moguće je
uvesti na sledeći način:
mov 001
add 010
mul 011
cmp 100
jle 101
-
Takod e, pošto neke instrukcije primaju podatke različite vrste (neposredno
navedeni brojevi, registri, memorijske adrese), potrebno je uvesti posebne kodove
za svaki od različitih vidova adresiranja. Na primer:
neposredno 00
registarsko 01
apsolutno 10
Neka registar ax ima oznaku 00, a registar bx ima oznaku 01. Pretpostavimo
da su sve adrese osmobitne. Imajući sve ovo u vidu, instrukcija mov [10],
ax se, u ovom hipotetičkom mašinskom jeziku, može kodirati kao 001 10 01
00010000 00. Kod 001 dolazi od instrukcije mov, zatim slede 10 i 01 koji
ukazuju da prvi argument predstavlja memorijsku adresu, a drugi oznaku regis-
tra, zatim sledi memorijska adresa (10)16 binarno kodirana sa 00010000 i na
kraju oznaka 00 registra ax. Na sličan način, celokupan prikazani mašinski kod je
moguće binarno kodirati kao:
34 GLAVA 2. RAČUNARSKI SISTEMI

001 01 10 00 00010000
001 01 10 01 00010001
011 00 01
001 01 00 01 00000001
010 00 01
001 10 01 00010000 00
100 01 00 00 01111111
101 11110000
Pretpostavlja se da se ovaj kod smešta u memoriju na adresu F0, pošto posled-
nja instrukcija uslovnog skoka prenosi kontrolu upravo na tu adresu.
Primetimo da je izmed-u prikazanog asemblerskog i mašinskog programa pos-
toji veoma direktna i jednoznačna korespondencija (u oba smera) tj. na osnovu
datog mašinskog koda moguće je jednoznačno rekonstruisati asemblerski kod.
Specifični hardver koji čini kontrolnu jedinicu procesora dekodira jednu po
jednu instrukciju i izvršava akcije njom kodirane. Naravno, prilikom dizajna re-
alnih procesora, broj instrukcija i načini adresiranja je mnogo bogatiji i prilikom
samog dizajna mašinskog jezika potrebno je uzeti u obzir mnoge aspekte na koje
se u ovom jednostavnom prikazu nije obraćala pažnja.

2.4.3 Programski jezici višeg nivoa

Da bi se premostile poteškoće u programiranju na asemblerskim jezicima, veoma


rano počinju da se razvijaju mašinski nezavisni jezici, drugim rečima jezici višeg
nivoa. Korišćenjem jezika višeg nivoa opis naredbi i podataka vrši se na način
blizak prirodnom (engleskom) jeziku. U ovim jezicima jednoj naredbi odgovara
više naredbi simboličkog jezika. Važno je napomenuti da ovi jezici imaju visok
stepen nezavisnosti u odnosu na arhitekturu računara i operativni sistem na kojem
se izvršavaju.
S obzirom na to da računar razume samo program napisan na mašinskom
jeziku, svaki program pisan jezikom višeg nivoa mora se prevesti na mašinski
jezik. Na osnovu načina prevod-enja i izvršavanja, jezike višeg nivoa delimo na
kompajlerske i interpreterske jezike. Najpre su nastali kompajlerski jezici Algol,
Fortran, Cobol, PL/I... Kod ovih jezika izgrad-uju se programi za prevod-enje (kom-
pajleri) kojim se ceo program napisan na višem programskom jeziku prevodi u
njemu ekvivalentan, mašinski program koji se može izvršavati na računaru. Kod
interpreterskih jezika, program na višem programskom jeziku se prevodi i izvršava
instrukcija po instrukcija. Primeri interpreterskih jezika su Lisp, Prolog, Basic, ...
U početku se razlikovala primena računara u oblasti poslovanja od primene
2.4. PROGRAMSKI JEZICI 35

računara u nauci i tehnici. Prvu je karakterisao veliki broj ulazno/izlaznih podataka


i relativno jednostavan opis obrade podataka, pa su i jezici namenjeni toj primeni
zadovoljavali te karakteristike (Cobol...). Za primenu u nauci i tehnici karakter-
ističan je mali broj ulazno/izlaznih podataka, ali i veoma složen opis obrade, pa
su razvijani jezici za te namene poput Fortrana, Algola,... U to vreme programski
jezik PL/I bio je dovoljno dobar za primenu u poslovanju kao i za primenu u oblasti
složenih numeričkih izračunavanja. Današnjim razvojem jezika gubi se ova podela
i savremeni programski jezici mogu se koristiti ravnopravno u svim oblastima.
Prema načinu rešavanja problema, možemo izvesti podelu viših programskih
jezika na proceduralne i deklarativne programske jezike. U proceduralnim jezicima
jezikom dajemo računaru kompletan skup instrukcija kojim se rešava problem, tj.
dajemo mu algoritam za rešavanje zadataka. Ovim jezicima opisujemo kako se
rešava dati problem. Manje-više svi poznatiji viši programski jezici su ovog tipa:
Fortran, Cobol, Basic, Pascal, C kao i mašinski zavisni jezici. Kasnije, u razvoju
programskih jezika dolazi se do ideje da se problemi opisuju, a da sam interpreter
ima ugrad-ene postupke kako da reši opisani problem što dovodi do razvoja deklar-
ativnih jezika. Ovim jezicima opisujemo šta znamo o problemu i šta želimo da
dobijemo rešavajući ga, a sistem (interpreter) sam dolazi do postupka za rešavanje
problema. Primeri deklarativnih jezika su Prolog i SQL. Sistem ima ugrad-en al-
goritam koji dovodi do rešenja. Postojanje i pisanje opšteg algoritma za nalaženje
rešenja je glavna poteškoća u razvoju ovih jezika, pa su zato deklarativni jezici
obično specijalizovani za odred-ene vrste problema. Koliko god da je ova ideja
napredna, u praksi je vrlo teško u potpunosti sprovesti deklarativnost.
Posebnu klasu čine objektno orijentisani jezici, kod kojih su prisutni i proce-
duralni i neproceduralni elementi. U proceduralnim jezicima isticani su postupci,
način realizacije (procedura), neke više ili manje složene akcije. Podaci su na neki
način u podred-enom položaju u odnosu na algoritam. Moramo priznati da su po-
daci razlog postojanja programa. Svaki postupak obrad-uje neke podatke (čita ih,
prikazuje, menja...). Podaci i akcije koje se izvode nad njima predstavljaju jednu
nerazdvojnu celinu, jer nam podaci bez postupaka kojim ih obrad-ujemo, kao i pos-
tupci za obradu bez podataka, ne znače puno. Kod objektno orijentisanih jezika
podaci i postupci su objedinjeni u jednu celinu i čine aktivan objekat, za razliku
od podataka u proceduralnim jezicima koji su krajnje pasivni. Svaki takav objekat
izgleda kao mali računar: on ima unutrašnje stanje i ima operacije koje možemo za-
htevati da izvrši. Jasno možemo uočiti analogiju izmed-u takvih objekata i objekata
u realnom svetu.
Posmatrajmo niz imena učenika jednog odeljenja. Kod proceduralnog pro-
gramiranja niz imena se posmatra kao skup pasivnih podataka. Potom pišemo
razne programe za rad sa ovim nizom u cilju njegovog abecednog ured-ivanja, mod-
36 GLAVA 2. RAČUNARSKI SISTEMI

ifikovanja (npr. dodavanje novog učenika, brisanje postojećeg učenika...). S jedne


strane imamo podatke, a sa druge, od njih odvojene postupke (procedure) kojima
obrad-ujemo te podatke. Kod objektno orijentisanih jezika, prethodni primer pos-
matra se objedinjeno: postoji objekat niz koji s jedne strane ima skup imena, a sa
druge strane skup akcija koje se mogu primenjivati nad tim imenima i jedno od
drugog je neodvojivo. Program koji koristi objekat niz ne mora imati nijedan od
postupaka za obradu niza jer su oni ugrad-eni u sam objekat.
Mnoštvo različitih objekata možemo uočiti u okruženju grafičkih operativnih
sistema (GUI, Graphic User Interface). Ikone su objekti. Svakoj je pridružen skup
osobina i akcija koje opisuju kako reaguju na spoljašnje dogad-aje, šta se dešava
kada jednom kliknemo, kada dva puta kliknemo, kad pritisnemo desni taster, kako
se ponašaju kada držimo pritisnut taster na mišu i slično.
U objektno orijentisanom programiranju cilj programera je da sakupi podatke
i akcije u neku vrstu “kutije sa alatom” koju će koristiti za brzi razvoj aplikacija.
Primeri objektno orijentisanih jezika su SmallTalk, Java, C#. C++ je hibridni jezik;
jeste iz klase objektno orijentisanih jezika ali nije čisto objektno orijentisan.

2.5 Pitanja za proveru znanja


1. Von Neumannova arhitektura računara.
2. Da li je Von Neumannova mašina imala mogućnost zapisa instrukcija na
simboličkom jeziku?
3. Koji su osnovni delovi procesora?
4. Kako je memorija adresno organizovana?
5. Jedan MB (megabajt) iznosi:
(a) 1000 kB.
(b) 1024 kB.
(c) 1000 B
6. Operativni sistem je:
(a) Kolekcija sistemskih programa koji omogućavaju efikasno korišćenje
računarskog sistema.
(b) Skup programa koji omogućava obradu slike i teksta.
(c) Operativna grupa programa koja isključivo kontroliše rad računarskih
komponenti.
7. Kompajler je program za:
(a) Prevod-enje programa u mašinskom jeziku na izvršni program.
(b) Prevod-enje izvornog programa na mašinski jezik.
(c) Program za prevod-enje programa u željeni viši programski jezik.
2.5. PITANJA ZA PROVERU ZNANJA 37

8. Glavne komponente računarskog sistema su:


(a) Hardver i softver.
(b) Hardver, komunikaciona mreša i sistemski softver.
(c) Hardver i aplikacioni softver.
9. Šta je programski jezik?
10. Kako se naziva program koji vrši prevodjenje iz simboličkog u mašinski
jezik?
11. Najmanja, elementarna memorijska jedinica je:
(a) Bit.
(b) Bajt,
(c) Kilobajt.
12. Bajt je:
(a) Deo baze podataka.
(b) Osnovna jedinica za izražavanje kapaciteta memorije računara.
(c) Komunikacioni deo softvera.
13. Dve osnovne komponente CPU (centralne procesorske jedinice) su:
(a) glavna memorija i ALU (aritmetičko logička jedinica).
(b) ALU i kontrolna jedinica.
(c) glavna memorija i kontrolna jedinica.
14. Nabrojati generacije računara.
15. Koje sve tipove operativnih memorija poseduje računar.
16. Koliku snagu je trošio računar ENIAC:
(a) 174kW.
(b) 194kW.
(c) 154kW.
17. Johann Von Neumann je diplomirao na:
(a) Fizici.
(b) Matematici.
(c) Hemiji.
38 GLAVA 2. RAČUNARSKI SISTEMI
Glava 3

Osnove MATLAB-a


R
RVA , izvorna verzija MATLAB a, napisana je kasnih sedamdesetih godina, na
P univerzitetu New Mexico i Stanford Univerzitetu, sa osnovnom namenom
da služi kao pomoćno sredstvo na kursevima iz linearne algebre i numeričke
analize. Zamišljeno je da ovaj programski paket bude nadgradnja programskog
paketa FORTRAN-a koja bi koristila gotove potprograme Fortran-a. Današnje

R
mogućnosti MATLAB a daleko prevazilaze tadašnji originalni “Matrix Labo-
ratory”. Ogroman broj naučnih i tehničkih disciplina neizostavno zahtevaju
R
R
korišćenje MATLAB a. MATLAB pored svojih prvenstveno razvojnih i program-
abilnih mogućnosti poseduje još jednu zaista moćnu alatku koja je jedna od os-
novnih odlika ovog paketa. To su toolboxovi. Naime, vrlo jednostavno se u

R
MATLAB u mogu kreirati sopstvene funkcije koje daju rešenja na postavljene za-
hteve. Skup ovako kreiranih funkcija (m-fajlova) objedinjenih u jednu celinu pred-
stavlja osnovnu strukturu toolboxa. Toolboxovi naravno predstavljaju mnogo više
od kolekcije upotrebljivih fajlova, jer je u njima objedinjen trud velikih svetskih
istraživača u raznim područjima nauke.

R
U MATLAB u je moguće raditi na dva načina. Jedan je direktan, pri čemu se u
glavnom prozoru programa upisuju naredbe, a program odmah vraća rezultat. Ovaj
način je pogodan kada radimo jednostavne operacije bez ponavljanja.

R
Kod drugog načina, korisnik u tekstualnom editoru (MATLAB editor/debug-
ger) piše program koji se sastoji od redosleda naredbi i kopira ga kao m-datoteku
R
(datoteka sa .m ekstenzijom). Kad u komandnom prozoru MATLAB a pozovemo
ime te datoteke, pokreće se izvršenje programa tj. izvršenje redosleda naredbi
kopiranih u datoteci.

R
MATLAB je otvoren sistem u kome korisnik može da gradi svoje alate i bib-
lioteke kao i modifikaciju postojećih, jer su dostupni u izvornom kodu.

39
40 GLAVA 3. OSNOVE MATLAB-A

Kada se program pokrene, prikazuje se prozor koji najčešće sadrži tri manja
prozora - komandni prozor (Command Window), prozor tekućeg direktorijuma
(Current Directory) i prozor s prethodnim komandama (Command History). To
R
je standardan izgled MATLAB a, u kome, sem navedenih, postoji još pet prozora
R
o kojime će biti reči kasnije. MATLAB ovim alatkama i svojstvima se pristupa
pomoću dugmeta Start u donjem levom uglu velikog prozora.

R
Rad u MATLAB u se odvija preko radnog prozora. Radni prozor služi za
unos naredbi, ispisivanje rezultata i najvažniji je deo korisničkog interfejsa. Radni

R
prostor možemo zamisliti kao deo radne memorije dodeljen MATLAB u prilikom
pokretanja, koji sadrži korisnikove promenljive. Moglo bi se reći da se kroz radni
prozor “gleda” u radni prostor.

3.1 Osnovne mogućnosti MATLAB a R


R
Svi podaci u MATLAB u tretiraju se kao matrice čije dimenzije ne treba čuvati
kao posebne promenljive. Čak i skalrne veličine predstavljaju se kao matrice sa
dimenzijom 1 × 1. Matrice čija je jedna dimenzija 1 su vektori. Svi podaci su in-
terno zapisani u memoriju računara u double float obliku (pokretna tačka dvostruke
preciznosti-64 bita) što omogućava veliki dinamički opseg i tačnost za veliki broj
primena. Pored realnih brojeva i matrica, podržani su i kompleksni brojevi.

R
Po svojoj formi MATLAB je interaktivni jezik - interpreter, namenjen ma-
tričim izračunavanjima. Po svojoj formi blizak je načinu na koji i inače zapisu-

R
jemo matematičke formule, pa jedan red u MATLAB u može zameniti stotine re-
dova napisanih u nekom programskom jeziku opšte namene (C++, PASCAL, FOR-
TRAN isl.).
Korisnički interfejs čine sledeći prozori:

• Komandni prozor (Command Window) u kome se interaktivno upisuju


nerdbe i prikazuje njihov rezultat.
• Radni prostor (Workspace) sadrži popis svih promenljivih i njihova osnovna
svojstva.
• Prozor s popisom prethodnih komandi (Command History).
• Prozor tekućeg direktorijuma (Current Directory) u kome se nalaze programi
dostupni za izvršenje.
• Prozor za pisanje programa (Editor). U njemu se pišu i ured-uju programi.
Prozor se otvara iz menija File, ili ispisivanjem Edit, u komandnom pro-
zoru.

R
3.1. OSNOVNE MOGUĆNOSTI MATLAB A 41


R
MATLAB sadrži vrlo iscrpni sistem pomoći, a nalazi se pod padajućim meni-
R
jem Help − > Product Help. Na ovaj način se otvara MATLAB prozor Help gde
se dvostrukim klikom miša bira opcija ili naredba koja nas interesuje. Osim toga,
pomoć je dostupna u komandnom prozoru. Na primer: help sqrt daje sledeću
povratnu informaciju.

SQRT Square root.


SQRT(X) is the square root of the elements of X.
Complex results are produced if X is not positive.

See also sqrtm, realsqrt, hypot.

Ali, na upit
>> help skola

skola not found.



R
MATLAB jednostavno odgovara da o “skola” ne zna ništa.
Korišćenjem direktno help komande postoji mogućnost dobijanja povratne
informacije samo ako smo potpuno sigurni koja naredba nam je potrebna. Ukoliko
to nismo, preostaje još jedan način koji mogu biti od velike pomoći. Naredba
lookfor pretražuje sve linije helpa i vraća samo one koje sadrže ključnu reč koja
je navedena.

R
MATLAB može da se koristi na dva načina:

• Interaktivno,
• Programski.

Kod interaktivnog korišćenja naredbe se kucaju direktno na prompt programskog


jezika i izvršavaju odmah po pritisku na taster <Enter>. Dakle, program se može
koristi interaktivno kao kalkulator ili za rešavanje jednostavnijih matematičkih
problema.
Za rešavanje složenijih problema moraju da se pišu programi. Kod program-
skog korišćenja naredbe programskog jezika se unose u datoteku korišćenjem ed-
itora. Naredbe iz datoteke izvršavaju se pozivom imena datoteke na prompt pro-
grama, ili iz padajućeg menija Debug − > Save File and Run.
Datoteke sa programima nazivaju se M-datotekama, ili script-ovima po
analogiji sa drugim programima koji imaju mogućnosti izvršavanja programa čije
naredbe sadrži datoteka.

R
Komandni prozor se automatski otvara kada se MATLAB pokrene. U ko-

R
mandnom prozoru MATLAB daje znak da je spreman da prihvati komandu
42 GLAVA 3. OSNOVE MATLAB-A

prompt >>. Na znak prompta kucaju se naredbe programskog jezika. Svaka


naredba završava se pritiskom na taster < Enter >. Ako je u naredbi dat samo
aritmetički izraz izračunata vrednost se dodeljuje promenljivoj sa imenom ans.
Sve što se pojavljuje na ekranu štampa se sa jednim redom proreda. Da bi se ovaj
prored izbegao treba dati komandu format compact.
Naredba clc briše sadržaj komandnog prozora ali nema drugih efekata. Posle
izvršavanja komande clc sve prethodno definisane promenljive i dalje postoje i
mogu se upotrebljavati. Prethodno upisane komande i dalje se mogu prikazati
strelicom nagore na tastaturi. Ova komanda može biti korisna kada posle dužeg
rada u komandnom prozoru njegov sadržaj postane predugačak.
Naredba format zadata bez parametara vraća sve promenjene vrednosti na
podrazumevane (default) loose, short. Kompletna lista formata brojeva koje

R
podržava MATLAB može se dobiti upisivanjem help format u komandnu li-
niju.

3.2 Jednostavna MATLAB izračunavanja R


R
MATLAB koristi sledeće elementarne operacije i funkcije: aritmetičke, logičke i
operacije izmene podataka te matematičke i grafičke funkcije. One se izvode na
objektima odred-enog tipa podataka, a to su matrice. One mogu sadržati realne i
kompleksne brojeve kao i ASCII znakove. Funkcije koriste promenljive koje se
trenutno nalaze u radnom prostoru, ili kreiraju nove promenljive. Po izvršenju
funkcije sve varijable ostaju u radnom prostoru i mogu se analizirati, crtati, te dalje
koristiti.

R
MATLAB može poslužiti kao vrhunski linijski kalkulator.
>> 4*25+3
ans =
103
Kada se u komandni prozor upiše matematički izraz, a zatim pritisne taster

R
< Enter >, MATLAB će izračunati izraz, napisati ans= i prikazati numerički
rezultat u sledećem redu. To je prikazano u prdhodnom primeru.

R
U radnom prostoru MATLAB a možemo definisati promenljive:
>> a=4
a =
4
>> b=25;
>> c=3;
3.3. OPERATORI 43

>> d=a*b+c;
>> d
d =
103

R
Imena promenljivih u MATLAB mogu imati 63 znaka, mogu sadržati slova,
cifre i podvlake, i moraju počinjati slovom. MATLAB pravi razliku izmed-u malih

R

i velikih slova.

R
Za eksponencijalni zapis broja MATLAB koristi malo slovo e, koje označava
10 na stepen; 5e-3=0.0050.

3.3 Operatori

R
U MATLAB izrazima se koriste svima dobro poznati aritmetički operatori i pravila
za redosled izvršavanja.
+ Sabiranje
− Oduzimanje
∗ Množenje
/ Desno deljenje (a/b znači a : b)
\ Levo deljenje a\b znači b : a)
ˆ Stepenovanje
′ Transponovanje
( ) Zadavanje redosleda izvršavanja matematičkih operacija
Kada jedan red kôda sadrži više od jednog od ovih operatora redosled
izračunavanja se obavlja prema sledećem prioritetu:
Propritet Operacija
1 Zagrade
2 Stepenovanje, sleva nadesno
3 Množenje deljenje, sleva nadesno
4 Sabiranje i oduzimanje, sleva nadesno
U izrazu koji sadrži više operacija, operacije višeg prioriteta izvršavaju se pre
operacija nižeg prioriteta. Ako dve ili više operacija imaju isti prioritet, izraz se
izračunava sleva na desno. Redosled izračunavanja može se promeniti zagradama.

3.3.1 Operator dodele



R
U MATLAB u se znak = naziva operatorom dodele (engl. assignment operator).
Ovaj operator dodeljuje vrednost promenljivoj:
Ime_promenljive=brojna vrednost ili izraz
44 GLAVA 3. OSNOVE MATLAB-A

Levo od operatora može biti samo jedno ime promenljive. Desno može biti
broj ili izraz koji sadrži brojeve i/ili promenljive kojima su prethodno dodeljene
numeričke vrednosti. Kada se pritisne taster < Enter >, numerička vrednost sa
R
desne strane dodeljuje se promenljivoj, a MATLAB u sledeća dva reda prikazuje
promenljivu i njoj dodeljenu vrednost.
>> x=15
x =
15
>> x=3*x-12
x =
33
Poslednji iskaz x=3x-12 ilustruje razliku izmed-u operatora dodele i znaka
jednakosti. Kada bi u tom iskazu znak = označavao jednakost, vrednost x bi bila 6
(kada se reši jednačina po x).

R
Ako se na kraj reda upiše tačka-zarez pa zatim pritisne < Enter >, MATLAB
neće prikazati promenljivu i njoj dodeljenu vrednost, ali će joj vrednost ipak do-
deliti i smestiti je u memoriju. Kada se upiše ime postojeće promenljive i pritisne
< Enter >, u sledeća dva reda prikazaće se ime i vrednost te promenljive.
>> a=12;
>> B=4;
>> c=a-B+40/a-B*10;
>> c
c =
-28.6667
U isti red se može upisati nekoliko dodeljenih vrednosti. Razdvajaju se zarez-
ima (posle zareza se može otkucati više razmaka). Kada se pritisne < Enter >,
vrednosti se dodeljuju sleva udesno, a promenljive i njima dodeljene vrednosti
prikazuju se u sledećim redovima. Ukoliko se umesto zareza otkuca tačka-zarez,
vrednost promenljive neće biti prikazana. Na primer, promenljivama a, B i C vred-
nosti se mogu dodeliti u istom redu.
>> a=12, B=4; C=-B+40-a/B*10
a =
12
C =
6
Postojećoj promenljivoj može se dodeliti nova vrednost. Na primer:
>> Ab=72;
>> Ab=9;
>> Ab
Ab =
9
3.3. OPERATORI 45


R
Imena promenljivih u MATLAB u mogu imati do 63 znaka, mogu sadržati

R
slova, cifre i podvlake, i moraju počinjati slovom. MATLAB pravi razliku
izmed-u velikih i malih slova, na primer, AA, Aa, aA i aa su imena četiri različite
promenljive.
Tekst iza % uzima se kao komentar.
Ako je jednačina predugačka napiše se “...” i pritisne <Enter>, a zatim se
nastavi pisanje u novom redu. Prekid izvod-enja programa se ostvaruje pritiskom
na taster <Ctrl> + c.
Treba izbegavati korišćnje imena rezervisanih reči, tj. nazive ugrad-enih
funkcija za promenljive (cos, sin, exp, sqrt itd.). Funkcija čije je ime upotre-
bljeno za definisanje promenljive, više se ne može koristiti.
Pojedine često korišćene promenljive automatski su definisane čim se
MATLAB pokrene. Med-u njima su:

R

ans Promenljiva kojoj se dodeljuje vrednost poslednjeg izraza koji nije dodeljen
nekoj drugoj promenljivoj. Ako korisnik ne dodeli vrednost izraza nekoj

R
promenljivoj, MATLAB ga automatski dodeljuje promenljivoj ans.
pi Broj π

R
eps Najmanja razlika izmedu dva broja koju MATLAB još uvek može da pre-
pozna. Jednaka je 2−52 , što je približno 2.2204e-0161 .
inf Označava beskonačno veliku vrednost (∞).
i Definisano kao imaginarna jedinica, što je: 0 + 1.0000i.
j Isto što i promenljiva i.
R
NaN Skraćno od Not-a-Number (nije broj). Upotrebljava se kada MATLAB ne
može da izračuna numeričku vrednost. Na primer, rezultat operacije 0/0.

Vrednost unapred definisanih promenljivih može biti proizvoljno redefinisana.


Promenljive pi, eps i inf obično se ne redefinišu. Ostale unapred defin-
isane promenljive (i i j), katkada se redefinišu (obično unutar petlji za indeksne
promenljive - brojače), ukoliko se u datom slučaju ne koriste kompleksni brojevi.
Sledeće komande se koriste za uklanjanje promenljivih odnosno dobijanje po-
dataka o svim postojećim promenljivama. Kada se neka od njih upiše u komandni
prozor i pritisne <Enter>, prikazaće se podaci ili izvršiti jedan od dole navedenih
postupaka.

clear Uklanja sve promenljive iz memorije.


1 2.2204e-016≡ 2.2204 × 10−016
46 GLAVA 3. OSNOVE MATLAB-A

clear x y z Uklanja iz memorije promenljive x, y i z.


who Prikazuje imena promenljivih koje postoje u memoriji.
whos Prikazuje imena promenljivih koje postoje u memoriji, njihovu veličinu,
klasu i veličinu u bajtovima.

3.4 Matrična izračunavanja


Pošto matrice sadrže nizove elemenata, a ne samo jedan element (izuzetak je
skalarna 1 × 1 matrica), zakoni komutacije, asocijacije i distribucije iz aritmetike

R
ne važe uvek. Ipak, niz značajnih pravila važiće u matričnoj algebri i MATLAB u
kada se radi sa neskalarnim veličinama.

R
U MATLAB u postoji više načina za unošenje matrica. Matrice malih dimen-
zija najlakše se unose direktnim definisanjem liste elemenata. Najprirodnije ih je
uneti po vrstama, pri čemu se uglaste zagrade [ i ] koriste da ograniče listu eleme-
nata. Elementi su razdvojeni blankom ili zarezom dok se znak ; ili taster <Enter>
koristi za odvajanje vrsta matrice.

R
MATLAB ima dva tipa aritmetičkih opreracija: matrične i operacija nad po-
ljem brojeva (element po elemnt) - decimalna tačka prethodi operatoru. Sabiranje i
oduzimanje se ne razlikuju kada su u pitanju matrica i polje brojeva, pa se operatori
. + i . − ne koriste.

3.4.1 Matrice specijalne strukture

U MATLAB u je razvijen odred-eni broj matrica specijalne strukture.



R

• Komande ones(n) i ones(m,n) generišu matrice sa svim elementima


jednakim jedinici, a dimenzije su im (n × n) i (m × n), respektivno.
• Komande zeros(n) i zeros(m,n) na potpuno analogan način generišu
matrice sa svim elemntima jednakim nuli.
• Komande eye(n) i eye(m,n) daju jedinične matrice2 dimenzije (n × n)
i (m × n), respektivno.
• Komanda magic(n) generiše matricu dimenzija (n × n) sa celobrojnim
elementima izmed-u 1 i n2 , sa osobinom da je zbir elemenata po vrstama i
kolonama konstantan.
2 Svi elementi jedinične matrice su jednaki nuli izuzev elemenata na glavnoj dijagonali koji su

jednaki jedinici.
3.4. MATRIČNA IZRAČUNAVANJA 47

• Komanda pascal(n) formira kvadratnu matricu dimenzija (n × n) kojoj


elementi normalni na glavnu dijagonalu čine Paskalov trougao
• Za generisanje matrice čiji su elementi slučajni brojevi, sa uniformnom
raspodelom na intervalu (0, 1) ili normalnom raspodelom sa nultom sred-
njom vrednošću i jediničnom varijansom, postoje komand randi randn.
Postoji i naredba magic za generisanje magične matrice.

3.4.2 Sabiranje i oduzimanje matrica

Matrica sa m vrsta i n kolona se naziva m puta n matricom i zapisuje da je formata


m × n, a m i n su dimenzije matrice. Član matrice A, koji se nalazi u i-toj vrsti
i j-toj koloni naziva se (i j)-ti član matrice A. Ovo se zapisuje kao Ai j ili A(i j).
Uvek se prvo naznačuje vrsta, pa kolona. Matricu čija je jedna dimenzija jednaka
jedinici često nazivamo vektorom i interpretiramo je kao jedan element. Matrica
(1 × n) naziva se vektor vrsta, a (m × 1) se naziva vektor kolona.
Pod zbirom matrice A i broja k podrazumevamo matricu čiji se elementi dobi-
jaju tako što se svaki element matrice A sabere sa skalarom k.
Samo matrice iste dimenzije mogu se sabirati i oduzimati. Kada se dve matrice
istog reda sabiraju ili oduzimaju u matričnoj algebri, pojedinačni elementi se sabi-
raju ili oduzimaju. Prema tome, važe zakoni distribucije (A+B=B+A i A-B=B-A)
i asocijacije ((A+B)+C=A+(B+C)).
Ako je C =A+B, tada je svaki element matrice C(i,j=A(i,j)+B(i,j).
Definišimo A i B na sledeći način:
>> A=[1 2 3; 3 3 3; 5 3 1]
A=
1 2 3
3 3 3
5 3 1
>> B=[2 -3 4; 2 -2 2; 0 4 0]
B=
2 -3 4
2 -2 2
0 4 0
Zatim uočimo da C =A+B i C=B+A daje istu matricu.
>> C=A+B
C=
3 -1 7
5 1 5
5 7 1
48 GLAVA 3. OSNOVE MATLAB-A

Definišimo sada vektor vrstu x= [3 5 7]:


>> x=[3 5 7]
x =
3 5 7
i vektor kolonu y = [4;-1;-3]:
>> y = [4; -1; -3]
y =
4
-1
-3
Uočimo da operacija z=x+y nije dozvoljena, pošto matrice nisu istog reda. (x
je matrica 1 × 3, a y je matrica 3 × 1.) Dozvoljeno je sabiranje proizvoljnog broja
1 × 1 matrica ili skalara i važe pravila iz aritmetike. Dozvoljeno je sabiranje dva
vektora samo ako su oba vektor vrsta (matrica 1 × n) ili vektor kolona (matrica
n × 1).
Kvadratne matrice mogu se uvek sabirati i oduzimati ukoliko su istog reda.
Kvadratna matrica dimenzija 4 × 4 ne može se sabirati sa kvadratnom matricom
dimenzija 3 × 3, zato što nisu istog reda, mada su obe kvadratne matrice.

3.4.3 Množenje matrica

Množenje matrica je mnogo složenije nego aritmetičko množenje, zato što svaka
matrica može da sadrži veliki broj elemenata. Podsetimo se da je kod množenja
vektora postojanje niza elemenata u vektoru dovelo do dva koncepta množenja,
skalarnog i vektorskog proizvoda. Množenje matrica takod-e ima niz svojih speci-
jalnih pravila.
Pod proizvodom matrice A i broja k podrazumevamo matricu sa oznakom kA
ili Ak, čiji se elementi dobijaju tako, što se svaki element matrice A pomnoži sa
skalarom k.
Kod množenja matrica, elementi proizvoda, matrica C, dve matrice A i B,
izračunavaju se po formuli: C(i,j)=A(i,k)*B(k,j)
Da bi se matrice mogle množiti broj kolona prve ili leve matrice A mora biti
jednak broju vrsta druge ili desne matrice B. Proizvod, matrica C, ima broj vrsta
koji je jednak broju vrsta prve (leve) matrice A, a broj kolona koji je jednak broju
kolona druge (desne) matrice B. Jasno je da ne mora biti A*B jednako B*A. Takod-e,
jasno je da A*B i B*A postoje samo kod kvadratnih matrica.
Zadajmo matrice:
3.4. MATRIČNA IZRAČUNAVANJA 49

>> A=[1 1 3;4 0 6;2 5 -1]


A =
1 1 3
4 0 6
2 5 -1
i
>> B=[1 0 -1;0 -1 1;-1 1 0]
B =
1 0 -1
0 -1 1
-1 1 0
Matrični proizvod C=A*B daje sledeće:
>> C=A*B
C =
-2 2 0
-2 6 -4
3 -6 3
Izračunajmo sada prizvod matrica X i Y.
>> X=[2 3;4 -1;0 7]
X =
2 3
4 -1
0 7
i
>> Y=[5 -6 7 2;1 2 3 6]
Y =
5 -6 7 2
1 2 3 6
Prvo, uočimo da proizvod matrica X i Y postoji, pošto matrica X ima isti broj
kolona (2) koliko matrica Y ima vrsta (2).
>> Z=X*Y
Z =
13 -6 23 22
19 -26 25 2
7 14 21 42
Takod-e, uočimo da proizvod Y*X ne postoji!
>> Z=Y*X
??? Error using ==> mtimes Inner matrix dimensions
must agree.
Ako je proizvod matrica Z, tada je on matrica dimenzija 3 × 4.
Napomena: Proizvod skalara i matrice jeste matrica kod koje je svaki element
50 GLAVA 3. OSNOVE MATLAB-A

dobijen množenjem odgovarajućeg elementa matrice i skalara.


Za operatore *, / i ˆ, dodaje tačka ispred operatora, ukoliko je potrebno da se
operacija izvrši nad poljem brojeva (za svaki element matrice pojedinačno). Uko-
liko nema tačke ispred operatora, onda će operacije biti izvršene po pravilima za
operacije sa matricama.
Poznate su matrice A i B. Izvršiti operaciju množenja elemenata matrice poje-
dinačno.
>> A=[ 1 3 5;2 4 6];
>> B=[-4 0 3;1 9 8];
>> A.*B
ans =
-4 0 15
2 36 48
Neka je A matrica tipa 1 × n (vektor vrsta), a B matrica tipa n × 1 (vektor
kolona). Skalarni proizvod vektora A i B je definisan sa A ∗ B. Neka je ma-
trica A=[1, 2, 3, 4] a matrica B=[4; 3; 2; 1], tada je njihov skalarni
proizvod A*B=20.

3.4.4 Indeksiranje elemenata matrica

Element u vrsti i i koloni j matrice A označava se kao A(i,j). Na primer,


A(3,2) je broj koji se nalazi u trećoj vrsti i drugoj koloni.

R
Matrica se može definisati na više načina korišćenjem MATLAB izraza.
Sledeći primer pokazuje moguće načine u slučaju vektora vrste X dimenzija 1 × 3,
čiji su elementi X(1) = 2, X(2) = 4 i X(3) = -1. Matrica se može defin-
isati povećanjem dimenzija prethodno definisane matrice. Ponovno pozivanje
prethodno definisane matrice X.
X1=[X 5 8]
daje sledeći rezultat:
X1=[2 4 -1 5 8]
Izraz X1(4)=0 daje:
X1=[2 4 -1 0 8]
Uočava se da je vrednost 0 postavljena na mesto elementa X1(4) koji nije eksplic-
itno definisan.
Elemente matrice mogu se referencirati sa jednim indeksom, A(k). To je
uobičajen način referenciranja vektora vrste i vektora kolone. Ovo može da se
primeni na dvodimenzionalnu matricu, jer se u tom slučaju niz posmatra kao vektor
kolona formiran od kolona originalne matrice. Prema tome, za 3 × 3 matricu A,
3.4. MATRIČNA IZRAČUNAVANJA 51

A(6) je drugi način za referenciranje vrednosti smeštene u A(3,2).


Ako pokušamo da unesemo vrednost u element koji ne postoji u matrici, di-
menzije matrice se prilagod-avaju da prihvate novu vrednost:
>> X=[1 1 3;4 0 6;2 5 -1];
>> X(3,5)=17
X=
1 1 3 0 0
4 0 6 0 0
2 5 -1 0 17

3.4.5 Operator dvotačka



R
Dvotačka (:) predstavlja jedan od najvažnijih operatora u MATLAB u. Po-
javljuje se u nekoliko različitih oblika. Izraz 1:10 jeste vektor vrsta koji sadrži
celobrojne vrednosti od 1 do 10. Da bismo dobili nejedinični inkrement moramo
navesti vrednost inkrementa. U tom slučaju navode se tri broja (celobrojna ili
racionalna) koji su razdvojeni sa dve dvotačke. Prvi i treći broj smatraju se donjom
i gornjom granicom, a srednji broj je inkrement. Na primer:
>> 100:-7:50
ans =
100 93 86 79 2 65 58 51
Operator dvotačka može se koristiti za dobijanje vektora iz matrice. Komanda
X(:,k) formira vektor kolonu of k-te kolone matrice. Neka je
>> X=[1 1 3;4 0 6;2 5 -1];
>> Y=X(:,1)
Y =
1
4
2
a komanda X(l,:) formira vektor vrstu od l-te vrste matrice. Na primer, ko-
manda
>> Z=X(1,:)
Z =
1 1 3
formira vektor od prve vrste.
Operator dvotačka zgodan je za izdvajanje manjih matrica iz većih matrica.
Komanda C(:,k:l) formira matricu od k-te do l-te kolone. Neka je definisana
matrica C, dimenzija 4 × 3, tada je
52 GLAVA 3. OSNOVE MATLAB-A

>> C=[-1 0 0;1 1 0;1 -1 0;0 0 2];


>> C1=C(:,2:3)
C1 =
0 0
1 0
-1 0
0 2
Vrste i kolone možemo obrisati korišćenjem para uglastih zagrada []. Ako
želimo da obrišemo drugu kolonu matrice A to ćemo uraditi na sledeći način:
>> A=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1];
>> A(:,2)=[];
>> A
A =
16 2 13
5 11 8
9 7 12
4 14 1
Ako obrišete samo jedan element u matrici, rezultat uopšte nije matrica.
Prema tome, izrazi kao što je: A(1,1)=[] daju kao rezultat grešku. Med-utim,
korišćenjem jednog indeksa briše se jedan element ili sekvenca elementa i preostali
elementi pretvaraju se u vektor vrstu. Prema tome za A(1:2:10) dobijamo
>> A(1:2:10)
ans =
16 9 2 7 13

3.5 Polinomi

R
Polinomi se u MATLAB u predstavljaju preko vektora koga čine koeficijenati, pri
ćemu se koeficijent uz najveći stepen nalazi na prvoj poziciji vektora, a slobodni
član na poslednjoj. Na primer, polinom x3 + 3x2 + 2x + 1 se predstavlja vektorom
[1, 3, 2, 1].
Polinomi se mogu direktno sabirati, odnosno oduzimati, pod pretpostavkom da
su vektori kojima su predstavljeni iste dimenzije (u slučaju da nisu, uvek je moguće
kraći vektor proširiti vodećim nulama do dimenzije većeg). Za množenje polinoma
može se koristiti funkcija conv. Slično, za deljenje dva polinoma, moguće je
koristiti funkciju deconv, koja vraća količnik i ostatak pri deljenju. Naglasimo,
da se za dodavanje broja a polinomu p ne sme koristiti konstrukcija p = p +
a, jer podsetimo se, ovo dodaje broj a svakom koeficijentu polinoma p. Umesto
ovoga, potrebno je koristiti p(end) = p(end) + a.

R
3.6. PROGRAMIRANJE U MATLAB U 53


R
Za rad sa polinomima, MATLAB sadrži skup efikasnih funkcija.

polyval(p,x) izračunava vrednost polinoma p u tacki x.


roots(p) pronalazi sve nule polinoma p.
poly(p) ukoliko je argument p vektor, pronalazi polinom čije su nule elementi
vektora p, odnosno polinom ∏ni=1 (p − p1 ) · · · (p − pn )
polyder(p) pronalazi izvod polinoma p.
poliint(p) pronalazi neodred-eni integral polinoma p.

3.6 Programiranje u MATLAB u R


R
MATLAB je programski jezik u kojem je moguće napisati sopstvene programske
delove. Pomoću ugrad-enih funkcija i programskih paketa moguće je pisati nove
R
programe. Svaki skup MATLAB naredbi napisan korišćenjem tekst editora koji je

R
zapamćen u datoteci sa nastavkom-m predstavlja jedan MATLAB program.
Postoje dve vrste m datoteka: skript datoteka (engl. script files) i funkcijska
datoteka (engl. function files). Glavna razlika je u prihvatanju promenljivih.

R
R
MATLAB ove funkcije se sastoje od kombinacije MATLAB ovih različitih
funkcija, povezanih tako da kao celina obavljaju predvid-eni zadatak. Funkcijske
datoteke mogu prihvatiti ulazne argumente i vratiti izlazne. Skriptne datoteke ne
uzimaju ulazne argumente ali vraćaju izlazne. Skriptne datoteke sadrže niz ko-
mandi koje se uobičajeno unose u komadnu liniju. Jednostavno zamjenjuju unos iz
komadne linije. Na taj način izbegava se ponavljanje unosa naredbi pri složenijim
proračunima.

3.7 Skript datoteke


Dosad su sve komande u ovoj knjizi izvršavane u komandnom prozoru. Premda
R
se svaka MATLAB komanda može izvršiti na taj način, komandni prozor nije
podesan za izvršavanje niza komandi, a to ponekad nije ni moguće, naročito ako
su one med-usobno povezane. Problem je to što se komande u komandnom prozoru
ne mogu memorisati i ponovo izvršiti. Sem toga, komandni prozor ne omogućava
interakciju komandnih linija. To znači da se pritiskom na taster < Enter > izvršava
samo poslednja komanda, dok sve prethodno izvršene komande ostaju neprome-
njene. Ako neku prethodno izvršenu komandu treba izmeniti ili ispraviti, a njeni
rezultati se koriste u komandama unesenim posle nje, sve te komande moraju se
ponovo upisati i izvršiti pojedinačno.
54 GLAVA 3. OSNOVE MATLAB-A


R
Postoji i drugačiji (bolji) način izvršavanja komandi u MATLAB u komande
(program) najpre se upišu u zasebnu datoteku, zapamti se, a zatim pokrene (izvrši).
Kada se pokrene takva datoteka, njene komande se izvršavaju redom kojim su
navedene. Ako treba, može se izmeniti ili ispraviti komanda u datoteci, zapamti
se i ponovo pokrene. Takvu datoteku nazivamo skript datoteka (engl. script

R
file). Svi MATLAB programi su tekstualne datoteke a najjednostavnije ih je pisati
-
korišćenjem ugrad enog editora koji se poziva komandom edit.
Na primer, u komandnom prozoru se otkuca komanda edit i nakon pritiska

R
tastera < Enter > otvara se editor u kome se ispisuju MATLAB komande. Na
primer upišimo sledeće komande
sin(pi/2)+cos(pi)*tan(3*pi/4)

R
a zatim ih zapamtimo pod imenom proba, MATLAB će dodati nastavak m. Ako u
komandnom prozoru orkucamo proba kao izlaz dobićemo 2, što je tačna vrednost
navedenog izraza.

3.7.1 Kontrolne petlje

Razni programski jezici nude mnoštvo struktura koje omogućuju kontrolu toka
R
programa. MATLAB nudi tri vrste ovakvih petlji:

• For petlja
• While petlja
• If-else-end struktura
• Switch-case struktura.

Zbog njihovog čestog koriščenja one se smeštaju u m fajlove, jer je na taj način
izbegnuta potreba za stalnim ponovnim unošenjem ovih struktura.

For petlja. Ovaj tip petlji omogućuje da se neka grupa naredbi izvrši unapred
definisan broj puta. for petlja se završava naredbom end. Sintaksa ove petlje je
sledeća:
for x=a:korak:b,
blok naredbi
end

R
Na primer, MATLAB skript za generisanje vektora korišćenjem funkcije sin
i petlje for.
>> for n=1:10,
x(n)=sin(n*pi/10);
end
3.7. SKRIPT DATOTEKE 55

>> x
x =
Columns 1 through 5
0.3090 0.5878 0.8090 0.9511 1.0000
Columns 6 through 10
0.9511 0.8090 0.5878 0.3090 0.0000
For petlje treba izbegavati kad god je do rešenja moguće doći korišćenjem vek-
torizovanog pristupa. Oba pristupa vode istom rešenju, ali je drugi brži i zahteva
često manje kucanja po tastaturi. Na primer, faktorijel broja 10 može se izračunati
ovako
>>p=1;
>>for i=1:10,
p=p*i
end
>>p
p=
3628800
Faktorijel 10 mnogo brže se izračunava preko p=prod(1:10). U ovom
slučaju kôd je napisan u programskom jeziku C i radi mnogo brže. Postupak elim-
inacije petlji poznat je pod imenom vektorizacija.

While petlja. Sintaksa ove petlje je:


while izraz,
blok naredbi
end
Blok naredbi izmedu while i end se izvršava dok god je izraz istinit. Na
primer, sledeća while petlja
>> num=0;eps=1;
>> while(1+eps)>1,
eps=eps/2;
num=num+1;
end
vraća
>> num
num =
53
>> eps=2*eps U
eps =
2.2204e-016

ovom primeru je prikazan jedan od načina izračunavanja vrednosti eps3 . Početna


3 Relativna
R
preciznost sa kojom MATLAB manipuliše izrazava konstanta eps, koja predstavlja
rastojanje izrned-u broja 1.0 i prvog većeg broja u pokretnoj tački koji može da se zapiše.
56 GLAVA 3. OSNOVE MATLAB-A

vrednost za eps je jedinica i sve dok je uslov (1+eps)>1 zadovoljen, naredbe


unutar while petlje se izvršavaju. U while petlji eps se stalno deli sa dva i kada
postane tako mali da (eps+1) više nije veće od jedinice petlja se završava. Ovo
se dešava zbog ograničenog broja decimalnih mesta predvid-nih za predstavljanje
realnog broja.

If-else struktura. Sintaksa if petlje je sledeća


<<if izraz,
blok naredbi
end
Na primer,
>> a=10;
>> c=a*25
c =
250
>> if a>5,
c=(1-20/100)*c;
end
>> c
c =
200
U slučaju da postoji i druga alternativa, else ova struktura ima sledeći oblik:
if izraz
naredbe koje se izvrsavaju ako je izraz istinit
else
naredbe koje se izvrsavaju ako izraz nije istinit
end
Moguće je izvršiti jedan deo programa označen sa naredbe1 ukoliko je izraz
istinit, a drugi deo naredbe2 ukoliko nije. To se ostvaruje koristeći if u kombi-
naciji sa else.
for izraz
naredbe1
else
naredbe2
end


R
Primer 3.1. Napisati MATLAB skript za izračunavanje funkcije:

x1 + x2 ,
 za x1 < x2 ,
y = x1 x2 , za x1 = x2 ,

x1 − x2 , za x1 > x2 .

3.7. SKRIPT DATOTEKE 57


R
MATLAB skript.
disp(’Unesite x1 i x2’);
x1=input(’x1=’); x2=input(’x2=’);
if x1 < x2,
y=x1+x2
elseif x1 == x2,
y=x1*x2
else
y=x1-x2
end

Znak ’==’ predstavlja znak jednakosti i koristi se u logičkim operacijama, dok


znak ’=’ predstavlja operator dodele (videti stranu 43).
Script fajl zapamtimo pod imenom ys. Kad u komandnu liniju otkucamo ys
dobićemo sledeći izlaz
>> ys
Unesite x1 i x2
x1=3
x2=33
y =
36

Switch-case struktura. Ova je struktura pogodna u slučaju kada je potrebno


više puta ispitivati istinitost izraza a na osnovu jednog argumenta. Forma ove struk-
ture je:
switch izraz
case test izraz1
naredbe1...
case test izraz2
naredbe2...
otherwise
naredbe3
end
Izraz u komandi switch može biti numerička vrednost ili niz znakovna.
Najčešće je to promenljiva veličina kojoj je dodeljena skalarna vrednost ili
znakovni niz .
Vrednost izraza u komandi switch se poredi pojedinačno sa vrednošću
zadatom u svakom iskazu case. Ako se vrednosti podudaraju, izvršava se grupa
komandi iza odgovarajućeg iskaza case. Ako postoji više od jednog podudaranja,
izvršava se samo prvi iskaz. Ukoliko nije pronad-eno podudaranje i postoji iskaz
otherwise, izvršava se ta grupa komandi. Ukoliko otherwise ne postoji ne
izvršava se ni jedna grupa komandi.
58 GLAVA 3. OSNOVE MATLAB-A


R
Primer 3.2. Napisati MATLAB skript za izračunavanje funkcije:

x1 + x2 ,
 za k = 1,
y = x1 x2 , za k = 2,

x1 − x2 , za k = 3.


R
MATLAB skript:
disp(’Unesite x1, x2 i k’);
x1=input(’x1=’);
x2=input(’x2=’);
k=input(’k=’);
switch k
case 1
y=x1+x2
case 2
y=x1*x2
case 3
y=x1-x2
otherwise
DISP(’Pogresno uneta vrednost za k’)
end

Primer 3.3. U sledećem primeru jedan slučajni celi broj x iz grupe brojeva
{1, 2, . . . , 10} je generisan. Ako je x = 1 ili x = 2, tada se poruka Verovatnoća=20%
prikazuje na ekranu. Ako je x = 3 ili 4 ili 5, onda se prikazuje poruka
Verovatnoća=30% , inače se generiše poruka Verovatnoća=50%. Sledeći skript
fajl koristi switch kao alat za upravljnje tokom programa.
x=ceil(10*rand)
switch x
case {1,2}
disp(’Verovatnoca=20%’)
case {3,4,5}
disp(’Verovatnoca=30%’)
otherwise
disp(’Verovatnoca=50%’)
end

Treba obratiti pažnju na upotrebu vitičastih zagrada iza reči case. To stvara
tzv. polje niza bolje nego jednodimenzionalno polje, koje zahtjeva upotrebu
R
uglatih zagrada. MATLAB komandom rand generiše se ravnomerno raspode-

R
ljen slučajni broj u intervalu [0, 1]. MATLAB komandom ceil zokružuje se taj
broj na prvu veću celobrojnu vrednost.

R
3.8. EFIKASNOST IZVRŠAVANJA PROGRAMA U MATLAB U 59

3.8 Efikasnost izvršavanja programa u MATLAB u R


R
MATLAB pripada grupi interpreterskih programskih jezika. Kada se naredba uno-
si kucanjem u komandnom prozoru, ona se prvo interpretira a zatim izvršava. Ako
se radi o programu, onda se naredbe redom učitavaju, interpretiraju i izvršavaju.
Ukoliko u programu postoje petlje, svaka instrukcija u petlji se u svakom pro-
lazu učitava, interpretira i izvršava. U slučaju kada se radi sa velikim količinama
podataka, kakav je slučaj u obradi govora ili slike, to može ozbiljno povećati
vreme izvršenja programa. Stoga je od interesa razmotriti mehanizme za procenu
složenosti programa i načine za popravljanje efikasnosti programa.

3.8.1 Merenje vremena izvršavanja programa



R
Merenje vremena izvršavanja programa, ili dela programa, u MATLAB u je
omogućeno korišćenjem naredbi tic i toc. One se primenjuju na sledeći način:
tic
blok naredbi
toc

Prvom naredbom tic se aktivira merenje vremena (štoperica). Druga naredba


toc očitava sadržaj brojača bez resetovanja. Resetovanje brojača se vrši novom
naredbom tic. Naredba toc može imati i oblik t = toc, cime se omogućava
pamćenje prolaznih vremena tokom izvršavanja nekog složenog programa. Na
primer, neka je potrebno generisati matricu slučajnih brojeva 1000 × 1000, inver-
tovati je i izmeriti vreme izvršenja programa.
tic;
a=rand(1000);
b=inv(a);
toc;
Elapsed time is 0.193962 seconds.

R
Minimalno proteklo verme koje MATLAB može da proračuna je 0.05 s.

3.8.2 Povećanje efikasnosti izvršavanja programa

Radi povećanja efikasnosti izvršavanja programa, što je od ogromne važnosti kod


realizacije složenih algoritama, potrebno je izbegavati upotrebu programskih petlji
što je više moguće. Da bi ilustrovali potrebu za izbegavanjem programskih petlji
posmatrajmo generisanje diskretne sinusoide na dva načina. Korišćenjem for
petlje i vektorizacijom. For petlja daje sledeći rezultat:
60 GLAVA 3. OSNOVE MATLAB-A

tic;
for t=1:1000000,
y=sin(2*pi*t/10);
end;
toc
Elapsed time is 0.080880 seconds.
Brže izvršenje komandi se može postići potpunim izbegavanjem izračunavanja
u petlji - vektorizacijom.
tic;
t=1:1000000,
y=sin(2*pi*t/10);
toc
Elapsed time is 0.020582 seconds.

3.9 Grafički prikaz podataka



R
Jedna od najboljih osobina MATLAB a je ta što ima veoma velike grafičke
R
mogućnosti. U MATLAB u postoji velik broj naredbi pomoću kojih se
grafičko prikazivanje podataka može prikazati u dve ili tri dimenzije. Urad-eni
grafici mogu biti sačuvani u nekom od standardnih formata i kao takvi biti
korišćeni u nekim drugim programskim paketima. Najjednostavnija naredba za
prikazivanje podataka je naredba plot. Neka je potrebno prikazati funkciju:
y=sin(x) za x u intervalu od 0 do 2π . Prvo je potrebno u zadanom in-
tervalu [0, 2π ] definisati konačni broj tačaka (30). Koristi se MATLAB ko-
R

manda linspace(pocetak,kraj,broj_elemenata), koja formira vek-


tor sa linerano razmaknutim elementima.
>> x=linspace(0,2*pi,30);
>> y=sin(x);
>> plot(x,y)
>> ylabel(’Vrednost funkcije y’,’FontSize’,15)
>> xlabel(’Vrednost promenljive x’,’FontSize’,15)
>> title(’Grafik funkcije y=sin(x)’,’FontSize’,15)
>> set(gca,’FontSize’,15)
Nakon čega sledi tabeliranje funkcije, a zatim i grafik prikazan na Slici 3.1.
Grafik se u ovom slučaju dobija spajanjem tačaka x(i), y(i) za i = 1, 2, . . . , N, gde
je N broj elemenata vektora x i y. Ukoliko broj elemenata u x i y nije isti umesto
grafika dobićemo poruku greške da se dimenzije ne slažu.

R
Označavanje grafika i osa u MATLAB u se postiže naredbama title,
xlabel i ylabel. U okviru ovih naredbi može se definisati veličina fontova,
kao što je to učinjeno u našem primeru, ili nešto drugo (na primer, boja linije).
3.9. GRAFIČKI PRIKAZ PODATAKA 61

Grafik funkcije y=sin(x)


1

Vrednost funkcije y 0.5

−0.5

−1
0 2 4 6 8
Vrednost promenljive x

Sl. 3.1: Grafik funkcije y = sin(x) nacrtan u 30 tačaka.

Za definisanje veličine fontova na ordinatnim osama može se koristiti naredba


set(gca,’FontSize’,15).
Prozor u kome se iscrtava slika može se pozvati naredbom figure(n), gde
n označava redni broj slike.
2
Primer 3.4. Nacrtati grafik funkcije y = xe−x na intervalu (−6, 6).

R
MATLAB komande:
>> x=linspace(-6,6,500);
>> y=x.*exp(-x.ˆ2);
>> plot(x,y,’r’,’LineWidth’,2)

0.5

0.4

0.3

0.2

0.1

−0.1

−0.2

−0.3

−0.4

−0.5
−6 −4 −2 0 2 4 6 8

2
Sl. 3.2: Grafik funkcije y = xe−x nacrtan u 500 tačaka.
62 GLAVA 3. OSNOVE MATLAB-A

Pored vektora x i y komanda plot sadrži podatak da je grafik crvene boje (’r’)
i da je debljina linije (’LineWidth’) dva pointa.

3.10 Simbolička analiza


Pored korišćenja brojeva, mogu se koristiti i simboli za izračunavanja u
R
MATLAB u. Ova mogućnost za manipulaciju matematičkim izrazima bez
korišćenja brojeva može da bude vema korisna u rešavanju odred-enih tipova

R
matematičkih problema. Simboličke funkcije u MATLAB u su zasnovane na
Maple 8 softverskom paketu, koji je izdao Waterloo Maple, Inc, Kanada.
Simbolička algebra se koristi da faktoriše i uprosti matematičke izraze, da
pronad-e rešenja jednačina, i da izračuna integral ili izvod matematičkih izraza. Do-
datne mogućnosti ukljčuju funkcije iz linearne algebre za utvrd-ivanje inverznih ma-
trica, determinanti, katakteristične vrednosti, i kanoničnih oblika simboličkih ma-
trica; aritmetiku izmenjive preciznosti za numeričku procenu matematičkih izraza
do bilo koje tačnosti; simbolička i numerička rešenja diferencijalnih jednačina;
i posebne matematičke funkcije koje izračunavaju funkcije kao što su Furijeove
transformacije. Za više detalja o ovim dodatnim simboličkim mogućnostima treba
pogledati funkciju help.

3.10.1 MATLAB R kao simbolički kalkulator



R
Simbolički izraz je smešten u MATLAB -u kao string znakova. Jednostruki navod-
nici se koriste za definisanje simboličkih promenljivih i izraza, i unose se kao ar-
gument funkcije sym.
Kada se u komandnom prozoru otkuca komanda i pritisne taster < Enter >,
ona se odmah izvršava. Ako ne želimo da se rezultat prikaže na ekranu, onda posle
naredbe treba uneti znak ;. U jednoj liniji može da se navede i više naredbi, a i jedan
izraz može da se unosi u više linija, pri ćemu se sa . . . označava da je nastavak u

R
sledećoj liniji. Ovakav način rada MATLAB a podseća na kalkulator. Na primer,
komandom
1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10
dobijamo
>>ans=
1.8290
Med-utim, sledeći izraz
sym(’1/2’)+sym(’1/3’)+sym(’1/4’)+sym(’1/5’)
+sym(’1/6’)+sym(’1/7’)+sym(’1/8’)+sym(’1/9’)
3.10. SIMBOLIČKA ANALIZA 63

daje
>>ans=
4609/2520
Rezultat, naravno, može da se dodeli nekoj promenljivoj. Na primer, neka je to
promenljiva x.
x=sin(pi/4)+cos(po/3);
Ako u komandnoj liniji otkucamo x dobićemo vrednost promenljive x.
>>x=
1.2071

R
MATLAB sadrži komandu za rad sa brojevima proizvoljne preciznosti (engl
variable precision arithmetic). Ovo se postiže komandom vpa. Na primer, broj π
se može izračunati na 50 cifara korišćenjem komande vpa.
>>vpa(pi,50)
>>ans=
3.141592653589793115997963468544185161590576171875
Rezultat je simbolička promenljiva. Ukoliko želimo da koristimo ovaj rezul-

R
tat u MATLAB izrazima koji zahtevaju dvostruku preciznost u fomatu pokretne
tačke, tip promenljive se menja komandom double(x), gde je x simbolička
promenljiva.

3.10.2 Simbolički izrazi



R
Simbolički izraz je smešten u MATLAB u kao string znakova. Jednostruki navod-
nici se koriste za definisanje simboličkih izraza, i unose se kao argument funkcije
sym. Na primer,
>> alfa=sym(’alfa’)
alfa =
alfa
Svaki simbolički objekt može imati i dodatna svojstva koja se odred-uju kod
deklaracije varijable:
>> x = sym(’x’);
>> y = sym(’y’,’real’);
Simbolička promenljiva x je bez dodatnih svojstava, dok je simbolička promenljiva
y realna. Slično, k=sym(’k’,’positive’) definiše k kao pozitivnu (relnu)
promenljivu.
Ako nam dodatna svojstva nisu bitna, naredbom syms možemo odmah defin-
isati više simboličkih promenljivih
>> syms x y z
64 GLAVA 3. OSNOVE MATLAB-A

Korišćenjem simboličkih izraza mogu se definisati i simboličke funkcije koje


se potom mogu diferencirati, integraliti i sl.
>> f=sym(’xˆ2-2*yˆ2+3*a’)
f =
xˆ2-2*yˆ2+3*a
Simbolička funkcija se može definisati i na drugi način. Najpre se definišu
simboličke veličine naredbom syms a zatim se formira simbolička funkcija
>> syms x y a f
>> f=xˆ2-2*y+3*a
f =
xˆ2-2*y+3*a
Simbolička promenljiva se može zameniti brojnom vrednošću koristeći subs
komandu. Na primer, u simboličkom izrazu zamenimo simboličku vrednost x = 3.
Formirajmo simboličku funkciju
>>clear all
>>syms x
>> f=xˆ2+2*x
f=
xˆ2+2*x
a zatim zamenim simboličku vrednost
>>x=3
f3=subs(f,x)
f3=
15
Za formiranje simboličke funkcije koristi se komanda inline
>>syms x y a
>> f=inline(’xˆ2-2*y+3*a’)
f =
Inline function:
f(a,x,y) = xˆ2-2*y+3*a
Funkcija definisana komandom inline može se iskoristiti za izračunavnje
vrednosti funkcije za zadate vredosti simboličkih promenljivih. Za definisanu
simboličku funkciju f(a,x,y) vrednost funkcije za x = 1, i y = 1 iznosi
>> f(a,1,1)
ans =
-1+3*a

R
MATLAB redefiniše i većinu osnovnih funkcija za rad sa matricama tako da
mogu da rade i na simboličkom nivou. Tako je korišćenjem funkcije inv moguće
3.10. SIMBOLIČKA ANALIZA 65

odrediti inverznu matricu simboličke matrice


 
a b
c d

>>syms a b c d
>>ans=
[ d/(a*d - b*c), -b/(a*d - b*c)]
[ -c/(a*d - b*c), a/(a*d - b*c)]

3.10.3 Simboličke operacije nad polinomima


Postoje više načina da se izraze neki algebarski izrazi. Na primer, izraz (1 + x)3 se
može napisati i u obliku x3 + 3 ∗ x2 + 3 ∗ x + 1. Sledeće funkcije se mogu koristiti
za konvertovanje izmed-u različitih oblika algebarskih izraza:

expand Ekspanzija proizvoda i stepena u polinomu. Ova komanda sa može pri-


meniti i na trigonometrijske formule, pravila koja se odnose na eksponen-
cijalnu i logaritamsku funkciju na članove koji sadrže operacije sabiranja i
oduzimanja.
factor Izdvaja zajedničke faktore iz polinoma.
collect Sred-uje polinom u obliku sume stepena “dominantne promenljive” x.
simplify Pronalazi najjednostavniji oblik polinoma pomoću algebarskih trans-
formacija.
poly2sym Pretvara numerički vektor u simbolički izraz.
sym2poly Pretvara simbolički izraz u numrički vektor.

Na primer, potrebno je proizvod 2 + 4x2 )2 (x − 1)3 razviti u polinom.


>> (2+4*xˆ2)ˆ2*(x-1)ˆ3
ans =
(4*xˆ2 + 2)ˆ2*(x-1)ˆ3
>>t=expand(ans)
16*xˆ7-48*xˆ6+64*xˆ5-64*xˆ4+52*xˆ3-28*xˆ2+12*x-4
Ako komandu faktor primenimo na predhodni izraz dobićemo sledeći rezul-
tat:
>> factor(t)
ans =
4*(2*xˆ2 + 1)ˆ2*(x - 1)ˆ3
Komanda koja ima suprotno dejstvo od komande factor je komanda
expand, koja razvija izraz, koji predstavlja argument, u obliku sume proizvoda.
66 GLAVA 3. OSNOVE MATLAB-A

Na primer, ukoliko je argument polinom u faktorizovanom obliku, onda će ona


vratiti taj polinom u razvijenom obliku.
>> syms x y
>> expand((1+2*x+y)ˆ2)
ans =
4*xˆ2 + 4*x*y + 4*x + yˆ2 + 2*y + 1
>>collect(ans,x)
ans =
4*xˆ2 + (4*y + 4)*x + yˆ2 + 2*y + 1
Komanda simplify se može koristiti za sred-ivanje komplikovanih izraza
koji su dobijeni različitim izračunavanjima.
>> f=1/(4*(x-1))-1/(4*(x+1))-1/(2*(xˆ2+1))
>> simplify(f)
ans =
1/(xˆ4-1)
Komanda poly2sym vrši konverziju numeričkog vektora u simbolički izraz.
Simboličko predstavljanje je polinom čiji su koeficijenti prikazani u vektoru. Po-
drazumeva se da je nezavisna promenljiva x, ali druga promenljiva može da se
imenuje kao drugi argument u komandi. Komanda sym2poly konvertuje vek-
tor koeficijenata od simboličkog predstavljanja polinoma. Neka vektor A sadrži
koeficijente polinoma
>> A=[1 4 0 2 45];
>>poly2sym(A)
ans=
xˆ4+4*xˆ2+2*x+45
>>subs(ans,’x’,’t’)
ans=
tˆ4+4*tˆ2+2*t+45
Komanda sym2poly Ima suprotno dejstvo u odnosu na komandu
sym2poly. Komanda sim2poly(xˆ3-2*xˆ2+3*x-4) daje:
ans =
1 -2 3 -4

3.10.4 Prikazivanje rezultata

Većina funkcija za rad sa simboličkim izrazima primaju kao argumente i nizove


karaktera i automatski ih konvertuju u simboličke izraze korišćenjem funkcije sym.
Izraze je moguće prikazati u čitljivom formatu, formatu koji je spreman za unos u
LATEX programski paket za obradu teksta ili koji je spreman za direktni unos u
programski kod jezika C. To su komande pretty, latex i ccode. Komanda
3.11. REŠAVANJE JEDNAČINA 67

pretty daje sledeći prikaz na ekranu momitora


>>f = sym(’(x+1)/(xˆ2+3)’);
>>pretty(f)
x + 1
-------
2
x + 3

Komanda latex daje sledeći kôd


>>latex(f)
ans=
\frac{x + 1}{xˆ2 + 3}
Komanda ccode daje sledeći kôd
>>ccode(f)
ans=
t0=(x+1.0)/(x*x+3.0)
Komanda whos daje popis svih promenljivih koje se trenutno nalaze u radnom
prostoru (workspace-u), njihove dimenzije i koliko memorijskog prostora zauzi-
maju. Na primer, budući da smo dosad kreirali varijable a, x i y, rezultat naredbe
whos će biti:
>> whos
Name Size Bytes Class Atributes
a 1x1 60 sym
ans 1x1 60 sym
f 1x1 934 inline
x 1x1 60 sym
y 1x1 60 sym

3.11 Rešavanje jednačina


Simboličke matematičke funkcije mogu da se koriste da reše jednu jednačinu, sis-
tem jednačina i diferencijalne jednačine. Kratki opisi funkcija za rešavanje jedne
jednačine ili sistema jednačina su sledeći:
Funkcija solve(f,var) rešava simboličku jednačinu f za simboličku

R
promenljivu var. Ako postoji više promenljivih, MATLAB prvenstveno rešava
za promenljivu x.
Funkcija solve(f1,...fn) rešava sistem jednačina koje su predstavljene
kao f1,...,fn.
Funkcija solve(f, ’y’) rešava simboličku jednačinu f=0, za promenljivu
y. Jednostruki navodnici oko drugog argumenta nisu potrebni ako je on eksplicitno
68 GLAVA 3. OSNOVE MATLAB-A

definisan kao simbolička veličina.


Da bismo prikazali korišćenje funkcije solve, pretpostavimo da su definisane
sledeće jednačine:
>> eq1=sym(’3*x+2*y-z=10’);
>> eq2=sym(’-x+3*y+2*z=5’);
>> eq3=sym(’x-y-z=-1’);
Prvu jednačinu rešavamo po x, drugu po y, a treću po z.
>> solve(eq1)
ans =
z/3 - (2*y)/3 + 10/3
>> solve(eq2,’y’)
ans =
x/3 - (2*z)/3 + 5/3
>> solve(eq3,’z’)
ans =
x - y + 1
Na kraju rešimo tri jednačine sa tri nepoznate
>> [a,b,c]=solve(eq1,eq2,eq3)
a =
-2
b =
5
c =
-6
Rezultati se dodeljuju po abecedi. Na primer, ako su promenljive koje su
korišćene u simboličkim izrazima q, x i p, rezultati će biti vraćeni u redosledu
p, q, x, nezavisno od imena koja su dodeljena rezultatima.
Rezultat funkcije solve je simbolička promenljiva, ili ans ili sa korisnički
R
definisanom imenom. Ako želimo da koristimo taj rezultat u MATLAB izrazu koji
zahteva dvostruku preciznost, i ulaz sa pokretnim tačkom, možemo da promenimo
tip promenljive sa funkcijom double. Na primer, double(x) menja x iz sim-
boličke promenljive u matričnu promenljivu.

Primer 3.5. Potrebno je rešiti sledeću jednačinu: x2 + 3x − 2 = 0


>> solve(’xˆ2+3*x-2’,’x’)
ans =
- 17ˆ(1/2)/2 - 3/2
17ˆ(1/2)/2 - 3/2
Ukoliko želimo rešenje u decimalnom obliku sa, recimo 4 značajne cifre,

R
upotrebićemo MATLAB komandu vpa (engl. Variable precision arithmetic).
3.12. INTEGRALNI I DIFERENCIJALNI RAČUN 69

>> vpa(ans,4)
ans =
0.562
-3.562

Primer 3.6. Rešiti nelinearnu jednačinu e2x = 3y


>> clear, syms x y
>> eq=’exp(2*x)=3*y’;
>> [x]=solve(eq,x)
x =
log(3*y)/2

Primer 3.7. Rešiti sistem od dve nelinearne jednačine sa dve nepoznate

sin(x + y) − ex−y =0
cos(x + 6) − x2 y2 =0

>> clear, syms x y


>> f1 = sin(x+y)-exp(x-y);
>> f2 = cos(x+6)-xˆ2*yˆ2;
>> [a b] = solve(f1,f2)
a=
0.37431309936308903796730912802326
b=
2.6660119905883936377175405750553

3.12 Integralni i diferencijalni račun


MATLAB ima mogućnosti izvod-enja osnovnih operacija matematičke analize kao

R

što je pronalaženje izvoda funkcije, integracija, pronalaženje granične vrednosti


funkcije, razvoj funkcije u Tajlorov red itd.
Izvod reda n funkcije f po zadatom argumentu (arg) dobija se koman-
dom diff(f,’arg’,n). Potrebno je odrediti drugi izvod d2 f (x)/dx2 funkcije
f (x) = x2 sin(x)
>>syms x
>>diff(’xˆ2*sin(x)’,2)
ans=
2*sin(x)-xˆ2*sin(x)+4*x*cos(x)
Posmatrajmo funkciju y = 2 sin x cos(ω t). Izvod funkcije y u odnosu na argu-
ment x izračunava se na sledeći način
70 GLAVA 3. OSNOVE MATLAB-A

>>syms x omega t
>>y=2*sin(x)*cos(omega*t);
>>diff(y,’x’)
ans=
2*cos(omega*t)*cos(x)
Drugi izvod funkcije y u odnosu na argument t iznosi
>>diff(y,’t’,2)
ans=
(-2)*omegaˆ2*cos(omega*t)*sin(x)
Za integraljenje koristi se komanda int. Kao opcioni argumenti mogu se za-
dati promenjiva po kojoj se vrši integraljenje, kao i interval integracije u slučaju
kada se izračunava odred-eni integral. Granice mogu biti brojevi ili simbolički ob-
jekti. Za izračunavanje integrala
Z x
sin2 tdt (3.1)
0

postupak je sledeći
>>int(’sin(t)ˆ2’,0,x)
ans=
-1/2*cos(x)*sin(x)+1/2*x
Izračunavanje numeričke vrednost odred-enog integrala
Z 2
x cos(x)d x
1

>>int(’x*cos(x)’,1,2)
ans=
cos(2) - cos(1) - sin(1) + 2*sin(2)
Komanda eval može se koristiti za izračunavanje numeričke vrednosti odred-enog
integrala.
>>eval(ans)
ans=
0.0207
Integral (3.1) može se izračunati tako što se najpre izračuna njegova simbolička
vrednost, a zatim se izvrši smena granica integrala uz korišćenje komande subs
>>syms a b x
>>F=int(’x*cos(x)’,a,b);
>>subs(F,{a,b},[1,2])
ans=
0,0207
3.13. CRTANJE SIMBOLIČKIH FUNKCIJA 71

Primer 3.8. Izračunavanje neodred-enog integrala


>>syms x;
p Z q >>f=x*exp(-x);
xe−x d x >>F=int(f)
F=
x y
-x*exp(-x)-exp(-x)

Primer 3.9. Izračunavanje odred-enog integrala


>>syms x a b;
p Z b q >>f=x*exp(-x);
xe−x d x >>F=int(f,x,a,b)
a F=
x y -b*exp(-b)-exp(-b)+a*exp(-a)+exp(-a)

3.13 Crtanje simboličkih funkcija

Simboličke funkcije mogu se nacrtati korišćenjem komande


ezplot(f,[a,b]) koja crta grafik eksplicitno zadate funkcije y = f (x)
na intervalu [a, b]. Crtanje grafika funcije

x+2
f (x) =
x2 + x
u intervalu [−3, 3]. Grafik funkcije prikazan je na Slici 3.3. Upotrebljene su sledeće

R
MATLAB komande:
>>h=ezplot(’(x+2)/(xˆ2+x)’,[-3,3])
>>set(h,’LineWidth’,2)
>>set(gca,’FontSize’,15)
>>xlabel(’x’,’FontSize’,16)
>>ylabel(’y’,’FontSize’,16)
>>title(’(x+2)/(xˆ2+x)’,’FontSize’,17); grid on
72 GLAVA 3. OSNOVE MATLAB-A

(x+2)/(x2+x)

10

0
y

−5

−10

−15
−3 −2 −1 0 1 2 3
x

x+2
Sl. 3.3: Grafik funkcije .
x2 + x

Kao drugi primer nacrtajmo grafik implicitno zadate funkcije

x2 + y2 − 1 = 0

koja, kao što je poznato predstavlja krug sa centrom u koordinatnom početku i


poluprečnikom 1. Za crtanje ove funkcije u komandnoj liniji napisan je sledeći
kôd:
>>ezplot(’xˆ2+yˆ2-1’,[-1.2,1.2],[-1.2,1.2])
>>axis equal
3.13. CRTANJE SIMBOLIČKIH FUNKCIJA 73

x2+y2−1 = 0

0.8

0.6

0.4

0.2

0
y

−0.2

−0.4

−0.6

−0.8

−1

−1.5 −1 −0.5 0 0.5 1 1.5


x

Sl. 3.4: Grafik funkcije x2 + y2 − 1 = 0.

Argumenti komande ezplot su simbolička funkcija i granice promenljivih


x i y. Komanda axis equal izjednačava veličinu podeoka na koordinatnim
osama, čime se postiže da nacrtani grafik bude kružnog oblika. Veličina oznake
na osama, naslov, kao i oznaka podeoka na osama imaju podrazumevane veličine
(engl. default).
Primer 3.10. Nacrtati grafik funkcije

x =t,
y =t cos(t),
y =t sin(t).


R
MATLAB kôd
h=ezplot3(’t’,’t*cos(t)’,’t*sin(t)’,[0,30]);
set(h,’LineWidth’,2)
set(gca,’FontSize’,15)
xlabel(’x’,’FontSize’,16)
ylabel(’y’,’FontSize’,16)
zlabel(’z’,’FontSize’,16)
title(’x=t, y=tcos(t), y=tsin(t)’,’FontSize’,17)
axis square
74 GLAVA 3. OSNOVE MATLAB-A

x=t, y=tcos(t), y=tsin(t)

30

20

10

0
z

−10

−20

−30
40
20 30
0 20
−20 10
y −40 0
x

Sl. 3.5: Grafik funkcije x = t, y = t cos(t), y = t sin(t).

3.14 Pitanja za proveru znanja

1. Izračunati sledeće izraze:

(a) (45 /8 + 5 × 8)5 + 84)


1 5 + 84
(b) − 2
2 + 6 6 − 43
(c) 2 + (2 × 4 − 1/π )

2. Trigonometrijska formula data je jednačinom:


x tan x + sin x
cos2 =
2 2 tan x
Proveriti da li je tačna jednakost za x = π /5.
3.14. PITANJA ZA PROVERU ZNANJA 75

3. Neka je definisana matrica G dimenzija 5 × 4


 
0.6 1.5 2.3 −0.5
8.2 0.5 −0.1 −2.0
 
G= 5.7 8.2 9.0 1.5 
 (3.2)
0.5 0.5 2.4 0.5 
1.2 −2.3 −4.5 0.5

Odrediti sadržaj i dimenzije sledećih matrica i proveriti rezultate u



R
MATLAB u.

(a) A=G(:,2),
(b) B=G(4,:),
(c) C=G(10:15),
(d) D=G(4:9,1:6),
(e) E=G(4:5,1:3)
(f) F=G(1:2:5,:).

4. Data je matrica A=[5 8 4;2 2 1]

• Dodati 2 svakom elementu matrice.


• Pomnožiti svaki element matrice sa 3.

5. Kreirati matricu A, dimenzija 3×3 čiji svi elementi imaju vrednost 1. Uraditi
zadatak bez eksplicitnog unošenja vrednosti svakog elementa. Kretirati ma-
tricu B = [1 2 3; 4 5 6; 7 8 9]. Izračunati matrične proizvode
A*B i B*A, i proizvode po elementima A.*B B.*A. Objasniti razlike u
rezultatima.

6. Kreirati matricu A = [1 2 3; 4 5 6; 7 8 9]. Pronaći indeks el-


ementa matrice koji ima vrijednost 5. Pronaći indekse elemenata čije su
vrednosti manje od 5. Koristiti komandu find

7. Rešiti sistem jednačina

3x + 3y + z = 23
2x + 6y + 8z = 18
x + 2y + 10z = 14
76 GLAVA 3. OSNOVE MATLAB-A

8. Izračunati determinantu
1 2 3

4 −5 6

7 8 9

9. Pomoću komandi ones i zeros napravljena je sledeća matrica 4 × 5.

>> A(1:2,:)=zeros(2,5);
>> A(3:4,:)=ones(2,5);

Kako je ispunjena ova matrica?

10. Pomoću komandi ones i zeros napravljena je sledeća matrica 6 × 6.

>> A=zeros(6);
>> A(3:4,:)=ones(2,6);
>> A(:,3:4)=ones(6,2);

Kako je ispunjena ova matrica?

11. Neka je A=[1 2 3;2 -3 1;-4 -5 -6]. Kakve se matrice dobijaju


korišćenjem komende diag?

(a) X1=diag(A);
(b) X2=diag(diag(A));

12. Nacrtati grafik fukcije y = x sin(π x) u intervalu −4 ≤ x ≤ 4.

13. Formirati sledeću matricu koristeći operator dvotačka ili komandu


linspace.
 
1 4 7 10 13 16 19 22 25
72 66 60 54 48 42 36 30 24
0 0.125 0.250 0.375 0.500 0.625 0.750 0.875 1

14. Sabrati sledeće razlomke


1 2 3 4 5 6 7
+ + + + + +
2 3 4 5 6 7 8

15. Izračunati 2 na 50 cifara.
3.14. PITANJA ZA PROVERU ZNANJA 77

16. Rešiti sistem nelinearnih jednačina

x2 + y2 − 1 = 0
0.75x3 + 0.9 = 0

17. Odrediti:

(a) prvi izvod funkcije


x2 e−2x sin x,

(b) prvi izvod funkcije


x
xx

(c) drugi izvod funkcije


ln(3x)
.
x2 − 22
(d) deseti izvod funkcije
xn e−x

18. Za matricu
a 1 0

A = 0 a 1
0 0 a

odrediti njen deseti stepen

19. Odreiti vrednost determinante



a b + c 1

b c + a 1

c a + b 1

20. Izračunati determinantu


10
k 1 −6
−1 3 2 k

k
2 1 −1
1 1 1 −1

21. Broj 345672 napisati kao proizvod prostih brojeva. Koristiti komandu
factor.
78 GLAVA 3. OSNOVE MATLAB-A

22. Uprostiti izraz


1 1 1 1 1 1
a2 ( − ) + b2 ( − ) + c2 ( − )
b c c a a b
a b c
(c − b) + (a − c) + (b − a)
bc ca ab
23. Odrediti:

(a) neodred-eni integral


4x + 6
Z
dx
2x3 − 3x2 − 4 − 4
(b) odred-eni integal
Z 5
(cos2 x + x3 ln x)dx
1
(c) odred-eni integral Z ∞
dx
−∞ 2x2 − 5x + 7
24. Nacrtati grafik funkcije
sin(x)
x
za 0 ≤ x ≤ 4π .

25. Neka je
1 1 1
an = + +···+
2 3 n
Rešiti nejednačinu an < 0.8 (po n) koristeći komandu while.

26. Grafički predstaviti funkcije


x3
(a) y =
(x2 − 4)2
1
(b) (x − 6)e− x

27. Grafički predstaviti zavojnicu (spiralu)

x = sint
y = cost
z =t

28. Definisati x kao simboličku promenljivu.


3.14. PITANJA ZA PROVERU ZNANJA 79

(a) Pomoću komande faktor pokaži da polinom

f (x) = x5 + 6x4 − 6x3 − 64x2 − 27x + 90

ima sledeća rešenja; 1, −2, 3, −3, i −5.


(b) Odrediti koeficijente polinoma koji ima sledeće nule: 6,−4,−1 i 2.

29. Pomoću komandi collect i expand dokazati da je

(a) sin(3x) = 3 sin(x) − 4 ∗ sin3 (x)


(b) cos(x + y + z) = cos x cos y cos z + sin x sin y cos z + sin x cos y sin z +
cos x sin y sin z
80 GLAVA 3. OSNOVE MATLAB-A
Literatura

[1] Microsoft Office Tutorials, 2003. http://www.bcshools.net/


Staff/PowerPointHelp.htm.
[2] A. TANENBAUM. Computer network. Prentice-Hall, Inc, Engelwood Cliffs, New
Jerey, 1996.
[3] B. JAMES. Basic tutorial Excel, 2005. http://www.usd.edu/trio/
tut/excel.
[4] BAY C ON G ROUP. Microsoft Office XP, Microsoft Excel titorial Excel, 2004.
http://www.baycomgroup.com.
[5] D. B RANKOVI Ć I D. M ANDI Ć. Metodika informatičkog obrazovanja - sa osnovama
informatike. Filozofski fakultet u Banjoj Luci, Banja Luka, 2003.
[6] D. E. C OMER. Povezivanje mreža TCP/IP - Principi, protokoli arhitekture. Com-
puter Equipment and trade, Beograd, 2001.
[7] D. G OOKIN. Word 2003 za neupućene. Mikro Knjiga, Beograd, 2004.
[8] D. G RBI Ć. Sistem Mikrosoft Office 2003 na srpskom. PC-Press, Beograd, 2004.
[9] D. Ž IVKOVI Ć I M. P OPOVI Ć. Impulsna i digitalna elektronika. Akademska Misao,
Beograd, 2004.
[10] E. K AJAN. Information Technology encyclopedia and acronymos. Springer-Verlag,
Berlin Heidelberg, 2002.
[11] E. W ILLET. Office 2003 Biblija. Mikro knjiga, Beograd, 2004.
[12] G. L UKATELA. Statistička teorija telekomunikacija. Grad-evinska knjiga, Beograd,
1981.
[13] J. M C K ENZIE. Helping Teachers Use, The Internet Effectively Mi-
crosoft PowerPoint, 2000. http://www.internet4classrooms.com/on
-line powerpoint.htm.
[14] K. H WANG. Computer arithmetic: Principles, architecture, and design. John Wiley,
New York, 1979.
[15] K. H WANG AND F. A. B RIGGS. Computer architecture and parallel procesing.
McGraww-Hill Book Company, New York, 1984.
[16] KOKOMO P UBLIK L IBRARY. Microsoft Power Point 2003 Design-
ing a Presentation, 2004. http://www.kokomo.lib.in.us/it/
MSPowerPoint2004.pdf.
[17] L. M AGID. Mali prručnik za Windows XP. Mikro knjiga, Beograd, 2004.

81
82 LITERATURA

[18] M. S TOJ ČEV. Računarske mreže i prenos podataka. Elektrinski fakultet u Nišu,
Niš, 2005.
[19] M. S TOJ ČEV I B. P ETROVI Ć. Arhitekture i programiranje mikroračunarskih sistema
zasnovanih na familiji procesora 80x86. Elektrinski fakultet u Nišu, Niš, 1999.
[20] N. BALABAN I DR . Principi Informatike. Savremena administracija, Beograd,
1996.
[21] N. M ILENKOVI Ć. Arhitektura i organizacija računara. Elektronski fakultet, Niš,
2004.
[22] R. C ONLON AND L. J ONSON. The Land-Grant Training Alliamce
- On Line PowerPoint2000 Lesson, 2004. http://www.lgta.org/
ppt2000.contents.htm.
[23] R. J OVANOVI Ć , Ž. T OSHI Ć I M. S TANKOVI Ć. Informatika za ekonomiste. Ekonom-
ski fakultet, Univerzitet u Nišu, 1999.
[24] R. P ERLMAN. Interconnections - bridges, routers, switches and interworking, sec

You might also like