You are on page 1of 128

ISTVN MATIJEVICS

OSNOVI PROGRAMIRANJA I PROGRAMSKI


JEZICI
--- skripta

VIA TEHNIKA KOLA

SUBOTICA 2001

SADRAJ
0.
1.
2.
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.11.1
2.11.2
2.11.3
2.11.4
2.11.5
2.11.6
2.11.7
2.11.8
2.12
2.13
2.14
2.15
3.
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.9.1
3.9.2
3.9.3
3.9.4
3.9.5
3.9.6

SADRAJ
PROGRAMSKA PODRKA RAUNARSKIH
SISTEMA
OPERATIVNI SISTEMI
UVOD
PREGLED
RAZVOJA
OPERATIVNIH
SISTEMA
PRVA GENERACIJA OPERATIVNIH SISTEMA
DRUGA
GENERACIJA
OPERATIVNIH
SISTEMA
TREA
GENERACIJA
OPERATIVNIH
SISTEMA
ETVRTA
GENERACIJA
OPERATIVNIH
SISTEMA
STRUKTURA OPERATIVNIH SISTEMA
JEZIK OPERATIVNOG SISTEMA
OPERATIVNI SISTEMI MIKRORAUNARA
OPERATIVNI SISTEM - DOS
Rad sa operativnom sistemom DOS
Podizanje sistema
Resetovanje sistema
Logika imana diskova
Organizacija diska
Datoteke
Direktoriji i poddirektoriji (katalozi)
DOS komande
OPERATIVNI SISTEM MS-WINDOWS
WINDOWS NT
APLIKACIONI SOFTVER
UNIX OPERATIVNI SISTEM
POJAM SOFTVERA
UVOD
MAINSKO PROGRAMIRANJE
ASEMBLER
VII PROGRAMSKI JEZICI
OBJEKTNO ORIJENTISANI JEZICI
INSTRUKCIJE RAUNARA
PODELA INSTRUKCIJE
MIKROPROCESOR INTEL 8086
TEHNIKA
PISANJA
PROGRAMA
NA
ASEMBLERU
Izrada grubog dijagrama toka
Plan operativne ili glavne memorije
Izrada detaljnog dijagrama toka
Testiranje dijagrama toka
Zapis unoenje programa u mnemonikom kodu
Izrada dokumentacije
1

1.
4.
8.
2.
8.
9.
9.
10.
10.
11.
12.
13.
13.
14.
16.
17.
17.
18.
18.
20.
21.
26.
27.
28.
29.
60.
60.
61.
62.
62.
63.
64.
65.
66.
72.
73.
73.
73.
73.
74.
74.

3.10
3.11

INTEL 8086 ASEMBLER


PROCESORI INTEL I80286, I80386, I80486,
PENTIUM, PENTIUM II I PENTIUM III
3.12
JEDNOSTAVNI
I8086
ASEMBLERSKI
PROGRAMI
3.12.1
Programski paket DEBUG
3.12.2
Pisanje, asembliranje i izvrenje asemblerskih
programa
3.12.3
Struktura *.exe i *.com izvrnih programa
3.12.4 1. zadatak
3.12.5 2. zadatak
3.12.6 3. zadatak
3.12.7 4. zadatak
3.12.8 5. zadatak
3.12.9 6. zadatak
3.12.10 7. zadatak
4.
VETAKA INTELIGENCIJA I EKSPERTNI
SISTEMI
4.1
RAZVOJ VETAKE INTELIGENCIJE
4.2
POJAM VETAKE INTELIGENCIJE
4.3
PODRUJA
ISTRAIVANJA
VETAKE
INTELIGENCIJE
4.4
PODRUJA
PRIMENE
VETAKE
INTELIGENCIJE
4.5
EKSPERTNI SISTEMI
4.6
KOMPARATIVNA ANALIZA LJUDSKOG I
MAINSKOG ZNANJA
4.7
TIPOVI I PODRUJA PRIMENE EKSPERTNIH
SISTEMA
4.8
ARHITEKTURA EKSPERTNIH SISTEMA
4.9
SREDSTVA I JEZICI EKSPERTNIH SISTEMA
4.10
STICANJE
ZNANJA
ZA
EKSPERTNE
SISTEME
4.11
PREDSTAVLJANJA
ZNANJA
I
ZAKLJUIVANJA
5.
DEKLARATIVNI JEZIK PROLOG
6.
LITERATURA

75.
75.
76.
77.
80.
82.
82.
84.
85.
86.
88.
91.
92.
97.
97.
99.
100.
101.
101.
102.
103.
105.
106.
107.
108.
115.
116.

PROGRAMSKA PODRKA RAUNARSKIH SISTEMA


Raunarski sistem predstavlja jedinstvenu celinu
hardvera (fizike arhitekture) i softvera
(programske podrke) koja obezbeuju konaan
broj usluga korisnicima.

Pod programskom podrkom raunarskih sistema


podrazumeva se skup programa raunarskog
sistema koji omoguavaju njegovo efikasno
korienje od strane korisnika.

Hardver (tvrdotvorina): Fiziki


deo raunarskog sistema koji
obuhvata
elektrine/elektronske
komponente (npr. ureaje i kola),
elektromehanike komponente (npr.
diskovni pogon, tampa itd.),
optoelektrine
komponente
i
mehanike
komponente
(npr.
kuita).
Softver (mekotvorina): Generiki
termin
za
one
komponente
raunarsog sistema koje nisu fizike.
Najee se odnosi na programe
koje izvrava raunarski sistem, za
razliku od hardvera tog raunarskog
sistema, i ukljuuje i simbolike i
izvrive oblike takvih programa,
Razlika se moe povui izmeu
sistemskog
softvera,
koji
je
esencijalni pratilac hardvera i
obezbeuje
efikasnost
itavog
raunarskog
sistema
(najee
isporuuje
proizvoa)
i
aplikacionih programa specifinih
za odreenu ulogu.

Sa stanovita razvoja korisnici raunarskog sistema se pojavljuju kao:


korisnici koji razvijaju hardver raunara i
korisnici koji kao osnovni sistem koriste hardver, su projektanti
programske podrke namenjene za upravljanje funkcionalnim
jedinicama raunarskog sistema i informacionom osnovom programske
podrke.
Hardver ima tri nivoa strukture (arhitekture)
raunarskog sistema (slika 1.).
Prvi i drugi nivo fizike arhitekture se projektuje
korienjem Boole-ove algebre, teorije automata i
mikroprogramskih automata. Trei nivo se
projektuje koristei mikroprogramski jezik (jezik
za definisanje razmene informacija izmeu
registara), radi definisanja mainske instrukcije,
kao skupa mikroinstrukcija.

Bulovska algebra: Algebra naroito


vana u raunarstvu. Formalno
uzev, to je komplementarna,
distributivna mrea. U bulovskoj
algebri postoji skup elemenata B
koji se sastoji samo iz 0 i 1. Nadalje,
postoje dve dijadske operacije koje
zovemo I i ILI, postoji i monadna
operacija, komplementiranje.

Slika 1.: Nivoi u projektovanju fizike arhitekture raunarskog sistema


Projektanti, koji koriste skup primitivnih operacija
(mainskih instrukcija) i odreene tipove i
strukture podataka radi definisanja programa koji
upravljaju resursima raunarskog sistema
(operativna memorija, procesor, ulazno-izlazni
podsistem i informacije u obliku programa i
skupova podataka). U ovoj interpretaciji nad
fizikom arhitekturom treeg nivoa formira se
novi sloj (operativni sistem), a komunikacija sa
njim se definie preko skupa programa, kao
primitivnih operacija i precizno definisanih
struktura odgovarajuih podataka. Ovaj tip
korisnika
definie
programera
sistema
(projektanta operativnog sistema).

Mainska instrukcija: Naredba


centralnoj jedinici raunara, kojom
se izvrava neka aritmetika, logika
ili kontrolna operacija. Mainske
instrukcije su predstavljene u
binarnom obliku, tj. u obliku koji
centralna jedinica moe odmah da
obradi.
Operativni sistem (OS): Skup
programskih podataka koji zajedno
kontroliu sistemske resurse i
procese koji te resurse koriste u
okviru jednog raunarskog sistema.

Ukoliko se nad nivoom operativnog sistema definiu programi za komunikaciju


korisnika sa raunarskim sistemom preko prevodioca sa programskog jezika
(asemblera i viih programskih jezika, znai simbolikih programskih jezika) onda se
radi jo o dve kategorije korisnika.
U prvoj grupi korisnici koriste programe rutine operativnog sistema i njegove
strukture podataka radi projektovanja pomonih programa preko kojih korisnik,
koristei programski jezik, komunicira sa raunarskim sistemom. Ovi programeri su
projektanti podsistema.
U drugoj grupi su programeri raunarskog sistema. Oni koriste programski jezik radi
reavanja na raunarskom sistemu konkretnih programa.
Operativni sistem je deo programske podrke koji obuhvata vie programa i
odgovarajue memorijske ureaje za smetanje informacija.
Programska podrka raunarskog sistema je na slici 2.

Slika 2.: Hijerarhijski nivoi programske podrke raunarskog sistema


Na nivoima su dati samo primeri programa, razliiti raunari mogu imati manje ili vie
od takvih programa.
Nivoi su:
1. najnii nivo, tu su programi koji upravljaju resursima raunarskog
sistema, kod IBM PC raunara ovaj nivo je BIOS (Basic Input Output
System),
2. na ovom nivou su programi za punjenje programa sa periferskih
jedinica u operativnu memoriju, teksteditori i trace ili debugger
programi za otklanjanje graaka,
3. na ovom nivou su programi za prevoenje izvornog koda (programa) u
mainski kod, asembler i kompajleri viih programskih jezika (Pascal,
C itd.),
4. na ovom nivou je skup aplikacionih programa, preko kojih korisnik
komunicira sa raunarom.
Na treem nivou razlikujemo:
prevoenje izvornog koda u
mainski jezik pomou
prevodilaca, gde su faze
prevoenja i izvrenja
vremenski nezavisne i

Prevodilac (compiler, translator):


Svaki program koji prevodi neki
drugi program iz jednog oblika u
drugi. Prevodilac je program koji
prevodi izvorni program, napisan na
nekom viem programskom jeziku,
u mainski program.

interpretaciju
izvornog
koda,
gde
su
faze
prevoenja i izvrenja
vremenski zavisne.

Interpretator: Specijalna vrsta


prevodioca programskih jezika, koji
svaku naredbu jezika zasebno
prevodi i odmah izvrava.

OPERATIVNI SISTEMI
UVOD
Prvi raunari nisu imali operativne sisteme, meutim, danas se i kod najjednostavnijih
mikroraunarskih sistema moe uoiti neka vrsta operativnog sistema.
Operativni sistem predstavlja skup modula (programa) koji obezbeuju jednostavnije
korienje hardvera i softvera raunarskog sistema. Uloga operativnog sistema je da
hardverske mogunosti raunarskog sistema uini dostupnim oveku i omogui mu
to udobniji rad, obezbeujui, pri tom, to efikasnije korienje svih resursa
raunarskog sistema.
Osnovne funkcije operativnih sistema su:
komunikacija izmeu korisnika i raunarskog sistema,
raspodela resursa raunarskog sistema meu korisnicima,
planiranje pristupa zajednikim skupovima podataka za sve korisnike,
planiranje pristupa korisnika zajednikim resursima itd...
Osnovni resursi kojima upravlja operativni sistem su:
procesor,
memorije,
ulazno-izlazni ureaji i
podaci (informacije).
U toku rada operativni sistem opsluuje:
sistem-programere,
programere,
operatore,
razne vrste korisnika,
programe i
hardverske ureaje.
Ako raunarski sistem raspolae monim hardverom, operativni sistem mora da
omoguuje iskorienje mogunosti tog harvera. Operativni sistem predstavlja deo
softvera koji je najblii hardveru. Posredstvom operativnog sistema svi ostali
programi pristupaju hardveru raunara.
Raunar u razliitim periodima moe raditi pod kontrolom razliitih operativnih
sistema, a, jedan operativni sistem je mogue koristiti na razliitim raunarima (uz
prilagoavanje konkretnom tipu raunara). Do sada je napravljen veliki broj
operativnih sistema za razliite tipove raunara. Napraviti dobar operativni sistem nije
lak posao, pa su i danas aktuelni operativni sistemi ije su osnove postavljene jo pre
dvadesetak godina.
PREGLED RAZVOJA OPERATIVNIH SISTEMA
Slino kao i u razvoju raunarskih sistema, moemo razlikovati nekoliko generacija u
razvoju operativnih sistema. Razvoj operativnih sistema usko je povezan sa

napretkom tehnologije u raunarstvu. Prvi raunari praktino su bili bez operativnih


sistema. Programiralo se na mainski-orijentisanim jezicima i sve ono to danas rade
operativni sistemi, programer je morao sam da isprogramira.
PRVA GENERACIJA OPERATIVNIH SISTEMA
Prvi operativni sistem napravljen za raunar IBM-701 poetkom pedesetih godina.
Operativnih sistemi prve generacije bili su na veim raunarima, dok su manji
raunari i dalje bili bez operativnih sistema. Razvoj prve generacije je potrajao do
kraja pedesetih godina. Na raunarima se primenjivala paketna obrada podataka. To je
postupak u kojem se programi izvravaju jedan za drugim i dok se izvrava jedan
program, ceo raunar je njemu na raspolaganju. Programi i podaci su unoeni u
raunar preko buenih kartica, koje su slagane u pakete. Dosta je vremena gubljeno
prilikom prelaska sa jednog programa na drugi. Prvi operativni sistemi pravljeni su sa
ciljem da se skrati vreme prelaska sa jednog programa na drugi, podravajui pri tom
paketnu obradu podataka. Pored redne obrade podataka, za operativne sisteme prve
generacije karakteristino je da su posedovali standardne rutine za kontrolu ulazaizlaza podataka i jednostavan jezik za opis zadatka korisnika.
DRUGA GENERACIJA OPERATIVNIH SISTEMA
Druga generacija operativnih sistema pojavljuje se ezdesetih godina. Kod ovih
operativnih sistema je prvi put korien multiprogramski reima rada. U ovom reimu
nekoliko zadataka se istovremeno nalazi u osnovnoj memoriji raunara, a centralni
procesor deo svog vremena posveuje svakom zadatku.
U istim godinama su se pojavili
vieprocesorski sistemi kao i operativni
sistemi koji su podravali takav rad.

Vieprocesorski
sistem:
Raunarski sistem, sastavljen iz dve
ili vie centralnih jedinica, koje
koriste
zajedniku
operativnu
memoriju. Vieprocesorski sistemi
se koriste za paralelnu obradu
podataka.

Znatan broj novih reenja kod operativnih sistema druge generacije prisutan je i kod
savremenih operativnih sistema:
Rad u razdeljenom vremenu i mogunost korienja terminala za tzv.
dijalog sa raunarom. Svaki korisnik je u direktnom kontaktu sa
raunarom preko svog terminala. Zbog velike brzine rada, centralni
procesor deli svoje vreme i svakom korisniku posveuje jedan
vremenski interval. Poto je brzina rada oveka neuporedivo manja od
brzine centralnog procesora, svi korisnici imaju utisak da istovremeno
koriste centralni procesor.
Podrka programima koji ne zavise od imena konkretnih periferiskih
ureaja, tj. postizanje sve veih nezavisnosti programa od konkretnog
hardvera . Od nastanka prvih raunara ovek je nastojao da
programiranje uini to manje zavisnim od konkretnog raunara.
Znaajan doprinos u ovoj tenji predstavljaju nova reenja kod
operativnih sistema druge generacije.

Podrka rada u realmom vremenu . Za operativni sistem se kae da radi


u realnom vremenu ako ima mogunosti brzog odgovora i kontrole
spoljanjih dogaaja. Naime, ako se pod kontrolom raunara odvija
nekakav tehnoloki proces.npr. rad nuklearne centrale, korienje
seizmikih aparata, let satelita itd.kae se da raunar radi u realnom
vremenu. Da bi raunar mogao da radi u realnom vremenu, potreban je
dovoljno brz hardver, ali i operativni sistem.
Korienje virtualnih memorija. Korienje ovih memorija zapoelo je
prilikom razvoja operativnih sistema, a steena znanja su preneta na
mikroprocesore.
Sve vea podrka jezicima vieg nivoa. Pojedini operativni sistemi iz
ove generacije omoguavaju testiranje na jeziku vieg nivoa. Osim
toga, sada se jezici vieg nivoa koriste i za pisanje samih operativnih
sistema.

TREA GENERACIJA OPERATIVNIH SISTEMA


Trea generacija operativnih sistema je realizovana 1964. godine na raunaru
IBM/360. Raunar IBM/360 tj. raunar opte namene, kao i operativni sistem OS/360,
bili su koncipirani tako da zadovoljavaju sve potrebe korisnika. Ovi operativni sistemi
ukljuuju sve reime rada:
rednu obradu (paketna obrada podataka),
multiprogramski rad,
rad u razdeljenom vremenu i
rad u realnom vremenu.
Jezik operativnog sistema tree generacije je teak za uenje, pojedini operativni
sistemi zauzimali su mnogo memorijskog prostora i sporo su reagovali, to je
usporavalo rad celog raunarskog sistema.
60-tih godina su se pojavili prve verzije Unix operativnog sistema koji e kasnije
dosta uticati na razvoj drugih operativnih sistema.
ETVRTA GENERACIJA OPERATIVNIH SISTEMA
Od poetka sredine sedamdesetih godina su razvijani operativni sistemi 4-te
generacije. Danas korieni operativni sistemi spadaju u istu generaciju operativnih
sistema.
Dananji period karakterie sve vea povezanost raunara i masovna upotreba
personalnih raunara (mree, Internet). Za raunare povezane u mreu potrebni su
odgovarajui mrei operativni sistemi. Kod takvih operativnih sistema veoma vanu
ulogu igra komunikacija (razmena informacija) izmeu vie raunara, a i zatita
podataka od neovlaenog korisnika je bitna.
U ovom periodu raste broj korisnika raunara, zbog te injenice operativni sistemi
moraju brzo reagovati. Razvijeni su orijentisani operativni sistemi. U cilju olakanja
korienja raunara mnogi operativni sistemi podravaju rad sa tzv. "virtualnim
mainama". Korisnik ne mora da poznaje karakteristike konkretnog raunara ili mree
na kojima e njegov problem biti reavan, on pretpostavlja da raunar ima odreene
10

funkcionalne mogunosti i koristi te mogunosti. Od operativnog sistema zavisi koji


hardverski deo e zaduiti da reava dati zadatak. Na taj nain korisnik bira mainu
koja mu odgovara, a operativni sistem ima zadatak da od zamiljene maine stvori
realnu. "Virtualne maine" su po svojoj koncepciji najee veoma bliske realnim.
Operativni sistemi personalnih raunara u principu su jednostavniji, mada se neki od
njih, po svojim mogunostima, pribliavaju operativnim sistemima veih raunara, na
primer IBM PC raunar.
STRUKTURA OPERATIVNIH SISTEMA
Razni raunari zahtevaju razliito koncipirani operativni sistemi, kod jednih je vie
naglaena jedna funkcij, kod drugih druga itd. Zajednika osobina im je da svi imaju
modularnu strukturu. U predhodnom delu je ve navedeno da se kod svakog
operativnog sistema mogu prepoznati neke osnovne funkcije. Ove funkcije su kod
velikih sistema veoma sloene i svaka od njih se moe razbiti na niz podfunkcija. Kod
pojedinih operativnih sistema neke od ovih podfunkcija toliko su izraene da po
znaaju prevazilaze i osnovne funkcije.
Moderni operativni sistemi napravljeni su
tako da predstavljaju skup modula. Modul
je napravljen kao posebna programska
celina koja realizuje jednu funkciju
(podfunkciju)
operativnog
sistema.
Pojedini moduli su nezavisni i mogu
funkcionisati nezavisno jedan od drugog,
ali i pozivati jedan drugog, tj. ukazivati na
potrebene podatke za poetak rada sledeeg
modula. Funkcije modula se nadovezuju
jedna na drugu, a obino postoji modul koji
koordinira akcije svih ostalih.

Modularno
programiranje:
Tehnika programiranja, kod koje se
jedan program deli u vie logiki
nezavisnih celina (modula). Svaki
modul se razvija i prevodi nezavisno
od drugih. Kod veih programskih
paketa, vie programera obino
razvijaju module, koji ine jedan
sistem. Modularno programiranje
predstavlja jednu od tehnika
strukturnog programiranja.

Broj modula operativnog sistema moe biti vrlo veliki i ako bi se svi u isto vreme
nalazili u unutranjoj memoriji, zauzimali bi mnogo memorijskog prostora. Osim
toga, mnogi od njih su veoma retko korieni, dok su pojedini potrebni stalno. Moduli
koji se esto upotrebljavaju, obino su sve vreme prisutni u operativnoj memoriji i oni
ine rezidentni deo operativnog sistema. Drugi deo ine moduli koji se pamte na
nekoj spoljanjoj memoriji (obino na tvrdom disku) i oni ine tzv. tranzitni deo
operativnog sistema. Po potrebi moduli tranzitnog dela mogu da se pozivaju u
operativnu memoriju. Neki od modula su napravljeni tako da se mogu vie puta
pozivati sa spoljanje memorije, a da se pri jednom od poziva ne moraju do kraja
izvriti. Ovo se postie razdvajanjem modula na dva dela: fiksnog i promenjivog.
Fiksni deo je u operativnoj memoriji, a promenjivi na spoljanjoj i moe da bude
pozvan kada je potrebno.
Prilikom startovanja raunara (ukljuivanja u mreu napajanja), potrebno je rezidentni
deo operativnog sisteama upisati u operativnu memoriju sa neke spoljanje. Za ove
svrhe slui poseban modul, zapamen u ROM-u raunara, koji se naziva punilac
operativnog sistema. Kod nekih raunara u ROM-u se pamti ceo jedan deo

11

operativnog sistema, koji ima niz elementarnih funkcija. Ove funkcije se koriste
prilikom izgradnje ostalih modula operativnog sistema.
Kod operativnih sistema mogu se razlikovati nekoliko slojeva. U centru je jezgro
operativnog sistema, koje ini skup modula za realizaciju elementarnih funkcija.
Zatim sledi sledei sloj koji ine moduli sa funkcijama koje predstavljaju nadgradnju
na elementarne funkcije (moduli za upravljanje procesorima i memorijom). Iza ovih
slede novi slojevi (sloj modula za upravljanje datotekama) itd. Zahvaljujui
modularnoj strukturi, mogue je koncipirati savremene veoma mone operativne
sisteme na ovaj nain.
JEZIK OPERATIVNOG SISTEMA
Komunikaciju sa operativnim sistemom korisnik uspostavlja preko jezika operativnog
sistema. Jezik operativnog sistema je izgraen nad:
skupom komandi,
skupom propisanih imena i
skupom raznih poruka.
Veina komandi ukljuuje odreen broj potkomandi i na taj nain se razgranava jezik.
Po pravilu, jezik operativnog sistema je interpretatorskog tipa. To znai, komande se
mogu izvravati odmah po izdavanju.
Kod veine operativnih sistema prve, druge, pa i tree generacije, nije posveena
posebna panja jeziku operativnog sistema. Kod ovih operativnih sistema mahom su
se koristili specijalni simboli (kose crte, zvezdice i dr.) i skraenice engleskih rei. Za
ovakav jezik nemoe se rei da je posebno udoban za korisnika. Treba imati u vidu
da se ovi operativni sistemi upotrebljavaju u periodu kada interaktivni rad nije bio jo
rasprostranjen i ovakav jezik je prilagoen rednoj (paketnoj) obradi podataka.
Jezici savremenih operativnih sistema su mnogo bogatiji. Pojedini operativni sistemi
ukljuuju i po nekoliko jezika, zavisno od vrste korisnika. Na primer, poseban jezik je
rezervisan za sistem-programere, a poseban za programere-korisnike. Komande ovih
jezika su obino engleske rei (ili njihove skraenice). Pojedini operativni sistemi
omoguavaju lako prevoenje komandi sa engleskog na neki drugi jezik. Dovoljno je
svakoj engleskoj rei odrediti odgovarajuu re drugog jezika. Poto se komande
izdaju ispisivanjem nekakvog teksta, prirodno je da postoji i neki nain za ureivanje
tog teksta (pojedine komande sa ukljuenim potkomandama mogu da budu dugake).
Naime, ukoliko korisnik pogrei u kucanju jednog slova, nije normalno da kuca celu
komandu ponovo, ve je razumno da postoji jednostavan nain za korekciju greke.
To znai da operativni sistem treba da ukljuuje u sebe i neku vrstu editora. U
ovakvim sluajevima editovanje se obino realizuje pomou tzv.funkcionalnih tastera.
Neki jezici operativnog sistema su zasnovani na menijima, tj. skup osnovnih komandi
uvek je popisan na ekranu i korisnik bira komandu birajui njeno obeleje ili neto
slino. Normalno je da postoji komanda koja slui za pomo, tj. pomou koje se moe
videti spisak komandi, koje su na raspolaganju korisniku ili pojedinosti vezane za
neku komandu.

12

Kod veine savremenih operativnih sistema korisnik moe da izdaje komande


operativnom sistemu neposredno ili posredno. Posredno izdavanje komandi obino se
vri zapisivanjem niza komandi operativnog sistema u posebnu datoteku. Pozivanjem
te datoteke (ili na neki drugi nain), aktivira se posredno izvravanje komandi.
Neposredno izdavanje komandi operativnom sistemu vri se preko terminala.
Da bi korisnik mogao neposredno da izda komandu operativnom sistemu, treba da zna
da li mu je operativni sistem na raspolaganju. Stoga, svaki operativni sistem ima
nekakav znak preko kojeg saoptava korisniku da je spreman za prihvatanje komandi
(PROMPT).
OPERATIVNI SISTEMI MIKRORAUNARA
Operativni sistemi mikroraunara su u principu jednostavni od operativnih sistema
veih raunara, zato, to su zadaci mikroraunara esto specijalizovani i vezani za
jednostavne zadatke, kao na primer sistemi za prikupljanje podataka, regulatori, PLC
ureaji itd. Ponekad su to samo jednokorisniki orijentisani operativni sistemi a
ponekad ovi operativni sistem podravaju viekorisniki nain rada.
Pre nekoliko godina operativni sistem osmobitnih mikroraunara je bio CP/M
(Control Program for Microcomputers), danas je to kod IBM PC raunara MS (PS)
DOS (Microsoft).
Pored DOS operativnog sistema danas na IBM PC personalnih raunara koristimo i
Windows operativne sisteme, gde glavnu ulogu kod komunikacije igraju mi i ikone.
Na slici 3. je dat pregled operativnih sistema IBM PC personalnih raunara.

Slika 3: Pregled operativnih sistema IBM PC raunara


OPERATIVNI SISTEM -DOS
Firma Digital Research je izradila operativni sistem CP/M (Control Program for
Minicomputers) koji je korien za osam-bitne procesore (Intel 8080 i Zilog Z80). Za
16-bitne procesore (Intel 8086) napisan je operativni sistem 86-DOS koji je izraen na
bazi operativnog sistema CP/M. Veoma sline su:

13

komandne strukture,
organizacija diska,
imenovanje datoteka,
imenovanje diskova i
sintakse komandi.

Operativni sistem DOS prezentovan je javno u septembru 1980. godine.


Kompjuterske kue IMB i Microsoft su zajedno izradili operativni sistem MS-DOS
1.0 (Microsoft Disk Operating System) koji je prvi put proradio 1981. godine na IBM
PC personalnom raunaru. U ovom operativnom sistemu komandni procesor je
izdvojen i smeten u poseban program sa nazivom COMMAND.COM. Sistem je
radio sa jednostranim disketama od 160 KB.
Sledea verzija DOS-a je MS DOS 1.1. i koristi dvostruku disketu od 320 kB.
Hard disk od 10 MB omoguuje realizaciju novog PC-raunara, koji je IBM-XT. Kod
ovog raunara trebalo je organizovati na drugi nain tvrdi disk. Definisan je katalog,
koji je hijerarhijski organizovan. Operativni sistem je DOS 2.0, koji je imao
mogunost redirekcije i novi sistem upravljanja datotekama (kao kod UNIX-a).
Omoguena je jednostavna podrka raznim ulazno izlaznim ureajima preko fajla
CONFIG:SYS. Diskete su od 360 kB.
Tendencija je kod razvoja PC raunara poveanje kapaciteta, memorije i diskova i
brzine procesora. Na pojaanim verzijama radi OS operativni sistem 2.1 i 2.11.
Sledea generacija IBM PC raunara je PC AT raunar (Advanced Tehnology) koji
ima novi procesor, Intel 80286. Na ovim verzijama pojavi se potpuno nov operativni
sistem OS/ 2, ali se radi i na usavravanju DOS-a i javlja se nova verzija MS DOS
3.0, koja je obezbeivala podrku sistemu sa diskom od 20 MB i disketama od 1.2
MB. Rad u mrei je realizovan sa verzijom MS DOS 3.1, a verzija MS DOS 3.2
omoguava rad sa disketama od 3.50" i kapacitetom od 720 KB. Januara 1986. godine
je izraen DOS 3.25.
DOS 3.30 pojavljuje se aprila 1987. godine, gde je poveana brzina i komfornost u
radu. Koriene su diskete od 3.50" kapaciteta 1.44 MB i diskovi vei od 32 MB.
Uvedeno je stranienje memorije.
Rapidni razvoj hardverske tehnologije zahteva i brz razvoj operativnih sistema.
Realizovani su novi, prijateljski orijentisani (user friendly) grafiki interfejsi, koji
korisniku olakavaju komunikaciju sa raunarom. Svaka nova verzija dovodi do
poveanja performansi sistema i iskorienja novih hardverskih mogunosti.
Stabilan operativni sistem je MS DOS 6.20.
RAD SA OPERATIVNOM SISTEMOM MS DOS
Operativni sistem DOS se koristi za pokretanje sistema, upravljanje hardverskim
resursima kojima maina raspolae, rad sa njegovim vlastitim programima i

14

podacima, manipulaciju datotekama i podrku u izvravanju aplikacijskim


programima koje korisnik instalira na svoju mainu.
Obino korisnik ne poznaje ta operativni sistem radi u pozadini i na koji nain
pokree sistem, rasporeuje memoriju, kako vodi organizaciju spoljne memorije, kako
upravlja perifernim jedinicama, niti ijednu drugu radnju koju OS izvrava. Korisnik
poziva komande koje nudi operativni sistem i druge aplikacije instalirane na maini.
Druga je situacija, ako korisnik pie programe koji trebaju izvriti odreene zadatke,
on u izvesnoj meri mora poznavati strukturu i nain rada operativnog sistema kako bi
na najoptimalniji nain iskoristio sve resurse raunara.
Neke komande mogu dovesti do gubitka svih prethodno snimljhenih podataka na
diskovima. U poetku je preporuljivo striktno se drati neke strune literature, i ne
pokuavati odmah vlastite varijacije isprobati, sve dok se ne naui sutina operativnog
sistema i shvate mogunosti svake komande pojedinano.
Na neke operacije operativnog sistema korisnik ne moe uticati. Nakon ukljuivanja
raunara doi e do podizanja sistema, a da korisnik nita ne doprinese toj radnji. Sa
menjanjem sadraja dva fajla, CONFIG.SYS i AUTOEXEC.BAT moemo uticati na
neke operacije. DOS proverava sadraj ta dva fajla i iz njih uitava niz naredbi koje
definiu okruenje u kojem e maina raditi. Veina ovih parametara definisanja
sistema moe se i kasnije, u toku rada predefinisati na nove vrednosti.
Resursi na kojima upravlja operativni sistem (hardver i softver) korisnik pristupa
preko komandi (naredbi). Naredbe su skup karaktera veliine od jednog do osam
karaktera (istih onih koji se koriste za imenovanje datoteka), nakon ega obino ne
sledi nita ili jedan prazan karakter i skup parametara koji definiu nain na koji se
naredba izvriti, odnosno nad kojim medijem. Nakon zavretka unoenja komande i
pridruenih parametara obavezno se mora pritisnuti taster ENTER, da bi OS shvatio
da ste zavrili sa unosom i da elite da se komanda izvri.
Komande mogu biti:
interne i
eksterne.
Interne komande su permanentno prisutne u operativnoj memoriji raunara od
momenta podizanja sistema do njegovog gaenja.
Eksterne komande se uitavaju sa diska i u memoriji su prisutne samo dok su aktivni
programi koje one izvravaju.
Druga podela komandi operativnog sistema je:
komande za rad sa katalozima,
komande za rad sa datotekama,
komande za predstavljanje parametara sistema i
pomone komande.

15

PODIZANJE SISTEMA
DOS operativni sistem se nalazi u dve datoteke IO.SYS i MSDOS.SYS (ili
IBMIO.SYS i IBMDOS.SYS). Ove datoteke se moraju nalaziti na hard-disku ili
disketi, a njihovi atributi su "HSR". (H-hidden S-system R-read only, skriven,
sistemski i samo itljiv). Po ukljuenju raunara deava se sledee :
Inicijalizuje se BIOS ROM (Basic Input Output System), pri emu se
javlja poruka o verziji BIOS-a i vri testiranje memorije (za to vreme
hard disk dostie nominalnu brzinu okretanja).
BIOS inicijalizuje kontroler disketne jedinice i testira da li se disketa
nalazi unutar drajva (ovo samo u sluaju da je korisnik, ili dizajner
sistema odluio da se to ispitivanje vri). Ako disketa postoji BIOS ita
takozvani but-sektor (boot, nulti sektor) da bi ustanovio da li disketa
sadri DOS. Ako nema DOS-a na disketi javlja to korisniku porukom
o INVALID BOOT DISKETTE
(pogrena sistematska
disketa)
o Insert any key when ready
Pritisni bilo koji taster.
Ova poruka e se javljati sve dok ne ubacite pravilnu disketu
(formatiranu sa operativnim sistemom na istoj) ili dok ne izvadite
disketu iz drajva A:,
Ako BIOS "vidi" da disk jedinica nije spremna, on ispituje da li je
DOS smeten na hard disk (to je kod najveeg broja raunara sluaj).
Ako nema DOS-a ni na hard disku onda sistem "zaglavi",
Ako BIOS pronae DOS (bilo na disketi ili na disku ) obavljaju se
sledee operacije:
o 1)BIOS uitava IO.SYS i predaje mu kontrolu
o 2)IO.SYS sadri dva modula:
! prvi se koristi za pokretanje programa za tastaturu i
ekran, serijski kanal i tampa, kao i za upravljanje
jedinicom diska,
! drugi modul (SYSINIT) odreuje veliinu memorije,
premeta samog sebe na vrh raspoloive memorije
(RAM) i zatim uitava datoteku MSDOS.SYS (srce
operativnog sistema).
o 3)MSDOS alje pozdravnu poruku sa informacijama o verziji
DOS-a, inicijalizuje postojee pokretake programe, kreira i
popunjava interne tabele i radne bafere, kao i prekidne vektore,
a zatim vraa kontrolu modulu SYSINIT.
o 4)Vri se analiza datoteke CONFING.SYS (ako ista postoji ) i
podeavanje pojedinih parametara sistema na osnovu
informacije sadranih u toj datoteci.
o 5)DOS je spreman za rad, sistemskim pozivom selektira
interpreter DOS-a, COMMAND.COM, koji izvrava program
AUTOEXEC.BAT (ako isti postoji) i alje prompt (obino
skup karaktera poput"C:\").
Program COMMAND.COM se mora nalaziti na svakoj sistemskoj
disketi. I pored toga, on ne spada u operativni sistem. Radi se o
izvrnom (.COM) programu koji je slian svakom drugom izvrnom
programu, ali je on zaduen za vrlo bitne operacije. Komandni
interpreter je podeljen u tri modula:
16

o Prvi deo je stalno u memoriji i obrauje informacije da li je


traen prekid, i da li se javlja kritina greka i, ujedno,
obezbeuje izlazak iz drugih programa i povratak na DOS-ov
prompt.
o Drugi modul komandnog interpretera se pojavljuje samo pri
prvom upisivanju i odgovoran je za obradu datoteke
AUTOEXEC.BAT. Nakon toga nije vie potreban, pa se
odbacuje iz memorije.
o Trei modul se smeta na sam vrh memorije i u sebi sadri
obrade internih DOS komandi, startovanje programa i obradu
datoteka tipa *.BAT. Sa pozicije na kojoj se nalazi lako ga
moe prebrisati program kojeg je on startovao. Prvi modul se
stara da se trei modul ponovo uita sa diska ako se
prebrisavanje desilo.
RESETOVANJE SISTEMA
Startovanjem neispravnih ili neispravno instaliranih programa raunar se blokira i ne
izvrava nikakvu DOS operaciju. Ova situacija se raspoznaje tako to ekate da vam
raunar vrati kontrolu, a ne deava se nita. U takvoj situaciji treba pokuati prekinuti
invalid program, istovremenim pritiskanjem tastera CTRL+C ili CTRL+BREAK. U
veini sluajeva raunar e prekinuti program i ispisati standardni promt (vratiti
kontrolu). Ukoliko to ne uspe, mora se resetovati raunar. Sa resetovanjem se
unitavaju svi podaci smeteni u operativnojoj (RAM) memoriji (programi i podaci na
hard-disku i ostalim eksternim memorijama ostaju bezbedni). Postoje dve vrste
resetovanja:
softversko i
hardversko.
Kod softverskog resetovanja treba istovremeno pritisnuti tri tastera Ctrl+Alt+Del.
Ovom prilikom disk ne gubi napajanje pa nema opasnosti da doe do havarije. Ako
ovo ne pomogne, sistem se mora hardverski resetovati.
IBM PC raunari imaju ugraen taster "RESET" na svom kuitu, ijim se pritiskom
vri hardversko resetovanje. Dolazi do ponovnog podizanja raunarskog sistema isto
tako kao kada se raunar ukljuuje. Ako ni ovo ne pomogne, onda raunar treba
iskljuiti i saekati 30-tak sekundi do ponovnog ukljuenja. Ova pauza je potrebna da
bi se hard-disk potpuno umirio. Ovim se izbegavaju havarije sa diskovima i gubitak
svih podataka koji se na njima nalaze. Resetovanje treba izbegavati jer je ova
operacija suvie radikalna i moe dovesti do nezatvorenih ili pogreno zatvorenih
datoteka i gubitaka jednog dela podataka.
LOGIKA IMENA DISKOVA
Jedinicama spoljne memorije (diskovi, disketne jedinice, CD-ROM i td.) operativni
sistem dodeljuje imena, zavisno kako su pripojeni na karticu drajva. Rezervisana
imena za diskete su A: i B: (dvotaka je sastavni deo imena). Logika imena C:,D:,E:
itd. su rezervisana za hard-diskove i njihove particije. Pri ukljuenju raunara tekua
disk jedinica je ili A: ili C: jer se samo sa ove dve moe podii operativni sistem.

17

Prelazak sa jedne logike jedinice na drugu vri se ukucavanjem imena te disk


jedinice.
PERIFERIJE
IBM PC raunar opremljen je tastaturom, monitorom i spoljanjom memorijom koja
se obino svodi na disk, CD i disketne jedinice. Na IBM PC raunar se moe
prikljuiti i tampa. Za tampa, bez obzira na nain pripajanja na raunar,
rezervisano je ime PRN. CON- predstavlja konzolu (i monitor i tastaturu), NUL- je
fiktivni ureaj koji fiziki ne postoji. Kad se raunar obraa ureaju NUL-sistem
"glumi" da stvarno prenosi podatke, mada e isti biti izgubljeni. Ovo je pogodno za
testiranje programa. Sve pomenute rei (A:, B:, C:, PRN:,CON: i neke druge poput
COM1:,COM2:,LPT1:,LPT2:...) su rezervisane i ne smeju se koristiti kao imena
korisnikovih datoteka ili kataloga. Razlog je u tome to se ime periferije moe navesti
umesto imena datoteke.
ORGANIZACIJA DISKA
Da bi operativni sistem znao gde se nalaze pojedine vrste informacija, on disk
organizuje na nain koji mu omoguava lak pristup svakoj lokaciji na disku i praenje
gde se koji podatak nalazi i koliko slobodnog prostora na disku preostaje za budue
podatke koje treba smestiti. Povrina hard-diska (diskete) se deli na sektore i tragove.
Od prvog traga se smeta deo operativnog sistema (programa) neophodnih za
podizanje sistema. Tako je kod formatiziranja diska neophodno navesti opciju kojom
e program za formatiranje izvriti rezervaciju prostora za smetaj sistemskih datoteka
IO.SYS i MSDOS.SYS.
Hard diskovi se mogu deliti na vie particija razliitog kapaciteta, iji je ukupni zbir
kapaciteta jednak kapacitetu samog diska. Ovo se ini pomou specijalnog programa
FDISK.EXE koji se dobija u paketu sa operativnim sistemom DOS. Svakoj particiji
dodeljuje se jedno logiko ime. Ako se disk deli na particije, prva particija je
obavezno butabilna (na njoj se nalazi operativni sistem za podizanje i upravljanje
raunarom) i ona ima logiko ime C:.
Operativni sistem koristi dve tabele ( takoer snimljene na disku), registratore u
kojima se vode podaci o rasporedu delova datoteka po povrini diska. Ove tabele se
nazivaju FAT-tabelama (File Allocation Table), od kojih je jedna rezervna tabla i
koristi se u sluaju unitavanja originala. Ove tabele se obavezno auriraju prilikom
svake promene (snimanja ili brisanja, odnosno promene veliine neke datoteke). U
FAT tabeli se vodi spisak kataloga, datoteka, tragova i sektora gde su smeteni
pojedini delovi datoteka.
DATOTEKE
Datoteke slue za smetaj podataka i programa. Datoteka (engl. File) je skup
informacija srodnog sadraja. Datoteka se smeta ili u operativnu memoriju (ponekad
samo neki njeni delovi) ili na disku, disketi, magnetnoj traci i dr. Svaka datoteka (bilo
da je u njoj sadran program ili podaci) ima svoje ime i proirenje (ekstenziju) imena.
U OS DOS imena datoteka se zapisuju po formatu 8.3 (najvie osam karaktera za ime
i maksimalno tri za ekstenziju):

18

IME.EXT
Ime datoteke uglavnom opisuje koja je grupa podataka sadrana u njoj, a ekstenzija
ukazuje na vrstu datoteke. Postoje slubene ekstenzije imena datoteke koje se po
pravilu koriste za oznaavanje najeih tipova datoteka koje DOS prepoznaje.
Najvaniji su:
*.COM i *.EXE fajlovi su izvrni programi, ukucavanjem imena te
datoteke i tipke ENTER dolazi do izvrenja programa,
*.SYS datoteka sadri parametre okruivanja u kojem raunar radi ili
neke drajvere za upravljanje perifernim ureajima prikljuenim na
raunar,
*.TXT i *.DOC su tekstualne (ASCII) datoteke i dokumenti,
*.ASM, *.PAS, *.C...su slubene ekstenzije datoteka koje sadre
izvorne programe od kojih programski prevodioci (kompajleri) prave
izvrne verzije programa.
Nazivi datoteka i ekstenzije se prave od slova, brojki i specijalnih znakova (!, @,
#, $, &, -, +,i -). Naziv moe imati jedan od osam karaktera, a ekstenzija
nijedan, jedan, dva ili tri karaktera. Ekstenzija se od naziva odvaja takom (npr.
PISMO.DOC). Za ekstenziju ne smemo koristiti rezervisana imena COM, EXE, SYS,
BAT i td. za imenovanje datoteka (osim ako iste nisu upravo tog tipa).
Informacije u jednoj datoteci su obino struktuirane. Struktuiranost se ogleda u podeli
na slogove i polja. Skup vie slogova ini entitet. Vie entiteta i njihove meusobne
relacije ine bazu podataka. Datoteke mogu biti i nestruktuirane (npr. pisma, izvetaji
i dr.).
Pre upotrebe bilo koje datoteke, ista se mora uiniti dostupnom. U tom cilju, zavisno
od medija na kome je datoteka smetena, mora se izvriti standardno ispitivanje i
kontrola. Ovo se naziva otvaranje datoteke. Na kraju rada sa datotekom ista se mora
zatvoriti.
Organizacija datoteke predstavlja fiziki raspored podataka jedne datoteke na nekom
nosiocu podataka (mediju). Ona prvenstveno zavisi od vrste nosioca, a moe se
podeliti u tri osnovne grupe:
sekvencijalna,
direktna i
indeksna organizacija.
Sekvencijalna organizacija datoteka moe se strukturno predstaviti sekvencijalnom
linijskom listom u kojoj su elementi slogovi datoteke, a mogue ju je realizovati na
svim vrstama medija. Njena prednost u odnosu na druge oblike organizacije je u
jednostavnosti i ekonominosti zauzimanja memorijskog prostora.
Kod direktne organizacije podataka slogovima se pristupa u memoriji raunara preko
adresa, koje su rezultat transformacije njihovih kljueva. Direktna organizacija
omoguava veliki stepen pristupljivosti i izmenljivosti i moe se realizovati samo na
adresabilnim memorijskim medijima (operativna memorija, disk, CD i disketa).

19

Kod indeksne organizacije podataka slogovima datoteke se pristupa pomou indeksa.


Slogovi mogu biti poreani u proizvoljnom poretku. Indeks se sastoji od dva dela,
kljua i adrese na kojoj se nalazi odgovarajui slog. Koristei ovaj tip organizacije
moe se sortiranjem indeksa po kljuu postii pristup slogovima u eljenom
redosledu, a da pri tom fizika lokacija slogova ostane nepromenjena. Indeksnu
datoteku karakterie proizvoljna rasporeenost slogova fajla na nosiocu podataka.
Pristup datoteci predstavlja nain traenja memoriske lokacije radi prenoenja
podatake iz memorije u procesor i obrnuto. Ovde razlikujemo tri naina pristupa:
sekvencijalni,
direktni i
pristup preko kljua.
Kod sekvencijalnog pristupa se traenje nekog sloga vri poev od prvog u nizu. To
znai da je vreme pristupa nekom slogu utoliko due ukoliko je on blii kraju
datoteke.
Kod direktnog pristupa brzina nalaenja nekog sloga ne zavisi od mesta na kojem je
isti smeten. U idealnom sluaju vreme pristupa svakom slogu je konstantno (ovaj
idealni oblik je mogu samo ako se datoteka nalazi u operativnoj memoriji raunara).
Kod memorije sa poludirektnim pristupom, kao to su disk, CD i disketa, slogu
sortirane sekvencijalne datoteke se pristupa kombinovano, direktno se pristupa
cilindru (tragu), a indirektno (pretraivanjem) se nalazi slog na tom tragu.
Kod pristupa preko kljua, slogu se na osnovu vrednosti njegovog kljua mogue
pristupiti u raznim vidovima pretraivanja. Pri tome je od znaaja da li je datoteka
sortirana ili ne, po odreenom sortnom polju.
DIREKTORIJI I PODDIREKTORIJI (KATALOZI)
Direktoriji (katalozi) se koriste za potpuno imenovanje i razlikovanje datoteka. U
principu, direktoriji predstavljaju skup srodnih datoteka. Veliki kapacitet diska
(diskete) nije preporuljivo (a ponekad je i nemogue) organizovati kao jedan jedini
direktoriji. Prvo, pristup datotekama bio bi sporiji, a oteano bi bilo i pronalaenje
eljene datoteke. Direktoriji se organizuju u hijerarhijsku strukturu tipa stabla (Slika
2.). Poznato nam je ve da ime datoteke sadri dve komponente: naziv i tip. Osim
toga postoji i trea komponenta-oznaka diska i direktorija u koji je datoteka zapisana.
Dve datoteke A:NELE.TXT i C:NELE.TXT nemaju isto ime zato to se nalaze na
razliitim medijima (mada njihov sadraj moe ak biti i isti, a ne mora).
Oznaka kataloga se pie izmeu oznake diska i naziva datoteke. Katalog se obino
definie u odnosu na osnovni ROOT (koreni) katalog. Ako hijerarhiju kataloga
zamislimo kao stablo, ROOT je koren toga stabla. Prilikom ukljuenja raunara i
podizanja sistema ROOT je poetni katalog sa kojeg raunar polazi, a nalazi se na
disku sa koje je sistem podignut (A: ili C:). Osnovni katalog moe da sadri datoteke i
druge kataloge. Ti drugi katalozi takoer mogu da sadre datoteke i kataloge.
Preporuuje se da dubina stabla ne prelazi etiri (radi brzine pretraivanja).
Od kvaliteta kreiranja kataloga zavisi racionalan rad raunara. Osnovni katalog ne
sme biti prepun. Preporuuje se da osnovni katalog sadri samo datoteke potrebne za

20

podizanje sistema i ureenja okruenja (konteksta) maine (npr. IO.SYS,


MSDOS.SYS, COMMAND.COM, CONFIG.SYS i AUTOEXEC.BAT). Drugi nivo
kataloga takoer ne treba biti prenatrpan. U trei nivo treba smestiti vei broj
datoteka, poto etvrti nivo retko postoji.

Slika 4.: Hijerahijska organizacija direktorijuma (stabla)


U DOS-u imamo dva doker-znaka:
? znak zamenjuje bilo koji dozvoljeni karakter, a znak
* zamenjuje grupu karaktera u imenu i ekstenziji fajla.
DOS KOMANDE
OZNAKE
disk - logiko ime diska (disketne jedinice) nad kojom se komanda izvrava.
staza - puni put (puno ime) podkataloga na kojem se nalazi datoteka/datoteke
na koju/koje se komanda odnosi.
datoteka - je ime datoteke nad kojom se komanda izvrava.
/ - predstavlja oznaku opcije iza koje sledi veliko slovo koje poblie odreuje
nain izvrenja komande.
n - prirodan pozitivan broj.
[ ] - par srednjih zagrada znai da se sadraj unutar ovih zagrada moe ( a ne
mora) ukucati. Izostavljanjem ovog sadraja neete naruiti sintaksu komande, ali ete
umanjiti neke mogunosti te komande.
| - specijalni karakter pipe line naznaava da se izborom jedne opcije (grupe
opcija) iskljuuje upotreba ostalih opcija i da kombinacija meusobno iskljuujuih
opcija nije mogua.

21

Prelazak sa tekueg diska i tekueg direktorija na tekui direktoriji diska se vri


unoenjem logikog imena diska/diskete (bez komande) i pritisne se taster ENTER.
KOMANDE ZA RAD SA DISKOVIMA
Komande piemo velikim a iza komande sledi niz raznih parametara (ako ih komanda
ima).
DISKCOPY
DISKCOPY disk 1:disk 2:
Kopira kompletan sadraj izvorne (disk1:) diskete na odredinu (disk 2:) disketu.
FDISK
Konfigurie hard-disk za upotrebu pod MS-DOS-om. Ova komanda deli hard disk na
particije koje mogu da se koriste za razne operativne sisteme ili za smetanje
istorodnih grupa podataka.
FDISK[/STATUS]
/STATUS Prikazuje informaciju o trenutnim participacijama.
FORMAT
Formatira disk ili disketu. Ako su disk ili disketa ve formatirani i na njima se nalaze
podaci i programi, PONOVNO formatiranje UNITAVA ranije podatke. Vraanje
podataka vri se pomou komande UNFORMAT.
SUBST
Pridruuje stazi logiko ime diska. Na ovaj nain se fiktivno kreira novi logiki disk,
koji se u sutini svodi samo na jedan katalog.
SYS
Prenosi operativni sistem na drugi disk ili disketu. Ovom komandom se skrivene
datoteke IO.SYS i MSDOS.SYS kopiraju u BOOT sektor formatiranog diska ili
diskete.
SYS [disk 1:] [staza] disk 2:
[disk 1:] [staza] Odreuje lokaciju sistemskih datoteka.
Disk 2:
Odreuje disk na koje se datoteke trebaju kopirati.
KOMANDE ZA RAD SA DIREKTORIJIMA
CD (CHDIR)
Prikazuje ime tekueg direktorija ili menja tekui direktoriji.
CHDIR [disk 1:] [staza]
CHDIR[..]
CD[disk:] [staza]
CD[..]
DELTREE
Brie direktorije i sve poddirektorije i datoteke unutar.
Za brisanje jedne ili vie datoteka i direktorija:
DELTREE [/Y] [disk:] staza [[disk:] staza [...]]

22

/Y Iskljuuje poruke za potvrivanjem da li elite brisati poddirektorije.


[disk:] staza Odreuje ime direktorija koji elite izbrisati.
MD (MKDIR)
Kreira direktorije. Ime direktorija takodjer moe imati format 8:3. Ukupna duina
imena direktorija (staza+ime) nesme prei 63 znaka, raunajui i
crtu\ (backslash).
MKDIR [disk:] staza
MD [disk:] staza
RD (RMDIR)
Uklanja (brie) direktoriji.
RMDIR [disk:] staza
RD [disk:] staza
TREE
Prikazuje grafiku strukturu direktorija diska ili staze.
TREE [disk:] [staza] [/F] [/A]
/F Prikazuje imena datoteka u svakom direktoriju.
/A Koristi ASCII umesto proirenih karaktera.
KOMANDE ZA RAD SA DATOTEKAMA
ATTRIB
Prikazuje ili menja atribute datoteka.
+
Postavlja atribut.
Brie atribut.
R
Read-only (samo uitavanje) atribut datoteke.
A
Archive (arhivska) atribut datoteke.
S
System (sistemska) atribut datoteke.
H
Hidden (skrivena) atribut datoteke.
/S
Procesira datoteke u svim direktorijima u zadatoj stazi.
COPY
Kopira jednu ili vie datoteka na drugu lokaciju.
COPY [/A | /B] izvor [/A|/B] [+ izvor[/A|/B] [+ ...]] [odredite[/A|/B]] [/V] [/Y|/-Y]
Izvor
odredjuje datoteku ili datoteke za kopiranje.
/A
ukazuje na ASCII tekstualnu datoteku.
/B
ukazuje na binarnu datoteku.
Odredite
odredjuje direktoriji ili datoteku za novu(e) datoteku(e).
/V
verifikuje da li su nove datoteke pravilno zapisane.
/Y
iskljuuje prompt za potvrdjivanje da se eli upisivati preko
postojee odredine datoteke.
/-Y
ukljuuje prompt za potvrdjivanje da li se eli upisivati preko
postojee odredine datoteke.
DEL
Brie jednu ili vie datoteka. Ova komanda je prilino opasna jer nesavesno i
pogrenom upotrebom iste moe doi do gubitaka podataka.
DEL [disk:] [staza] datoteka [/P]

23

DIR
Prikazuje listu datoteka i poddirektorija u direktoriju.
DIR[disk:] [staza] [datoteka] [/P] [/W] [/A[[:] atributi]] [/O[[:] sort-red]] [/S] [/B]
[/L] [/C[H]
[disk:] [staza] [datoteka] odredjuje disk (katalog), ili datoteka za izlistavanje.
/P
pauzira nakon svakog popunjenog ekrana.
/W
koristi iroki format za izlistavanje.
/A
prikazuje datoteke sa zadatim atributima.
Atributi
D Katalozi, R Read-only datoteke, H Skrivene datoteke, S
sistematske datoteke, A arnivske datoteke,-prefiks znaine.
/O
lista sa sortiranim redosledom.
/S
prikazuje datoteke u zadatom direktoriju i sve poddirektorije.
/B
koristi go(bare) format (bez naslova ili skupnog pregleda).
/L
koristi mala slova.
/C[H]
prikazuje stepen kompresije;/CH koristi HOST veliinu alokacione
jedinice.
FIND
Pronalazi niz simbola u datoteci ili datotekama.
FIND [/V] [/C] [/N] [/I]"string"[[disk:] [staza]datoteka[...]]
/V
prikazuje sve linije koje ne sadre zadati string.
/C
prikazuje samo broj linija koje sadre traeni string.
/N
prikazuje brojeve linija sa prikazanim linijama.
/I
ignorie da li je veliko ili malo slovo unutar traenog stringa.
"string" odredjuje tekst string za pretraivanje.
[disk:] [staza] datoteka -odredjuje datoteku ili datoteke za pretraivanje.
Ako staza nije zadata, FIND trai tekst ukucan na promptu ili usmeren sa druge
komande.
MOVE
Seli datoteke i preimenuje datoteke i direktorije.
Za preselenje jedne ili vie datoteka:
MOVE [/Y | /-Y] [disk:] [staza] datoteka1 [,...] odredite
Za preimenovanje direktorija:
MOVE [/Y | /-Y] [disk:] [staza] direktoriji1 direktoriji2
[disk:] [staza] datoteka1
Odreuje lokaciju i ime datoteke ili datoteka koje eli
preseliti.
odredite
Odreuje novu lokaciju datoteke.
[disk:] [staza] katalog1
Odreuje direktorija koji elite preimenovati.
katalog2
Odreuje novo ime direktorija.
/Y
Iskljuuje promptno javljanje za potvrivanjem
kreiranja direktorija ili prepisivanja preko zadatog
odredita
/-Y
Ukljuuje promptno javljanje za potvrivanjem
kreiranja direktorija ili prepisivanja preko zadatog
odredita.

24

PRINT
tampa tekstualnu datoteku dok se za to vreme mogu koristiti ostale MS-DOS
komande.
PRINT [/D:ureaj] [/B:kapacitet] [/U:br-taktova1] [/M:br-taktova2] [/S:br/taktova3]
[/Q:qkapacitet] [/T] [[disk:] [staza] datoteka [...]][/C][/P]
/D:disk
Odreuje ureaj za tampanje.
/B:kapacitet
Postavlja interni kapacitet bafera, u bajtima.
/U:br-taktova1
eka zadati maksimalni broj taktova kloka dok printer ne bude
na raspolaganju.
/M:br-taktova2
Odreuje maksimalni broj taktova kloka za tampanje jednog
karaktera.
/S:br-taktova3
Dodeljuje scheduler-u zadati broj taktova kloka za tampanje u
pozadini.
/Q:qkapacitet
Odreuje maksimalni broj datoteka koje mogu biti u listi
ekanja (queue)za tampanje.
/T:
Uklanja sve datoteke iz lisze ekanja za tampanje (print
queue).
/C
Odgaa tampanje datoteke u procesu i svih sledeih datoteka.
/P
Dodaje datoteku i ostale koje slede nakon nje u listu ekanja za
tampanje.
REN (RENAME)
Promena imena datoteke.
RENAME [disk:] [staza] datoteka1 datoteka2
REN [disk:] [staza] datoteka1 datoteka2
TYPE
Ispisuje na ekranu sadraj datoteke.
XCOPY
Kopira datoteke (osim skrivenih i sistematskih datoteka) i stablo direktorija.
XCOPY izvor [odredite] [/A | /M] [/D:datum] [/P] [/S] [/E] [/V] [/W]
izvor
Odreuje datoteku za kopiranje.
odredite
Odreuje lokaciju i(ili) ime nove datoteke.
/A
Kopira datoteke sa atributom "archive", ne menja atribut.
/M
Kopira datoteke sa atributom "archive", iskljuuje atribut
"archive.
/D;datum
Kopira datoteke promenljive na ili nakon zadatog datuma.
/P
Prompt pre kreiranja svake odredine datoteke.
/S
Kopira direktorije i poddirektorije osim praznih.
/E
Kopira sve poddirektorije, ak i prazne.
/V
Verifikuje svaku novu datoteku.
/W
Prompt da se pritisne neki taster pre kopiranja.
/Y
Iskljuuje prompt za potvrivanje da elite prepisati preko
postojee odredine datoteke.
/-Y
Ukljuuje prompt za potvrivanje da elite prepisati preko
postojee odredine datoteke.
POMONE KOMANDE

25

CLS
Brisanje ekrana.
DOSSHEEL
Pokree MS-DOS-ov el(shell). el je alternativni komandni interpreter, koji moe da
zameni interpreter COMMAND.COM.
GRAPHICS
Uitava program koji moe tampati grafiku.
MEM
Prikazuje koliinu zauzete i slobodne memorije u sistemu.
MSAV
Pretrauje raunar traei poznate viruse.
MCD
Daje detaljne tehnike informacije o raunaru.
VER
Prikaz verzije DOS-a.
VSAFE
Vodi rauna o pojavi virusa na raunaru i prikazuje upozorenjekad pronae neki.
OPERATIVNI SISTEM MS-WINDOWS

Microsoft MS Windows (prozor) operativni sistem namenjen je


razliitim raunarskim sistemima:
personalnim PC raunarima,
lokalnim i globalnim raunarskim mreama,
superserver-vieprocesorskim raunarima baziranih na RISC
procesorima,
itd.

MS Windows se kao operativni sistem pojavio osamdesetih godina. Veina korisnika


raunara je u to vreme koristio personalne raunare. Najpopularniji operativni sistem
je bio MS DOS.
Prve verzije Windows-a su u stvari predstavljale programski sistem koji, ne samo da
se oslanja na MS DOS, ve predstavlja sistem aplikacija koji se startuje iz samog MS
DOS-a sa komandne linije. Novi operativni sistem-Windows trebalo je da predstavlja
platformu pod kojom bi mogli da se izvravaju mnogobrojni programi pisani u MS
DOS-u (potpuna DOS kompatibilnost). Pored toga ovi programi su ve omoguili i
vie:
unificiran grafiki korisniki interfejs,
potpuno korienje mogunosti savremenih procesora,
efikasnije korienje operativne memorije,
dinamiku razmenu podataka,

26

virtuelni memorijski sistem,


vieprogramski rad,
podrku za multi mediju itd.

Prva verzija ovog operativnog sistema Windows 3.0. je prodata u preko etiri miliona
primeraka. Poboljane verzije su Windows3.1 i Windows 3.11. Danas je Windows
najprodavaniji operativni sistem.
Za razliite raunar postoje sledee verzije MS Windows-a:
Windows 3.1 za IBM PC 386, 486, Pentium i za prenosne raunare
Windows 95, 98 kao i 2000 predstavlja 32-bitnu verziju operativnog sistema
namenjenu raunarima sa neto boljim karakteristikama i sa veim memorijskim
zahtevima. Ova verzija predstavlja kompletan operativni sistem koji se definitivno
odvaja od MS DOS-a, ali ga i dalje podrava.
Windows NT-operativni sistem je za snane radne stanice i mrene servere.
Kod MS Windows operativnog sistema razlikujemo tri modula:
modul za optu podrku-kernel,
grafiki modul (GDI),
korisniki modul-za upravljanje prozorima.
WINDOWS NT
Windows NT (New Tehnology), je 32-bitni operativni sistem kreiran da u budunosti
bude osnova za sve PC raunare, radne stanice i servere.
Pored osobina prethodnih verzija, ovaj operativni sistem ime sledee prednosti:
mogunost rada na razliitim hardverskim platformama,
rad u raunarskim mreama,
distribuirana obrada podataka,
rad sa dosadanjim DOS i Windows aplikacijama,
veza sa UNIX aplikacijama,
OS/2 kompatibilnost,
visoka stabilnost,
rad u vieprocesnim sistemima.
Programi pod Windows NT mogu da se izvravaju u dva osnovna moda:
kernel mod-kad se izvrava sistemski kod i
korisniki mod-kad se izvravaju aplikacije.
API (Application Programming Interface) je deo strukture operativnog sistema
Windows NT, i predstavlja programske alatke koje omoguavaju razvoj aplikacija
nezavisnih od platforme.

27

APLIKACIONI SOFTVER
Aplikacioni program je specifian za odreenu primenu raunara. Aplikacione
programe obino razvijaju korisnici raunarskog sistema za reavanje svojih
problema. Zbog toga se ovi programi esto nazivaju i korisniki programi.
Najvanije oblasti primene raunara, odnosno aplikacionih programa su:
obrada teksta,
raunska tehnika,
komunikacija podataka,
poslovne primene,
automatizacija tehnolokih procesa,
nauno tehnike primene,
primene u obrazovanju,
vetaka inteligencija itd.
Aplikacione programe moemo podeliti i na sledei nain:
pojedinani aplikacini progami,
programski paketi,
sistemski programi.
Programski paket sastoji se od vie programa i predstavlja skup procedura za
reavanje problema.
Sistemski program predstavlja skup programa ije su komponente usko povezane.

28

UNIX
OPERATIVNI SISTEM
Operativni sistem je skup programa koji upravljaju resursima raunara. Resurse
raunara moemo podeliti na sklopovske (hardware) i programske (software). Kao
primer hardverskih resursa moemo navesti:

tastature,

tampae,

zvune kartice itd,


dok u programske resurse spada:

raznovrsna programska podrka koja na raunaru izvodi specifine


zadatke.

Sam operativni sistem (OS) moe biti:


jednokorisniki (single-user) ili
viekorisniki (multi-user).
Kod jednokorisnikih OS-ova samo jedna osoba moe izvravati samo jedan proces
(program ili deo programa). Za jednokorisniki OS koji moe izvravati i vie od
jednog procesa u istom vremenu kaemo da je viezadatni (multi-tasking).
Nasuprot jednokorisnikim OS-ovima imamo viekorisnike OS-ove kod kojih (kao
to im i ime kae) vie korisnika moe raditi istovremeno. Viekorisniki OS-ovi su
uvek viezadatni (naime svaki korisnik moe pokrenuti vlastitu aplikaciju).
Jednokorisniki OS-ovi su DOS, Windowsi 3.xx, dok su Windowsi 95 i NT uz to i
viezadatni (Windowsi NT se mogu svrstati i u viekorisnike OS-ove ali ne u
doslovnom smislu - ne moe biti logirano vie korisnika koji mogu pokretati aplikacije
na raunaru). Glavni predstavnik viekorisnikih sistema je UNIX (u svojim raznim
realizacijama).
VERZIJE UNIX-A
Postoji vie verzija UNIX-a. Prvi UNIX nastao je daleke 1969 godine kao istraivaki
proizvod amerike firme AT&T Bell Labs. Danas su najvanije verzije UNIX-a
"System V", BSD (nastala 1977 na Kalifornijskom Univerzitetu Berkeley - zadnja
verzija BSD4.4). Osim toga postoji Xenix (UNIX mikroraunarska verzija popularnog
AT&T UNIX-a verzije 7), POSIX (standard za UNIX sline operativne sisteme). Osim
tih verzija danas su poznate (i popularne) sledee verzije UNIX-a: SunOS, Solaris,
SCO UNIX, AIX, HP/UX, ULTRIX i najnoviji Linux.
Ono to e biti prikazano kroz sledea poglavlja optenito je za sve verzije UNIX-a,
tako da e se usvojena znanja moi koristiti na bilo kojoj od pre navedenih verzija.
RAD NA UNIX RAUNARU
Da bi uopte mogli poeti raditi na UNIX raunaru potrebno je da nam sistem
administrator otvori korisniki raun (account). Otvaranjem korisnikog rauna
administrator definie korisniko ime (username), dozvole koje ima korisnik na
29

sistemu, dodeljuje prostor na disku, definie E-mail adresu i tajnu korisniku lozinku
(password).
Postoji vie naina putem kojih korisnik moe pristupiti do svojih resursa na sistemu:
Moemo se spojiti preko konzole (konzola je ulazno-izlazna jedinica "tastatura i ekran" - direktno spojena na UNIX raunar i ima povlaeni
status na raunaru - neke radnje vezane za operativni sistem mogu se
izvesti samo preko konzole - sve one vezane za single user mod rad
UNIX-a),
preko terminala (obino udaljenog) ili emulacije terminala (ukoliko se
spajamo sa nekog drugog operativnog sistema). Za svaki od tih naina
spajanja na UNIX raunar zajedniki je proces identifikacije.
PROCES IDENTIFIKACIJE
Da bi raunar (UNIX OS) saznao ko je onaj ko se eli spojiti na njega, da li ima
ovlaenja da se spoji i koje resurse da mu dodeli, on provodi prilikom svakog spajanja
proces identifikacije (logging in). Proces identifikacije se sastoji u unoenju linog
korisnikog imena i lozinke. U trenutku kada se elite spojiti na raunar (na jedan od
pre spomenutih naina) UNIX OS e startati proces identifikacije i napisati vam da od
vas trai da unesete korisniko ime (login). Nakon unoenja korisnikog imena od vas
se trai da unesete i korisniku lozinku:
UNIX(r) System V Release 4.0 (oliver)
login:ivica (nakon unoenja imena treba pritisnuti ENTER)
(unoenje korisnike lozinke ne vidi se na zaslonu password:
pritisnuti ENTER)
Ukoliko je korisnika lozinka neispravna raunar e ispisati (korisnika imena i
lozinke su osetljiva na mala i velika slova tako da treba paziti prilikom unosa):
Login incorrect
login:
A ako je ispravno uneseno korisniko ime i lozinka napisati e pozdravnu poruku i
traiti od korisnika da unese tip terminala (unoenje tipa terminala nije obavezno na
drugim raunarima).
Last login: Mon Feb 17 15:03:15 from vts.su.ac.yu.
TERM= ( vt100 ) (samo pritisnemo ENTER za potvrdu)
Po uspenom izvrenju procesa identifikacije, raunar e ui u program zvan ljuska
(shell). Ljuska interpretira sve komande koje korisnik unosi i optenito se brine za svu
komunikaciju izmeu korisnika i UNIX operativnog sistema. Postoji vie vrsti ljuski
(razlikuju se po sintaksi koja se upotrebljava) a najpoznatije su: Burne, Koren i C
ljuske. U trenutku kada je ljuska spremna da primi korisnikovu naredbu ispisati e na
ekranu prompt (znak ili niz znakova kojim ljuska oznaava da je spremna za unos
naredbe).

30

oliver%

(primer prompta)

Kod Bourn i Korn ljuske obino prompt zavrava na "$", dok kod C ljuske zavrava na
"%".
UNOENJE NAREDBI
Unoenjem naredbi u UNIX ljusci "govorimo" raunaru ta i kako da radi. Naredbe
oznaavaju imena UNIX programa. Pritiskom na ENTER ljuska interpretira nau
naredbu i izvrava odreeni program.
Prvu re koju unesemo uvek je UNIX naredba. Sve naredbe su osetljive na mala i
velika slova, tako da nije svejedno kako se piu. Sama naredba pored samog imena
naredbe moe sadravati i dodatne opcije koje ima naredba (opcije koje se nalaze
unutar uglastih zagrada su opcionalne i ne moraju se navesti).
naredba [opcije]
Evo primera nekoliko UNIX naredbi:
oliver% date
Wed Mar 5 11:11:27 MET 1997 (ispisuje trenutno vreme i datum)
oliver% who
ppero pts/3 Mar 5 10:51 (vts.su.ac.yu)
anovak pts/2 Mar 5 10:02 (yunord.net)
srodic pts/4 Mar 5 10:42 (tippnet.co.yu)
mlakic pts/1 Mar 5 10:28 (vts.su.ac.yu)(ispisuje ko trenutno radi na raunaru)
oliver% who am i
srodic pts/4 Mar 5 10:42 (yunord.net) (ispisuje ko je logiran na terminalu koji
koristimo)
Promenu prompta koji nam ljuska javlja da je spremna da primi nau naredbu moemo
promeniti koritenjem naredbe
set prompt='Tvoj rob% '
ZAVRETAK RADA
Kada elimo zavriti rad na UNIX raunaru ne gasimo jednostavno terminal (ili
aplikaciju koja emulira terminal - telnet) nego izvravamo posebnu proceduru (logging
out). Da bi pokrenuli proceduru za prestanak rada na UNIX raunaru ljusci zadamo
naredbu exit (na veini sistema je takoer vaea naredba i logout) i time smo
pokrenuli procedure za zavretak rada (po zavretku te procedure moemo ugasiti
terminal).

KORISNIKE LOZINKE
Danas kada su skoro svi UNIX raunari povezani u jednu veliku mreu (Internet)
31

naroito je vaan pravilan odabir korisnike lozinke. Korisnika lozinka nikao ne bi


smela biti jednostavna. To znai da za lozinku ne koristimo osobna imena, imena nama
poznatih osoba, strane rei. Najbolje lozinke su one koje u sebi imaju kombinaciju
malih i velikih slova te brojeva. Evo nekoliko primera dobrih i loih korisnikih
lozinki:
ivica -loa lozinka
windows -loa lozinka
dv43i3ma -dobra lozinka
blMK23i4 -dobra lozinka
Da bi promenili lozinku u UNIX ljusci izvodimo komandu passwd. Ona od nas trai
da unesemo staru lozinku (provera da li smo to stvarno onaj za koga se izdajemo a ne
da je na kolega na trenutak izaao a mi iskoristili njegov ukljueni terminal da bi mu
promenili lozinku), te dva puta novu (drugi put radi provere da nismo napravili greku
prilikom ukucavanje - unos lozinke ne vidi se na ekranu).
Old password:
(unosimo staru lozinku)
New password:
Re-enter new password: (dvaput unosimo novu lozinku)
Lozinka mora imati najmanje 6 znakova (obino osam) od kojih su najmanje dva
alfabetski znaci i jedan numeriki.
UNIX DATOTENI SISTEM
Datoteka je osnovna jedinica pohrane podataka kako na UNIX-u, tako i na mnogim
drugim operativnim sistemima. Datoteka moe sadravati bilo kakav oblik podataka:
obian tekst,
program,
sliku,
zvuni zapis itd. .
Moemo rei da je datoteka sekvencijalni niz podataka, dok sama interpretacija
podataka ovisi od programa koji je koriste.
UNIX datoteke su organizovane u direktorije. Direktorij je specijalni deo datoteke u
koju operativni sistem sprema podatke o ostalim datotekama (sadraju tog direktorija).
Na Slici 5. moemo videti izgled jednog UNIX datotenog sistema.

32

Slika 5.: Izgled jednog UNIX datotenog sistema


Direktorij koji se nalazi na vrhu datotenog stabla nazivamo root direktorij. Svi drugi
direktoriji u datotenom sistemu su poddirektoriji root direktorija.
HOME DIREKTORIJ
Nakon uspenog procesa identifikacije (logina) korisnik se nalazi u svom home
direktoriju. Home direktorij svakog korisnika je jednoznano odreeno mesto u UNIX
operativnom sistemu (svaki korisnik ima samo jedan home direktorij) i na tom mestu
se nalaze sve inicijalne datoteke potrebne za poetnu inicijalizaciju korisnikove ljuske
(".login", ".cshrc", ".profile"). Nad svojim home direktorijom UNIX korisnik ima sva
ovlaenja pa tako u njemu moe kreirati poddirektorije i spremati datoteke. Neki
UNIX sistemi imaju postavljenu kvotu na home direktoriju. To znai da korisnik moe
spremiti u svoj home direktorij samo odreenu koliinu podataka definisanu kvotom
(ukoliko je kvota 2,5Mb - korisnik moe u svoj direktorij staviti najvie 2,5Mb
podataka).
RADNI DIREKTORIJ
Radni direktorij je onaj direktorij u kome se trenutno nalazimo. Na poetku svakog
rada na UNIX operativnom sistemu korisnikov home direktorij je radni direktorij.
Tokom rada radni direktorij se moe menjati (naredba cd). Direktorij u koji se
pomaknemo postaje na radni direktorij.
Sve naredbe koje izvravamo (ukoliko to drugaije ne odredimo) odnose se na
datoteke u naem radnom direktoriju.
DATOTENO STABLO
Direktoriji UNIX datotenog sistema organizovani su u hijerarhijsku strukturu zvanu
datoteno stablo. Na vrhu te hijerarhijske strukture nalazi se root direktorij koji
oznaavamo sa "/" (slash). Na prethodnoj slici (Slika 1.) se mogu videti neki
33

karakteristini poddirektoriji root direktorija zajedniki veini UNIX operativnih


sistema:
u bin direktoriju se nalaze sistemski programi,
u etc direktoriju inicijalne datoteke potrebne za rad sistema,
u usr direktoriju korisniki programi, tmp direktoriju privremeni podaci
i na kraju
u home direktoriju se nalaze korisniki home direktoriji.
Notacija kojom se define gde se nalazi odreena datoteka ili direktorij zove se put
(path). Put moe biti apsolutni ili relativni.
APSOLUTNI PUT
Kao to je reeno ranije, UNIX datoteni sistem je organizovan kao inverzno stablo sa
root direktorijom na vrhu. Apsolutni put govori nam kojim putem moramo proi od
root direktorija do direktorija (ili datoteke) do kojeg elimo stii.
Uzmimo da nam je trenutni radni direktorij bin i da elimo stii u direktorij mail.
Apsolutni put kojim moramo proi ide od root direktorija, preko home, student, ivica i
na kraju mail. Skraeno to zapisujemo kao "/home/student/ivica/mail", dakle navodei
celi put koji moramo proi od root direktorija do direktorija mail (oznaavanje
apsolutnog puta uvek poinje sa "/" - oznaka za root direktorij).
RELATIVNI PUT
Za razliku od apsolutnog puta koji uvek poinje od root direktorija, kod relativnog puta
pozicija eljenog direktorija se navodi u odnosu na trenutni radni direktorij. Kod
relativnog puta trenutni direktorij oznaavamo sa "." (jednom tokom) a direktorij vie
(roditeljski direktorij) u hijerarhiji stabla sa ".." (dve take).
Pogledajmo nekoliko primera (Slika 6.). Trenutni radni direktorij nam je student i
elimo doi do dirketorija bin (poddirektorija direktorija ivica). Relativnim putem
kretati emo se iz student (trenutni radni direktorij) u ivica pa do bin (eljeni
direktorij) ili krae zapisano "ivica/bin". Taj put apsolutno zapisan izgledao bi
"/home/student/ivica/bin". elimo li sada iz bin direktorija prebaciti se u mail
direktorij moramo se kretati od bin direktorija jedan direktorij gore, preko ivica
direktorija, do mail ili krae zapisano "../mail". Apsolutni put bi bio
"/home/student/ivica/mail".

34

Slika 6.: Primeri za apsolutni i relativni put


PROMENA RADNOG DIREKTORIJA
Poznavajui relativni i apsolutni put direktorija sada se moemo kretati kroz datoteni
sistem UNIX-a.
elimo li odrediti u kom direktoriju se trenutno nalazimo koristiemo naredbu pwd.
Naredba pwd nema argumenata, a kao rezultat nam daje apsolutni put do trenutnog
radnog direktorija.
oliver% pwd
/home/student/ivica
oliver%
Sada elimo li promeniti trenutni radni direktorij u /home/student/ivica/bin koristiemo
se naredbom cd. Naredba cd kao argument ima apsolutni ili relativni put eljenog
direktorija.
oliver% cd /home/student/ivica/bin
oliver% pwd
/home/student/ivica/bin
oliver%
Nalazimo li se u direktoriju /home/student/ivica/bin i elimo doi do direktorija
/home/student/ivica/mail koristei relativni put kao argument cd naredbe to emo
izvesti na sledei nain:

35

oliver% pwd
/home/student/ivica/bin
oliver% cd ../mail
oliver% pwd
/home/student/ivica/mail
oliver%
Sa naredbom cd moemo samo promeniti trenutni radni direktorij. Navedemo li kao
argument cd naredbe apsolutni ili relativni put do datoteke dobit emo poruku o greci.
oliver% cd /etc/hosts
/etc/hosts: Not a directory.
oliver%
DATOTEKE U DATOTENOM STABLU
Svaki direktorij moe sadravati poddirektorije. Osim poddirektorija direktorij moe
sadravati i datoteke. Na Slici 7. moemo videti tipian izgled jednog korisnikog
home direktorija.

Slika 7.: Tipian izgled jednog korisnikog home direktorija


Da bi videli sadraj direktorija koristimo naredbu ls. Naredba ls e nam dati listu
datoteka i poddirektorija radnog direktorija. Ukoliko kao argument ls naredbe
navedemo apsolutni ili relativni put dobitemo sadraj direktorija zadanog u putu.
IZLISTAVANJE SADRAJA DIREKTORIJA
Da bi mogli koristiti naredbu cd moramo znati sadraj direktorija. Sadraj direktorija
moemo dobiti naredbom ls. Kada unesemo naredbu ls dobijamo popis datoteka i
poddirektorija, direktorija koji je trenutno na radni direktorij. Puna sintaksa naredbe ls
izgleda ovako:
ls [opcija(e)] [ime-direktorija-ili-datoteke]
Najjednostavnija upotreba je navoenje same naredbe ls bez ikakvih parametara. Kao
rezultat dobiti emo popis datoteka i poddirektorija.
oliver% ls
Mail/
36

oliver%
Dodamo li naredbi ls opciju -a (od engleske rijei all) dobiti emo jo koju datoteku
kao rezultat. Naime opcije -a "govori" naredbi ls da prikae sve datoteke i direktorije
(datoteke i direktoriji koji poinju sa "." skriveni su za ls naredbu bez opcije -a).
oliver% ls
.cshrc .profile
.login Mail/
oliver%
Kako je ranije objanjeno "." i ".." su specijalne notacije za radni direktorij (".") a za
roditeljski direktorij (".."). Datoteke koje poinju sa "." (takom) skrivene su i mogu
biti prikazane samo pomou opcije -a (obino su to inicijalne datoteke - datoteka
.profile sadri naredbe koje se automatski izvravaju od Bourne ili Korn ljuske svaki
put kada pristupite sistemu. C ljuska koristi datoteke .login i .cshrc umjesto .profile).
elimo li dobiti jo vie informacija o datotekama koristiemo opciju -l (od engleske
rijei long) i kao rezultat dobiti ispis (Slika 8.):
oliver% ls -al (obe opcije su aktivne -a i -l)

Slika 8.: Rad operacije oliver% ls -al


Tip

Dozvola
pristupa

Broj
linkova
Vlasnik

Govori nam da li se radi o datoteci (-), direktoriju (d)


ili pokazivau (linku) na drugu datoteku ili direktorij
(l).
Specifikuje tri grupe korisnika (sam vlasnik, grupa
kojoj on pripada, i svi ostali korisnici koji ne spadaju
u prve dve grupe). Svaka grupa korisnika ima
odreena ovlaenja nad datotekom ili direktorijom.
Ovlaenja koja ima odreena grupa vidimo po
slovima pridruenim odreenoj grupi (svaka grupa
ima tri polja), a to su r (dozvola itanja), w (dozvola
pisanja) i x (dozvola izvravanja - kod direktorija
dozvola pristupa).
Pokazuje broj datoteka i direktorija koji su povezani s
datotekom.
Ime vlasnika datoteke ili direktorija (to je uvek
37

Veliina
Vreme
promene
Ime

korisniko ime vlasnika).


Veliina datoteke.
Datum i vreme zadnje promene datoteke.
Ime datoteke ili direktorija.

Osim ovoga moe se dobiti jo i grupa kojoj pripada datoteka ili direktorij ako
navedemo opciju -g (dakle ls -alg). Takoer kao opciju ls naredbe moemo navesti i
apsolutni ili relativni put direktorija iji sadraj elimo videti (npr. ls -l /home/vezbe).
DOZVOLE PRISTUPA
Za svaku datoteku ili direktorij na UNIX-u se moe postaviti odreena dozvola
pristupa. UNIX razlikuje tri grupe korisnika:
vlasnik datoteke,
korisnici koji pripadaju grupi u kojoj i datoteka,
te svi ostali (korisnici koji se ne mogu svrstati u jednu od prve dve
grupe).
Za svaku od tih grupa postavljaju se dozvole, s time da samo vlasnik datoteke ili
direktorija moe menjati ovlaenja.
Postoje tri vrste dozvola:
dozvola itanja (kod direktorija listanja),
dozvola pisanja i
dozvola izvravanja (kod direktorija dozvola ulaska u direktorij).
Svaka od tih dozvola se oznaava slovom:
r (itanje),
w (pisanje) i
x (izvravanje-ulazak).
Ako ne postoji dozvola za odreenu grupu korisnika onda na tom mestu stoji "-"
(dozvole moemo videti sa ls -l).
Pogledajmo par primera ako:
prvo polje se odnosi na vlasnika,
drugo na korisnike koji spadaju u grupu koja ima ovlasti nad datotekom, a
tree na ostale korisnike):
rwx r-- r- vlasnik ima sve dozvole, grupa i svi ostali dozvolu
itanja
rwx rw- vlasnik ima sve dozvole, grupa dozvolu pisanja i
r-itanja, ostali dozvolu itanja
r-x r-x r- svi imaju dozvolu itanja i izvravanja (ulaska u
x
direktorij)
Promenu dozvole vri se naredbom chmod. Naredba chmod kao parametar ima kojoj
grupi menjamo ovlaenja, koja ovlaenja i nad kojom datotekom. Grupe se
oznaavaju sa:
u-vlasnik,
38

g-grupa,
o-ostali i
a-svima.

Dozvole mogu biti:


r-itanje,
w-pisanje i
x-izvravanje/ulaenje.
Ukoliko dozvolu dodajemo koristimo "+", dok ukoliko je oduzimamo koristimo "-".
Pogledajmo nekoliko primera:
oliver% chmod o- ostalim korisnicima smo oduzeli dozvole
rwx .login
itanja, pisanja i izvravanja
oliver%
chmod ostalim korisnicima smo dodali dozvolu itanja,
o+rwx .login
pisanja i izvravanja
oliver% chmod u-w
vlasniku datoteke smo uduzeli dozvolu pisanja
.login
oliver% chmod u-r
vlasniku datoteke smo oduzeli dozvolu itanja
.login
oliver% chmod u+rw
vlasniku datoteke smo dozvolili itanje i pisanje
.login
oliver% chmod u-x
vlasniku smo zabranili ulazak u direktorij
Mail
oliver% chmod u+x
vlasniku smo omoguili ulazak u direktorij
Mail
Vie o naredbi chmod (a i o ostalim naredbama) moete saznati naredbom man chmod
(kao parametar man naredbe moete navesti bilo koju UNIX naredbu).
PROMENA VLASNIKA I GRUPE KOJOJ PRIPADA DATOTEKA
elimo li promeniti vlasnika datoteke koristimo se naredbom chown. Kao parametar
naredbe navodimo novog vlasnika i apsolutni ili relativni put do datoteke ili
direktorija:
chown novi-vlasnik put-do-datoteke
U sluaju kada elimo promeniti grupu kojoj pripada datoteka to inimo naredbom
chgrp. Kao parametar navodimo novu grupu i put do datoteke ili direktorija:
chgrp nova-grupa put-do-datoteke
Pogledajmo to kroz par primera (promene uvek moete videti sa naredbom ls -alg)
oliver% chown ivica
ivica postaje vlasnik datoteke .login
.login
39

oliver% chgrp osoblje grupa osoblje postaje


.login
datotekom .login
oliver% chgrp student grupa student postaje
.login
datotekom .login

vlasnik

nad

vlasnik

nad

Napomena: ukoliko za vlasnika datoteke stavimo drugog korisnika vie nismo vlasnici
datoteke i ne moemo menjati njene dozvole, vlasnike i grupu kojoj pripada.
METAZNACI
Metaznaci su grupa znakova koji zamenjuju jedan ili vie znakova. Metaznakove
moemo koristiti kada elimo naredbom uticati na vie datoteka ili direktorija. Skup
tih metaznakova je u Tabeli 1.
Tabela 1.: Metaznaci
*
Zamenjuje proizvoljan broj znakova. Uzmemo na primer "lis*", tu "*"
zamenjuje proizvoljan broj znakova tako da moemo imati "lista", "lis ta",
"lisica", ...
?
Zamenjuje samo jedan znak. Uzmemo na primer "lis?ca", tu "?" zamenjuje
jedan znak tako da moemo imati "lisica", "lisbca", "lis ca", "lis1ca", ali ne i
"lista"
[...]
Zamenjuje jedan znak sa bilo kojim znakom navedenim u uglastim
zagradama. Na primer "lis[a..z]ca", tu "[a..z]" zamenjuje bilo koji znak
izmeu a i z tako da moemo imati "lisica", "lisbca", ali ne i "lis1ca".
U praksi metaznakove koristimo kada elimo naredbu primeniti samo na odreene
datoteke (Tabela 2.).
Tabela 2.: Primeri za korienje metaznakova na odreene datoteke
oliver% ls -l dobiti emo sve datoteke u direktoriju etc koje poinju
/etc/h*
sa h
oliver% ls -l dobiti emo sve datoteke koje poinju sa h, zavravaju
/etc/h?st
sa st, a izmeu imaju samo jedan znak
oliver% ls -l dobiti emo sve datoteke koje poinju sa h, zavravaju
/etc/h??st
sa st a izmeu imaju dva znaka.

ITANJE SADRAJA DATOTEKE


Do sada smo pregledavali direktorije i gledali datoteke spolja, ali nismo mogli videti
sadraj datoteke. Da bi mogli pogledati i unutar "korica" koristimo se nekom od UNIX
naredbi za itanje sadraja datoteka: cat ili more.
cat
Naredba cat dolazi kao skraenica od engleske rei concatenate, i prvenstveno je
40

namenjena spajanju datoteka. Takoer naredbu cat moemo iskoristiti i za


prikazivanje sadraja datoteke na ekran. Da bi prikazali sadraj datoteke naredbom cat
na standardni izlaz (ekran) koristimo:
cat datoteka(e)
Na primer elimo li videti sadraj datoteke .login (datoteke ije se naredbe izvravaju
prilikom logiranja na UNIX raunar) napisaemo naredbu:
oliver% cat .login
# @(#)Login 2.0 modify by mviljac & azigman
##########################################################
.
.
.
oliver%
Naredba cat najbolje radi sa kratkim datotekama iji sadraj stane na jedan celi ekran.
Ako je datoteka predugaka njen sadraj e vam samo proletiti i neete uspeti videti
nita osim sadraja zadnjeg "ekrana". Takoer se ne moete vratiti na sadraj
prethodnih ekrana. Unesete li cat naredbu bez navoenja imena datoteke, naredba cat
e itati sadraj standardnog ulaza (tastatura) i preusmeravati ga na standardni izlaz
(ekran). elimo li prekinuti daljnje izvoenje naredbe cat pritisnimo CTRL+D.
more
elimo li proitati sadraj duih datoteka moramo koristiti naredbu koja nam
omoguava da na zaslonu prikazujemo "stranicu" po "stranicu" teksta. Standardni
terminalski ekran ima 24 linije teksta. Sintaksa naredbe je:
more datoteka(e)
Naredba more nam omoguava da se kreemo po sadraju datoteke. Mnoge verzije
omoguavaju ne samo kretanje unapred po datoteci nego i unatrag. Pozivanjem
naredbe more na ekranu e nam se prikazati prva "stranica" datoteke.
oliver% more .login
# @(#)Login 2.0 modify by mviljac & azigman
##########################################################
.
.
--More--(17%)
Nakon prve stranice dobiemo podatak da smo do sada videli 17% sadraja dokumenta
i da unesemo naredbu za nastavak. Pritisnemo li ENTER dobiemo novu liniju teksta,
dok sa SPACE dobijemo novu stranicu teksta. Za pomo moemo pritisnuti tipku h (od
engleske rijei help) i dobiemo ekran sa osnovnim naredbama koje razume more.
Evo nekih od njih:
SPACE
RETURN
nf
b
nb

prikai sledeu stranicu teksta


prikai sledeu liniju teksta
pomakni se unapred za n stranica
pomakni se unatrag za jednu stranicu
pomakni se unatrag za n stranica

41

/rije
?rije
CTRL+L
h
q
v

potrai unapjed re
potrai unatrag re
osvei sadraj ekrana
ispii pomo
zavri sa pregledavanjem datoteke pre njenog kraja
pozovi vi editor na ovom mestu

STANDARDNI ULAZ I IZLAZ


Mnoge UNIX naredbe uitavaju podatke na ulazu i prikazuju rezultat na izlazu.
Optenito ako ne specifikujemo naredbi datoteku iz koje da ita podatke, korisnika
ljuska od nas zahteva da unesemo podatke preko tastature (dokle god ne pritisnemo
ENTER). Tastaturu nazivamo standardnim ulazom.
Kao rezultat, naredba nam daje ispis. Taj ispis obino je na ekranu. Ekran nazivamo
standardnim izlazom. Svaka naredba, ukoliko se to drugaije ne specifikuje, uitava
podatke sa standardnog ulaza (tastature) i prikazuje rezultate na standardnom izlazu
(ekranu).
Naredbi moemo promeniti standardni ulaz i standardni izlaz.
PREUSMERIVANJE STANDARDNOG ULAZA I IZLAZA
Preusmerivanje standardnog ulaza i izlaza podrazumeva da naredbi menjamo da joj
podaci dolaze sa tastature i rezultati odlaze na ekran. U tu svrhu nam slue operatori
">", "<" i ">>".
Operator ">" nam govori da izlaz naredbe preusmeravamo u datoteku ije se ime
nalazi iza operatora:
oliver% ls -l /etc > proba
Ovom naredbom smo ispis rezultata naredbe ls -l /etc preusmerili sa standardnog izlaza
(ekrana) u datoteku proba (sadraj datoteke moemo pogledati sa more proba). Dakle
kada god elimo rezultat neke naredbe preusmeriti sa standardnog izlaza u datoteku
koristimo se operatorom ">". Ukoliko datoteka (u koju preusmeravamo izlaz) postoji
njen prethodni sadraj e biti izgubljen, dok ukoliko ne postoji datoteka e biti
kreirana. elimo li rezultat naredbe samo nadovezati na prethodni sadraj datoteke
onda za preusmeravanje izlaza koristimo operator ">>". Operator ">>" preusmerava
ispis umesto na standardni izlaz u datoteku ije se ime nalazi iza operatora s time da
ukoliko datoteka postoji ispis e se nastaviti na njenom kraju:
oliver% ls -l /usr/bin >> proba
Identino je i sa preusmerivanjem standardnog ulaza. Ukoliko elimo da nam naredba
umesto standardnog ulaza koristi datoteku iza operatora "<" navedemo ime datoteke iz
koje nam naredba uzima podatke:
oliver% mail moje_korisniko_ime < proba
ULANAVANJE

42

Kao to smo mogli preusmeravati standardni ulaz i standardni izlaz, tako moemo i
izlaz jedne naredbe preusmeriti u ulaz druge. Povezivanje dveju naredbi na taj nain
zove se ulanavanje (pipe). Operator koji oznaava ulanavanje je "|" i navodi se
izmeu dveju naredbi koje spajamo:
oliver% ls -l /etc | more
Ovom naredbom smo preusmerili izlaz naredbe ls -l /etc u ulaz naredbe more, tako da
e nam sada rezultat naredbe ls -l biti moguiti razgledavanje stranicu po stranicu.
Ulanavanjem nismo ogranieni na samo dve naredbe nego moemo ih spojiti i vie:
oliver% ls -l /etc | grep a | more
Ovim smo izlaz naredbe ls -l /etc preusmerili na ulaz naredbe grep (naredba grep trai
uzorak naveden iza imena naredbe u liniji i ukoliko ga nae ispisuje tu liniju), da bi
zatim izlaz naredbe grep preusmerili na ulaz naredbe more.
VI EDITOR (OSNOVE)
elimo li napisati neto sloeniji tekst potreban nam je editor. Editor kojeg sreemo na
veini UNIX sistema je vi editor. Zbog toga emo se u narednom tekstu osvrnuti na
osnovne znaajke i naredbe vi editora.
MODALITETI RADA
Vi editor je terminalski tekstualni editor. Prilikom pozivanja moemo koristiti jedan od
dva naina:
vi [ime-datoteke]
vedit [ime-datoteke]
U prvom sluaju pozivamo vi editor nad datotekom ime-datoteke (ukoliko datoteka
ime-datoteke ne postoji vi editor e je kreirati - ukoliko korisnik ima dozvolu za
pisanje u radnom direktoriju), dok u drugom sluaju pozivamo isti vi editor ali verziju
za poetnike (laki je za uenje, ali nema sve opcije aktivne). Ne navedemo li ime
datoteke kao parametar prilikom pozivanja vi editora morat emo dati ime datoteci
prije nego to je snimimo (izaemo iz vi editora sa naredbom ZZ).
Sam vi editor ima dva stanja:
unoenje naredbi
unoenje teksta
UNOENJE NAREDBI
Kada pozovemo vi editor on se u poetku nalazi u stanju unoenja naredbi. Dok se
nalazimo u stanju unoenje naredbi moemo zadati neku naredbu vi editoru koju e on
izvriti. Naredbe moemo podeliti u nekoliko grupa:
naredbe za pomicanje pokazivaa (kursora), (Tabela 3.)
naredbe za prelaz na unos teksta (Tabela 4.)
naredbe za brisanje i kopiranje teksta (Tabela 5.)
naredbe za pretraivanje i menjanje teksta (Tabela 6.)
43

naredbe za zavretak rada s vi editorom (Tabela 7.)

Pogledajmo sada svaku od tih skupina malo detaljnije:


Tabela 3.: Naredbe za pomicanje pokazivaa
l ili strelica u desno pomie pokaziva za jedno mesto u desno
h ili strelica u levo pomie pokaziva za jedno mesto u levo
j ili strelica za dole pomie pokaziva jedan red ispod
k ili strelica za gore pomie pokaziva jedan red iznad
pomie pokaziva na poetak reda
0
pomie pokaziva na kraj reda
$
pomie pokaziva na prvi red na ekranu
H
pomie pokaziva na srednji red na ekranu
M
pomie pokaziva na zadnji red na ekranu
L
[broj]G
pomie pokaziva na liniju broj
pomie jedan ekran unapred
Ctrl + f
pomie jedan ekran unatrag
Ctrl + b

Tabela 4.: Naredbe za prelaz na unos teksta


prelaz na unos teksta levo od pokazivaa
i
prelaz na unos teksta na poetku reda
I
prelaz na unos teksta desno od pokazivaa
a
prelaz na unos teksta na kraju reda
A
otvaranje novog reda za unos teksta ispod reda s pokazivaem
o
otvaranje novog reda za unos teksta iznad reda sa pokazivaem
O
unos preko postojeeg teksta
R
Napomena: za povratak u stanje unoenja naredbi treba pritisnuti tipku Esc ili Ctrl+c.
Tabela 5.: Naredbe za brisanje i kopiranje teksta
[broj]x
brie broj znakova desno od pokazivaa
[broj]X
brie broj znakova levo od pokazivaa
[broj]dd
brie broj redova i sprema ih u registar
[broj]yy
kopira broj redova i sprema ih u registar
kopira sadraj registra u novi red ispod reda sa pokazivaem
p
kopira sadraj registra u novi red iznad reda sa pokazivaem
P
rc
zameni znak pod pokazivaem sa znakom c
Tabela 6.: Naredbe za pretraivanje i menjanje teksta
/string
nai prvo pojavljivanje teksta "string" levo od pokazivaa
?string
nai prvo pojavljivanje teksta "string" desno od pokazivaa

44

n
:[%]s/str1/str2/[g]

ponovi pretraivanje
zameni tekst "str1" sa tekstom "str2" u celom tekstu

Tabela 7.: Naredbe za zavretak rada s vi editorom


spremi do sada obavljene promene
:w
spremi tekst i izai iz vi editora
ZZ
izai iz vi editora i zaboravi sve promene
:q!
Tabela 8.: Jo neke korisne naredbe
poniti zadnju naredbu
u
poniti sve promene u redu
U
ponovi zadnju naredbu
.
:r ime-datoteke
uitaj datoteku ime-datoteke
obnovi sadraj ekrana
Ctrl+l
napii broj reda u kome se nalazi pokaziva
Ctrl+g
Prethodne naredbe se mogu unositi samo u stanju unoenja naredbi!
UNOENJE TEKSTA
Kada se vi editor nalazi u stanju unoenja teksta onda sve znakove koje unosimo editor
interpretira kao obian tekst. Da bi mogli ponovo uneti neku naredbu moramo izai iz
stanja unoenja teksta i prei u stanje unoenja naredbi. Prelazak se vri pritiskom na
tipku Esc ili Ctrl+c. Oba naina e nas vratiti u stanje unoenja naredbi i daljnje
unoenje teksta editor e shvatiti kao naredbe (dokle god se ne navede naredba za unos
teksta koja e izvriti prelazak u stanje unosa teksta).
UREIVANJE DIREKTORIJA
Struktura UNIX datotenog sistema (stablo) omoguava nam da jednostavno
organizujemo svoje podatke. Nakon to smo kreirali datoteku, elimo je ponekad
kopirati u drugi direktorij, promeniti joj ime ili dati razliita imena istim datotekama.
Takoer moemo eljeti kreirati novi direktorij kada kreemo s novim projektom ili
jednostavno elimo obrisati zastarele datoteke (direktorije) da nam ne zauzimaju
suvian prostor na disku.
KOPIRANJE DATOTEKA
esto elimo, pre nego to ponemo sa menjanjem neke datoteke, snimiti njenu kopiju
radi kasnijeg eventualnog vraanja njenog starog sadraja.
cp
Naredbom cp pravimo kopiju datoteke u istom ili razliitom direktoriju. Naredba cp
nema uticaj na originalnu datoteku, pa je stoga to dobar nain da izradimo sigurnosnu
kopiju pre menjanja datoteke. Sintaksa naredbe je sledea:
cp stara-datoteka nova-datoteka

45

gdje je stara-datoteka put do originalne datoteke, a nova-datoteka put do kopije


originalne datoteke. Na primer elimo li kopirati datoteku /etc/hosts u datoteku hosts to
emo uiniti na sledei nain:
oliver% cp /etc/hosts hosts
oliver%
Takoer moemo naredbu cp koristiti i na sledei nain:
oliver% cp stara-datoteka nova-direktorij
oliver%
Ovom naredbom emo napraviti kopiju datoteke stara-datoteka (to je put do originalne
datoteke) u direktorij nova-direktorij bez da promenimo ime datoteke, a gde je novadirektorij put do direktorija gde emo smestiti kopiju datoteke.
elimo li kopirati vie od jedne datoteke istovremeno to moemo postii ili
navoenjem metaznakova ili navoenjem vie datoteka koje elimo kopirati i na kraju
direktorija u koji ih elimo kopirati:
oliver% cp /etc/hosts /etc/asppp.cf .
oliver%
Ovom naredbom kopiramo datoteke hosts i asppp.cf iz direktorija /etc u na trenutni
radni direktorij. Ukoliko datoteka odredina datoteka ve postoji onda e nas naredba
cp pitati da li to stvarno elimo uiniti (Neke druge ljuske automatski obriu postojee
datoteke bez da pitaju korisnika da li to eli. Da bi to izbegli moemo dodati naredbi
cp opciju -i "cp -i stara-datoteka nova-datoteka").
PREIMENOVANJE I POMICANJE DATOTEKA
Ponekad elimo datoteci promeniti ime. Da bi datoteci promenili ime koristimo
naredbu mv. Naredba mv ujedno nam i slui za pomicanje datoteke iz jednog
direktorija u drugi. Sintaksa naredbe je sledea:
mv staro-ime novo-ime
gde je staro-ime poetno ime datoteke, a novo-ime je odredino ime (ime koje e
datoteka imati nakon promene). Ukoliko odredina datoteka postoji mv e nas pitati za
dozvolu pre nego to je obrie (Neke druge ljuske automatski obriu postojee datoteke
bez da pitaju korisnika da li to eli. Da bi to izbegli moemo dodati naredbi mv opciju:
-i"mv -i staro-ime novo-ime").
oliver% mv hosts hosts.old
oliver%
U prethodnom primeru datoteku hosts preimenujemo u datoteku hosts.old. Pogledamo
li sa ls sadraj direktorija videti emo da datoteka hosts vie ne postoji, ali da postoji
datoteka hosts.old.
Ukoliko kod naredbe mv za odredinu datoteku navedemo put do nekog drugog
direktorija datoteku emo prebaciti iz postojei u odredini direktorij:
oliver% mv hosts.old /tmp
U ovom primeru prebacujemo datoteku hosts.old u direktorij tmp.

46

TRAENJE DATOTEKE
Ponekad kada imamo puno datoteka ne moemo se setiti u kom direktoriju se tano
nalazi ona koju traimo. Da bi mogli pretraiti datoteno stablo u potrazi za
"izgubljenom" datotekom pomae nam naredba find. Naredbu find koristimo tako da
navedemo direktorij od kojeg poinjemo pretraivanje, ime datoteke koju traimo i
navoenjem opcije print kojom kazujemo naredbi find da rezultat pretraivanja ispie
na standardni izlaz:
oliver% find /home/vezbe -name "vae-korisniko-ime" -print
/home/vezbe/vae-korisniko-ime
oliver%
oliver% find / -name "vae-korisniko-ime" -print
U prvom primeru traimo datoteku ili direktorij sa imenom "vae-korisniko-ime" i
pretraivanje poinjemo od direktorija /home/vezbe. U drugom sluaju pretraivanje
poinjemo od root direktorija.
KREIRANJE NOVOG DIREKTORIJA
Uobiajeno je da datoteke koje su povezane smetamo u isti direktorij. Uzmimo na
primer da svu elektronsku potu drimo u direktoriju mail, i da elimo ne meati
privremene datoteke sa elektronskom potom. U tom sluaju emo kreirati direktorij
temp u koji emo smestiti privremene datoteke. Naredba kojom kreiramo nove
direktorije je mkdir:
mkdir ime-novog-direktorija
Kao parametar naredbe mkdir navodimo ime novog direktorija:
oliver% cd ~
oliver% mkdir temp
oliver%
U ovom primeru smo u svom home direktoriju kreirali poddirektorij temp (moemo
proveriti sa naredbom ls).
BRISANJE DATOTEKA I DIREKTORIJA
Nakon nekog vremena poelimo obrisati datoteke ili direktorije koji nam vie ne
trebaju. Periodinim brisanjem datoteka i direktorija drimo aurnim svoje datoteno
stablo i oslobaamo prostor na disku (veoma vano na sistemima koji imaju
postavljenu kvotu). Naredba kojom briemo datoteke je rm. Sintaksa naredbe je
jednostavna:
rm ime-datoteke
Kao parametar naredbe rm navodimo ime datoteke koju elimo obrisati. Za brisanje
direktorija koristimo naredbu rmdir, a sintaksa joj je sledea:
rmdir ime-direktorija
Kao parametar naredbe rmdir navodimo ime direktorija kojeg elimo obrisati.

47

Pogledajmo jedan primer:


oliver% cd ~
oliver% mkdir proba
oliver% cp /etc/a* proba
oliver% cd proba
oliver% ls
oliver% rm asppp.cf
oliver% rm a*
oliver% cd ~
oliver% rmdir proba
U ovom primeru prvo smo kreirali poddirektorij proba. Zatim smo u njega kopirali sve
datoteke iz direktorija /etc koje poinju sa a. Promenili smo radni direktorij u proba i
pogledali njegov sadraj. U njemu smo prvo izbrisali datoteku asppp.cf, da bi nakon
toga izbrisali sve datoteke koje poinju sa a. Ponovo smo za radni direktorij izabrali
svoj home direktorij i onda u njemu obrisali poddirektorij proba.
POPRIAJMO S DRUGIM KORISNICIMA
Kao to smo do sada imali prilike videti UNIX je viekorisniki sistem. To znai da
osim nas na UNIX raunaru moe raditi jo korisnika.
KOGA IMA NA RAUNARU?
Da bi saznali ko je trenutno aktivan na "naem" raunaru koristimo se naredbom who
ili finger. Naredbe imaju sledeu sintaksu:
who
finger [ime-korisnika][@ime.raunara]
Kao to se vidi naredba who je sasvim jednostavna i navodimo je bez parametara. Ona
nam daje trenutno aktivne korisnike na raunaru na kome smo pokrenuli naredbu.
Pogledajmo na primeru kako se upotrebljava naredba who i to daje kao izlaz:
oliver% who
elabor pts/0 Apr 16 09:03 (vts.su.ac.yu)
anovak pts/1 Apr 16 09:05 (yunord.net)
mbozic pts/2 Apr 16 09:17 (tippnet.co.yu)
ppetro pts/3 Apr 16 09:22 (vts.su.ac.yu)
Kao rezultat naredba who vraa spisak trenutno aktivnih korisnika. Osim njihovih
imena dobivamo podatak na kojem virtualnom terminalu rade (pts/x), datum i vreme
kada su poeli raditi i mesto (obino raunar) sa kojega su se spojili.
Za razliku od who naredba finger daje neto drugaiji izlaz (u osnovnom obliku):
oliver% finger
Login Name
TTY
Idle When
Where
elabor Eda Labor pts/0
Wed 09:03 vts.su.ac.yu
anovak Albert Novak pts/1
1 Wed 09:05 yunord.net
mbozic Marija Bozic pts/2
Wed 09:17 tippnet.co.yu
ppetro Petar Petrovic pts/3 1 Wed 09:22 vts.su.ac.yu

48

Takoer ovde imamo ime trenutno aktivnih korisnika (Login), ime virtualnog
terminala na kome rade (TTY), datum i vreme poetka rada (When) i od kuda rade
(Where). Osim toga imamo i puno ime korisnika (Name) kao i indikator njegove
aktivnosti (Idle). Indikator aktivnosti nam govori pre koliko vremena je korisnik zadnji
put izvrio neku akciju putem standardnog ulaza (pritisnuo tipku).
Sa naredbom finger moemo dobiti i vie informacija o korisniku, tako da iza naredbe
navedemo korisniko ime:
oliver% finger elabor
Login name: elabor
In real life: Eda Labor
Directory: /home/student/elabor
Shell: /usr/bin/tcsh
On since Apr 16 09:03:32 on pts/0 from vts.su.ac.yu
11 seconds Idle Time
Mail last read Wed Apr 16 09:30:29 1997
No Plan.
Vidimo da smo sada dobili neke osnovne informacije o korisniku raunara. Tu su
korisniko ime (Login name) i njegovo puno ime (In real life), put do njegovog home
direktorija (Directory) i ljuska koju koristi (Shell). Osim tih podataka imamo i podatke
kada se korisnik zadnji put prijavio za rad na raunaru kao i kada je zadnji put proitao
svoju potu.
Za razliku od who s naredbom finger moemo "pogledati" i ko je aktivan na nekom
drugom raunaru. To inimo tako da iza naredbe finger dodamo ime raunara na kome
elimo saznati ko je trenutno aktivan:
oliver% finger @vts.su.ac.yu
[vts.su.ac.yu]
Login Name
TTY Idle When Where
jjovan Jovan Jovanovic - Osno pts/1 1:17 Wed 08:03 vts.su.ac.yu
anovak Albert Novak
pts/0 23 Wed 09:03 tippnet.co.yu
Na nekim raunarima, iz sigurnosnih razloga, ne moete dobiti potpun spisak trenutno
aktivnih korisnika ve morate traiti podatke o tano odreenom korisniku:
oliver% finger jjovan@vts.su.ac.yu
[vts.suac.yu]
Login
Name
TTY Idle When Where
jjovan Jovan Jovanovic-FET pts/6 19:00 Tue10:25 vts.su.ac.yu
ili ukoliko elimo vie podataka o korisniku
oliver% finger -l jjovan@vts.su.ac.yu
[vts.su.ac.yu]
Login name: jjova n
In real life: Jovan Jovanovic - FET
Directory: /home/staff/jjovan
Shell: /usr/bin/tcsh
On since Apr 15 10:25:08 on pts/6 from vts.su.ac.yu
19 hours Idle Time
No unread mail
No Plan.
JEDNOSMERNA KOMUNIKACIJA

49

Nakon to smo saznali ko je trenutno aktivan na raunaru moemo nekome od


korisnika (samo ukoliko je aktivan na raunaru gde i mi) poslati poruku. U tu svrhu
koristimo naredbu write. Naredba ima sledeu sintaksu:
write korisniko-ime [broj-terminala]
Korisniko ime obavezno navodimo, dok broj terminala samo u sluaju kada je
korisnik aktivan na vie terminala istovremeno. Nakon to unesemo naredbu sve to
kucamo na naem terminalu ide korisniku koga smo naveli u naredbi. Za kraj poruke
pritisnemo CTRL+D. Korisniku kome aljemo poruku pojaviti e se na ekranu:
Message from ime-korisnika on oliver (pts/x) [ Wed Apr 16 11:31:38 ] ...
Dakle podaci od koga je poruka s kog terminala je poslana i u koje vreme.

DVOSMERNA KOMUNIKACIJA
Osim jednosmerne komunikacije (samo aljemo poruke u jednom smeru) moemo na
UNIX sistemima ostvariti i dvosmernu komunikaciju. Za dvosmernu komunikaciju
koristimo naredbu talk. Sintaksa naredbe je:
talk ime-korisnika[@ime.raunara]
Kao ime korisnika navodimo korisniko ime osobe s kojom elimo uspostaviti
dvosmernu komunikaciju, dok ime raunara navodimo u sluaju da se ta osoba nalazi
na drugom UNIX raunaru. Nakon to pokrenemo naredbu ekran nam se podeli u dva
dela (u gornjem delu piemo mi, dok u donjem korisnik koga smo pozvali)
isprekidanom linijom.
U gornjem delu nam pie status veze i on je na poetku:
[Waiting for your party to respond]
Za to vreme korisniku koga zovemo se javlja poruka na ekranu kojom ga UNIX sistem
obavetava o pozivu za dvosmernu komunikaciju:
Message from Talk_Daemon@oliver at 11:43 ...
talk: connection requested by jjovan@vts.su.ac.yu.
talk: respond with: talk pero@tippnet.co.yu
Ukoliko korisnik odmah ne odgovori onda se menja status na ekranu u:
[Ringing your party again]
a korisniku s kojim elimo uspostaviti dvosmernu komunikaciju ponavlja se poruka
Message from Talk_Daemon@oliver at 11:43 ...
talk: connection requested by jjovan@vts.su.ac.yu.
talk: respond with: talk pero@tippnet.co.yu
Korisnik kojega se poziva odgovara na poruku sa:
oliver% talk ime-korisnike
Nakon toga se i njemu ekran podeli u dva dela odvojena isprekidanom linijom i pojavi
se poruka

50

[Connection established^G^G^G]
Ta ista poruka se pojavi i na ekranu korisnika koji je inicirao vezu. Nakon toga sve to
piemo u gornjoj polovini ekrana vidi korisnik sa druge strane veze u donjoj polovini.
Vezu prekidamo pritiskom na CTRL+C.
Ukoliko elimo da nam niko ne moe slati poruke (onemoguiti write i talk) moemo
izvriti naredbu:
oliver% mesg n
ili ukoliko elimo omoguiti
oliver% mesg y

TA JE TO E-MAIL?
Do pre nekoliko godina elektronsku potu (u daljnjem tekstu E-mail) koristio je uski
krug ljudi kojima je prvenstveni posao vezan uz raunar (sistem inenjeri, programeri,
), dok je danas E-mail neto bez ega se ne moe u suvremenom svetu. Danas je
sasvim uobiajeno da na vizit kartici uz adresu i broj telefona imate i svoju E-mail
adresu.
Elektronska pota, za razliku uobiajenog naina dostave, zgodnija je za razmenu
informacija. Pre svega tu je "jednostavnost" i brzina dostave takve pote. Naime kod
elektronske pote nije potrebno ekati danima dok se pota ne isporui (u sluaju
telegrama sati), ve je pota na odreditu u roku od nekoliko minuta.
Da bi elektronska pota mogla stii na odredite potrebno ju je adresirati na nekoga i
da postoje odreeni protokoli koji e izvriti sam transport informacije sadrane u Emailu.
E-MAIL ADRESE
elimo li nekome poslati potu moramo znati njegovu adresu. Ukoliko aljemo
"obinu" potu (putem HPT-a) onda moramo na omotnici napisati odredinu adresu da
bi radnici pote znali kome pismo preusmeriti. Slino je i kod elektronske pote samo
to ovde navodimo adresu virtualnog potanskog sanduia. Ta adresa se sastoji od
imena korisnika kome aljemo E-mail i imena raunara (ili servisa) gde se taj korisnik
nalazi:
korisniko-ime@ime-raunara
Da bi mogli nekome poslati E-mail dovoljno je poznavati njegovu E-mail adresu.
PROTOKOLI KOJI PRENOSE POTU
Da bi raunar mogao razmenjivati elektronsku potu potrebno je da poznaju
konvenciju komunikacije koju nazivamo protokol. Dva protokola koja su najvanija za
razmenu elektronske pote su SMPT (Simple Mail Transfer Protocol) i POP3 (Post
Office Protocol). SMPT protokol koriste raunari u meusobnom "razgovoru"

51

prilikom prenosa elektroniske pote, dok POP3 protokol preteno koriste razni E-mail
itai putem kojih sa udaljenog mesta pristupamo raunaru koji je na elektronski
potanski posluitelj (obino je to raunar na kome nam je otvoren korisniki raun).
Za razliku od SMPT protokola, POP3 protokol zahteva identifikaciju korisnika pre
nego to izvri bilo kakav prenos elektronske pote.
E-MAIL KLIJENTI
Da bi potu mogli predati naem elektronskom potanskom posluitelju (E-mail
serveru) moramo koristiti neki mail klijent program kojim emo mu dostaviti nau
elektronsku potu da bi je on mogao dalje poslati.
Na UNIX raunarima takvih klijent programa ima vie: mail, elm, pine, .PC
raunari imaju takoer vie verzija takvih klijent programa: mail klijent u Internet
Exploreru i Netscape-u, Eudora, .
Svaki od tih programa ima svoje prednosti i mane. Mi emo kroz daljnji tekst neto
detaljnije obraditi pine klijent program. On je odabran iz razloga to se nalazi na UNIX
raunaru tako da ga moemo koristiti u sluajevima kada nismo u mogunosti slati
elektronsku potu direktno sa PC-a, a ima (za razliku od drugih UNIX programa za
slanje i itanje elektronske pote) jednostav korisniki interfejs (sa helpom) i dobar
tekst editor.
PINE
Pine program startujemo jednostavno tako da napiemo:
oliver% pine
Nakon toga e nam se pojaviti par poruka o tome da li elimo da nam pine kreira
poddirektorij sa naim potanskim fahovima i konfiguracionu datoteku, te na kraju da
li elimo da nam poalje E-mailom upute za korienje pine-a. Nakon to smo uspeno
proli inicijalizaciju programa pojavi nam se na ekranu meni sa osnovnim naredbama
pine-a:
PINE 3.91 MAIN MENU Folder: INBOX 0 Messages
? HELP - Get help using Pine
C COMPOSE MESSAGE - Compose and send a message
I FOLDER INDEX - View messages in current folder
L FOLDER LIST - Select a folder to view
A ADDRESS BOOK - Update address book
S SETUP - Configure or update Pine
Q QUIT - Exit the Pine program
Copyright 1989-1994. PINE is a trademark of the University of Washington.
[Folder "INBOX" opened with 0 messages]
? Help P PrevCmd R RelNotes
OTHER CMDS L [ListFldrs] N NextCmd K KBLock
Prilikom korienja pine-a u svakom trenutku imamo opis naredbi, koje moemo
koristiti, na dnu ekrana (znak ^ oznaava tipku CTRL koja mora biti pritisnuta
zajedno sa znakom koji sledi iza nje). Sada smo spremni da poaljemo na prvi E-mail.

52

Izaberimo opciju C COMPOSE MESSAGE (pritiskom na tipku C ili pomicanjem


strelica pa pritiskom na Enter) i pred nama e se pojaviti novi sadraj u kojem se od
nas trai da unesemo ime osobe kojoj aljemo poruku (To: ), ime osobe kojoj elimo
poslati kopiju poruke (CC: ), put do datoteke koju elimo pridruiti naoj E-mail
poruci (Attchmnt: ), naslov poruke (Subject: ) i na kraju sam tekst poruke.
Od svih ovih polja vano je da upiemo tanu adresu primaoca poruke, a poeljno je i
navesti naslov poruke. Nakon to unesemo sadraj poruke poruku aljemo pritiskom na
CRTL+X.
KAKO PROITATI PRISTIGLE PORUKE
elimo li proitati pristigle (ili pohranjene poruke) izaberemo opciju L FOLDER
LIST. Ta opcija e nam prikazati postojee potanske fahove (u svakom potanskom
fahu mogu se nalaziti poruke, a slue nam da bi lake mogli razvrstavati i organizovati
svoju elektronsku potu). Potanski fah u koji nam uvek stie tek pristigla elektronska
pota (kasnije je moemo razvrstavati u druge fahove ili zauvek obrisati) je INBOX.
Da bi proitali poruke u INBOX-u selektujemo isti i pritisnimo enter (na taj nain
emo dobiti sadraj INBOX-a). Zatim selektujemo poruku koja nas zanima i
pritisnimo opet enter da bi dobili njen sadraj.
Nakon to smo proitali poruku sa I se vraamo u indeks poruka, a sa M u glavni
menu.
ZAGLAVLJE
Svaka E-mail poruka sastavljena je iz dva dela, zaglavlja (header) i same poruke
(body). Zaglavlje sadri sve linije teksta od prve linije do prvog praznog reda. Sve iza
zaglavlja je poruka.
Zaglavlje ima vie linija koje su dodane samoj poruci. Pogledajmo kako izgleda jedno
zaglavlje E-mail poruke:
Date: Thu, 9 Jan 1997 13:10:17 -0500 (EST)
From: Jovan Jovanovic <amilas@lagrange.rutgers.edu>
To: Petar Petrovic <ppetro@vts.su.ac.yu>
Subject: Marijina adresa
Iz samog zaglavlja moemo videti kada je poruka poslana (Date), ko ju je poslao
(From) kome (To) i koji je naslov poruke (Subject). Iz podatka From znamo adresu
poaljitelja i na tu adresu moemo poslati odgovor.
REPLY I FORWARD E-MAILA?
Ponekad kada od nekoga dobijemo elektronsku potu elimo na tu poruku odmah
odgovoriti ili je preusmeriti nekome drugome.
Reply podrazumeva odgovaranje na poruku s time da sam program iz dolazne poruke
izvue adresu poaljioca i uzme je kao adresu korisnika kome aljemo odgovor.
Praktino to znai da ne moramo sami upisivati adresu primaoca (kome aljemo
odgovor), ve to za nas uini raunar. Reply moemo napraviti u programu pine tako

53

da kada doemo u direktorij (folder) elektronskih selektiramo poruku na koju elimo


odgovoriti i pritisnemo tipku R. Nakon toga pine nas pita da li elimo ukljuiti
originalnu poruku u odgovor (obino se kada odgovaramo na neku poruku ukljui
jedan njen deo da bi onaj koji je prima znao na ta mu to tano odgovaramo). Ukoliko
elimo ukljuiti primljenu poruku u odgovor onda odgovorimo sa Y. Dalje nas pine
pita da li elimo da poruku poaljemo samo poaljiocu ili svima koji su dobili ovu
poruku (Reply to all recipients?). Ukoliko elimo da samo onaj koji je autor poruke
dobije na odgovor odgovoriti emo sa N (ne) ili ukoliko elimo da poruku dobiju svi
oni koji su navedeni u copy listi (CC:) odgovoriti emo sa Y (da).
Sa naredbom forward (aktiviramo je tako da pritisnemo tipku F kada je selektovana
ona poruka u folderu koju elimo nekome proslediti) prosleujemo selektovanu
poruku. Uzmemo da smo dobili poruku na koju mi ne moemo odgovoriti, ali znamo
ko moe. U tom sluaju bi jednostavno tu poruku prosledili (forward) na adresu
korisnika koji moe na tu poruku i odgovoriti (eventualno bi dodali poruci neko kratko
objanjenje).
Prosleivanje poruke aktiviramo sa pritiskom na tipku F (kada nam je u folderu
aktivirana poruka koju elimo proslediti. Zatim nam se na ekranu pojavi ekran kao
kada aljemo E-mail s tom razlikom da ve imamo tekst i naslov poruke upisan a mi
trebamo samo dodati adresu korisnika kome aljemo poruku (i eventualno izmeniti
naslov poruke ili tekst).
POTANSKE LISTE
Ponekad grupa ljudi koju vezuje neki zajedniki interes povezana je u jednu listu
korisnika koju nazivamo potanska lista. Sa potanskom listom se komunicira putem
mail programa. Kada elimo poslati poruku svim pretplatnicima potanske liste onda
jednostavno navodimo E-mail adresu potanske liste dok e se sam posluitelj (server)
potanske liste pobrinuti da je svi njeni pretplatnici dobiju. Kada se elimo pretplatiti
(ovde se ne radi o nikakvom stvarnom plaanju) na potansku listu onda svoj zahtev
aljemo na E-mail adresu posluitelja potanske liste sa zahtevom za pretplatu. Dakle
kod potanskih lista treba razlikovati dve adrese:
adresa samog posluitelja potanske liste listproc@ime-raunara
adresa same liste ime-liste@ime-raunara
Na samu potansku listu pretplata moe biti automatska (govorimo o javnoj potanskoj
listi) i tada je ta lista otvorena za sve korisnike ili pretplatu moe izvriti samo vlasnik
liste (tada govorimo o privatnoj potanskoj listi).
Sama lista moe biti moderirana ili nemoderirana. Ukoliko je lista moderirana onda
sve poruke dolaze prvo do vlasnika potanske liste te sam vlasnik odluuje koje poruke
mogu doi na listu a koje ne.
Sam posluitelj potanske liste razume odreene naredbe primljene putem elektronske
pote na njegovu adresu s kojima korisnici mogu izvriti odreene akcije. Prilikom
slanja naredbe posluitelju potanske liste za adresu navedemo adresu posluitelja
potanske liste, kao naslov poruke ne navodimo nita dok kao poruku piemo naredbe
koje razume posluitelj potanske liste.

54

Pogledajmo

ukratko

koje

naredbe

razume

posluitelj

potanske

liste:

Navoenjem samo naredbe help dobiti e se osnovna uputstva o


naredbama koje razume posluitelj potanske liste. Navoenjem
help [naredba]
dodatnog argumenta naredbe dobiti e se detaljnija uputstva za
specifinu naredbu.
subscribe <lista> Jedini nain da se korisnik "pretplati" na listu. Obavezno se mora
<ime prezime> navesti naziv liste (malim slovima), te ime i prezime korisnika.
unsubsrcibe
Ove dve naredbe su dva naina na koji korisnik moe maknuti
<lista>
svoje ime s potanske liste (ponititi pretplatu).
signoff <lista>
recipients <list> Dva naina na koja korisnik moe dobiti podatke ko je sve
review <list>
pretplaen na potansku listu.
lists
Daje popis potanskih lista kojima moemo pristupiti
which
Daje popis potanski lista na koje je korisnik preplaen.
Evo sada primera kako dobiti osnovne informacije o samim naredbama, postojeim
listama i izvriti pretplatu na listu.
help
list
subscribe biks-list Ime Prezime
Ako ovo poaljemo kao poruku posluitelju potanske liste on e svaki red shvatiti kao
posebnu naredbu. Na help e poslati na nau E-mail adresu kratko uputstvo o
korienju liste, na list e poslati trenutno dostupne liste na posluitelju, dok e
naredba subscribe izvriti pretplatu na potansku listu biks-list korisnika koji se zove
Ime Prezime (kao odgovor e nam posluitelj poslati poruku o tome da smo se
pretplatili na potansku listu biks-list).
TA JE TO FTP?
FTP je skraenica od File Transfer Protocol, to jest protokol za prenos datoteka. FTP
protokol je namenjen prenoenju datoteka sa/na udaljeni raunar (remote computer).
Da bi mogli ostvariti sam prenos FTP protokolom moramo imati klijent aplikaciju s
jedne strane i posluitelja (server) s druge strane.
FTP posluitelj je na UNIX raunarima jedan pozadinski proces koji se brine o
spajanju klijent aplikacije te prenoenju datoteka sa i na posluitelja. Prilikom
pristupanja ftp posluitelju on na poetku veze vri identifikaciju korisnika koji se
spaja. Pri identifikaciji unosimo svoje korisniko ime i lozinku koju imamo na tom
raunaru:
vts% ftp vts.su.ac.yu
Connected to vts.su.ac.yu.
220 vts FTP server (Version wu-2.4-ci(3) Fri Apr 26 12:35:48 MET DST
1996) ready.
Name (vts.su.ac.yu:ppetrov): vts
331 Password required for vts.
Password:
230 User vts logged in.

55

ftp>
Ukoliko je sam ftp posluitelj ima konfiguraciju kao javni (public) onda mu moemo
pristupiti i preko korisnikog imena ftp ili anonymous. U tom sluaju kao lozinku
navodimo svoju e-mail adresu:
vts% ftp ftp.vts.su.ac.yu
Connected to vts.su.ac.yu.
220 vts FTP server (Version wu-2.4-ci(3) Fri Apr 26 12:35:48 MET DST
1996) ready.
Name (vts.su.ac.yu:ppetrov): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
230 Guest login ok, access restrictions apply.
ftp>
Na javnom ftp posluitelju obino se nalaze razni public, freeware i shareware
programi. Svi ti javni programi spremljeni su u poddirektoriju pub koji je anonymous
korisnicima jedino i dostupan. Osim pub poddirektorija tu je jo i poddirektorij
incoming ili inbox u koji anonymous korisnici mogu sputati datoteke. Obino se u
taj direkotrij moe pisati, ali se iz njega ne moe itati ve administrator javnog ftp
posluitelja odluuje koji sadraj e biti dostupan drugim korisnicima:
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
usr
bin
etc
dev
pub
incoming
226 Transfer complete.
98 bytes received in 0.022 seconds (4.3 Kbytes/s)
ftp>
Ftp klijent progam moemo pozvati na dva naina; navoenjem samo naredbe ftp ili
navoenjem naredbe ftp s imenom ftp posluitelja kao parametrom:
ftp> ftp
ili
ftp> ftp ftp.vts.su.ac.yu
U prvom sluaju e nam se pojaviti ftp prompt (oznaka da je program spreman primiti
nae naredbe), dok e u drugom ftp klijent prvo nastojati uspostaviti vezu sa ftp
posluiteljem pa tek nakon identifikacije e se pojaviti ftp prompt.
Nakon toga ftp klijent je spreman prihvatiti nae naredbe. Naredbe koje razumije ftp
klijent su sledee:
account [passwd]
ascii

Omoguuje nam da unesemo korisniku lozinku na


posluitelju radi pristupa njegovim resursima.
Prebacuje se u nain prenosa ASCII datoteka
56

binary

Prebacuje se u nain prenosa binarnih datoteka (obino tako


prenosimo sve podatke)
bye
Prekidamo vezu sa posluiteljem i izlazimo iz ftp programa
cd
Mijenjamo radni direktorij na posluitelju (indentino UNIX
naredbi cd)
close
Prekidamo vezu sa posluiteljem i vraamo se interpreter
naredbi (ftp prompt)
get udaljena-datoteka
Traimo od posluitelja datoteku navedenu kao parametar
(udaljena-datoteka) i prenosimo je na lokalni raunar
hash
Ispisuje znak # za svaki preneseni blok od 8192 byte-a
(zavisno od ftp klijent programa ovaj broj moe varirati)
lcd
Menjamo radni direktorij na lokalnom raunaru
ls
Listamo sadraj radnog direktorija na posluitelju
mget udaljene-datoteke Traimo od posluitelja da nam prenese vie datoteka i
smesti ih u lokalni radni direktorij. Moemo kao parametar
navesti vie datoteka ili koristiti metaznakove
mput lokalne-datoteke
Traimo od posluitelja da od nas preuzme vie datoteka i
smesti ih u svoj radni direktorij. Moemo kao parametar
navesti vie datoteka ili koristiti metaznakove
open ime-raunara
Uspostavljamo vezu sa ftp posluiteljem na raunaru koje
smo naveli kao parametar open naredbe
prompt
Ukljuuje i iskljuuje interaktivne upite. Kada koristimo
naredbe za rad sa vie dokumenata (mget i mput) onda
moemo ukljuiti ili iskljuiti upit o svakoj datoteci.
Naredbom prompt uvek menjamo stanje (ako su interaktivni
upiti ukljueni prompt naredba e ih iskljuiti i obrnuto)
put lokalna-datoteka
Traimo od posluitelja da preuzme od nas datoteku i smesti
je u svoj radni direktorij
pwd
Traimo od posluitelja da nam ispie koji je njegov trenutni
radni direktorij
quit
Identino kao i bye
rmdir
udaljeni- Traimo od posluitelja da kreira poddirektorij u svom
direktorij
radnom direktoriju
user ime-korisnika
Ukoliko smo prilikom uspostave veze uneli krivo korisniko
ime te nismo proli proces identifikacije, korienjem
naredbe user moemo ponovo uneti korisniko ime i lozinku
da bi mogli pristupiti do eljenih resursa ftp posluitelja
Pogledajmo sada na primeru kako izgleda prenos datoteke sa posluitelja i na
posluitelj:
vts% ftp ftp.vts.su.ac.yu
Connected to vts.su.ac.yu.
220 vts FTP server (Version wu-2.4-ci(3) Fri Apr 26 12:35:48 MET DST
1996) ready.
Name (ftp.vts.su.ac.yu:ppetrov): vts
331 Password required for vts.
Password:
230 User vts logged in.

57

ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
.cshrc
.profile
.login
.netscape-preferences
226 Transfer complete.
49 bytes received in 0.0047 seconds (10 Kbytes/s)
ftp> bin
200 Type set to I.
ftp> hash
Hash mark printing on (8192 bytes/hash mark).
ftp> get .login
ftp> get .login
200 PORT command successful.
150 Opening BINARY mode data connection for .login (3188 bytes).
#
226 Transfer complete.
local: .login remote: .login
3188 bytes received in 0.01 seconds (3e+02 Kbytes/s)
ftp> put arj.exe
200 PORT command successful.
150 Opening BINARY mode data connection for arj.exe.
###############
226 Transfer complete.
local: arj.exe remote: arj.exe
116260 bytes sent in 0.24 seconds (4.7e+02 Kbytes/s)
ftp>

58

POJAM SOFTVERA
UVOD
Realizacijom, nabavkom raunarskog hardvera dobili smo jedno mono sredstvo, koje
moe mnogo koristiti, ako se zna kako. To znanje je tzv. raunarski softver (programi),
niz instrukcija koje vode raunar pri reavanju nekog konkretnog zadatka.
Softver se nalazi na nekom memorijskom
medijumu (na hard disku, disketi, CD ROM-u) ili
u operativnoj memoriji raunara (u ROM-u), a pre
upotrebe mora se upisati u centralnu memoriju
(RAM memoriju) kako bi postao operativan.

Tvrdi disk (hard disk): Masovna


memorija sa direktnim pristupom
sastavljena iz vie diskova, ija je
povrina namagnetisana. Tvrdi disk
je smeten u jednom specijalnom
drajvu, koji se obino naziva
Viiester-drajv. Pristup podacima,
koji se nalaze na tvrdom disku, se
vri preko upisno/itajuih glava.
Flopi disk (disketa): Vrsta nosioca
podataka sa direktnim pristupom.
Disketa je elastini disk od plastike,
ija je povrina namagnetisana. Ona
je uvek smetena u plastini omot,
koji je titi.
CD - ROM: Optiki disk na kome
se smetena informacija ne moe
izbrisati.

Postoje u principu dva naina da se obezbedi potreban softver za raunar. Softver se ili
kupuje ili razvija. Teko je rei koji je od ova dva naina bolji. Najverovatnije je
kombinacija ova dva reenja ono pravo reenje, jer poeti razvijati softver od nule,
znai biti uvek u velikom zaostatku, a kupovati uvek najnoviji softver, znai ostati
uvek u potpunoj zavisnosti od onog koji ga pie i praktino nikada ne znati kako se
dotini problem reava. Normalno, pisanje nekih programa ne treba ni da pada na
pamet, kao to su operativni sistemi raunara, ili veoma popularni (i jeftini) korisniki
programi za pisanje, crtanje itd.

60

Pisanje softvera je postupak koji se naziva


programiranje raunara. Program, prema tome,
predstavlja niz ciljanih koraka (kojima je do u
detalje opisan algoritam, odnosno postupak za
reenje nekog problema) da ih raunar razume, pa
da mogu biti i izvedeni u raunaru, kako bi se dolo
do reenja. Naina na koji softver moe biti napisan
ima vie.

Algoritam: Pojam algoritma je


jedan od osnovnih pojmova u
informatici. Algoritam je opti
postupak za reavanje jednog
problema (ili klasa problema), koji
posle konanog broja jednoznanih
koraka daje reenje problema. Osim
ovoga, algoritam mora da sadri
tano uputstvo za svako stanje koje
se moe pojaviti prilikom obrade
zadatog problema. Svaki ispravan
program nije nita drugo do opis
jednog algoritma. Prema tome,
programski jezici su jezici koji slue
za formulisanje algoritama.

MAINSKO PROGRAMIRANJE
Mainsko programiranje je najnii nivo programiranja raunara, i kao to je to ve
napomenuto, za ovakav pristup reavanju programskih problema potrebno je, pored
problema koji se reava, poznavati i arhitekturu procesora i celokupnog hardvera na
kojem e se problem raditi. Praktino to znai da treba poznavati osnovne instrukcije
za manipulisanje podacima na relaciji ulaz/izlaz ! procesor ! memorija (slika 1.),
a one su specifine za svaki procesor i nazivaju se jednim imenom mainske
instrukcije.

Slika 1.: Blok-ema raunara

61

ASEMBLER
Zbog
nepreglednosti
programa
napisanih
mainskim instrukcijama, uvodi se skraeni nain
njihovog pisanja, tzv. mnemoniki (simboliki) ili
asemblerski kod, kratko asembler.

Mnemoniki kod (simboliki kod):


Ovaj
atribut
se
dodeljuje
pojmovima, koji slue kao podrka
ljudskom pamenju. Na primer, u
veini asemblera, operacija sabiranja
se obeleava simbolom ADD
(engleski:
sabiranje).
Time
programer odmah zna o kojoj je
operaciji re. Osim operacija, i
podaci mogu imati simbolika
imena (simboliko adresiranje).

Da bi se savladala tehnika programiranja na nivou asemblera, potrebno je poznavati


unutranju logiku raunara, pa uenje osnova ovakvoga programiranja traje neto due,
a programi napisani na ovaj nain nisu ni pregledni ni jednostavni za korigovanje.
Jedina prednost im je brzo izvoenje, jer se u maini izvode direktno.
VII PROGRAMSKI JEZICI
Programiranje raunara pomou asemblera ima i
jedan
veliki
nedostatak.
Univerzalnost
(nezavisnost od tipa raunara na kome se radi), pa
i atraktivnost rada nije takva da bi se raunarima
obezbedilo iroko trite i veliki broj korisnika.
Te injenice su bili svesni i veliki proizvoai
raunara, pa su u borbi za bolji plasman odvajali
velika sredstva za istraivanje metoda za
jednostavnije i korisniku blie programiranje.
Kao rezultat tih istraivanja krajem pedesetih
godina pojavio se prvi vii programski jezik kojim
je bilo omogueno programiranje nezavisno od
tipa raunara. Programski jezik je bio namenjen
za optu upotrebu, i to, pre svega, za inenjerskotehnike probleme.

Skup instrukcija: Skup svih


instrukcija
jednog
raunara
(mainski jezik), odnosno naredbi
jednog programskog jezika.
Izvorni program: Program napisan
na nekom simbolikom ili viem
programskom jeziku. Karakteristika
izvornog programa je da se on ne
moe direktno izvriti na raunaru,
ve se pre toga mora prevesti u
objektni
program
korienjem
odgovarajueg
prevodioca.
Programski jezik na kome je izvorni
program napisan nazivamo izvorni
programski
jezik.
Veina
proizvoaa ne isporuuje svoje
izvorne programe korisnicima, ve
samo
odgovarajue
izvrne
programe.

Ideja na kojoj je baziran vii programski jezik je


veoma jednostavna. Ako ve u raunaru postoji
operativna memorija u kojoj se mogu pamtiti
podaci ili instrukcije, zato ne iskoristiti tu
osobinu memorije i popamtiti, na primer niz
asemblerskih instrukcija kojima se sabiraju,
mnoe, oduzimaju brojevi, raunaju logaritmi itd.
Svi ti skupovi instrukcija pamte se pod pogodnim imenima i mi samo, pozivajui
se na ta imena (skup instrukcija jezika), piemo program, odnosno odreujemo tok
raunarskih i logikih operacija u raunaru. Tako se program napisan na

62

viemprogramskom jeziku prvo u maini prevede objektni kod pa na mainski jezik


i tek onda, kada ga maina razume, znai ako nema greaka, on se izvrava.
Objektni
program:
Rezultat
prevoenja
jednog
izvornog
programa korienjem asemblera ili
nekog
prevodioca.
Objektni
program je predstavljen nizom
mainskih
instrukcija.
Neke
objektne programe je mogue
odmah izvriti, dok se drugi, pre
izvrenja, moraju povezati sa
drugim objektnim programima.
Izvrni program: Oblik programa
koji omoguuje njegovo direktno
izvrenje na jednom raunaru.
OBJEKTNO ORIJENTISANI JEZICI
Objektno orijentisana arhitektura je arhitektura u kojoj je sve predstavljeno kao objekat
(procesi, tekst, U/I-operacije itd.). Objekti su srukture podataka u memoriji kojima
manipulie celokupan sistem (hardver i softver), oni daju visokorazinski opis koji
uzima u obzir visokorazinski korisniki interfejs. Objekti imaju razne deskriptore
imena, ukazivae i obeleja. Ovi deskriptori takoe sadre informaciju o tipu objekta i
opis mogunosti datog objekta. Sistemi objektivne arhitekture se mogu smatrati
proirenjem ili generalizacijom sistema kvalifikativne arhitekture, pa se i na njima
mogu temeljiti zatita i raunarska bezbednost.
Objektno orijentisani programski jezik je programski jezik za objektno orijentisani
programski sistem. U jednom takvom sistemu se koncept procedure i podataka,
realizovan u konvencionalnim programskim sistemima, zamenjuje konceptima
objekata i poruka: objekt predstavlja pakovanje informacija i opis za njihovu
manipulaciju, a poruka je specifikacija jedne od manipulacija objektom. Za razliku od
procedura koje opisuju kako se izvodi manipulacija, poruka specifikuje ta poiljalac
eli da se uradi, a primalac odreuje ta je se tano dogoditi.

63

INSTRUKCIJE RAUNARA
S opteg stanovita raunara, sutina svakog
digitalnog izraunavanja je da se kao rezultat dobije
reenje u obliku funkcije:
X 1 = F1 ( x1 , x 2 ....x n )
1.1
Y2 = F2 ( x1 , x 2 ....x n )
za elemente date na ulazu x1 , x 2 .... . U oba sluaja
ulazne i izlazne rei raunara predstavljae skup 0 i
1, koje su na odgovarajui nain smetene u
registrima raunara i memorijskih elija. Rei mogu
biti predstavljene razliitim skupom brojeva i
alfanumerikih nizova, koji opisuju problem
logikim stanjima.
Traena reenja mogu biti veoma dugaka i
izuzetno komplikovana. Stoga moraju biti razbijena
u elementarne matematike relacije koje su
definisane skupom instrukcija raunara. Takav
sreen niz elementarnih instrukcija, utvren radi
sprovoenja odreene operacije raunara, naziva se
program.

Raunar: Ureaj ili sistem koji je u


stanju da obavlja neku sekvenciju
operacija na jasno i eksplicitno
definisan nain. Te operacije su
esto numerika izraunavanja ili
manipulacije
podacima,
ali
obuhvataju takoe i ulaz/izlaz
operacije u okviru sekvencije mogu
da
zavise
i
od
odreenih
podatkovnih vrednosti. Definicija
sekvencije se ziove program.
Raunar ima ili uskladiteni
program ili oieni program.

Instrukcija: Opis operacije koju


treba da izvede raunar. Sastoji se iz
iskaza operacije koja treba da se
izvede i neke metode specificiranja
operanada (ili njihovih lokacija) i
odredita
rezultata
operacije.
Instrukcije se esto dele u klase kao
to su aritmetike, logike, U/I itd.
Mogu, ali ne moraju biti fiksne
duine.
Program: Skup iskaza koji se moe
dati kao celina jednom raunarskom
sistemu i koristiti za usmeravanje
ponaanja sistema. Proceduralni
program
precizno
definie
proceduru koju raunarski sistem
treba da sledi da bi se dobio traeni
rezultat.
Nasuprot
tome,
neproceduralni program specificira
ogranienja
koja
proizvedeni
rezultati moraju zadovoljiti ali ne
daje proceduru dolaska do rezultata,
nju bira sam raunar.

Da bismo mogli da utvrdimo koji raunar moe ekonominije i efikasnije da obavi


odreeni zadatak, tj. da rei problem, najsigurnije je ako se napie program na
asembler jeziku i uporedi:
broj potrebnih memorijskih rei da bi se program stavio u memoriju i
broj ciklusa raunara da bi se taj prgram izvrio.

64

Ciklus izvravanja je najbolje merilo brzine rada raunara. Stvarno vreme - t r izvravanja predstavlja proizvod iz broja ciklusa - nc - i vremena trajanja ciklusa - t c :
t r = nc t c

1.2

S gledita pouzdanosti rada raunara povoljnije je da se program izvrava s manjim


brojem ciklusa, a uveanim vremenom trajanja ciklusa.
Na taj nain moemo konstatovati da jedino
asemblerski jezik omoguava stvarno poreenje
efikasnosti razliitih raunara. Putem programa s
viim jezicima teko je, pa ak i nemogue, da se
oceni broj procesa vraanja operacija, prekidanja
procesa, memorijskih lokacija i drugih faktora
bitnih za efikasno izvravanje programa. U takvom
sluaju je potrebno istovremeno ukljuiti u analizu i
kompilator (compiler prevodilac) programa kao i
raunar.

Asemblerski jezik: Notacija kojom


se programi u mainskom kodu
predstavljaju u itljivom obliku.
Asemblerski
jezik
dozvoljava
programeru da koristi alfabetske
kodove operacija sa mnemonikim
znaenjem, da sam bira simbolika
imana za mainske i memorijske
registre i kako je njemu najzgodnije
specificira adresirajue sheme.
Takoe
dozvoljava
upotrebu
razliitih
brojnih
osnova
za
numerike konstante, a korisniku
omoguava da pripoji obeleja
programskim linijama tako da ostali
delovi programa pomou simbola
mogu upuivati na te linije.

PODELA INSTRUKCIJA
Svaki raunar ima odreeni broj instrukcija koje koristi, a koji zavisi od kapaciteta i
vrste raunara, odnosno njegove namene. Prilikom izrade programa mi smo ogranieni
tim unapred definisanim skupom.
Sve instrukcije dele se prema tome kakav saobraaj podataka unutar raunara
izazivaju. Tako imamo podelu prema delovima raunara unutar kojih se kreu podaci
usled dejstva instrukcije ili prema tome kakav zadatak obavlja koja instrukcija (Tabela
9).
Tabela 9: Podela instrukcija prema delovima raunara
instrukcije
opis instrukcija
memorijske instrukcije
odnose se na tok podataka u vezi s memorijom (memory
reference instructions)
registarske instrukcije
odnose se na tok podataka izmeu i u vezi registara
(register reference instructions)
ulazno-izlazne
odnose se na kretanje podataka od periferne jedinice ka
instrukcije
centralnoj jedinici i obrnuto (input-output reference
instructions)

65

Instrukcije moemo jo svrstati u sledee grupe (tabela 10.):


Tabela 10.: Podela instukcija prema zadacima
instrukcije
opis instrukcija
aritmetike i logike instrukcije
definiu operaciju izmeu dva operanda,
odreujui istovremeno mesto izvora i smetaja
podataka, mesto smetaja gde se, u stvari, nalazio
drugi operand postaje i mesto rezultata tako da
menja sadraj
instrukcije za izmetanje podataka koriste se za transfer podataka iz memorije u
radni registar akumulator i nazad, ovom
instrukcijom odreen je izvoz podataka, smer
kretanja i odredino mesto
upravljake instrukcije
koriste se za donoenje odluke na bazi statusa u
toku procesa, ispitivanjem statusa dovode do
grananja kojim se program dalje usmerava
operacijske instrukcije
se odnose na samo jedan operand, obino onaj u
akumulatoru, stoga se koriste za brisanje sadraja
akumulatora,
rotiranje,
komplementiranje,
pomeranje i slino
instrukcije
za
uvoenje slue da se ostvari grananje procesa s glavnog
podprograma
programa na podprogram i povratak nazad na
glavni
MIKROPROCESOR INTEL 8086
esnaestobitni mikroprocesor Intel 8086 je kompatibilan na nivou zbirnog jezika sa
svojim osambitnim prethodnicima (Intel 8080 i 8085). Intel 8086 ima dodatne
procesne sposobnosti:
8-bitnu i 16-bitnu aritmetiku (ukljuujui mnoenje i deljenje),
efikasne operacije za rukovanje bitovima,
skup instrukcija za izvoenje operacija za rukovanje nizovima bajtova i
nizovima rei (byte, word, string),
dinamiku relokatibilnost programa i
direkto adresibilan prostor od 1 M bajta i U/I prostor od 64 kB
adresibilnih
Blok ema mikroprocesora I8086 je na slici 9. Funkcionalno mikroprocesor I8086
moe se podeliti na dva dela:
jedinicu za izvoenje instrukcija i upravljanje (EU Execution Unit) i
jedinicu za povezivanje sa sabirnicom (BIU Bus Interface Unit).
U jedinici za izvoenje i upravljanje EU nalaze se etiri esnaestobitna reistra, koji su
adresibilni i kao osambitni registri (ah, al, bh, bl, ch, cl, dh i dl), dva esnaestobitna
pokazivaa (SP stack pointer i BP pokaziva baze), dva indeksna registra (izvorni
indeksni registar SI i odredini indeksni registar DI), te esnaestobitna aritmetikalogika jedinica sa dva esnaestobitna registra operanda nedostupna programeru.
Indikatorski registar (registar uslova) je takoer u sklopu jedinice EU i ima sledee
zastavice:
66

AF (Auxiliary Carry) pomoni prenos,


CF (Carry) prenos,
DF (Direction) smer rukovanja na nizu / auto-inkrementiranje ili autodekrementiranje,
IF (Interrupt Enable) omogui prekid,
OF (Overflow) pretek,
PF (Parity) parnost,
SF (Sign) predznak i
TF (Trap) zastavica zamke, postavlja procesor u stanje izvoenja
programa korak po korak.

67

Slika 9. : Funkcionalna blokema mikroprocesora I8086


Pre opisa jedinice za povezivanje sa sabirnicom (BIU) potrebno je opisati organizaciju
memorijskog prostora za mikroraunar na osnovi mikroprocesora I8086.

68

Adresibilni memorijski prostor se sastoji od 1 M bajta direktno adresabilnih lokacija.


Budui da mikroprocesor I8086 ima 16-bitnu aritmetiku jedinicu rukuje sa
esnaestobitnim podacima, potreban je dodatni mehanizam za izraunavanje adresa u 1
M bajtu memorijskog prostora. Memorija mikroraunara na osnovi I8086 podeljena je
na segmente, od kojih svaki ima maksumalnu veliinu od 64 k bajta. Svaki segment
zapoinje na adresi koja je deljiva sa esnaest. U svakom trenutku sadraji etiri takvih
segmenata su direktno adresibilni. Segmenti se mogu prekrivati. Ti segmenti su:
CS tekui kodni segment,
DS tekui segment podataka,
SS tekui segment stack-a i
ES posebni segment.
esnaest znaajnijih bitova adrese svakog tekueg segmenta sadrani su u 16-bitnim
segmentima-registrima, koji su elementi jedinice BIU. Slika 10 prikazuje generisanje
adrese uz pomo segmentnog registra. Na primer, sadraj kodnog registra CS odreuje
tekui kodni segment, adresa instrukcije je relativna u odnosu na sadraj CS i sadraj
IP (broja instrukcije), koji je pomak u odnosu na CS.

Slika 10.: Generisanje adresa uz pomo segmentnog registra


Dvadesetobitna fizika adresa dobijena je
sabiranjem esnaestobitne adrese pomaka i
esnaestobitne adrese segmenta sa 4
pridodana najmanje znaajna bita koja su
jednaka nuli. Funkcije segmentnih registara
u jedinici BIU su sledee: sadraj registra
CS definie tekui kodni segment. Sve
instrukcije se itaju u odnosu na CS, a
sadraj
pokazivaa
instrukcije
IP
(Instruction Pointer) slui kao ofset. Sadraj
registra DS definie tekui segment
podataka. Svako pozivanje podataka
relativan je u odnosu na sadraj registra DS,

69

Stog (stack):
1.LIFO stog. Linearna lista u kojoj
se svi pristupi, umetanja i
odstranjenja odvijaju na jednom
kraju liste, koji se zove vrh (top). To
podrazumeva pristup na bazi
poslednji unutra prvi napolje:
element koji je poslednji umetnut u
listu, prvi e biti odstranjen.
2. FIFO stog. Kada je prvi umetnuti
element u linearnu listu ujedno i
prvi element koji se odstranjuje, re
je o potisnom stogu, poznatijem kao
red ekanja.

izuzev onih koji se koriste registrima BP (Base Pointer) i SP (Stack Pointer).


Sadraj registra SS (Stack Segment) definie tekui segment stack-a (stoga). Svako
pozivanje podataka koje se koriste registrima SP ili BP relativan je u odnosu na sadraj
registra SS (tu su ukljuene operacije pohranjivanja u stog, uzimanja iz stoga,
pozivanje, prekidi i operacija povratka iz potprograma).
Sadraj registra ES (Extra Segment) definie tekui posebni segment. U ovom
segmentu je video memorija.
Programi, koji se menjaju, odnosno ne rukuju segmentnim registrima su dinamiko
relokatibilni. Takav program moe biti prekinut, memorisan u memoriju na novim
lokacijama i ponovo upuen sa novim sadrajima segmentnih registara.
U sastavu jedinice za povezivanje sa sabirnicom nalazi se struktura FIFO od est
registara za privremeno memorisanje i prosleivanje uitanih instrukcija. Uitane
instrukcije ekaju u repu i ulaze u upravljaku jedinicu. Na taj nain se poveava
brzina rada procesora.
Slika 11 prikazuje programski model mikroprocesora I8086, koji se sastoji od skupa
registara opte namene (AX, BX, CX i DX), skupa registara pokazivaa i indeksnih
registara (SP, BP, SI i DI), skupa segmentnih registara (CS, DS, SS i ES), pokazivaa
instrukcija (IP) i registara uslova (FLAGS).
Slika 11.: Programski model mikroprocesora I8086

Skup instrukcija sastoji se od 97 osnovnih tipova instrukcija koje omoguuju


rukovanje bitovima, reima i nizovima. Skup instrukcija moe biti podeljen na est
podskupova:
instrukcije za prenos podataka,
aritmetike instrukcije,
logike instrukcije,
instrukcije za rukovanje nizovima,
instrukcije za prenos upravljanja i
insrukcije za upravljanje procesorom.
Mikroprocesor I8086 ima bogatiji izbor naina adresiranja u odnosu na svoje
osambitne prethodnike. Instrukcije koje zahtevaju dva operanda omoguuju da jedan
od njih bude smeten ili u registru ili u memoriji, odnosno da drugi operand bude u
registru, ili da bude konstanta. Sve operacije sa dva operanda (izuzev mnoenja,
deljenja i operacija na nizovima) omoguuju da se jedan operand pojavljuje u
70

instrukcijskoj rei kao usputni podatak. Operande u memoriji mogue je adresirati


direktno sa 16-bitnim pomakom ili indirektno sa dodatnim baznim registrom (registar
BX ili registarski pokaziva baze BP slue kao bazni registri) ili/i indeksnim registrom
(SI ili DI) i uz to sa 8-bitnim ili 16-bitnim pomakom.
Prekidnu strukturu ine dve vrste prekida:
nemaskirajui prekid i
maskirajui prekid.
Prekidom se prenosi upravljanje na novu lokaciju u novom kodnom segmentu. Tablica
prekidnih vektora sadri 256 elemenata i smetena je u memoriji. Svaki element se
sastoji od etiri bajta i sadri adresu pomaka i adresu kodnog segmenta programa za
posluivanje prekida. Svaki element odgovara jednom tipu prekida, koji su numerisani
od 0 do 255.
U sastavu mikroprocesora I8086 nalazi se i matematiki koprocesor I8087, koji izvodi
kompleksne matematike operacije u aritmetici sa pokretnom takom (sabiranje,
oduzimanje, mnoenje, deljenje, izraunavanje drugog korena itd.), logike operacije,
izraunavanje trigonometrijskih, hiperbolinih i logaritamskih funkcija.
Slika 12. prikazuje nain povezivanja mikroraunara na osnovi i8086 i matematikog
koprocesora I8087 u snaan raunar.

Slika 12.: Povezivanje mikroprocesora I8086 s matematikim koprocesorom I8087

71

TEHNIKA PISANJA PROGRAMA NA ASEMBLERU


Program za mikroraunar se stvara u nekoliko sekvencionalnih faza. Proces
prevoenja (asembliranja) predstavlja samo jednu fazu u raunarskoj obradi podataka.
Za sluaj programiranja na simbolikom (mnemonikom) jeziku ceo proces izrade i
izvravanja programa prikazan je na slici 1.Ovaj proces zapoinje formulacijom
raunarski reljivog problema, a zavrava se izvrnim mainskim programom pomou
kojega se na osnovu skupa ulaznih podataka dolazi do skupa rezultata obrade. Treba
uoiti da u toku proizvodnje izvrnog programa programeri koriste tri fundamentalne
softverske alatke:
editor teksta,
prevodilac (asembler) i
punja.
OBJEKT

AKTIVNOST

IZVRILAC
PROGRAMER

FORMULACIJA PROBLEMA

PROBLEM
RAUNARSKI
ALGORITAM

IZRADA RAUNARSKOG ALGORITMA

PREVODILAC

PREVOENJE PROGRAMA

PREVEDENI
PROGRAM
IZVRNI
PROGRAM

PROGRAMER SA
EDITOROM TEKS
TA

PISANJE PROGRAMA

IZVORNI
PROGRAM

PROGRAMER

PUNJA

PUNJENJE PREVEDENOG PR. U MEMORIJU

IZVRAVANJE PROGRAMA

ULAZNI PODACI

PROGRAMIRANI
RAUNAR

REZULTATI OBRADE

Slika 1.: Proces izrade raunarskih programa osnovne aktivnosti i izvrioci


ANALIZA PROBLEMA
Sem uobiajenih aktivnosti u analizi problema neophodno je zbog ogranienosti
mogunosti raunara razmotriti sledee:
veliinu i vrstu numerikih podataka (mogu se obavljati samo
celobrojne operacije sa brojevima apsolutne vrednosti bajt, re, ili
postoji aritmetika u pokretnom zarezu),
potrebne aritmetike operacije (mogu se direktno realizovati samo
osnovne dve, ili etiri) i

72

predvidljivi broj koraka (ogranien je kapacitet operativne ili glavne


memorije programske memorije i memorije podataka).

IZRADA GRUBOG DIJAGRAMA TOKA


U ovoj fazi se postavlja koncepcija reenja
vodei rauna o elementima definisanih u
analizi problema. Faza u mnogoemu je
istovetna sa postavljanjem dijagrama toka za
vie programske jezike (C, PASCAL itd.).

Dijagram
toka:
metoda
predstavljanja
logike
jednog
programa. Dijagram toka koristi
normirane
geometrijske
slike
(pravougaonik, romboid i sl.) za
predstavljanje pojedinih logikih
koraka jednog programa, kao i
njihov redosled.

PLAN OPERATIVNE ILI GLAVNE MEMORIJE


Za sve promenljive koje se koriste u programu
mora se odrediti memorijska lokacija. Za
promenljive se moraju predviti lokacije ( 0.
lokacija PROMENLJIVA zadnja lokacija).

Promenljiva: U programiranju,
simboliko ime neke memorijske
lokacije iju vrednost je mogue
menjati.

IZRADA DETALJNOG DIJAGRAMA TOKA


U ovoj fazi se detaljno razradi koncepcija postavljena u taki 'IZRADA GRUBOG
DIJAGRAMA TOKA' u saglasnosti sa planom operativne memorije iz take 'PLAN
OPERATIVNE ILI GLAVNE MEMORIJE' i mogunostima raunara. Dijagram toka
mora predvideti sve izmene sadraja registra i memorijskih pozicija.
TESTIRANJE DIJAGRAMA TOKA
Za kontrolu ispravnosti postavljenog dijagrama
toka treba uzeti mali broj test podataka nad
kojima se predviene operacije lako realizuju i
rezultati su poznati. Pri tom treba paziti da test
podaci obuhvate sve predviene mogunosti.

73

Testiranje: Provera pravilnog rada


jednog
programa
korienjem
izabranih podataka (podaci za
testiranje). Potpuni test jednog
programa (tj. test sa svim moguim
podacima za testiranje)
nije
izvodljiv, zbog ogromnog broja
moguih programskih puteva i
ulaznih podataka. Zbog toga izbor
podataka za testiranje igra veoma
vanu ulogu u pouzdanosti jednog
testa.

ZAPIS UNOENJE PROGRAMA U MNEMONIKOM KODU


Uz pomo ekranskog tekst editora treba upisati
program u datoteku, odnosno u glavnu
memoriju.

Editor: Program, koji uz pomo


periferijskih
ureaja
(najee
tastature i ekrana), omoguuje
unoenje i menjanje informacije.
Unesena informacija se obino
memorie u datoteke. Ako je
informacija data u obliku teksta,
govorimo o editoru za obradu teksta.
U raunarstvu se esto javljaju
editori koji su specijalno pravljeni
za
programiranje
u
nekom
programskom jeziku. Takvi editori
se nazivaju jeziki editori.

IZRADA DOKUMENTACIJE
Dokumentacija o programu mora sadrati
sledee:
opis problema,
grubi dijagram toka,
plan operativne memorije,
detaljan dijagram toka,
program u mnemonikom kodu i
uputstvo za korienje programa.

Uputstvo za korienje programa mora


obuhvatiti nain zadavanja i broj ulaznih
parametara kao i formu saoptavanja
rezultata.

Programska dokumentacija: Skup


svih pisanih tekstova koji se odnose
na jedan program ili programski
sistem. Programska dokumentacija
predstavlja vaan deo programiranja
i neophodno je potrebna kod
primene programa. U zavisnosti od
osoba kojima je dokumentacija
namenjena, razlikujemo sistemsku i
korisniku dokumentaciju.

Sistemska dokumentacija: opisuje


interni rad i konstrukciju programa.
Ovaj
deo
dokumentacije
je
namenjen programerima, koji se
staraju o odravanju programa.
Korisnika
dokumentacija:
namenjena je korisniku i ona opisuje
nain korienja i mogunosti
programa.

74

INTEL 8086 ASEMBLER


Pitanje je, zato uiti i koristiti asembler, kad vieprogramski jezici, odnosno objektno
orijentisani jezici programeru daju moan razvojni sistem? injenica je, da ovi jezici ne
mogu optimalno iskoristiti resurse hardvera. U manjim i jednostavnijim sistemima
operativna memorija ima svega nekoliko kilobajtni kapacitet, a memorija za podatke esto
nekoliko desetina bajtova. Kad se radi o sistemima, gde su odgovori u realnom vremenu,
odnosno kad se radi o sistemima na primer za upravljanje, regulaciju, merenje itd., onda
vreme reakcije mikroraunarskog sistema je kritino. Kod ozbiljnijih sistema, na primer
kod PC raunara isto moe da se pojavi zahtev za brze odgovore, na primer kod programa
za igre. Sledei zadatak pokazuje neke dobre osobine asemblera.
Zadatak: Na IBM PC raunaru treba ispisati na monitor brojeve od 0 do 65535. Za
realizaciju zadatka korieni su jezici:
asembler I8086,
Pascal (Borland Pascal 6.0) i
Borland Turbo C 2.0.
Duine tih programa, odnosno potrebno vreme rada tih programa se nalaze u tabeli br. 11.
Ovi rezultati su zavisni i od konkretne konfiguracije raunara, verzije prevodilaca,
operativnog sistema, video kartice. itd., ali tendencije su oigledne.
Tabela 11.: Uporeivanje programskih jezika
Programski jezik
duina programa [bajt]
Borland Turbo C 2.0
8994
Borland Pascal 6.0
3888
Asembler
80

vreme rada [sec]


2.4
0.5
0.15

Iz ove analize sledi, da sa asemblerom moemo postii krae vreme odgovora u odnosu na
bilo koji viiprogramski jezik, a i program je krai. Meutim, onu problematiku, gde
veoma efikasno koristimo mogunosti viiprogramskog jezika i realizujemo pomou tih
programskih jezika. Rad sa matricama veoma je jednostavan u Pascalu, za rad sa bazama
podataka razvijeni su dBase programski jezici, za vetaku inteligenciju Prolog itd.. LINK
program e napraviti jedinstveni izvrni kod od objektnog koda asemblera, Pascala,
Prologa itd.
PROCESORI INTEL I80286, I80386, I80486, PENTIUM, PENTIUM II I PENTIUM III
Novije tehnologije uvek daju mogunost za poveanje takt frekvencije, a istovremeno i za
kompleksnije hardversko reenje, na primer za veu duinu rei procesora. Firma Intel
kod razvoja sledee generacije procesora ima filozofiju, da prethodne rezultate ne treba
odbaciti, nego treba integrisati u novija reenja, ovo postiu tako, to su nove generacije
mikroprocesora kompatibilni sa prethodnim procesorima.
Za poetak dovoljno je nauiti asembler i8086, a ako neko eli da iskoristi mogunosti
Pentiuma, samo treba da dodaje instrukcije ovog procesora.

75

JEDNOSTAVNI i8086 ASEMBLERSKI PROGRAMI


Ako kreiramo u DOS-u jedan poddirektorijum sa
nazivom ASS i radimo u ovom direktorijumu,
onda pomou jedne poznate DOS naredbe
moemo u mainskom kodu napisati program za
ispisivanje bilo kojeg karaktera na monitor
(ekran) raunara. Iz DOS-a znamo, da svaki fajl
pored naziva (ime fajla) ima i jednu ekstenziju, iz
koje ekstenzije neki programi prepoznaju tip fajla.
Na primer, *.pas je Pascal program, *.C je C
program itd. Izvrni programi su (koji mogu
odmah raditi):
*.exe i
*.com.

DOS (disk operativni sistem):


Operativni sistem koji upravlja
prenosom podataka od raunara ka
disk-jedinici i obratno. DOS je uvek
sastavni deo softvera raunara.
Direktorijum (katalog): Spisak
svih datoteka koje se nalaze na
jednom nosiocu podataka sa
direktnim pristupom (disketa, tvrdi
disk, CD-ROM, drugi raunar u
mrei). Operativni sistem upravlja
katalogom jednog nosioca podataka
preko sistema za upravljanje
datotekama.

Upisivanjem:
copy con prvi.exe ENTER
DOS naredbe kopiramo sa konzole (tastature) brojeve (mainske instrukcije) direktno
u prvi.exe fajl, koji fajl e biti snimljen na HD (Hard Disk tvrdi disk) u radni
direktorijum.
Brojevi programa su sledei:
180, 2, 178, 49, 205, 33, 205, 32.
Upisivanje svakog broja je pomou ALT tastera i broja, a na kraju posle otputanja
tastera na ekranu e se pojaviti ASCII karakter broja, koji karakter ponekad ima udan
izgled. Posle upisivanja zednjeg broja sa CTRL Z znakom izlazimo iz copy programa,
a istovremeno e i fajl biti snimljen u radni direktorijum.
Sa dir DOS naredbom moemo izlistati sadraj radnog direktorijuma, gde e se
pojaviti prvi.exe fajl. Jednostavno e izvriti raunar program, ako ukucamo prvi.exe
ENTER. Ako smo sve ispravno radili, na monitoru e biti ispisan broj 1.
Moramo biti veoma oprezni kod programiranja u mainskom kodu, jer ve i greka od
1 bita moe da blokira raunarski sistem, ili e prouzrokovati nepoeljene akcije
raunara.
Na slici 13. je listing istog programa, ali sad pored brojeva su i mnemoniki kodovi
naznaeni, odnosno nazivi registara. Kod programiranja u mainskom kodu, a isto i u
asembler programiranju najee koristimo heksadecimalni kodni sistem za brojeve.
Ako preraunavamo 180d u heksadecimalni oblik, dobemo B4h, 2d u heksadecimalni
02h itd. Slovo na kraju je oznaka za brojni sistem:
b binarni,
d decimalni i
76

h heksadecimalni.

Slika 13.: Ispisivanje broja 1 na monitor raunara


PROGRAMSKI PAKET DEBUG
Operativni sistem DOS IBM PC raunara sadri jedan ugraeni programski paket za
razvoj programa u asembleru. Program moemo pokrenuti sa ukucivanjem DEBUG
naziva, nakon ega na monitoru e se pojaviti - PROMPT (znak spremnosti). Ovde
moemo ukucati naredbe (jedno slovo). Ako kucamo ? upitnik, dobiemo listu sa
postojeim naredbama i eventualnim parametrima.
Naredba a je za aktiviranje veoma jednostavnog asemblera, u kojoj opciji DEBUG
alje na ekran segmentnu adresu i ofset adresu operativne memorije, odnosno mesto
programa u memoriji. Pored ove adrese moemo ukucati naredbe mikroprocesora
i8086 u mnemonikom kodu i operande, koji mogu biti registri procesora, ili brojevi, a
brojeve iskljuivo u heksadecimalnom obliku (bez h sufiksa). Poto ne moemo raditi
sa simbolinim adresama i promenljivama, ovaj asembler nije pravi asembler
(prevodilac). Prelazak na sledei asemblerski red je sa ENTER tasterom, gde opet
moemo u mnemonikom kodu zadati naredbu. Postupak nastavimo do zadnje
operacije, a na kraju programa sa CTRL C znakom, naputa sistem asemblera i
ponovo je u DEBUG modu.
Valja napomenuti, da kod upisivanja mainskih kodova pomou copy naredbe DOS
operativni sistem alje program na tvrdi disk, dok upisivanje preko DEBUG-a je
praktino asembliranje, a prevedeni program e biti direktno upisan u operativnu
memoriju, a poto je izvrni kod, moe momentalno da radi.
Prethodno napisani postupak je na Slici 14.

Slika 14.: Upisivanje programa pomou a


(asembliranje opcije DEBUG-a u operativnu
memoriju i izvrenje programa sa g'
naredbom

77

Na slici 164C je adresa kod segmenta, a ovaj broj e odrediti operativni sistem, kod
drugog raunara neki drugi broj e biti ispisan. Adresa lokacije u kod segmentu je
0100h, ovo znai da poetak programa nije od nulte lokacije. Memorija od 0000h do
00FFh je zauzeta, tu su neki parametri sistema. Posle adrese 0100h je sledea adresa
na slici 0102h, zato, to prva instrukcija mov ah,02 zahteva dva bajta, prvi bajt je kod
operacije (mov), a drugi bajt je jednobajtni operand (02). Sluajno, u ovom programu
sve operacije su dvobajtne. Na adresi 164C:0108 CTRL C je naredba asembleru, da
nema vie instrukcija i treba da vrati komandu u DEBUG.
Posle unoenja programa i pojave - PROMPT-a DEBUG je spreman da prihvata
sledeu komandu, a to je u ovom sluaju (slika 2.) g, odnosno go, naradba, da
DEBUG izvri program. Zadatak programa je bio tampanje broja 1. Nakon tampe
DEBUG alje poruku korisniku:
Program terminated normally,
znai uspeno je zavren program. Programer
mora obezbediti pravilan izlazak iz programa, da Multiprogramski rad: Nain rada
bi DEBUG mogao korektno da nastavi rad. U jednog raunarskog sistema, kod
suprotnom, raunar e nekontrolisano raditi, i koga centralna jedinica naizgled
najverovatnije se blokirati. Istina, da kod istovremeno obrauje vie procesa.
Windows
multitasking
(multiprogramski)
operativnog sistema DOS reim je samo jedan task (zadatak), pa jednostavno kod
greke u DOS-u Windows e normalno nastaviti rad dalje.
Ako imamo program u operativnoj memoriji i elimo ga analizirati naii emo na
potekoe, jer itanje programa u mainskom kodu je praktino nemogue. U ovom
sluaju program disasembler vrati mainski kod u mnemoniki program, alje na
ekran listing (listu) programa. Aktiviranje disasemblera u DEBUG programskom
paketu je sa u naredbom. Na slici 3 je disasembliran na prvi program. Poto se ne
zna kraj programa, disasembler izlista jedan ekran, a ako je program krai, posle
zadnje instrukcije pojavie se deo memorije sa mnemonikim kodovima, koje
instrukcije nisu elementi programa (na slici 15 se to ne vidi). Ti podaci mogu biti
delovi prethodnih programa.
Slika 15.: Rezultat disasembliranja
programa prvi
ASCII (American Standard Code
for Information Interchange):
Skraenica za ameriki standardni
kod za razmenu informacije. Ovaj
sedmobitni
kod
uspostavlja
jednoznanu vezu izmeu slova,
cifara, specijalnih i kontrolnih
znakova, sa jedne strane, i
kombinacije binarnih brojeva duine
sedam bitova, sa druge strane. U
ASCII-kodu je mogue kodiranje
128 razliitih znakova.

U programu programske linije imaju sledea


znaenja:
mov ah,02 upisivanje broja 02 u znaajniji bajt akumulatora ax,
78

mov dl,31 upisivanje ASCII koda broja 1 u manje znaajniji deo dx


registara,
int 21
aktiviranje ugraene rutine operativnog sistema za
ispisivanje jednog karaktera na ekran, ako je prethodno komanda 02
upisana u ah i ako je ASCII kod karaktera upisan u dl registar.
int 20
aktiviranje ugraene rutine operativnog sistema, koja
rutina e obezbediti ispravno vraanje upravljanja u onaj program,
odakle je pozvan potprogram (u ovom sluaju program je pozvan iz
DEBUG-a).

d komanda DEBUG-a izlista deo sadraja operativne memorije u


heksadecimalnom i ASCII obliku. Ako emo izlistati na program, onda od tih
podataka samo prvih osam bajtova pripadaju naem programu, ostali podaci nemaju
nikakav znaaj za nas. Kod ASCII vrednosti ...1.! broj 1 je kod naeg broja 1, koji
smo mi upisali u dl registar. . (taka) e se pojaviti u sluaju, ako kod nema
odgovarajui karakter, na primer ako je instrukcija ekrana (povrat kolica, novi red
itd.).
U Tabeli 12. su ASCII kodovi. Ako iskoristimo i bit D7 za kodiranje, onda
praktino jo 128 kodova moemo definisati. U ovoj drugoj tabeli su specijalni
karakteri, slova drugih (neengleskih) jezika itd.
Tabela 12: ASCII kodovi
000
001
0000
NUL
DLE
0001
SOH
DC1
0010
STX
DC2
0011
ETX
DC3
0100
EDT
DC4
0101
ENQ
NAK
0110
ACK
SYN
0111
BEL
ETB
1000
BS
CAN
1001
HT
EM
1010
LF
SUB
1011
VT
ESC
1100
FF
FS
1101
CR
GS
1110
SO
RS
1111
SI
US

010
blank
!

#
$
%
&

(
)
*
+
,
.
/

011
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

100
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O

101
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_

110

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o

111
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL

r komanda DEBUG-a je za ispisivanje sadraja registara procesora i indikatorskih


bitova (zastavica).
p komanda DEBUG-a je za izvrenje programa korak po korak, nasuprot komande g,
a istovremeno realizuje i r komandu.
Ako je zadatak tampanje slova A, onda ne moramo ponovo pisati program, odnosno
kompletno upisati u operativnu memoriju, nego sa u naredbom (disasembler)
79

izlistamo program, potraimo red, gde je tampanje broja 1 i na ovu poziciju unosimo
novu instrukciju. Iz listinga vidi se da red 0102h sadri traenu instrukciju (mov
dl,31), a na ovu poziciju treba upisati mov dl,41, jer iz ASCII tabele kod A karaktera
je broj 0100 0001b, odnosno 41h, ili 65d. Dole vidim kako treba to realizovati. Opet
koristimo a komandu, ali je sad adresa konkretna, a CTRL C slui za izlazak iz
asemblera.

Slika 16.: Upisivanje novog reda u program


Istina da programski paket DEBUG omoguuje rad u operativnoj memoriji,
programiranje U/I perifernih jedinica, ali mogunosti programa su veoma ogranieni i
praktino nije ga mogue efikasno koristiti u razvoju asemblerskih programa. Za
ozbiljniji rad moramo izabrati pravi i moan asembler i linker. Asembleri su u nekim
operacijama slini, prema tome ako neko naui koristiti asembler, prelazak na drugu
verziju nije teak posao.
PISANJE, ASEMBLIRANJE I IZVRENJE ASEMBLERSKIH PROGRAMA
Za realizaciju programa su potrebni neki programski paketi, a faze realizacije
mainskog koda su prikazane na slici 17.

Slika 17.: Faze realizacije programa i pomoni programski paketi


Izvorni program, odnosno onaj program koji
sadri mnemonike kodove odgovarajueg
procesora i instrukcije korienog asemblera
pomou jednog ASCII editora teksta bie upisan
u *.asm fajl i memorisan na tvrdom disku.
Skraenica asm oznauje tip fajla. Editor teksta
moe da bude bilo koji ASCII editor, na primer

80

*.asm: * (zvezdica) u operativnom


sistemu DOS (kao i unekim drugim
operativnim sistemima oznauje ima
(naziv) datoteke. Prvi znak je slovo,
a ostali karakteri mogu biti ili slova,
ili brojevi.

Norton Commander sadri kod funkcionalnog tastera F4 takvu opciju. Editor teksta
Word ne daje ASCII fajl, pa prema tome ne koristimo ga za unoenje izvornog
programa.
*.asm datoteku moramo asemblirati, znai provoditi u mainski jezik. Postoji takav
asembler, koji moe direktno iz asm fajla da napravi mainski kod, meutim bolje je u
prvom koraku prevoditi u *.obj (objektni fajl), zatim pomou programskog paketa link
povezati sa ostalim *.obj fajlovima (ako postoje). Na takav nain bilo koji programski
jezik moemo koristiti za razvoj delova programa, pa sa link programom od tih *.obj
datoteka napraviti zajedniki mainski, odnosno izvrni program.
Za asembliranje koristimo TASM asembler, koji se program inae zove Turbo
Assembler. Treba ukucati u DOS-u ime asemblera i ime asm programa:
tasm prvi.exe ENTER.
Asembleri obino imaju dva prolaza (two pass assembler):
u prvom prolazu na osnovu simbolikih imena (naziva), promenljive i
tipa promenljive ispunjuju tabelu simbola,
a u drugom prolazu realizuju prevod mnemonikih simbola u mainski
(binarni) kod i ispunjavaju sa brojevima tabelu simbola, tako realizajui
*.obj datoteku.
Dobijeni objektni fajl je standardni i kompatibilan sa ostalim obj fajlovima kod drugih
programskih jezika (C, Pascal, Prolog Dbase itd). Ova injenica obezbeuje
povezivanje razliitih programskih jezika u izvrni kod (samo treba kontinualno
napisati imena tih programa, izmeu dva programa je prazno mesto (blank). Za taj
zadatak se koristi program link. Posle ukucivanja imena programa link program e
pitati ime *.obj programa, zatim sledei program itd., pa trai od nas naziv *.obj
programa. Ako je odgovor ENTER, onda i obj fajl e imati isti naziv kao asm fajl. Na
kraju link kreira *.exe izvrni fajl.
ta je, ako smo napravili sintaktiku greku? Ve asembler signalizira, da ne moe da
analizira izvorni program, pa alje poruku (poruke) korisniku, gde odreuje greku i
poziciju te greke u listingu (koji red). Posle ispravke postupak prevoenja treba opet
ponoviti.

81

STRUKTURA *.exe I *.com IZVRNIH PROGRAMA


Na Slici 18.a. je struktura *.exe, a na Slici 1.b. je struktura *.com programa. Duina
*.exe programa nije limitirana, dok *.com program ne moe da bude dui od jednog
segmenta (a to je 64 kB).
*.EXE
Segment
assume
CS:Kod,DS:Podatak,SS:Stack
Start:
.
.
.
Kod
Ends
Podatak Segment
.
.
.
Podatak Ends
Stack
Segment
.
.
.
Stack
Ends
End
Start
a)
Kod

Kod

Start
Kod

*.COM
Segment
assume CS:Kod,DS:Kod
Org
.
.
.
Ends
End

100h

Start

b)

Slika 18.: Struktura *.exe i *.com programa


U listingu za poetak segmenta se koristi izraz Segment, a ispred toga labela, koja je
ime programa, a za oznaavanje kraja segmenta se koristi Ends izraz.
Naredba assume upisuje segmentne adrese u segmentne registre. Nije obavezno
korienje SS registara. Kod *.com programa poetak kod segmenta i poetak
segmenta za podatke moe da bude isto. Org je naredba asemblera kod *.com
programa i slui za odreivanje poetka programa. Ne smemo koristiti adrese od
0000h do 00FFh, jer tamo su sistemske promenljive.
BIOS (Basic Input Output System) softver kod IBM PC personalnih raunara sadri
niz potprograma, koji su za razmenu podataka izmeu procesora i memorije, odnosno
procesora i perifernih jefinica. Korisno je ugraivanje tih potprograma u nae
programe. U programima uspeno moemo koristiti int 21 potprogram, koji
obezbeuje korektan izlazak iz korisnikog programa. Parametar u ovom sluaju je
4C00h, a treba ga upisati u ax registar. Ovaj izlazak obezbeuje povratak u glavni
program bez poruke.
1. Zadatak: Napisati korisniki program, koji korektno vraa upravljanje
operativnom sistemu i ne alje nikakvu poruku korisniku
Listing programa je:

82

;********************************************************************
Prog01
Segment
;definicija segmenta
assume CS:Prog01,DS:Prog01
;pocetak CS I DS segmenta
;********************************************************************
Start:
mov
ax,Prog01
;pocetak na DS
mov
ds,ax
;********************************************************************
mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
Prog01
Ends
;kraj segmenta
End
Start

;*********************************************************************
Analiza programa:

Asembler ne prevodi tekst od ; znaka do kraja reda, ovde moe programer da


pie komentar, (komentar je koristan za dokumentaciju).
U ovom programu tri puta imamo mov instrukciju, mada formalno su iste, i
imaju isti zadatak, prenos podataka, realizuju razliite prenose. U Tabeli 13.
vidimo nekoliko primera za instrukciju mov.

Tabela 13.: Neke mov instrukcije


u akumulator ax e biti upisan broj 1839
mov
ax,1839
u akumulator ax e biti upisan broj 3Bh
mov
ax,3Bh
u akumulator al e biti upisan broj 45
mov
al,45
u akumulator ax e biti upisan sadraj bx registara
mov
ax,bx
u akumulator al e biti upisan sadraj bh registara
mov
al,bh
mov
ax,labela u akumulator ax e biti upisana vrednost labele
Veoma veliki broj kombinacija postoji kod korienja instrukcija, ove kombinacije
treba nauiti, da bismo mogli efikasno iskoristiti mogunosti asemblera. Neke od tih
su:
posle mnemonikog koda barem jedan parametar je registar,
u prvi operand (odredite) ulazi sadraj iz drugog operanda (izvor),
sadraj drugog operanda nakon operacije ostaje nepromenjen,
ako je podatak u memoriji, onda izmeu [] znaka je adresa lokacije, odakle
podatak e biti upisan u prvi operand,
ako je operand odreen sa labelom, onda obavezno treba odrediti tip (byte,
word),
dimenzije operanada moraju biti iste (kod instrukcije mov ax,0B3h u ax e
biti upisan 00B3h).
Realizacija programa:
o Iz Windows-a prelazimo u DOS operativni sistem, kreiramo
poddirektorijum (ako ve ne postoji) i ovde u Norton Commander-u
sa SHIFT F4 funkcijom otvorimo praznu datoteku (fajl) sa imenom
prog01.asm.
o Ukucamo gornji program.
o Aktiviramo asembler, parametar asemblera je ime fajla: tasm
prog01.asm.
83

o Ako postoji greka, sa editorom otklonimo je i ponovimo prethodnu


taku.
o Poto smo dobili prog01.obj ukucamo link i ENTER, i odgovorimo na
pitanja, ukucamo prog01.obj i ENTER, a na ostala tri pitanja
odgovorimo sa ENTER-om.
o Ako link program ne javlja greku, uspeno je preveden program u
izvrni kod sa imenom prog01.exe.
o Ukucamo prog01.exe, opet emo dobiti u DOS-u PROMPT.
2. Zadatak: Na monitor (ekran) u 7. red i 13. kolonu treba ispisati slovo X.
Analiza programa:
Kod IBM PC personalnih raunara postoji video memorija od adrese 0B800h, ova
memorija se nalazi u operativnoj memoriji (ES - ekstra segment). Kod ovog primera
nama treba tekstualni reim te memorije, gde moemo upisati ASCII karaktere. IBM
PC ima hardver i softver za periodino ispisivanje sadraja video memorije na
monitor. Na slici 19. je prikazana organizacija monitora, odnosno video memorije.
Vidi se, da za jednu poziciju u video memoriji dva bajta koristi sistem:
prvi bajt je kod karaktera (ASCII kod),
a drugi bajt slui za odreivanje boja karaktera (u Tabeli 14 su dati
kodovi boja).

Slika 19. Organizacija slike monitora i video memorije


Jednostavno moemo izraunati poziciju u video memoriji gde treba upisati kod
karaktera i boju, ako znamo u koju poziciju ekrana elimo neto upisati:
adresa = 80 * 2 * red + 2 * kolona

(1.3.)

gde su:
84

adresa adresa u operativnoj memoriji,


red - mesto na ekranu, koji red (od 0 do 24 ukupno 25) i
kolona mesto na ekranu, koja kolona (od 0 do 79 ukupno 80).

Ako elimo ispisati karakter u 7. red i 13-u kolonu, onda je adresa 1146d = 047ah,
odnosno 0b800h:47ah.
Tabela 14.: kodovi boje
bit
znaenje
0.
plava boja karaktera
1.
zelena boja karaktera
2.
crvena boja karaktera
3.
intenzitet boja karaktera

bit
4.
5.
6.
7.

znaenje
plava boja pozadine
zelena boja pozadine
crvena boja pozadine
periodino/kontinualno ispisivanje

Listing programa je:


;********************************************************************
Prog02
Segment
;definicija segmenta
assume CS:Prog02,DS:Prog02
;pocetak CS i DS segmenta
;********************************************************************
Start:
mov
ax,Prog02
;pocetak na DS
mov
ds,ax
;********************************************************************
mov
ds,ax
mov
ax,0b800h
;adresa video memorije u es
registar
mov
es,ax
;********************************************************************
mov
di,1146
;ofset adreasa u di
;********************************************************************
mov
al,"X"
;slovo X u al registar
mov
ah,7
;crna pozadina, beli karakter
mov
es:[di],ax
;slovo u video memoriju
;********************************************************************
mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
Prog02
Ends
;kraj segmenta
End
Start

;*********************************************************************
3. Zadatak: Ispisati jedan karakter na monitor, pozicija karaktera je data sa x i y
koordinatama, program treba da izrauna adresu u video memoriji.
Listing programa je:
;********************************************************************
Prog03
Segment
;definicija segmenta
assume CS:Prog03,DS:Prog03
;pocetak CS i DS segmenta
;********************************************************************
Start:mov
ax,Prog03
;pocetak na DS
mov
ds,ax
;********************************************************************
mov
ds,ax
mov
ax,0b800h
;adresa video memorije u es
;registar

85

mov
es,ax
;********************************************************************
mov
al,byte ptr [Y]
;y
mov
ah,0
mov
bl,160
;0. red 80 * 2 bajta
mul
bl
;ax = al * bl
mov
di,ax
;upisati u di
;********************************************************************
mov
al,byte ptr [X]
;x
mov
ah,0
mov
bl,2
;x * 2
mul
bl
add
di,ax
;pozicija karaktera u memoriji
;********************************************************************
mov
al,byte ptr [KARAKT]
;ASCII kod karaktera
mov
ah,byte ptr [BOJA]
;kod boje
;********************************************************************
mov
es:[di],ax
;upisivanje karaktera
;u memoriju
;********************************************************************
mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
X:
db
40
Y:
db
12
KARAKT:db
"X"
BOJA: db
7
;********************************************************************
Prog03
Ends
;kraj segmenta
End
Start

;*********************************************************************
Analiza programa:
Za upisivanje podataka (broja) u memoriju slui db (define byte) direktiva
(instrukcija asemblera). Na poetak reda dolazai labela, simboliko ime broja, zatim
direktiva db i kao parametar vrednost. itanje iz te memorije je jednostavno, samo
treba se pozivati na promenljivu i oznaiti tip broja (na primer byte). U programu
prog03 na primer x pozicija je opisana sa X: db 40 redom.
Sa instrukcijom mul vrimo mnoenje dva operanda, na primer al sa bl, a poto su ovi
operandi osmobitni, rezultat je esnaestobitni, bie upisan u registar ax. Mnoenje
registara ax sa bx daje tridesetodvobitni rezultat, koji e biti upisan u dx i ax registar.
4. Zadatak: Program treba da tampa tekst iz memorije. Duina teksta je
proizvoljna, kraj teksta je oznaena sa ASCII karakterom, koji ne moe da
bude ni slovo ni broj, na primer 0.
Listing programa je:
;********************************************************************
Prog04Segment
;definicija segmenta
assume CS:Prog04,DS:Prog04
;pocetak CS i DS segmenta
;********************************************************************
Start:mov
ax,Prog04
;pocetak na DS
mov
ds,ax

86

;********************************************************************
mov
ds,ax
mov
ax,0b800h
;adresa video memorije u es registar
mov
es,ax
;********************************************************************
mov
al,byte ptr [Y]
;y
mov
ah,0
mov
bl,160
;0. red 80 * 2 bajt
mul
bl
;ax = al * bl
mov
di,ax
;upisati u di
;********************************************************************
mov
al,byte ptr [X]
;x
mov
ah,0
mov
bl,2
;x * 2
mul
bl
add
di,ax
;pozicija karaktera u memoriji
;********************************************************************
mov
ah,byte ptr [BOJA]
;kod boje
mov
si,offset TEKST
;adresa teksta u si
;********************************************************************
cikl: mov
al,[si]
;podatak u al registar
(karakter)
cmp
al,0
;kraj teksta?
jz
kraj
;da, kraj
mov
es:[di],ax
;karakter u video memoriju
add
di,2
;sledeca pozicija u
memoriji
inc
si
;sledeci karakter
jmp
cikl
;stampati dalje
;********************************************************************
kraj: mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
X:
db
30
;pozicija teksta
Y:
db
12
TEKST:
db
"VISA TEHNICKA SKOLA - SUBOTICA",0
BOJA: db
7
;********************************************************************
Prog04
Ends
;kraj segmenta
End
Start
;********************************************************************

Analiza program:
Labela (label) je posebna oznaka jedne
programske naredbe (programskog reda).
Labela omoguava uspostavljanje veze
izmeu oznaene programske naredbe i
nekog drugog dela programa. Ova veza se
obino uspostavlja naredbom skoka,
odnosno naredbom pozivanja potprograma
(rutine). U asembleru posle labele mora da
bude znak : (dvotaka).
Za uporeivanje dve vrednosti koriste se
operacije cmp. Ove instrukcije zavisno od
rezultata uporeivanja odreuju indikatorske
bitove (C, Z i O), setuju ili resetuju ih. Te
87

Indikator (flag - zastavica): Indikatori su univerzalno primenljivi


kontrolni bitovi, koji se esto koriste
u mikroprocesorima. Oni pokazuju
postojanje, odnosno nepostojanje
odreenog
stanja
sistema,
ispunjenje, odnosno neispunjenje
odreenog uslova, kao i specijalne
dogaaje u sistemu. Menjanje
vrednosti indikatora moe biti
prouzrokovano
odreenim
instrukcijama unutar sistema ili
nekim spoljnim dogaajem.

istrukcije su veome sline instrukcijama oduzimanja (sub), sa razlikom da operandi


ostaju nepromenjeni. Operacije transfera podataka (mov) ne odreuju vrednosti
zastavica, naime kod transfera podataka ne koristi se aritmetiko-logika jedinica,
nasuprot tome cmp radi preko ALU jedinice.
U programu za testiranje rezultata uporeivanja konkretno se koristi Z (zero) bit.
Najvaniji indikatori su:
indikator nule (Zero flag) je specijalizovani indikator koji slui za
ispitivanje vrednosti smetene u akumulator, u sluaju da je, posle neke
operacije, vrednost svih bitova u akumulatoru jednaka nuli, indikator
nule e imati logiku vrednost jedan (Z = 1), a ako bar jedan bit u
akumulatoru ima vrednost jedinicu ( (A) 0), indikator nule e imati
logiku vrednost nulu (Z = 0),
indikator prenosa (Carry flag) je specijalizovani indikator, koji
registruje prekoraenje nastalo u akumulatoru, u sluaju da rezultat
neke aritmetike operacije nije mogue smestiti u akumulator (zbog
prekoraenja, odnosno negativnog prekoraenja), indikator prenosa e
dobiti logiku vrednost jedan (C = 1).
5. Zadatak: Program treba da realizije logiku I funkciju izmeu dva osmobitna broja,
zatim treba da ispie brojeve i rezultat. Program mora da brie ekran. Za realizaciju
ponovljenih delova programa treba koristiti potprogram (ispisivanje teksta, brojeva).
Listing programa je:
;********************************************************************
Prog05
Segment
;definicija segmenta
assume CS:Prog05,DS:Prog05
;pocetak CS i DS segmenta
;********************************************************************
Start:mov
ax,Prog05
;pocetak na DS
mov
ds,ax
;********************************************************************
mov
ax,0b800h
;adresa video memorije u es
registar
mov
es,ax
;********************************************************************
mov
ax,3
;brisanje ekrana
int
10h
;********************************************************************
mov
di,0*160
;pozicija 1. teksta (0,0)
mov
si,offset TEKST1
;pocetna adresa TEKST1
call tekstisp
;ispisivanje teksta
;********************************************************************
mov
bl,byte ptr [BR1]
;prvi broj
call brojisp
;ispisivanje broja
;********************************************************************
mov
di,1*160
; pozicija 2. teksta (1,0)
mov
si,offset TEKST2
; pocetna adresa TEKST2
call tekstisp
;ispisivanje teksta
;********************************************************************
mov
bl,byte ptr [BR2]
;drugi broj
call brojisp
;ispisivanje broja
;********************************************************************
mov
di,2*160
;pozicija teksta REZULTAT

88

mov
si,offset TEKST3
;pocetna adresa TEKST3
call tekstisp
;ispisivanje teksta
;********************************************************************
mov
bl,byte ptr [BR1]
;prvi broj
and
bl,byte ptr [BR2]
;BR1 AND BR2
call brojisp
;ispisivanje broja
;********************************************************************
mov
ax,0
;cekanje na taster
int
16h
;********************************************************************
kraj: mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
;####################################################################
tekstisp
Proc
;rutina za ispisivanje teksta
mov
cx,16
;tekst ima ukupno 16 karaktera
mov
ah,15
;crna pozadina, beli karakter
;********************************************************************
cikl1:mov
al,[si]
;karakter u al
mov
es:[di],ax
;karakter u video memoriju
add
di,2
;sledeca pozicija
inc
si
;sledeci karakter
loop cikl1
;cx=cx-1 i skok ako je cx<>0
ret
;povratak u glavni program
szovir
Endp
;kraj potprograma
;####################################################################
;********************************************************************
;####################################################################
brojisp
Proc
;potprogram za ispisivanje
;broja
add
di,6
;+ 3 pozicije
mov
cx,8
;broj je osmobitni
mov
ah,15
;crna pozadina, beli karakter
;********************************************************************
cikl2:mov
al,48
;ASCII kod nule (0)
shl
bl,1
;CY <== d7 bit
jnc
ki2
;ako 0, skok na izl2
mov
al,49
;ASCII kod jedinice (1)
;********************************************************************
izl2:mov
es:[di],ax
;broj u video memoriju
add
di,2
;sledeca pozicija
loop cikl2
;cx=cx-1 i sko ako je cx <>0
ret
;povratak u glavni program
brjisp
Endp
;kraj potprograma
;####################################################################
;********************************************************************
TEKST1:
db
"1. BAJT
:"
TEKST2:
db
"2. BAJT
:"
TEKST3:
db
"REZULTAT
:"
BR1:
db
01011101b
BR2:
db
10101011b
;********************************************************************
Prog05
Ends
;kraj segmenta
End
Start
;********************************************************************

Analiza programa:
U ovom primeru moemo analizirati pisanje i korienje potprograma. U programskim
jezicima, kao i u asembleru programski deo koji za sebe predstavlja nezavisnu celinu,

89

ali se ne moe zasebno izvriti. U


programu prog05 na primer ispisivanje Rekurzivnost: Postupak, kod koga
teksta, ili ispisivanje broja su potprogrami. svaki korak u radu koristi rezultate
Potprogram se uvek poziva od nekog prethodnih koraka. U programiranju
drugog programa, to moe da bude glavni ovaj pojam oznaava obino one
program (Slika 20. a).) ili neki drugi potprograme, koji mogu da pozivaju
potprogram (Slika 20. b).), ili potprogram sami sebe.
moe da zove samog sebe, ovo je
rekurzija. U asembleru pozivanje potprograma se vri sa naredbom call i navoenjem
imena potprograma. Predaja i preuzimanje parametara je preko registara, odnosno
promenljive koje su u memoriji. Kod viih programskih jezika predaja parametara je sa
simbolikim imenima.

Slika 20.: a). Glavni program zove potprogram i b). Glavni program zove 1.
potprogram, a 1. potprogram zove 2. potprogram
Posle izvravanja potprograma upravljanje potprogramom preuzima pozivni program,
u asembleru se to postie sa ret naredbom na kraju potprograma.
Potprogrami se najee koriste za programiranje nekog programskog dela koji se vie
puta ponavlja. Rastavljanje programa u vei broj potprograma daje pregledniji
program.
Registar cx je projektovan tako, da sa loop instrukcijom jednostavno moemo koristiti
kao brojaa. Pre poetka petlje unosimo sa mov operacijom poetnu vrednost brojaa,
koju vrednost na kraju petlje loop instrukcija dekrementira (cx = cx 1) i istovremeno
i testira, da li je vrednost 0, ako nije onda izvrava skok na naznaenu poziciju, inae
(cx = 0) naputa petlju i od sledee take nastavi rad. Instrukcija loop je iz grupe
instrukcije uslovan skok.
90

Ako je parametar 0 kod int 10h potprograma onda sistem prelazi u 80*25 tekstualni
rad.
Potprogram int 16h je koristan program iz BIOS-a, ako elimo da program eka sve
do pritiska tastera. Kad je pritisnut bilo koji taster, onda potprogram sauva ASCII
kod tastera u ah registru. U ovom primeru nismo isitali tu vrednost.
6. Zadatak: Treba ispisati vreme iz raunara memorije na ekran.
Program je:
;********************************************************************
Prog06
Segment
;definicija segmenta
assume CS:Prog06,DS:Prog06
;pocetak CS i DS segmenta
;********************************************************************
Start:mov
ax,Prog06
;pocetak na DS
mov
ds,ax
;********************************************************************
mov
ax,0b800h
;adresa video memorije u es registar
mov
es,ax
;********************************************************************
cikl: mov
ax,0200h
;citanje vremena iz sistemskog casovnika
int
1ah
;********************************************************************
call vrisp
;ispisivanje vremena
;********************************************************************
mov
ax,0100h
;taster?
int
16h
;********************************************************************
jz
cikl
;ne, nazad
;********************************************************************
mov
ax,0
;da, iscitati vrednost
int
16h
;********************************************************************
mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
;####################################################################
vrisp Proc
;potrogram za ispisivanje vremena
;********************************************************************
mov
di,0
;monitor, levo gore
mov
ah,15
;crna pozadina, beli karakter
;********************************************************************
mov
bx,cx
;bx <== sati, minuti
call isp1
;sati na ekran
;********************************************************************
inc
di
;mesto za separatora
inc
di
;********************************************************************
call isp1
;minuti na ekran
inc
di
;mesto za separatora
inc
di
;********************************************************************
mov
bh,dh
;bh <== sekunde
call isp1
;sekunde na ekran
;********************************************************************
mov
al,"-"
;separator
mov
es:[di-6],ax
;na odgovarajuce pozicije

91

mov
es:[di-12],ax
;********************************************************************
ret
;povratak u glavni program
vrisp Endp
;kraj potprogram
;####################################################################
;********************************************************************
;####################################################################
isp1 Proc
;potprogram
;********************************************************************
mov
cx,2
;ispisivanje 2 cifre
cikl1:push cx
mov
cx,4
;BCD broj (4 bit)
mov
al,0
;********************************************************************
cikl2:shl
bx,1
;Znacajniji deo bx registara (BCD broj)
rcl
al,1
;
loop cikl2
;********************************************************************
or
al,30h
;bin ==> ASCII
mov
es:[di],ax
;u video memoriju
inc
di
;sledeca pozicija
inc
di
pop
cx
;druga cifra
loop cikl1
;********************************************************************
ret
;nazad u program odakle je je pozvan
ir1
Endp
;kraj potprograma
;####################################################################
;********************************************************************
Prog06
Ends
;kraj sgmenta
End
Start
;********************************************************************

Program koristi ugraeni sat IBM PC raunara, sa potprogramom int 1ah (parametar
0200h) isitamo vreme iz CMOS (SETUP) memorije. Brojevi su prikazani u BCD
brojnom sistemu, ovako samo treba dodati vrednost 30h, za pretvaranje BCD broja u
ASCII kod, u kom obliku ve ih moemo direktno koristiti. Ovu operaciju moemo
realizovati i pomou ILI logike operacice, or al,30h.
7. Zadatak: Treba napisati program, koji posle brisanja ekrana ispie jedan meni,
sledeem sadrajem:
PRVI
DRUGI
TREI
ETVRTI
PETI
Nakon toga u pozadini prvog reda treba da se pojavi zelena traka (pozadina teksta).
Zelenu traku sa strelicama dole/gore proizvoljno je mogue namestiti na izabrani tekst.
Sa pritiskom tastera ENTER treba da se pojavi tekst sa crvenom pozadinom:
IZABRAN xxxxxxx MENI (xxxxxxx = odgovarajui tekst iz menija) i
nakon toga tekst
NOVI IZBOR ? (d/n).
Sa odgovorom d (da) ponovo treba da se pojavi meni, a sa odgovorom n (ne)
napustiemo program. Ni jedan drugi karakter nema nikakav efekat.
92

Listing programa je:


;********************************************************************
Prog07
Segment
;definicija segmenta
assume CS:Prog07,DS:Prog07
;pocetak CS i DS segmenta
;********************************************************************
Start:mov
ax,Prog07
;pocetak na DS
mov
ds,ax
;********************************************************************
mov
ax,0b800h
;adresa video memorije u
mov
es,ax
;es registar
;********************************************************************
mov
ax,3
;brisanje ekrana
int
10h
;********************************************************************
call write1
;meni na ekran
lab1: call line
;zelena traka u pozadini prvog reda
;********************************************************************
lab2: mov
ax,0100h
;taster?
int
16h
;********************************************************************
jz
lab2
;ne, cekati
;********************************************************************
mov
ax,0
;da
int
16h
cmp
ah,1ch
;ENTER?
jz
ent
;da, nastaviti tamo
;********************************************************************
cmp
ah,48h
;^? (gore?)
jnz
lab3
;ne, proveriti sta je
;********************************************************************
cmp
byte ptr [POINTER],1
;POINTER = 1 ?,
jz
lab2
;********************************************************************
dec
byte ptr [POINTER]
;POINTER - 1
jmp
lab1
;cekati opet na taster
;********************************************************************
lab3: cmp
ah,50h
;dole ?
jnz
lab2
;ne, taster
;********************************************************************
cmp
byte ptr [POINTER],5
;POINTER jos ne pokazuje na
jz
lab2
;5. poziciju, inkrementirati
;********************************************************************
inc
byte ptr [POINTER]
jmp
lab1
;taster
;********************************************************************
ent: mov
cl,byte ptr [POINTER]
;u cl vrednost POINTER-a
mov
si,offset ADDRESS
;u bs adresa
;********************************************************************
ent1: mov
bx,[si]
add
si,2
loop ent1
jmp
bx
;skok na osnovu bx registara
;********************************************************************
ent2: mov
si,offset QUEST
;pitanje na ekran
call write2
;********************************************************************
ent3: mov
ax,0100h
;da? ne?
int
16h
jz
ent3

93

;********************************************************************
mov
ax,0
int
16h
;********************************************************************
cmp
ah,31h
;ne, izlaziti iz programa
jz
ent4
;********************************************************************
cmp
ah,17h
;neki drugi taster, dalje
testirati
jnz
ent3
;********************************************************************
jmp
start
;da, na pocetak
;********************************************************************
ent4: mov
ax,4c00h
;nazad u DOS
int
21h
;********************************************************************
pr1: mov
si,offset TXT1
;ispisivanje teksta
call write2
jmp
ent2
;********************************************************************
pr2: mov
si,offset TXT2
;ispisivanje teksta
call write2
jmp
ent2
;********************************************************************
pr3: mov
si,offset TXT3
;ispisivanje teksta
call write2
jmp
ent2
;********************************************************************
pr4: mov
si,offset TXT4
;ispisivanje teksta
call write2
jmp
ent2
;********************************************************************
pr5: mov
si,offset TXT5
;ispisivanje teksta
call write2
jmp
ent2
;********************************************************************
;####################################################################
line Proc
;potprogram trake
mov
al,byte ptr [POINT2] ;prethodna vrednost pokazivaca u al
mov
bl,160
;duzina u bl
mov
ah,0
;********************************************************************
mul
bl
;pocetna adresa pokazivaca
add
ax,1499
mov
di,ax
mov
cx,21
mov
al,7
;crna pozadina, beli karakter
;********************************************************************
line1:mov
es:[di],al
;boja
add
di,2
loop line1
mov
al,byte ptr [POINTER]
;kao prethodno, ali nova pozicija
mov
byte ptr [POINT2],al
;pojacana pozadina
mov
bl,160
mov
ah,0
mul
bl
add
ax,1499
mov
di,ax
mov
cx,21
mov
al,47
;********************************************************************

94

line2:mov
es:[di],al
add
di,2
loop line2
ret
;nazad
line Endp
;kraj potprograma
;####################################################################
;********************************************************************
;####################################################################
write1Proc
;potprogram za ispisivanje teksta
mov
si,offset CHOICE
;0 ==> di+160 (novi red)
mov
ah,7
;255 ==> kraj teksta I zlaz
mov
di,1660
;********************************************************************
wr1: push di
wr2: mov
al,[si]
inc
si
cmp
al,0
jz
wr3
cmp
al,0ffh
jz
wr4
mov
es:[di],ax
add
di,2
jmp
wr2
;********************************************************************
wr3: pop
di
add
di,160
jmp
wr1
wr4: pop
di
;********************************************************************
ret
;alprogram vege
write1Endp
;alprogram vege
;####################################################################
;********************************************************************
;####################################################################
write2Proc
;ispisivanje teksta
mov
al,[si]
;izracunavanje koordinate
mov
ah,0
shl
ax,1
mov
di,ax
mov
al,[si+1]
mov
bl,160
mul
bl
add
di,ax
add
si,2
mov
ah,12
;********************************************************************
wr21: mov
al,[si]
inc
si
cmp
al,0
jz
wr22
mov
es:[di],ax
add
di,2
jmp
wr21
;********************************************************************
wr22: ret
write2Endp
;####################################################################
;********************************************************************
POINTER:db 1
POINT2:db
1
;********************************************************************

95

CHOICE:db
"PRVI",0
db
"DRUGI",0
db
"TRECI",0
db
"CETVRTI",0
db
"PETI",255
;********************************************************************
TXT1: db
22,5,"IZABRAN PRVI MENI",0
TXT2: db
21,5,"IZABRAN DRUGI MENI ",0
TXT3: db
21,5,"IZABRAN TRECI MENI ",0
TXT4: db
21,5,"IZABRAN CETVRTI MENI ",0
TXT5: db
21,5,"ZABRAN PETI MENI",0
;********************************************************************
QUEST:db
28,20,"NOVI IZBOR ? (d/n)",0
;********************************************************************
ADDRESS:dw offset pr1
dw
offset pr2
dw
offset pr3
dw
offset pr4
dw
offset pr5
;********************************************************************
Prog07Ends
;kraj segmenta
End
Start
;********************************************************************

96

VETAKA INTELIGENCIJA I EKSPERTNI SISTEMI


VETAKA INTELIGENCIJA
Delatnost oveka se ispoljava u vidu obavljanja fizikog i umnog rada tj. ostvarivanju
transformacije energije i informacije. Fiziki rad se preteno ispoljava u vidu
transformacije energije i za oveka predstavlja zamornu, tegobnu i dosadnu aktivnost.
Procesi realizacije fizikog rada su relativno jednostavni. Ostvaruju se u skladu sa
optim zakonima prirode. Efekti ovog rada su merljivi. Razvoj tehnike i automatizacije
proizvodnje realizacijom odgovarajuih mehanizama i automata dovela je do bitnog
olakavanja na podruju obavljanja fizikog rada.
Umni rad oveka se manifestuje u vidu dobijanja, obrade i kreiranja informacije.
Procesi transformacije informacija u ljudskom mozgu se odvijaju prema za sad malo
poznatim zakonitostima. oveku je poznat polazni i konani set informacija a ne i
postupak transformacija informacija. U okviru nauke o obradi informacija sve
intenzivnije se istrauju algoritmi i metodologije obrade informacija u ljudskom
mozgu.
Otkrivene zakonitosti se svrstavaju u novu naunu oblast informatike tkzv. "nauku o
vetakoj inteligenciji. Vetaka inteligencija tei ka reavanju primenom raunara
takvih problema koje trae metodologiju umnog rada tj. inteligenciju. Zadaci, koji
spadaju u ovu oblast, obino ne sadre u potpunosti razjanjenje mehanizama za
njihovo reavanje, ve dolazi do izraaja pokuaj, a njega usmerava ovekovo
struno znanje i intuicija.
Vetaka inteligencija je grana raunarske tehnike, koja se bavi razvijanjem
inteligentnih raunarskih sistema. Ovi sistemi su hardverski/softverski sistemi, koji su
sposobni na oveji nain reiti komplikovane zadatke:
ue iz prethodnih iskustava, samostalno reavaju probleme, i/ili meuvremeno
komuniciraju sa okruenjem. Tumae saoptenja koja su data na prirodnim jezicima,
ili su grafiki prikazani. Raunarski sistemi, koji su sposobni da funkcioniu slino
kao ovek strunjak, su ekspertni sistemi U ovu grupu sistema svrstavaju se danas svi
sistemi koji uz bilo koju hardversku konfiguraciju reavaju probleme metodologijama
koje je dala nauna oblast vetake inteligencije.
Dananji najrazvijeniji ekspertni sistemi koji reavaju probleme uskog srtunog
znanja jo nisu tako savreni da na bilo koji nain budu konkurentni oveku. Popularna
tampa i razne softverske kue ve nairoko koriste termin "ekspertni sistemi" za svoje
softverske proizvode, esto neopravdano, poto umesto ovog termina ne postoji
adekvetniji izraz.
RAZVOJ VETAKE INTELIGENCIJE
Inteligencijom oveka bavili su se ve u starom veku. Grci, koji su ispitivali
tajanstvenosti ovejeg razmiljanja, ve pre 3000 godina, stvorili su sisteme logike,
sintakse i teorije znanja, koje oblasti su i danas znaajne.

97

Krajem drugog svetskog rata, engleski i ameriki istraivai su realizovali raunar.


Naunik Neumann je odredio princip rada i arhitekturu raunara. Njegov model (Slika
21) je pretrpeo vie
modifikacija ali su potovani sledei principi:
raunar je ureaj opte namene i poseduje potpuno automatsko
izvoenje programa,
raunar, osim podataka za raunanje (ulazne vrednosti, granine
vrednosti, tabele, funkcija), memorie meurezultate i rezultate
raunanja,
raunar je sposoban za pohranjivanje toka naredbi (programa),
naredbe su u raunaru svedene na numeriki kod, tako da se podaci i
naredbe pohranjuju na isti nain u istoj jedinici, ta jedinica se naziva
memorijom,
raunar poseduje jedinicu koja obavlja osnovne aritmetike operacije,
to je aritmetiko-logika jedinica,
ima jedinicu koja "razume" naredbe i upravlja tokom izvravanja
programa, to je upravljaka jedinica i
raunar komunicira sa okolinom, jedinica, koja omoguava
komunikaciju oveka i raunara, naziva se ulazno-izlaznom jedinicom.

Slika 21: Neumann-ov model raunara


Jo pre pojave raunara postojala su dva pravca u nauci koji su se bavili osnovama
vetake inteligencije:
formalna logika - koja se bavi osnovama simbolike obrade zasnovane
na matematikoj logici i teoriji rekurziviteta i
kognitivna psihologija koja se bavi psihologijom razmiljanja i
prepoznavanja i istrauje ponaanje i sposobnost oveka u reavanju
problema.
Objedinjavanjem ova dva pravca nauke uz sprezanje sa informatikom zapoeta su
savremena istraivanja na podruju vetake inteligencije. Ova doba moe se staviti na
sredinu 1950-tih godina. Da bi se postigao zajedniki cilj, razvijen je jezik LISP.
Njegov autor je bio John McCarthy. Po mnogima, on je prvi upotrebio izraz "Vetaka
Inteligencija" "Artifical Intelligence".
Razvoj ove oblasti tekao je prema sledeem:
period od 1955 do 1960, karakteristino je za poetak istraivanja VI,
prva konferencija je organizovana u Dartmouth-u. Izradjeni su sistemi
PERCEPTRON i GPS.
izmeu 1961-70, pojavili su se prvi osnovni jezici VI LISP i PROLOG.
Arhitektura ovih vieprogramskih jezika se bazira na matematikoj
logici, a reavaju probleme nealgoritamski manipulacijom simbolima.
Prvi sistemi su bili izgradjeni u definisanim oblastima, sa konanim
brojem pravila. Medjutim, veliki i sloeni sistemi nisu se mogli dobro
98

simulirati ni sa sloenim strategijama traenja. Programi se nisu mogli


pribliiti intuiciji strunjaka. Sloene sisteme je bilo lake savladati, ako
se prezentuje sam zadatak, i dobro struktuirano se prikae znanje o
koracima za njegovo reavanje. Aktiviranje potrebnog dela programa
vri se jednostavnim mehanizmom zavisnim od problema.
u periodu od 1971 do 1980, pojavljuju se sistemi na bazi znanja
("knowledge based") koji zahtevaju drugaiji pristup organizacije
programa. Odvaja se deo sa bazom znanja strunjaka odredjenog
domena, od mehanizma koji to aktivira u zavisnosti od ukazane
situacije. Veina tih sistema prua prijatan rad i komunikaciju sa
korisnicima, koji nisu specijalisti raunarske tehnike. Bilo ko moe
pratiti rad sistema, a na zahtev korisnika sistem daje obrazloenje za
izvrena pravila, i to na jeziku koji
je blie oveku. Ove komponente sistema zajedno sa delom za
popunjavanje baze znanja i za njeno odravanje dobro slue kao okvirni
sistemi, kao prazne koljke (shell). Poznati sistemi za osnovu
prezentaciju znanja su MYCIN, HERSAY II, a za osnovu tehnologije
znanja su EMYCIN, GUIDON.
u periodu od 1981 do 1990, pojavljuju se na tritu i primenjuju se
hardveri za VI, i softveri za obradu govornog jezika, prepoznavanje i
generisanje glasa, mainsko vidjenje, mainsko uenje i neuralne mree.
od 1991, javljaju se raunarski sistemi 5. i 6. generacije. U Japanu su
radili na 5. generaciji, na principu logike obrade (PROLOG). 6-ta
generacija raunarskih sistema se gradi na principu neuralne mree.
One su dinamiki sistemi sa velikom paralelnou, sa kojima je mogue
u veoj meri se pribliiti ovekovu inteligentnu obradu informacija.
Raunari 6-te generacije graeni su na bazi pozitivnih dostignua svih
prethodnih generacija raunara.

Od 1989 tehnologija zasnovana na principu baze znanja razvija se u dva pravca:


tehnologija na bazi znanja vre se integrie sa
tradicionalnim tehnikama, kao to su baze podataka, i sa novijim
tehnikama, kao to je hipertekst i razne tehnike VI,
umesto razvoja sredstva za optu namenu, razvijaju se i uvode sredstva
koja su orijentisana prema primeni, tj. prema tipu problema.
POJAM VETAKE INTELIGENCIJE
Pojam vetake inteligencije uveo je John McCarthy 1956 godine. Tako je nazvao
svoja istraivanja. Iako naziv nije najpogodniji on je ipak i dan danas u upotrebi. Ova
nauka pod inteligencijom podrazumeva one principe inteligentnog ponaanja, u koje
spada sposobnost komunikacije, razvoja, prilagoavanja, osetljivost prema
problemima, sposobnost reavanja problema, ciljno orijentisana delatnost, samostalni
izbor cilja. Ovi pojmovi nam ukazuju, da se tu ne radi o takvoj inteligenciji, o kojoj se
govori u sluaju oveka ili ivotinje. U sluaju ivotinje podrazumeva se jo i stvaranje
unutranje slike o svetu, manipulacija sa tim simbolima koji stvaraju tu sliku, preko
njih se manifestuje tenja da se promeni "svet", sposobnost za prilagodjavanje i uenje,
koja pretpostavlja predstavu prolosti i budunosti, komunikaciju putem simbola, i
podrazumeva se njihovo zajedniko prisustvo, i dodaje se jo i "namera", kao i pojam

99

"oseaj", a kod oveka jo i samorefleksija, sposobnost za raspoznavanje i


prevazilaenje sopstvenih ogranienja.
Raunarska tehnika u nekim oblastima prevazilazi efikasnost ovekovog uma, u brzini,
tanosti a prua i druge prednosti. Raunar, na ovim podrujima moe dati
iznenadjujue i uspene rezultate. Najrasprostranjena definicija VI je ona koju je dao
Marvin Minsky:
"vetaka inteligencija je ona nauka, koja osposobi raunar za obavljanje takvih radnji,
koje se obelee kao inteligentne, kada ih ovek izvrava".
PODRUJA ISTRAIVANJA VETAKE INTELIGENCIJE
Oblasti istraivanja VI su sledee:
dokaz teoreme, ova oblast ispituje na koji nain se moe dokazati jedna
hipoteza uz dato znanje pomou dokaznih metoda i pravila. Ponekad je
potrebno razbiti hipotezu na pomone hipoteze, gde izbor delova
teoreme moe biti zadatak koji zahteva veliko iskustvo. Najtee je
ovekovo iskustvo pretvoriti u znanje koje moe raunar da koristi.
prepoznavanje uzorka. Kada su objekti, situacije ili dogaaji opisani
izvesnim numerikim promenljivama, koje promenljive lie na
odreene uzorke i iz brojano izraene daljine zakljuuju npr. istovetan,
blizu istovetan, verovatno istovetan, neistovetan itd.,
heuristiki postupci. Ovi postupci najee savetuju opte, celishodne,
fleksibilne, u praksi opravdane metode reenja nasuprot onim
reenjima, koji su egzaktni, teorijski osnovani, i koji obeaju optimalna
reenja, ali samo uz strogo definisane uslove. Heuristika reenja igraju
vanu ulogu u ekspertnim sistemima, jer egzaktna reenja nisu uvek
dostupna, ili ne bi funkcionisale u sluaju da fali jedan ili vie podataka.
postupci traenja. Najee opisuju razne mogunosti kako obilaziti
grafom reprezentovani domen problema. Svaka heuristika, za ovaj
problem, osigurava reenje koje je blizu optimalnom reenju.
prezentacija znanja. Najizraeniji pravac VI. injenica je da ovek
pamti svoja znanja na sasvim drugaiji nain od raunara. Pitanje je na
koji nain prikazati razno struno znanje koja bi raunar uspeno
obradio i prikazao na nekom programskom jeziku.
obrada simbola. Pored pisanog materijala obino treba raditi i sa
zvunim signalima kao i sa slikama. Kod zvunog signala treba
prepoznati signale, zatim izvriti transformaciju i izvriti dekodiranje
istih. Prepoznavanje jedne slike, poinje na osnovnom nivou sa
identifikacijom linija, kriva, take, i uglova. Postupno, po odredjenoj
hierarhiji se sastavlja slika. Prepoznavanje dinamine slike sastoji se iz
vie nivoa identifikacije, i tako se formira celina.
kombinatorni i taktiki zadaci. Neki zadaci su suvie dugotrajni (ako bi
isprobali svaku kombinaciju), ak i na najbrem raunaru, zato se
koriste razne metode za skraivanje, razne heuristike. Sloenost
zadatka, koji spada u ovu grupu, eksponencijalno zavisi od vrednosti
nekih parametara.
manipulacija neizvesnostima. Postupci se koriste u reenjima gde su
informacije nepotpune, nesigurne ili pune umova. Postoji vie izvora
nesigurnosti, prema tome i njihovo rukovanje, procena uticaja je
100

raznovrsna u zavisnosti od osobine i drugih okolnosti problema. Neke


metode reenja su bazirana na matematikim modelima npr. fuzzylogika, ili drugi modeli.
PODRUJA PRIMENE VETAKE INTELIGENCIJE
VI, koja se razvija relativno brzo, ve nairoko se koristi u sledim aplikacijama:
inteligentno rukovanje bazom podataka. U ovim sistemima korisniku je
omoguen pristup ne samo onim podacima, do kojih se moe doi direktno,
nego i onim izvedenim podacima do kojih se dolazi nakon analize direktno
dobijenih podataka. To je mogue sa korisnikim modelima, koji opisuju razne
potrebe korisnika, oekivanja i mogunosti.
robotika. Nauka i tehnologija za razvoj i upotrebu "inteligentnih" sredstava.
Obavlja se fiziki, konstruktivni posao sa izvesnim stepenom prilagodjavanja.
Znaajna je sposobnost identifikacija pozicije objekta i okolnosti da bi se
izabrala odgovarajua metoda za postizanje unapred datog cilja. Iz osnovnih
radnji sastavlja se plan aktivnosti, koji su potrebni za prelaz iz jednog stanja
robota u drugo. Ima veliki uticaj na dalji razvoj industrije.
obrada prirodnih i vetakih jezika. Vri se prevod, ili priprema za prevod sa
jednog jezika na drugi.
inteligentna komunikacija sa raunarom. Tokom rada raunara ovek oekuje
jasnu komunikaciju u vezi zadatka.
razumevanje i generisanje ivog jezika. Sa skromnom koliinom rei i
jednostavnom gramatikom je ovo mogue na nekim monijim raunarima.
Raunar, sem znaenja pojedinanih rei, mora da poznaje i relacije izmedju
njih, gramatiku jezika i pojmove
pridruene objektima, kao i relacije medju reenicama. Iz toga proizilaze tri
funkcije jezike analize:
o leksika analiza (analiza rei),
o sintaktika analiza (analiza mesta rei u reenici) i
o semantika (analiza znaenja reenice u kontekstu i kao zasebne celine)
automatsko programiranje. Programski zadatak, koji je napisan na nekom
specifinom jeziku (npr. predikatum-kalkulus), prevede na neki programski
jezik, ili na izvrni kod. Program, koji to izvrava mora poznavati sintaksu
izvornog (na kome je data specifikacija) i izvrnog jezika, kao i mogue
strukture podataka, konvencije za rukovanje input-outputom i ekranom .
mainsko uenje. Razvijeni su neki znaajni programi uenja na osnovu saveta
i kazivanja, na osnovu primera posredstvom induktivnog zakljuivanja - i na
osnovu otkria.
sistemi zasnovani na znanju. Tu spadaju ekspertni sistemi, koji reavaju
zadatke simbolike prirode, sposobni su da obrazlau svoja ponaanja i
zakljuke, sposobni su da se usavravaju, da reavaju znaajne, teke i sloene
probleme koji ukljuuju i neizvesnost.
EKSPERTNI SISTEMI
Izraz, ekspertni sistemi potie od injenice, da su takvi sistemi nastali tako to su od
priznatih eksperata u nekoj oblasti, intervjuisanjem i drugim postupcima doznavana i
"zahvatana", a potom organizovana njihova znanja. Izraz ekspertni sistemi (u daljem
tekstu: ES), se najee primenjuje na programe koji se koriste znanjima radi
101

simuliranja ponaanja oveka-eksperta, zapravo ije funkcionisanje ima neke oblike


ponaanja oveka eksperta. Takvom oveku je svojstveno da poseduje veliku koliinu
specijalizovanih znanja i informacija ukljuujui i neke retke injenice - potrebnih za
reavanje specifinih problema u odredjenoj oblasti, ali da sem toga, poseduje neka,
preteno lina, pravila domiljatog rezonovanja i nagadjanja, to mu omoguava
efikasno analiziranje i uspeno i brzo reavanje tih problema. On ima mo uenja iz
iskustva, sticanja optih znanja, rekonceptualizacije, rezonovanja po analogiji,
transfera znanja iz jednog podruja u drugo, ima fleksibilnost u menjanju pristupa da
bi se pronaao onaj koji je prikladan za reavanje datog problema. Osim toga, ES
omoguava dijagnosticiranje problema, zna da preporuuje alternative i reenja,
obrazlae i racionalizuje svoje dijagnoze i preporuke, kao i da "ui" iz prethodnih
iskustava dodajui bazi znanja nove elemente do kojih dolazi tokom reavanja
problema.
KOMPARATIVNA ANALIZA LJUDSKOG I MAINSKOG ZNANJA
Procesi stvaranja i memorisanja ljudskog znanja su veoma sloeni i praktino
neotkriveni. Kategorizacija se moe obaviti samo sa stanovita spoljnih efekata a ne i
sa stanovita internih mehanizama. Na slici 2 data je jedna kategorizacija ljudskog
znanja uz nain sticanja istih kojoj se moe upotrebiti za komparativnu analizu
ljudskog znanja i mainskog znanja ugraenih u razne tipove ekspertnih sistema.

Slika 2: Nain sticanja i kategorizacije ljudskog znanja


ovek stie znanje ili na bazi sopstvenog ili tueg iskustva posmatranjem,
zakljuivanjem tj. delovanjem u praksi. Ovaj vid znanja moe biti esto veoma
efikasan za reavanje nekih praktinih problema ali ima ogranien domen efikasnosti.
Znatno efikasnije se stie znanje uz sistematski mehanizam usvajanja znanja uenjem
u obrazovnim ustanovama ili iz udbenika. Bez obzira na nedostatke obrazovnih
procesa za sada se ovaj vid sticanja znanja pokazao efikasnijim i delotvornijim. U
Tabeli 1. date su osnovne karakteristike ljudskog znanja i znanja ekspertnih sistema
prve generacije.
102

Tabela 1: Osnovne karakteristike ljudskog znanja i znanja ekspertnih sistema prve


generacije
struna znanja oveka
struna znanja zasnovana na primeni
vetake inteligencije
prolazno
stalno
teko se prenosi, reprodukuje, iri se lako se prenosi i reprodukuje
obuavanjem
teko se dokumentuje
lako se dokumentuje
nije uvek dosledno, esto je ak i labilno, uvek je dosledno
podlono je emocijama
skupo a esto postaje i nedostino
moe se pribaviti "jeftino" i uvek stoji na
raspolaganju
kreativno, inovativno
nekreativno, bez due
adaptivno, obuava se
zna samo ono to su ugradili u bazu
znanja
interaktivno je sa okolinom preko ula komunikacija sa okolinom je ograniena
oveka
na interaktivni sistem
procesi miljenja su promenljivi, bogati
operie unutranjim simbolima
problem razmatra sa vie aspekata, proces problem razmatra sa ogranienjima tj.
miljenja je dinamian i adaptivan, samo sa pozicija ugraenih aspekata
operie vienivoskim modelima
bazira se na zdravom razumu
ima samo tehniko znanje, treba oekivati
samo predlog, savet a ne i reenje
problema
Pri formiranju ekspertnih sistema ovek je teio da u sistemu upravljanja znanja i
donoenju odluka oponaa oveka. Ekspertni sistemi prve generacije koriste
nestandardne metode gradnje znanja. U toku rada ne proiruju bazu znanja na osnovu
sopstvenih iskustava tj. ne ue iz sopstvenog iskustva tj. imaju samo povrinske efekte
eksperta.
Ekspertni sistemi druge generacije tee ka primeni metodologije mainskog uenja tj.
ka proirivanju baze znanja u hodu. Deluju u pravcu integracije povrinskog
(praktinog) i kvalitetnog znanja.
TIPOVI I PODRUJA PRIMENE EKSPERTNIH SISTEMA
Do dananjeg dana je razvijen vei broj ekspernih sistema koji uspeno mogu reavati
neke probleme. Osnovna podruja uspene primene su sledea:
sistemi za objanjavanje, (interpretaciju) - ova kategorija sadri nadzor,
razumevanje jezika, analizu lika, tumaenje hemijske strukture,
tumaenje signala, i vie tipova inteligentne analize, ovi tipovi sistema,
objanjavaju podatke, na taj nain, to im daju simboliko znaenje za
opis situacije ili stanja sistema,
prognostiki sistemi - sadre prognozu vremena, prognozu
demografskih kretanja, prognozu u prometu, procenu etve i vojna
predvidjanja, prognostiki sistemi su tipino dinamini sistemi sa
vrednostima parametara, koji odgovaraju datoj situaciji, zakljuci, koji
proizilaze iz modela ine osnovu za predvidjanja, ignorisanjem
103

verovatne procene, prognostiki sistemi mogu generisati veliki broj


moguih scenarija,
dijagnostiki sistemi - ova kategorija, izmedju ostalog sadri dijagnozu
iz medicine, elektronike, mehanike i softversku dijagnozu, tipino, ovi
sistemi, posmatrano nepravilno ponaanje vezuju sa istaknutim
uzrokom, koristei jednu ili vie tehnika, kod nekih metoda, kljuna je
tabela veza izmedju ponaanja i dijagnoze, drugi metodi kombinuju
znanje o dizajnu sistema sa znanjem o potencijalnim grekama dizajnu,
implementaciju ili komponente za generisanje mogue pogrene
funkcije dosledno opaaju,
sistemi planiranja - sadre automatsko programiranje, kao i planiranje
kretanja robota, odvijanja projekta, puta, komunikacije, eksperimente, i
reavanje problema vojnih planiranja itd., sistemi za planiranje koriste
modele o ponaanju okruenja, da bi mogli doneti zakljuke efektima
ponaanja okruenja,
sistemi monitoringa - uporeuje se posmatranje o ponaanju sistema sa
osobinom za koji se smatra da je kritian za uspean rezultat plana, ove
kritine osobine, ili povredljive situacije, mogu prouzrokovati pogrean
tok plana, uopte, sistemi monitoringa, identifikuju povredljive osobine
na dva naina:
o prema jednom nainu, tip kritine situacije odgovara jednom
prihvatljivom uslovu, ija povreda bi unitila racionalnost plana,
o druga vrsta kritine situacije je kada neki potencijalni efekti
plana povredjuju planiranu strukturu, oni odgovaraju pogrenim
funkcijama u predvidjenim situacijama, postoji vie sistema
monitoringa sa raunarskom podrkom, za planiranje nuklearne
energije, vazdunog prometa, bolesti, regulacije, i druge,
debaging sistem - ovi sistemi, oslanjaju se na planiranje, dizajniranje, i
predvidjanje mogunosti za kreiranje specifikacije ili savete za
korekciju utvrenog problema, debaging sistem sa raunarskom
podrkom, postoji za raunarsko programiranje, ak i u formi inteligene
baze znanja i tekst editora, ali se ne klasifikuju kao ekspertni sistemi,
sistemi obnavljanja, ovi sistemi obuhvataju sisteme debaginga, sisteme
planiranja i izvrne sposobnost,. raunarom podravani sistemi ove
vrste, nalaze se u podrujima:
distributivnih mrea, avijacije i u odravanju raunara, kao i u drugima,
sistemi instrukcije - ovi sistemi sadre dijagnostike i debaging
podsisteme koji daju instrukcije istraivau, ueniku, ili bilo kom
korisniku, ovi sistemi tipino kreu sa konstrukcijom hipotetikog opisa
korisnikovog znanja, koji objanjava korisnikovu reakciju, kasnije se
ispita slabost korisnikovog znanja i identifikuju se odgovarajue
korekcije, najzad se planira dvosmerni tutorijal, koji je namenjen za
poveanje znanje
korisnika,
kontrolni sistemi - ovi sistemi upravljaju celo ponaanje sistema, da bi
to umeli, kontrolni sistemi moraju vie puta tumaiti postojee stanje,
predvideti budunost, ispitivati uzroke predvidjenih problema,
formulisati korektivne planove, i nadzirati njihovo izvrenje da bi se
postigao uspeh, problemi, koji su snabdeveni kontrolnim sistemom, su
kontrola vazdunog prometa, menadment poslovanja, menadment
104

bitke itd., tehnologija inenjeringa znanja obrauje vie kontrolnih


problema, koji se teko mogu reiti klasinim matematikim pristupom
na tradicionalni nain.
ARHITEKTURA EKSPERTNIH SISTEMA
Uspeh ekspertnih sistema moe se traiti u injenici da se umesto napornog i
sistematskog pretraivanja po bazi znanja uvodi heuristika tj. optimalizirajui
mehanizmi steeni na bazi ovekovih empirijskih iskustava. Baza znanja je odvojena
od mehanizama za zakljuivanje i izvrenja. Svaki ES poseduje odredjene
karakteristike i specifinosti koje kod drugih ES nema. Ipak, u sutini svi imaju istu
konstrukciju, konfiguraciju i organizaciju sastavljenu od baze znanja, mehanizma
zakljuivanja, podsistema za obrazlaganje ponaanja i zakljuaka, podsistema za
uzimanje i auriranje znanja i korisnikog interfejsa. Slika 22. prikazuje arhitekturu
ekspertnog sistema.

Slika 22.: Arhitektura ekspertnog sistema


Baza znanja: Bazu znanja ini osnovni skup znanja tj. bazine injenice, pravila i
heuristika. Pravilo je uslovni iskaz koji odredjuje akciju u sluaju zadovoljenja nekog
posebnog uslova. Pravila se uopteno baziraju na strunom znanju za reavanje
problema, koji su razvili eksperti, radei vie godina na odredjenoj problematici.
Postoji i znanje sistema o samoj sebi, tj. izvedeno znanje iz datih pravila, ili
metaznanje. Znanje pohranjeno u bazi ini jedan ES sposobnim da se ponaa kao
ekspert.
Mehanizam zakljuivanja i kontrole. Ovaj deo simulira deduktivne misaone procese
oveka strunjaka. Polazei od baze znanja i korisnikovog ulaza u ES, procedura
zakljuivanja je metoda razmiljanja uz pomo koje se prepoznaju i uparuju uzorci

105

znanja s podacima. Ugraene strategije zavise od metoda koje su se koristile za


prezentaciju znanja. Tu spadaju unapred olanavanje, unazad olanavanje, kao
unutranji nadzor sistema. Ovaj mehanizam ukljuuje i strategije zakljuivanja i
kontrole za manipulisanje znanjem radi dolaenja do novih informacija i znanja.
Podsistem za uzimanje i auriranje znanja. Baza znanja treba da sadi sva potrebna
znanja iz posmatranog domena u svakom trenutku vremena. Da bi se proirenja i
izmene kojem znanje u jednoj oblasti podlee mogli pratiti i pohranjivati u bazu
znanja, potrebno je omoguiti njegovo manuelno ili automatsko auriranje. Ovu
aktivnost izvrava ovaj podsistem. Manuelno auriranje vri inenjer znanja ili domenekspert, a
automatsko auriranje podrazumeva mainsko uenje, odnosno
generalizaciju iskustva u formi novog znanja.
Podsistem obrazlaganja ponaanja i zakljuaka. Ekspertni sistemi u svom radu nastoje
oponaati oveka-eksperta, koji osim to reava sloene probleme, moe i obrazloiti
svoje odluke. Obrazlaganje zakljuaka i ponaanja se sastoji od identifikovanja koraka
u procesu rezonovanja i provere njihove ispravnosti. Obrazlaganje zakljuaka i
ponaanja spada u domen razumevanja prirodnog jezika, budui da sistem formulie
objanjenja na nain razumljiv korisniku, u skladu sa nivoom ekspertize korisnika. U
postojeim ES, ova komponenta je svedena na izlistavanje pravila aktiviranih u
procesu izvravanja programa i provere njihove ispravnosti u okviru ovog podsistema.
Korisniki interfejs. Uloga ovog dela je u prihvatanju informacija koje zadaje korisnik
i njihovom prevodjenju u oblik razumljiv za sistem, kao i u transformaciji podataka
koje prua sistem u oblik razumljiv za korisnika. Ova komunikacija korisnika sa
raunarom treba da se odvija na jeziku to slinijem prirodnom, pogotovo to raunar
zamenjuje oveka-eksperta, tako da se esto ugradjuju sistemi za obradu prirodnog
jezika u okviru interfejsa.
SREDSTVA I JEZICI EKSPERTNIH SISTEMA
Sloenost izrade i rada ekspertnih sistema zahteva i razvoj obimnih i sloenih
programa. Izbor tehnike predstavljanja i rukovanja znanjem, razvoj mehanizama
zakljuivanja, kontrole, pruanja dodatnih informacija itd. je bitno olakeno ukoliko
postoji posebno sredstvo za razvoj ES.
Aktivnosti oko razvoja ekspertnih sistema mogu se razvrstati u sledee kategorije:
programski jezici za razvoj ES,
jezici inenjeringa znanja,
programska podrka izgradnje sistema i
olakice izgradnje ES.
Programski jezici mogu biti problemsko-orijentisani, kao to su FORTRAN, PASCAL,
C, ili jezici koji slue za manipulisanje simbolima, kao to su LISP i PROLOG. Zbog
svojih osobina pogodnih za izgradnju ES, najee su korieni programski jezici
LISP, PROLOG i OPS5. U poslednje vreme, sve vie se ire ES, koji su pisani na
tradicionalnim jezicima kao to su PASCAL i jezik C. Svi ovi jezici pruaju veliku
slobodu pri izgradnji ES, ali ne pomau pri izboru naina predstavljanja znanja ili
pristupu bazi znanja.

106

Za razliku od programskih jezika opte namene, ovi su programski jezici na najviem


nivou i namenjeni su iskljuivo konstruisanju ES. Ovi programi su jezici za
inenjering znanja i pruaju posebne olakice pri radu, ali su manje fleksibilni sa
aspekta predstavljanja i manipulisanja znanjem. Ovi jezici su inteligentan alat za
razvoj ES. Sastoje se od jezika za izgradnju ES kojima je pridodato iroko razvojno
okruenje. Ukoliko je ovom programu potrebno dodati samo znanje specifino za
odabrani domen, tj. domensko znanje, da bi on prerastao u ES, re je o jeziku
ogoljenog tipa. Takvi jezici se nazivaju ljuturama ES. Ljuske pored gotove strukture,
pruaju i niz olakica za brzi i jednostavan razvoj ES, ali im nedostaje optost i
fleksibilnost u rukovanju problemima koji ne spadaju u unapred odredjenu klasu, za
koju su namenjeni. Nazivi nekih ljuski su EXSYS Professional, KAS, GURU, M1,
NEXPERT-OBJECT, LEVEL5.
Programsku podrku izgradnje ekspertnog sistema ini skup programa, koji pomau ili
pri sticanju i predstavljanju znanja domenskog eksperta ili pri konstrukciji ES.
Programi koji povezuju znanje eksperta sa bazom znanja rade na principu interakcije
raunara i korisnika. Korisnik je u mogunosti da iskae nova pravila pomou
redukovanog skupa engleskih rei, koje sistem analizira, daje predloge u zavisnosti od
potpunosti i konzistentnosti pravila i pomae pri otkrivanju greaka. Programi koji
pomau pri dizajnu i izgradnji ES, nude inenjeru znanja odredjeni skup koncepata,
koje ovaj koristi kao blokove za gradnju: spaja ih po potrebi u delove ES. Svaka
komponenta je skup funkcija nekog programskog jezika i podrava ulanavanje
unapred, unazad, ili arhitekturu table. Ova grupa programa je mono orue u rukama
iskusnog inenjera znanja koji dobro poznaje jezik kojim su ovakvi programi napisani.
Olakice izgradnje ES, u formi pomonih alata pri programiranju, takoe se mogu
uvrstiti u sredstva za izradu ES. Ovi alati su debugger, editor baze znanja, ugradjeni
U/I mehanizmi, mehanizam za davanje objanjenja. Pri izboru sredstva za izradu ES,
moramo biti sigurni da je odredjeni alat odgovarajui s obzirom na tip problema koji
reavamo. Problemi se javljaju kada ni jedan od postojeih alata ne zadovoljava nae
potrebe u potpunosti. Jedno od reenja za nastali problem jeste kreiranje novog alata,
sa jedinstvenom prezentacijom znanja, mehanizmom zakljuivanja i tehnikama
kontrole, napisan u nekom optem jeziku vetake inteligencije. Sredstva i jezici ES se
mogu koristiti za mainsko prihvatanje znanja eksperta, ali to znanje prvo mora se
dobiti od oveka eksperta.
STICANJE ZNANJA ZA EKSPERTNE SISTEME
Reenja odredjenih problema, dobijena ES -om e u onoj meri biti zadovoljavajua,
koliko je ekspertsko znanje adekvatno ugradjeno u sistem. Pogreno tumaeno,
dvosmisleno ili parcijalno obuhvaeno znanje su direktni preduslovi za loe
funkcionisanje ES. Potrebno je u odabranom domenu crpiti znanja od eksperta da bi se
postiglo to potpuniji i taniji opis znanja i da se predstavi nain na koji se ekspert
koristi svojim znanjem. To je zadatak inenjera znanja ili projektanta baze znanja.
Crpljenje znanja od eksperta je sloen zadatak. Odvija se pomou nekih od sledeih
tehnika:
ispitivanje eksperata - od eksperta se trai da se priseti ta je inio, ili da
zamisli kako bi postupao pri reavanju odredjenog problema. Od raznih
oblika, jedan oblik je deskripcija, kada se inenjer znanja upoznaje sa
bazinim informacijama i strukturom posmatranog domena putem opisa

107

koje daje ovek-ekspert. Predstavljaju se "idealni sluajevi". Drugi


oblik daje sveobuhvatnije znanje o domenu, a to je introspekcija.
Inenjer znanja ispituje eksperta u cilju razjanjavanja sopstvenih
nedoumica i radi iznalaenja znanja iz posmatranog domena. Metode za
ispitivanje eksperta su:
o intervju,
o repertoarske reetke,
o skale procenjivanja,
o tehnika kritinih dogadjaja,
o uparivanje karakteristika i odluka, razlikovanje ciljeva,
o reklasifikacija,
o analiza odluivanja.

posmatranje eksperta na delu - ovaj metod je usredsredjen na ono to


ekspert ini u aktuelnoj situaciji. Posmatranje eksperta na delu,
omoguava inenjeru znanja da zapazi mnoge bitne detalje koji
deskripcijom ostaju neuoeni. Ova tehnika pretpostavlja da je inenjer
znanja upoznat sa osnovnim domenskim znanjem, zato se ona
kombinuje sa prethodno navedenim metodama ili prouavanjem pisanih
izvora. Tokom reavanja problema, na zahtev posmatraa, ekspert moe
glasno razmiljati i tako dati potrebna razjanjenja i obrazloenja svojih
odluka, postupaka i radnog ponaanja.

PREDSTAVLJANJA ZNANJA I ZAKLJUIVANJA


Ekspertni sistem je raunarski program, koji reava sloene probleme realnog sveta,
koji zahtevaju obimnu ljudsku eksperetizu. Ovo struno znanje je uglavnom
heuristike, praktine prirode, nesigurno je i nije uvek zakonito i dosledno.
Da bi doao do reenja, ES oponaa proces ljudskog rezonovanja, primenjujui
specifino znanje i zakljuivanje. Da bi ES mogao pristupiti reavanju problema, u
njega mora biti ukljueno razumevanje osnovne procedure, to je uopteni oblik
ekspertize, zajedniki za veinu domena.
Domensko znanje eksperta mora se prevesti u oblik pogodan za kreiranje ES. To se
vri odredjenim tehnikama. Inenjeri znanja analiziraju znanje eksperta i na odredjeni
nain to znanje predstavljaju u softverskom okruenju koje obuhvata ES, kao
relevantnu informaciju.
Ukoliko arhitekturu ES predstavljamo na nain kako je prikazano na slici 3., prema
kojem se on sastoji od:
baze znanja,
mehanizma za zakljuivanja i kontrole,
podsistema za uzimanje i auriranje znanja,
podsistema za obrazlaganja ponaanja i zakljuaka,
korisnikog interfejsa,
tada moemo rei da emo se zadrati na prvoj taci i obraditi strategije za
predstavljanje znanja uz poseban osvrt na mehanizme zakljuivanja.

108

OSNOVI ININJERINGA ZNANJA


Za opis svoje discipline, istraivai, na polju ES, odomaili su izraz "inenjer znanja",
koji kombinuje naune tehnoloke i metodoloke elemente. Kao princip inenjera
znanja, dri se da struno obavljanje nekog posla, retko odgovara strogo
algoritmikom procesu, uz to, takvo obavljanje posla, sposobno je za obradu na
raunaru. Izvedeno, jasno izreeno, i na raunaru obradjeno znanje strunjaka, ini
kljuni zadatak na ovom podruju. Zbog velikog znaaja ove problematike, razmotrie
se ljudsko znanje i iskustvo.
ZNANJE I ISKUSTVO
Uopteno shvaeno, znanje sadri opis, uzajamne veze i procedure nekih domena
interesa. Opisi u bazi znanja, koja identifikuju i razlikuju objekte i klase, su reenice
na nekim jezicima. Elementarni sastojci ovih jezika su jednostavne karakteristike ili
koncepcije. Opis sistema uglavnom sadri pravila i procedure za primenu i
interpretaciju opisa u specifinim aplikacijama. Baza znanja takoe sadri posebnu
vrstu opisa, koje su poznate kao uzajamne veze. Oni izraavaju zavisnosti i asocijacije
izmedju stavaka u bazi znanja. Takve tipine uzajamne veze opisuju pojmovne,
definicijske i empirijske asocijacije. S druge strane, procedure odreuju operacije za
izvrenje kada se pokua dati zakljuak, ili reiti problem.
U praksi, znanje se ne pojavljuje u nekim strogim formama, koje se isto kvalifikuje u
te abstraktne kategorije. Njegov poloaj je kao neka besmislena i nerazjanjena pojava,
znanje, koje na neki nain omoguuje oveku strunjaka da rei teke probleme. Ima
vie formi. Forma se esto sastoji iz empirijske asocijacije. Doktori i geolozi, na
primer, poseduju znanje iz vie takvih formi asocijacija, u kojoj su slini uzroci za
posmatrane injenice. Posledica takvog znanja je da strunjaci kombinuju heuristine
metode sa verovatnim, pogrenim i nesigurnim podacima i zakljucima. Mnogi
strunjaci poseduju drugaiju formu znanja, i to u formi koncepcije, ograniavanja i
regulacije, a te operacije su odluujue na njihovim podrujima. Oni takodje mogu
iskoristiti uzrone modele njihovih studija, kao eme zakljuivanja koje koriste te
modele za predvidjanje, dijagnosticiranje, planiranje ili za analizu situacije. Ukratko,
znanje se sastoji iz:
simbolikog opisa, koji opisuje definisanu i empirijsku meuzavisnost u
datom domenu i
procedure za manipulaciju tih opisa.
Za razumevanje ekspertnih izvodjenja, pomae ako se razmotri razlika izmeu znanja i
iskustva. Iskustveno izvoenje nekog zadataka esto sadri mnoge karakteristike, koje
nisu prisutne u dobro informisanom ali neiskustvenom poslu, kao to su velika brzina,
smanjenje greaka, smanjenje kognitivnog tereta (zahtevane panje) i prilagodjavanje
vitalnost pri razvoju. Takve karakteristike se odravaju i u znanju i u inenjeringu.
Iskustvo znai imati pravo znanje i koristiti ga efikasno.
ORGANIZACIJA ZNANJA I ZAKLJUIVANJA EKSPERTNIH SITEMA
Inenjer znanja, kad poinje svoj rad na izgradnji ekspertnog sistema, tei prvo da
izvue znanje eksperata i tek onda ga organizuje u sistemu za efektivno izvravanje.

109

Neke tehnike sticanja znanja za ES, navedeni su u poglavlju Sticanje znanja za


ekspertne sisteme. Ovo steeno znanje se organizuje u bazi znanja ES na sledee
naine:
kao produkcioni sistem,
kao struktuirani objekti, tipa:
o semantike mree,
o trojke objekat-atribut-vrednost,
o frejmovi,
upotrebom predikatske logike.
PREDSTAVLJANJE
ZAKLJUIVANJA

ZNANJA

PRODUKCIONIM

PRAVILIMA

SISTEM

Procedura je takva metoda, u kojoj se korak po korak postie neki specifini rezultat.
Produkcioni sistemi se sastoje od:
globalnog memorijskog podruja,
skupa produkcionih pravila i
interpretera koji ispituje trenutna stanja i izvrava pravila.
Globalni memorijski elementi su memorijska podruja, koje se koriste za validno
stanje posmatranog okruenja. Namenjeno je otkrivanju stanja posmatranog sistema, i
sastoji se od niza memorijskih elemenata. Svaki elemenat sadri opis jednog objekta,
koji je bitan za posmatrani problem. Ovaj opis je u obliku simbolikog identifikatora.
Svakom opisu se udruuje par atribut-vrednost. Svaki takav par opisuje trenutna,
aktuelna stanja i vrednosti pridruenih atributa.
Skup produkcionih pravila je tehnika predstavljanja znanja, koja ukazuje na odnos
izmedju preduslova i posledica. Ima sledei oblik:
IF uslov THEN akcija.
Interpreter je potreban za prepoznavanje i izvravanje pravila. On uporedjuje preduslov
pravila sa stanjem memorijskih elemenata i u sluaju podudarnosti aktivira pravilo.
Proces se zavrava uspeno dolaskom do reenja ili neuspeno usled nepostojanja
pravila koje bi se moglo aktivirati.
ZAKLJUIVANJE
Sukcesivnim aktiviranjem vie pravila, nastaje lanac zakljuivanja. U zavisnosti od
naina aktiviranja pravila, dobijamo dva razliita mehanizma:
ulanavanje unapred to je strategija vodjena podacima, jer korisnik zna
uslove a traga za posledicama,
ulanavanje unazad to je strategija vodjena ciljem, jer su poznati
simptomi, rezultati, posledice, a traga se za uzrocima koji su do njih
doveli.
Kod ulanavanja unapred se traga za novim informacijama, koji su potrebni za
reavanje problema. Mehanizam zakljuivanja nastoji da na osnovu postojeih
podataka u memoriji, doe do eljenog zakljuka. Ako nema dovoljno podataka za
aktiviranje nekog pravila, kontrola se vraa korisnikom interfejsu, u suprotnom se
110

aktivira pravilo iji uslovni deo odgovara zadatim uslovima. Korisniki interfejs igra
veliku ulogu u prikupljanju potrebnih informacija, putem kojeg se korisniku, u vidu
opcija menija prikazanog na ekranu, prua mogunost izbora stanja koje najvie
odgovara stvarnoj situaciji. Korisnik izborom jedne ili vie ponudjenih opcija,
omoguava dodatnu informaciju potrebnu za reavanje problema, koju mehanizam
zakljuivanja prebacuje u radno podruje memorije.
Ulanavanje unazad. Kod veih sistema, iji broj pravila prelazi red veliina od
nekoliko stotina pravila, pri olanavanju unapred se moe desiti da su aktivirana
mnoga pravila koja iako imaju odgovarajue posledice, nisu relevantna za samo
reenje problema. Da bi izbegli aktiviranje suvinih pravila, koja su nepotrebna za
izvoenje odreenog zakljuka, a da bi se i vreme utedelo, efikasnije je primeniti
ulanavanje unazad. Kod ovog mehanizma za zakljuivanja, sistem polazi od onoga
to eli dokazati, te se samo ona pravila izvravaju koja su relevantna za posmatrani
cilj.
PREDSTAVLJANJE ZNANJA PUTEM STRUKTUIRANIH OBJEKATA
Ova metoda predstavljanja znanja bazira se na objektno-orijentisanom modelovanju
podataka, koji se obrauju objektno-orijentisanim programiranjem.
OBJEKTNO-ORIJENTISAN PRISTUP MODELOVANJU PODATAKA
Postoje dva nova puta kojima se krenulo u modelovanju podataka. Jedan vodi ka
proirenom relacionom modelu podataka, a drugi ka objektno-orijentisanoj tehnologiji
baza znanja i podataka.
Kroz projektovanje arhitekture softvera, projektant se sukobljava sa izborom strukture
koja moe biti bazirana na funkciji ili na podacima. Funkcionalni pristup je
nezamenjljiv u kreiranju inicijalne verzije softverskih proizvoda, medjutim, nije
pogodan za trajan proces kontinualnih promena i adaptacija. Radi kontinualnosti je
potrebno vriti promene u modulima, a ne u celokupnoj strukturi sistema. Tako je
nastao pristup razvoju softverskih proizvoda preko podataka, tzv. objektno-orijentisana
tehnologija. Svet je modeliran od objekata, uredjaja, poslova i pogodan je za
organizaciju modela putem raunarske prezentacije tih objekata. U apstraktnoj ili
fizikoj realnosti, objekat postoji tamo, gde se moe odrediti.
Objekat je apstrakcija koja predstavlja bilo kakvu posebnost uoenu u realnom
sistemu, deo sistema koji se po nekim svojstvima razlikuje od ostalih. Ta svojstva po
kojima se objekti uoavaju, predstavljaju zapravo odnos koji objekat ima prema
drugim objektima. Uoavanjem vrsta svojstava objekata i tipova njihovih odnosa,
omoguuje se struktuiranje realnog sistema i formiranje njegovog modela.
Postoji vie naina predstavljanja podataka u bazi znanja putem struktuiranih objekata.
To su:
semantike mree,
trojke objekat-atribut-vrednost i
frejmovi.
Jedna od najstarijih naina predstavljanja znanja u oblasti vetake inteligencije su
semantike mree. Semantika mrea je sredstvo reprezentovanja znanja u vidu
111

obeleenog usmerenog grafa. Svako teme grafa predstavlja koncept, a svako obeleje
relaciju izmeu koncepata. Teme grafa sainjava kolekcija objekata koji se nazivaju
vorovima. Obino su i veze i vorovi imenovani. Postoje dobre i loe mree, koje su
prezentacija takvog znanja, koja u veoj ili manjoj meri podrava karakteristike
ljudskog rezonovanja. Da bi se ocenila "dobrota" semantike mree, uvodi se mera
konceptualne razdaljine, (tj. semantike razliitosti izmedju dva koncepta
predstavljenih vorovima ili skupom vorova u mrei), a vezama tipa "jeste" se
dozvoljava da istovremeno oznaavaju i semantiku udaljenost (udaljenost vorova u
semantikoj mrei) i konceptualnu razdaljinu.
Trojka objekat-atribut-vrednost. Pod objektom se podrazumevaju fiziki entiteti ili
konceptualni entiteti. Atributi su opte osobine ili svojstva pridrueni objektima.
Vrednost odredjuje prirodu atributa u odredjenoj situaciji. ES u fazi sticanja znanja
pokuava saznati vrednosti raznih atributa vanih za pojedine situacije. Kako je koja
vrednost dosegnuta, sistem je pohranjuje u radnu memoriju. Ovaj postupak je
zamenjivanje.
Predstavljanje znanja frejmovima i zakljuivanja. Frejmovi omoguavaju jo jedan
nain predstavljanja podataka i relacija. Pravila pojednostavljuju odnos "pretpostavka i
posledica" izmedju pojmova, predmeta ili dogadjaja. Frejmovi prvenstveno izraavaju
bitne komponente pojedinih pojmova, predmeta ili dogadjaja.
Ideju frejmova je razvio Marvin Minsky. Po njemu, frejm je mrea vorova i relacija,
organizovanih, gde vorovi na vrhu predstavljanju uoptene koncepte (objekte), a nii
vorovi specifine delove tih koncepata. Svaki objekat predstavljen vorom je opisan
skupom atributa i vrednostima tih atributa, pri emu se atributi nazivaju slotovi i nose
informacije o datom objektu frejma. Na ovaj nain je objekat povezan sa skupom
injenica, pravila, procedura, podrazumevanih (default) vrednosti, displej instrukcija,
koje ga nedvosmisleno konstituiu. Pridruene procedure su proceduralna
reprezentacija u okruenju koje je deskriptivnog karaktera, odnosno medju tvrdnjama
koje su istinite, a predstavljaju znanje o nekom objektu, mogu se nai eksplicitno
navedeni skupovi instrukcija iju tanost moramo ispitati.
Frejmovi i trojke objekat-atribut-vrednost mogu da se posmatraju kao specifini
sluajevi semantikih mrea, a isto tako mogu predstavljati njihove delove, odnosno
pojedini vorovi i veze u mrei mogu biti predstavljeni putem frejmova ili trojki O-AV. Kako izmeu semantikih mrea, frejmova i trojki O-A-V postoji visok stepen
srodnosti, jedno te isti podaci u bazi znanja mogu biti predstavljeni na ma koji od ova
tri naina.
PREDSTAVLJANJE ZNANJA PREDIKATSKIM RAUNOM
Predikatski raun osim odnosa izmeu iskaza uzima u obzir i odnose unutar iskaza.
Jezik predikatskog rauna sadri sve elemente jezika iskaznog rauna (iskazne
promenjive: p,q,r,...; logike konstante: , , , ...; i zagrade: ( ), a pored njih
individualne termine (x, y, z,...), predikatske termine (F, G, H) i kvantifikatore ( , ).
Individualne termine sainjavaju individualne konstante i individualne promenljive.
" Kanarinac ima perje ",

112

" x ima perje ",


" x ima y "
Predikatske termine sainjavaju predikatske konstante i predikatske promenljive.
F(x) znai " individua x ima svojstvo F ",
F(x,y) znai " x je u odnosu sa y "
Iskazna funkcija je reenica koja postaje iskaz kada se individualne promenljive
zamene individualnim konstantama. Ona je logika formula, koja sadri promenljive
izvan oblasti dejstva kvantifikatora (izvan zagrada koje slede odmah iza
kvantifikatora), tj. slobodne promenljive.
Nauno znanje se stie, povezuje u celinu, dokazuje, proverava i razvija
zakljuivanjem. Iskazi se mogu prihvatiti kao reenice kojima se izraava znanje, ako
se zasnivaju na adekvatnom i znaajnom svedoanstvu koje se takoe navodi u vidu
iskaza. Zakljuivanje je uspostavljanje takvog odnosa medju iskazima posredstvom
kojeg se na osnovu poznate istinitosne vrednosti nekog iskaza procenjuje istinitosna
vrednost nekog drugog iskaza. Zakljuivanje se moe shvatiti i kao proces izvodjenja
jednog iskaza ili suda iz drugih iskaza.
Za obradu podataka iskazni raun je dovoljan, ali okruenje ekspertnih sistema zahteva
znatno iri skup logikih alata. Ne moe se zadovoljiti samo istinitosnim vrednostima
odreenih tvrenja koja su ukljuena u bazu znanja, ve je potrebno iskazati i utvrditi
prisustvo relacija izmedju objekata u bazi znanja.
U gornjem primeru moe se uvesti predikat "ima" u oznaci I, kanarinac oznaiti sa k,
a perje sa p. Gornji iskaz u formi simbolike predikatske logike je I(k,p). Tvrdnja "x
je kanarinac" se po analogiji sa prethodnim primerom moe predstaviti kao K(x), gde
je K unaran predikat, sa semantikom "je kanarinac".
Okruenje ekspertnih sistema zahteva razvoj proirenog skupa pravila zakljuivanja
koji e omoguiti izvoenje zakljuaka iz izraza predstavljenih simbolikom
predikatskom logikom.
POMONE TEHNIKE PREDSTAVLJANJA ZNANJA
Ovi naini predstavljanja znanja se upotrebljavaju kao dodatni, pomoni alati kada je
baza znanja suvie \ kompleksna, ili se posmatrani domen sastoji iz mnotva
informacija kojima se sluimo na razliite naine u postupku dolaenja do reenja.
Tabele odluivanja mogu da poslue kao ulaz za semantike mree ili kao ulaz za
stabla odluivanja pomou kojih e se formulisati produkciona pravila.
Tabele odluivanja. Pomou njih se na efikasan nain moe obuhvatiti i sortirati veliki
obim podataka i opisati znanje, zbog toga to pregledno prikazuju mnogobrojne
kombinacije opcija i karakteristika posmatranog sistema.

113

Tabela 15.: Tabela odluivanja


1
2
.
.
K
1
2
.
.
M

PRAVILA
1,2,3,4....N-1,N
Oznake ispunjenosti uslova

Kriterijumi uslova
poinju sa
ako

Aktivnosti koje treba Oznake koje aktivnosti treba izvriti


preduzeti, poinju sa
tada

Stablo odluivanja. Moe se shvatiti kao hijerarhijska semantika mrea, povezana


nizom pravila, koja objedinjuje strategije pretraivanja sa relacijama meu znanjem.
Potezi mree su odluke, a vorovi su ciljevi. Mrea se pretrauje od korena ka
listovima, s leva na desno. Svi krajnji vorovi, listovi stabla, su delovi krajnjeg cilja.
Na slici 23 dato je stablo odluivanja za sluaj ispravnosti ili kvara disketne jedinice.

Slika 23: Stablo odluivanja

114

DEKLARATIVNI JEZIK PROLOG


UVOD
PROLOG je deklarativni programski jezik
koji je namenjen logikom programiranju.
Naziv PROLOG je skraenica od engleskih
rei PRO(gramming) in LOG(ic). PROLOG je
jezik vetake inteligencije. PROLOG se
razlikuje
od
ostalih
proceduralnih
vieprogramskih jezika.

Vetaka inteligencija (Artificial


intelligence

AI):
Oblast
informatike,
koja
se
razvila
pslednjih godina pod uticajem
lingvistike i psihologije. Zadatak
vetake inteligencije je reavanje
optih problema vezanih za ljudsku
inteligenciju korienjem raunara.
U ove probleme spadaju: obrada
ljudskog
govora,
stvaranje
ekspertnih sistema, prepoznavanje
oblika itd.

ISTORIJA
Autor PROLOGA je
1971god. u Marseju.

Francuz Alen Colmerauer. Prva verzija jezika pojavila se

Godine 1977 Warren je u Edinburgu napravio interpretator i kompajler za PROLOG.


Japanci naunici su poetkom osamdesetih godina objavili da e njihovi raunari pete
generacije biti zasnovani na PROLOGU. PROLOG je zamiljen kao mainski jezik
japanskih raunara pete generacije. Od tada je napisano mnogo ekspertnih sistema na
PROLOG. Zajedno sa LISP-om, PROLOG postaje najpoznatiji jezik vetake
inteligencije.
Zbog nepostojanja zvaninig standarda postoje razne verzije PROLOG-a, kao to su:
mikro-PROLOG,
turbo-PROLOG
m-PROLOG, itd.
KLASIFIKACIJA PROGRAMSKIH JEZIKA I PROLOG
Postoje razne klasifikacije programskih jezika koje zavise od razliitih kriterijuma.
Najee se kao kriterijum koristi stepen zavisnosti od raunara (hardvera).
Ako se kao kriterijum izabere nain reavanja problema, onda sve vie programske
jezike moemo podeliti u dve klase:
proceduralne (imperativne)
deskriptivne (opisne).
Prilikom programiranja na proceduralnom programskom jeziku, programer preko
algoritama (procedura) saoptava raunaru KAKO da rei problem. Veina poznatih
programskih jezika (kao to su: FORTRAN, COBOL, BASIC, Pascal, Ada, itd)
pripada klasi proceduralnih programskih jezika.
115

Za razliku od proceduralnih jezika, prilikom programiranja na deskriptivnom jeziku,


programer opisuje TA program treba da radi. U ovom sluaju glavni posao oko
naina reavanja zadatka treba da uradi interpretator (izvrilac) programa. PROLOG
je jedan od najpoznatijih predstavnika klase deskriptivnih jezika.
OSNOVE PROLOG-A
Teorijsku osnovu PROLOG-a ini predikatski raun prvog reda. Meutim, postupak
nalaenja reenja u PROLOG-u zasniva se na principu rezolucije za automatsko
dokazivanje teorema koji je pronaao J. Robinson 1965. godine. U stvari, radi se o
jednoj modifikaciji principa rezolucije za tzv. Hornove disjunkte. Naime, osnovni
elementi PROLOG-a nazivaju se Hornovi disjunkti (klauzule) i predstavljaju reenice
oblika:
AKO c1, c2, cn ONDA c.
Ovo se moe zapisati i ovako:
c ako c1, c2, , cn.
ili u obiajenoj notaciji gde se umesto rei ako koristi spacijalni simbol
:- (tzv. vrat-simbol jer spaja glavu predikata c sa telom: c1, c2, , cn)
c:-c1, c2, , cn.
Predikati koji nemaju telo nazivaju se injenice u PROLOG-u. Predikati bez glave
nazivaju se ciljevi ili upiti.
U optem sluaju, u matematikoj logici, pogodbene reenice mogu imati oblik:
AKO p1, p2, , pn ONDA c1, c2, , ck.
Ovde je re o klauzuli koja ima vie glava i takve klauzule se koriste u PROLOG-u.
Ako klauzula ima samo jednu glavu ili nema glavu, tada se naziva Hornova klauzula.
Princip rezolucije u PROLOG-u primenjuje se na Hornove klauzule. Sve injenice u
PROLOG-u tretiraju se kao apsolutne istine tj. aksiome.
Primena metoda rezolucije sastoji se u usaglaavanju postavljenog cilja (upita) sa
injenicama, tj. bazom podataka. Naime, ako je postavljen cilj, PROLOG nastoji da
ispuni taj cilj u skladu sa bazom injenica i pravila. Ako PROLOG u svom nastojanju
uspe da ispuni cilj, daje pozitivan odgovor (YES), u suprotnom negativan (NO).

O PROGRAMIRANJU U PROLOGU
NAIN REAVANJA PROBLEMA U PROLOG-U
U Hornovim klauzulama c1, c2, , cn su klauzule (reenice) koje mogu sadrati
konstante i promenljive. Elementi c1, c2, , cn nazivaju se potciljevi. Glavni cilj

116

moe uspeti (biti ispunjen) ako uspe svaki potcilj u okviru glavnog cilja. Prema
tome, glavni cilj:
:- c1, c2, , cn
(koji emo oznaavati i na sledei nain: ?-c1, c2, , cn) predstavlja konjunkciju
potciljeva: c1, c2, , cn. Svaki potcilj moe se shvatiti kao poziv procedure.
Procedure se zadaju preko predikata sa odgovarajuim imenom i odgovarajuim
brojem argumenata.
Potciljevi se ispunjavaju u procesu nalaenja reenja, tj. u procesu izraunavanja.
Proces reavanja moe da se razgrana razliitim putevima i da generie vie razliitih
reenja.
U procesu ispunjavanja (zadovoljavanja) cilja mogu nastati tri sluaja:
proces traenja se zavrava i daje odreeno reenje, u ovom sluaju re
je o uspenom ispunjenju cilja,
proces traenja se zavrava neuspeno i ne daje rezultat, tj. cilj nije
ispunjen,
proces traenja se ne okonava i ne daje nikakav rezultat.
U prvom i drugom sluaju re je o zavrenom izraunavanju, a u treem sluaju o
nezavrenom.
Za svaki cilj postoji potpun prostor izraunavanja koji moe da se razmatra kao skup
svih puteva du kojih se moe traiti. Du nekog od tih puteva moe se uspeno
okonati traenje, du nekog traenja se zavrava neuspeno, a du nekih traenja
moe da se ne zavri. Potpun prostor izraunavanja odreen je ciljem i pravilima za
izraunavanje.
PROLOG ispunjava gavni cilj tako to ispunjava svaki potcilj u okviru cilja.
Standardni nain zadovoljavanja potciljeva realizuje se poev od prvog levog potcilja.
Ukoliko se ispuni prvi levi potcilj, PROLOG nastoji da ispuni prvi potcilj iza njega
itd. Ako u procesu ispunjavanja neki potcilj ne moe biti ispunjen, PROLOG se vraa
na prethodni potcilj i nastoji da ga ispuni za neke druge vrednosti. Taj postupak se
nastavlja sve dok ne budu iscrpljene sve mogunosti. Postupak traenja se vraanjem
(backtracking) omoguava nalaenje svih reenja iz skupa moguih reenja i
karakteristian je za PROLOG.
Navedimo primer na kojem e biti konkretno objanjeni prethodno pomenuti pojmovi.
Neka je dat sledei PROLOG-program:
Vozac(pavle).
Vozac(marko).
Vozac(X):- dobar_vozac(X).
Dobar_vozac(X):- ne_pije(X), vozac_autobusa(X).
Dobar_vozac(janko).
Ne_pije(dusan).
117

Ne_pije(petar).
Vozac_autobusa(dusan).
Vozac_autobusa(ranko).
Vozac_autobusa(petar).
Navedeni program se sastoji iz Hornovih klauzula sa glavom koje predstavljaju
injenice i predikate. Slovom X je oznaena jedna promenljiva, a ostala imena, koja
ne poinju velikim slovom su konstante.
Upit:
?- vozac(X).
predstavlja Hornov disjunkt bez glave. PROLOG-sistem nastoji da ispuni ovaj cilj
nalaei konkretne vrednosti za promenljivu X tako da cilj bude usaglaen sa skupom
injenica.
Potpun prostor izraunavanja moe da se predstavi stablom pretraivanja. Stablo
pretraivanja je konano, proces nalaenja reenja ne moe neogranieno produiti.
Razlikujemo listove oznaene sa [] koji predsatvljaju vorove uspeha i listove
oznaene sa ?- koji predstavljaju vorove neuspeha.
Iz navedenog stabla pretraivanja mogu se sagledati svi putevi du kojih postoji
mogunost da zadati cilj bude ispunjen. PROLOG, na zahtev korisnika moe da
pronae sva reenja koja ispunjavaju zadati cilj. Za razliku od PROLOG-a, kod
proceduralnih jezika nije uvek jednostavno nai sva reenja.
Prilikom traenja reenja, PROLOG nastoji da ispuni cilj usaglaavajui ga sa bazom
podataka poev od vrha ka dnu. To znai, da PROLOG zapoinje sa traenjem reenja
poev od prvog levog vora u stablu pretraivanja, a zatim nastavlja obilazak stabla
pretraivanja nalazei sva reenja. Ako u procesu traenja naie na vor uspeha,
PROLOG izdaje reenje, u suprotnom ne obavetava da je doao do vora neuspeha.
Nain rada PROLOG-interpretatora moe se delimino sagledati iz redosleda kojim
izdaje reenja. Testiranjem prethodnog programa dobijamo:

?- vozac(X).
X = pavle ->;
X = marko ->;
X = dusan ->;
X = petar ->;
X = janko ->;
no

Proces traenja odvija se kretanjem od korena stabla ka listovima, ali i od listova ka


vrhu. Kretanje od listova ka vrhu predstavlja traenje sa vraanjem.

118

NAIN PROGRAMIRANJA
Deklarativnost jezika i nain programiranja u PROLOGU omoguavaju da problem
koji se programom reava bude iznesen (zapisan) u jasnijoj eksplicitnoj formi nego
to je kod proceduralno orjentisanih jezika. Naime PROLOG program je mnogo
manje optereen tehnikim detaljima koja se odnose na opis procedure reavanja
problema. Zbog toga se esto naglaava da sam proces programiranja u PROLOG-u
pridonosi razumevanju problema (i pronalaenju optimalnog reenja) neuporedivo
vie nego to je to kod proceduralno orjentisanih jezika, ali to nipoto ne znai da bi
pisanju programa trebalo pristupiti pre nego to se problem u celosti razmotri i
definie. Nain formulisanja problema i izbor metode njegova reavanja nedvojbeno
zavisi o sredstvima koja nam za to stoje na raspolaganju dakle o jeziku i sistemu.
Meutim aprioritetno vezivanje problema za programski jezik ujedno znai i
usmeravanje panje s problema na formu njegovog programskog zapisa, to najee
rezultira suboptimalnom i/ili nepotpunom reavanju.
Pravilan pristup reavanju problema karakterie primena metode ODOZGO PREMA
DOLE. Problem se najpre postavja u optim terminima a zatim sledi postepena
razrada njegovih pojedinih komponenti. Tako razraen problem zapisuje se u
programskom jeziku. Tada deklarativnost jezika i modularnost programa
omoguavaju da sam proces programiranja pridonese boljem razumevanju a time i
optimalnom reavanju problema.
Dobrim osobinama PROLOG programa smatramo one osobine koje su nune za
programiranje uopte. Meu njima su najpre:
ispravnost programa
efikasnost programa,
preglednost,
modularnost,
dokumentiranost.
Ispravnost programa proverava se kao i obino testiranjem iako paljivo itanje moe
pruiti bolji uvid u PROLOG program nego to prua testiranje.
Efikasnost programa moe se poveati poboljanjem algoritma reavanja problema. S
druge strane poznavanje proceduralne interpretacije programa omoguuje da se
algoritam zapie na najprikladniji nain to takoe moe uveliko poveati efikasnost
njegova izvoenja. Vana je i primena rezova kojima se spreavaju nepotrebna
raunanja. Valja pri tome znati da rez redovno ograniava prostor primenljivosti
programa.
Dobro oblikovani PROLOG program obino je mnogo itljiviji od programa pisanih u
proceduralnim jezicima. Nain oblikovanja programa uveliko zavisi o tome to
programer smatra preglednim programom.
Prolog prua mogunosti da se program napie na pregledan i modularan nain.
Izbor rei argumenata ini da takav program bude i samokomentarisan.

119

SINTAKSA I SEMANTIKA PROLOGA


Abecedu PROLOG programa, to jest skup znakova jezika ine:
Velika slova: A,B,,Z.
Mala slova : a,b,,z.
Brojevi : 0,1,2,,9.
Posebni znakovi:*,+,-,/,[, .
Sintaksiki niz znakova nazivamo termom. Termove delimo na:
konstantne, koji mogu biti
o atomi i
o brojevi,
varijable, i
strukture
Konstante i varijable zovemo jednim imenom JEDNOSTAVNI TERMOVI , dok
strukture nazivamo SLOENI TERMOVI .
KONSTANTE:
One se dele na atome i brojeve. Atom nazivamo korisniki niz znakova koji
udovoljava jednom od sledeih pravila:
Atom je niz slova brojki i posebnih znakova, koji poinju malim
slovom abecede na primer:
o a
o jasna
o x_
o x_y_drugi.
Atom je niz posebnih znakova poput:
o = =>
o <= =
o .
o :_
o ,
o **
o ;
Atom je niz znakova dat u znacima navoenja:
o ovo je atom
o +*!!k/n
U brojeve kao drugu vrstu konstanti spadaju realni brojevi poput:
123,
133,
-0.154 itd.

120

VARIJABLE:
Varijable predstavljamo nizom slova, brojeva, i posebnim znakovima koje poinju
velikim slovom ili posebnim znakom _. Varijable su na primer sledei nizovi:
A
AA
_A
_a
_123
_visa_skola
VISA_SKOLA
Ali ne i VISA SKOLA, jer su to dve varijable.
U okviru ovog poglavlja prouiemo zadatke na osnovu kojih moemo upoznati
osnovne principe rada PROLOG interpretatora (koji su ranije opisani), unifikacija i
traenje sa vraanjem, kao i neke osnovne ugraene predikate i operatore za kontrolu
toka programa i ulaza/izlaza.
Dajemo kratak pregled osnovnih operatora i predikata:
, - tretira se kao AND, odreuje konjunkciju ciljeva,
; - tretira se kao OR, odreuje disjunkciju ciljeva, izvrava se s leva nadesno
i da bi uspeo mora biti ispunjen cilj bar sa jedne strane operatora,
! - operator odsecanja (rez), cilj koji uspeva kada se do njega doe pri
izvravanju nadole, a propada kada na njega naiemo pri traenju sa
vraanjem, a takoe propada i ceo predikat u okviru koga se rez operator
naao,
true - cilj koji uvek uspeva,
false - cilj koji uvek propada, pogodan je kada elimo traenje sa vraanjem,
repeat - kada se naie na njega uspeva, i pri traenju sa vraanjem uspeva,
realizovan je tako da omogui formiranje ciklusa pri izvravanju programa.
not(P) - ako P uspe, tada not(P) propada, a ako P propadne tada not(P) uspeva,
read(P) - omoguava unoenje podataka,
write(P) - omoguava izdavanje podataka,
nl - prelazi u novi red prilikom izdavanja podataka.
Zadatak 1.
Glavni gradovi
Data je baza znanja o glavnim gradovima. Napisati PROLOG program za
odredjivanje glavnog grada zemlje na osonvu date baze ako se u programu zadaje ime
drave.
Resenje:
/********************************************************************
**/

121

/*
*/
/*
GLAVNI GRADOVI
*/
/*
*/
/********************************************************************
**/
glavni (srbija,beograd).
glavni (nemacka,berlin).
glavni (engleska,london).
glavni (kina,peking).
glavni (japan,tokio).
glavni (makedonija,skoplje).
glavnigrad :- nl,nl,
write(Unesite ime drzave i zavrsite tackom: ),
read(R),
glavni(R,G),nl,
write(Glavni grad izabrane zemlje je: ),
write(G).
/********************************************************************
STRUKTURE
Struktura je sloena term jezika koji se formira vezivanjem nekoliko jednostavnih
termova. Struktura u jednom cilju vezuje funktor.
Opta formula strukture je:
Funktor(ARGUMENT_1,, ARGUMENT_n).
Funktor je atom u argumentu su termovi koji mogu biti jednostavni ili sloeni.
Struktura se oznaava kao na primer: datum(Dan, Mesec, Godina) grafiki je
prikazana kao:

122

DATUM
DAN

MESEC

GODINA

Radnik (ime (Miroslav), rodjen (23.02.1955), zanimanje (stolar)).


RADNIK
IME

MARKO

ROENJE

23

ZANIMENJE

2 1955

STOLAR

STABLO PRETRAIVANJA
Stablo pretraivanja je formalno sredstvo pomou kojeg prikazujemo sve mogue
naine zadovoljavanja postojeeg cilja. Optu definiciju stabla pretraivanja
prilagodili smo ovde aktuelnim principima izbora implementiranim u standardnom
sistemu PROLOG.
Cilj postavljen programu moe se zadovoljiti na vie naina. Pretraivanje ide prvo
levo i zatim u dubinu.
STRUKTURE PODATAKA
Strukture koje se esto javljaju u PROLOG-u su:
lista i
binarno stablo.
PROLOG program moe biti namenjen predstavljanju znanja ili procesiranju znanja.
U prvom sluaju program je baza znanja, u drugom sluaju program tom bazom
upravlja. Re je samo o dva naina posmatranja programa, jer u PROLOG-u nema
formalne razlike izmedju podataka i programa.
LISTA
Lista je ureen niz elemenata. Pod ureenou podrazumevamo da je redosled
elemenata liste odreen. Lista moe sadrati i vie jednakih elemenata. Listu moemo
shvatiti kao binarnu strukturu. Za funktor te strukture odaberemo atom lista. Prvi
argument strukture neka bude prvi element liste a drugi argument neka bude lista koja
sadri preostale elemente. Prvi element takve binarne strukture nazivamo glavom liste
a drugi repom liste.

123

Lista (a, lista (c, prazno)).


LISTA
LISTA
A

LISTA
B

LISTA
C
PRAZNO

Eksplicitnim pretstavljanjem liste kao binarne strukture lista brzo postaje nepregledna.
Zato je u PROLOG-u uvedena posebna notacija za tu strukturu. Prema toj notaciji
nepraznu listu pretstavljamo navoenjem njenih elemenata zatvorenih u uglaste
zagrade, dok je prazna lista pretstavljena simbolom [].
U listi [a, b, c] u PROLOG-u a je glava liste, a [b, c] je rep liste.
Operacije sa listama su:
provera pripada li neki element listi,
provera pripadanja jedne liste drugoj,
izdvajanje iz date liste neku drugu listu koja sadri iste elemente ali u
obrnutom redosledu,
sortiranje liste,
upis u listu,
brisanje liste,
brisanje jednog elementa date liste,
BINARNO STABLO
Binarno stablo pretstavljamo strukturom sledeeg oblika stabla (Element, Levo,
Desno). Pri tome je drugi argument levo podstablo vora. Prazno stablo moemo
oznaiti praznim simbolom razliitim od ostalih simbola koji ve imaju neko posebno
zaduenje.
Duinu najdueg lanca u stablu nazivamo i dubinom stabla.
Dubina praznog stabla je 0, duina stabla koji ima samo jedan koren je 1.
OSNOVNE OPERACIJE SA BINARNIM STABLOM
Element jeste element binarnog stabla ako je:
koren tog stabla,
element njegovog levog podstabla,
element njegovog desnog podstabla.
Brisanje elementa binarnog sistema:
element koji se brie je lista stabla, to jest oba njegova potomka su
prazna stabla, obrisani element zamenjujemo praznim stablom,
element koji se brie ima samo jedno neprazno podstablo, neprazno
podstablo dolazi na mesto stabla iji je koren izbrisan,
oba podstabla elementa koji se brie neprazna su,

124

element koji se pokuava brisati nije sadran u datom stablu, stablo


ostaje nepromenjeno.

ARITMETIKE I LOGIKE OPERACIJE


Prolog je namenjen pre svega
procesiranju struktura odnosno numerikom
procesiranju. Zato je i izbor predikata namenjen izvoenju raunskih operacija
relativno skroman. Aritmetike izraze formiramo pomou predikata +, -, *; / i mod:
zbir x+y,
razlika x-y,
proizvod x*y,
delenje x/y i
delenje po modulu x mod y.
LOGICKE OPERACIJE
Jednako x= : =y razlicito x= \ =y vece od x > y
manje od x < y jednako ili manje od x = < y

jednako ili vece od x > = y

RUKOVANJE SA DATOTEKAMA
PROLOG uitava podatke s aktuelnog ulaza a odgovore ispisuje na aktuelni izlaz, dok
to drukije ne definiemo. Da bi to bilo mogue, program se najpre mora uneti u
radnu memoriju PROLOG-sistema. Uitava se celokupni sadraj datoteke u radnu
datoteku PROLOG-interpretera.
PRAENJE RADA PROGRAMA
Standardni predikat praenja rada programa je trace.
Cilj trace postavljamo sistemu pre postavljanja cilja iji pokuaj zadovoljavanja
elimo pratiti. Taj cilj uzrokuje da sistem (na ekranu) pokazuje:
svaki cilj, poevi od polaznog, koji se pokuava zadovoljiti u sklopu
pokuaja zadovoljavanja polaznog cilja i
rezultat pokuaja zadovoljenja pojedinog cilja, ako pokuaj zavri sa
uspehom, onda su to vrednosti argumenata za koje je postavljeni cilj
zadovoljen, u suprotnom, rezultatom smatramo informaciju o neuspehu
zadovoljenja posmatranog cilja.
Pokazivanjem koraka u
pretraivanja.

pokuaju zadovoljenja cilja sistem pokazuje tok

PREDIKAT ODSECANJE I TRAENJE REENJA


U PROLOG-u postoji mogunost da se sprei pretraivanje obilaskom celog stabla
pretraivanja. U te svrhe koristi se sistemski predikat odseanja koji se najee
obeleava znakom uzvika !. Pomou ovog predikata na stablu pretraivanja odseaju
se pojedine grane, a na taj nain se spreava traenje reenja u potpunom prostoru

125

izraunavanja. Korienjem ovog predikata naruava se deklarativno svojstvo


PROLOG jezika. Da bismo sagledali efekte predikata odseanja, modifikujemo
prethodno navedeni program na sledei nain:
Vozac_djaka(pavle).
Vozac_djaka(marko).
Vozac_djaka(X):- dobar_vozac(X).
Dobar vozac(X):- ne_pije(X), !, vozac_autobusa(X).
/* Modifikovan red */
Dobar_vozac(janko).
Ne_pije(dusan).
Ne_pije(petar).
Vozac_autobusa(dusan)
Vozac_autobusa(ranko).
Vozac_autobusa(petar).
Testiranjem dobijamo sledeci skup resenja:
?- vozac_djaka(X).
X = pavle ->;
X = marko ->;
X = dusan ->;
no
Moe se uoiti da su odreene grane na stablu pretraivanja odseene i da su
odstranjeni odreeni putevi za nalaenje reenja.
ELEMENTARNI ZADACI SA LISTAMA
Osnovu reenja mnogih problema u PROLOGU ini rad sa listama. Lista je struktura
podataka koja predstavlja sekvencu elemenata koji mogu biti razliitog tipa (atomi,
brojevi, promenljive, liste) i piu se u srednjim zagradama.
Primer:
[]
- prazna lista.
[a]
- lista sa jednim elementom.
[a| X] - lista sa glavom a i repom X .
(X je promenljiva koja predstavlja listu koja cini preostali deo liste [a|X]. Ako je data
lista [a, b, c, d], koja se pri radu programa unifikuje sa [a|X], tada se X unifikuje sa
[b,c,d])
Veliki broj problema koji zahteva upotrebu slozenijih struktura podataka resava se
svodjenjem na elementarne predikate za rad sa listama. Neke od tih, osnovnih,
predikata proucicemo kroz zadatke u ovom poglavlju.

126

Primer: lan liste


Napisati PROLOG program za odredjivanje da li je dati element lan liste.
realizovati ga tako, da daje odgovor da li je dati element lan liste, i
daje sve elemente liste,
iskljuivo proveravati da li je dati element lan liste.
Posle pronaenog elementa program se zamrzava (onemoguava dalju pretragu pri
eventualnom traenju sa vraanjem u okviru sloenih zadataka).
Reenja:
LANOVI LISTE
clan(X,[X|_]).
clan(X,[_|Y]) :- clan(X,Y).
Poziva se sa: clan(element,lista).
Test-primer:
?- clan(3,[2,4,3,1]).
yes
?- clan(2,[1,4,6,4]).
no
?- clan(X,[2,3,4,1]).
X = 2 ->;
X = 3 ->;
X = 4 ->;
X = 1 ->;
no

127

LITERATURA

Berkovi, Ivana: Elementi vetake inteligencije, Zrenjanin


Damjanovi, Boko: Principi programiranja, Nauka, Beograd
Dujmovi, Jozo: Programski jezici i metode programiranja, Nauna knjiga,
Beograd
Kovaevi, Vladimir: Programska podrka raunarskih sistema, FTN, Novi Sad
Mii, Vojislav: IBM PC u 25 lekcija, Tehnika knjiga, Beograd
Petkovi, Duan: Mali leksikon mikroraunarskih izraza, Savremena
administracija, Beograd
Ristanovi, Dejan: Mainsko programiranje, Tehnika knjiga, Beograd
Risti, ivan, Balaban, Neo, Bonjak, Zita: Ekspertni sistemi, Savremena
administracija, Beograd
--: Oksfordski renik raunarstva

You might also like