Professional Documents
Culture Documents
Uvod U Programiranje
Uvod U Programiranje
Uvod u programiranje
Glava 1 Uvod
PMF Novi Sad
Zimski semestar 2013 v0.3 Departman za matematiku i informatiku
Slajd 2 od 49
Slajd 3 od 49
U ovom poglavlju kratko emo se upoznati sa razvojem programskih jezika
i kriterijumima za njihovu podelu.
Slajd 4 od 49
Slajd 5 od 49
Pod (raunarskim) programiranjem obino se podrazumeva ovekova
aktivnost (odnosno, aktivnost programera) usmerena ka reenju nekog
konkretnog problema na raunaru.
Slajd 6 od 49
Po drugoj moguoj definiciji, programski jezik predstavlja sredstvo
namenjeno za komunikaciju izmeu oveka i raunara, a slui za opis
algoritma na nain razumljiv raunaru (direktno, ili posle niza
transformacija).
Slajd 8 od 49
Bez itkih i jasnih programa i programskih jezika tako definisanih da se u
procesu programiranja otkrije to vie greaka to je mogue ranije (jo
tokom razvoja programa), napredak u oblasti programiranja (i primene
raunara uopte) nije mogu.
Slajd 9 od 49
Slajd 10 od 49
Najvei broj dananjih raunara zasnovan je na takozvanoj Fon Nojmanovoj
arhitekturi raunara (von Neumann).
Slajd 11 od 49
Mainski jezik raunara je skup binarno kodiranih komandi (instrukcija)
raunara na koje ovaj direktno odgovara, odnosno koje neposredno razume i
izvrava.
Slajd 12 od 49
Primer. Jedan kratak (hipotetiki) mainski program (od tri komande).
00000100111100111010001010
00000101000100100111100010
00101100101010111111001111
Programiranje u mainskim jezicima je bilo teko, programi su bili neitki i
greke su se lako pravile i jo tee pronalazile.
Slajd 13 od 49
Slajd 14 od 49
Prvi korak u otklanjanju loih strana programiranja u mainskim jezicima bili
su asemblerski jezici, koji su nastali automatizacijom svakodnevne prakse
tadanjih programera.
Slajd 15 od 49
Primer. Jednostavni (hipotetiki) asemblerski program (koji bi odgovarao naredbi
dodeljivanja C := A + B). Ovde su A, B i C imena za memorijske lokacije.
LOAD A
ADD B
STORE C
U poetku je svakoj asemblerskoj komandi odgovarala tano jedna mainska
komanda.
Slajd 16 od 49
Slajd 17 od 49
Dobre osobine apstrakcije neminovno dovode do nastanka viih programskih
jezika sredinom ezdesetih godina (FORTRAN-a, na primer).
Slajd 18 od 49
Upravo je ovo period kada se javlja softverska kriza.
Slajd 19 od 49
Na osnovu analize estih greaka zakljuuje se da puno greaka nastaje
dozvoljavanjem skokova (goto naredba) i korienjem globalnih
promenljivih.
Slajd 20 od 49
Slajd 21 od 49
Danas se smatra (na osnovu iskustva mnogih programera irom sveta i
dosadanjeg razvoja programskih jezika) da dobar programski jezika treba da:
Prvi od gornja dva zahteva je bitan, jer se smatra da ovek (programer) ne moe
istovremeno da vodi rauna o mnogo stvari.
Slajd 22 od 49
Nepotrebni detalji se najee sakrivaju na sledee naine:
Apstrakcijom podataka
Raunar podrava mali skup tipova podataka. Programski jezik treba da omogui
definisanje struktura podataka (slogove, skupove...) i kreiranje novih tipova
podataka. Realizacija treba da ostane sakrivena.
Apstrakcijom upravljanja (kontrole)
Pakovanjem niza manjih koraka u vee i zatvorene celine i njihovo korienje bez
uvida u njihovu realizaciju.
Apstrakcijom naina izvravanja programa
Na primer, u logikom stilu programiranja program se sastoji od skupa pravila i
injenica o problemu koji se reava. Prevodilac ili interpretator logikog
programskog jezika vodi rauna o redosledu koraka na osnovu skupa pravila koga je
zadao programer.
Slajd 23 od 49
Rekli smo da je bitno da programski jezik bude definisan tako da prevodiocu
omoguava da bude strog da ve tokom prevoenja otkrije to vie
greaka koje bi se javile tek tokom izvravanja programa.
Kao primer jedne takve konstrukcije slue tipovi podataka koje podravaju
gotovo svi moderni programski jezici.
Slajd 24 od 49
Slajd 25 od 49
Danas postoji vie hiljada programskih jezika koji se mogu podeliti po vie
razliitih kriterijuma.
Hronologija
Oblast primene
Slajd 27 od 49
Apstrakcija naina izvravanja programa
Slajd 28 od 49
Apstrakcija naina izvravanja programa
Slajd 29 od 49
Apstrakcija podataka i upravljanja
Slajd 30 od 49
Apstrakcija podataka i upravljanja
Slajd 31 od 49
Apstrakcija podataka i upravljanja
Slajd 32 od 49
Apstrakcija podataka i upravljanja
Slajd 33 od 49
Slajd 34 od 49
Jedan od prvih i najpopularnijih programskih jezika bio je Pascal, koji je
dizajnirao i realizovao profesor Niklaus Virt (Niklaus Wirth) 1970. godine na
Eidogenssische Technische Hochschule (ETH), Cirih.
Slajd 35 od 49
Virt je 1975. godine razvio modularni eksperimentalni jezik Modula.
Kao posledica ovog rada i rezultata eksperimentalnog rada na jeziku Mesa, Virt je
1977. godine zapoeo rad na novom programskom jeziku Modula-2.
Slajd 36 od 49
Slajd 37 od 49
Strukturirano programiranje je stil programiranja koji ima svoju jasnu
definiciju i odrednice.
Meutim, esto se ovaj pojam mea sa nekim njemu slinim pojmovima, kao
to su realizacija programa od gore na dole ili sa globalnom koncepcijom
reenja nekog problema i upravljanjem toka programiranja.
Slajd 38 od 49
N1 N2 ... Nn
I DA
NE N
NE I
N2 N1 DA
DA
N I
NE
b) Grananje c) Petlja sa d) Petlja sa
preduslovom postuslovom
Slajd 39 od 49
I
N1 N2 ... Nn
e) Alternativa (selekcija)
Slajd 40 od 49
Osnovni blok je prost blok koji ne sadri proste podblokove sa vie od jednog
elementa (vora).
Slajd 41 od 49
Slajd 42 od 49
Mnogi poetnici u programiranju ne prave razliku izmeu programskog
jezika i njegove realizacije na konkretnom raunaru.
Programski jezik dakle treba birati zbog dobrih osobina i mogunosti jezika, a
ne toliko zbog dobre realizacije.
Slajd 43 od 49
Ipak, treba napomenuti i da pojedine realizacije programskog jezika ponekad
menjaju i definiciju jezika, pogotovo ako programski jezik nije
standardizovan.
Slajd 44 od 49
Definicija programskog jezika se sastoji od sintakse i semantike.
Slajd 45 od 49
Na primer, naredba:
c := izracunaj(a, b);
je sintaksno ispravna naredba nekog programa, ali bez definisanog znaenja nije
mogue tano odrediti kakav je efekat ove naredbe.
Slajd 46 od 49
Sintaksu pojedinih konstrukcija Module-2 opisivaemo takozvanim
sintaksnim dijagramima.
Slajd 47 od 49
U sintaksnom dijagramu emo unutar krunica i elipsi navoditi rezervisane
rei i standardna imena programskog jezika, dok emo unutar pravougaonika
navoditi imena za ostale konstrukcije jezika.
slovo
cifra
slovo