44
Vi Vi š š i i p p rogramski rogramski je je zici zici Programiranje i vi Programiranje i vi š š i programski i programski jezici jezici prof dr Gordana Đorđevi prof dr Gordana Đorđevi ć ć

Visi Programski Jezici - Programiranje i Programski Jezici 1

  • Upload
    psy

  • View
    85

  • Download
    12

Embed Size (px)

DESCRIPTION

Visi programski jezici, predavanje br. 1

Citation preview

Page 1: Visi Programski Jezici - Programiranje i Programski Jezici 1

ViVišši i pprogramskirogramski jejezicizici

Programiranje i viProgramiranje i višši programski i programski jezicijezici

prof dr Gordana Đorđeviprof dr Gordana Đorđevićć

Page 2: Visi Programski Jezici - Programiranje i Programski Jezici 1

ProgramiranjeProgramiranje

�� Programiranje je znaProgramiranje je značčajna komponenta, prisutna ajna komponenta, prisutna u gotovo svim granama rau gotovo svim granama raččunarstva unarstva

�� Da bismo reDa bismo reššili ili neki problem korineki problem koriššććenjem enjem raraččunara, moramo raunara, moramo raččunaru precizno opisati sve unaru precizno opisati sve korake korake -- instrukcije (naredbe) koje on izvrinstrukcije (naredbe) koje on izvrššava ava zadatim redosledom. zadatim redosledom.

�� Programiranje je proces zadavanja skupa Programiranje je proces zadavanja skupa naredbi u nekom jeziku za programiranje da bi naredbi u nekom jeziku za programiranje da bi se izvrse izvrššila neka aktivnost, odnosno reila neka aktivnost, odnosno reššio io određeni problemodređeni problem. .

Page 3: Visi Programski Jezici - Programiranje i Programski Jezici 1

ProgramiranjeProgramiranje

�� Celi proces reCeli proces reššavanja problema upotrebom raavanja problema upotrebom raččunara obiunara običčno se sastoji od no se sastoji od vivišše koraka.e koraka.

�� Prvi korakPrvi korak obiobiččno je rezultat shvatanja problema koji treba da se reno je rezultat shvatanja problema koji treba da se rešši i analize i i analize ulaznih podataka koje raulaznih podataka koje raččunar treba da obradi, kao i izlaznih podataka ili unar treba da obradi, kao i izlaznih podataka ili rezultata koje rarezultata koje raččunar treba da proizvede.unar treba da proizvede.

�� Drugi korakDrugi korak je smije smiššljanje algoritma tj. definisanje postupka koji se obiljanje algoritma tj. definisanje postupka koji se običčno no sastoji od nekoliko koraka, na osnovu kojih sastoji od nekoliko koraka, na osnovu kojih ćće rae raččunar proizvesti zahtevani izlaz unar proizvesti zahtevani izlaz iz odgovarajuiz odgovarajuććeg ulaza.eg ulaza.

�� Programiranje, u uProgramiranje, u užžem smislu, se moem smislu, se možže definisati kao proces koji se sastoji e definisati kao proces koji se sastoji od shvatanja problema i analize ulaza i izlaza, od izbora i obliod shvatanja problema i analize ulaza i izlaza, od izbora i oblikovanja kovanja algoritma za njegovo realgoritma za njegovo reššavanje i od utvrđivanja programske strukture i avanje i od utvrđivanja programske strukture i logike.logike.

�� Ostali koraci u ovom procesu su: pisaOstali koraci u ovom procesu su: pisanje programa, pnje programa, prevođenje programarevođenje programa, , izvrizvrššavanje i testiranje programa, kao i kompletiranje programske avanje i testiranje programa, kao i kompletiranje programske dokumentacije. Zato se pdokumentacije. Zato se programiranje, rogramiranje, u u šširem smislu, moirem smislu, možže definisati kao e definisati kao proces proces pisanja, testiranja i odrpisanja, testiranja i održžavanja softvera avanja softvera

Page 4: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranjaFaze programiranja

Page 5: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranja: analiza Faze programiranja: analiza programaprograma

�� Postavka problemaPostavka problema –– problem se formuliproblem se formulišše e na prirodnom jeziku (statistina prirodnom jeziku (statističčki 60 do 90% ki 60 do 90% gregreššaka uaka u slosložženim programskimenim programskim projektima projektima potipotičče od nepotpune i pogree od nepotpune i pogreššne formulacije ne formulacije zahteva)zahteva)

�� Analiza problemaAnaliza problema –– ukljuuključčuje definisanje uje definisanje ulaznih i izlaznih podataka, moguulaznih i izlaznih podataka, moguććih ih ograniograniččenja njihovih vrednosti i zavrenja njihovih vrednosti i završšava se ava se formalnim opisom problemaformalnim opisom problema

Page 6: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranja: dizajn Faze programiranja: dizajn programaprograma

�� Izbor ili razrada algoritmaIzbor ili razrada algoritma –– algoritam podrazumeva algoritam podrazumeva konakonaččan uređen niz precizno formulisanih pravila kojima an uređen niz precizno formulisanih pravila kojima se rese reššava jedan ili ava jedan ili ččitava klasa problema. U ovoj etapi, itava klasa problema. U ovoj etapi, posle analize svih varijanti i izbora optimalne, algoritam posle analize svih varijanti i izbora optimalne, algoritam se izrase izražžava na nekom od jezika za zapis algoritma ili u ava na nekom od jezika za zapis algoritma ili u vidu blok vidu blok ššeme. Kreiranjem algoritma program je sveden eme. Kreiranjem algoritma program je sveden u oblik pogodan za reu oblik pogodan za reššavanje na raavanje na raččunaru.unaru.

�� Projektovanje opProjektovanje opššte strukture programate strukture programa –– bira se bira se programski jezik najpogodnijiprogramski jezik najpogodniji za kodiranje. Pristupa se za kodiranje. Pristupa se razradi arhitekture programa i definirazradi arhitekture programa i definišše nae naččin in ččuvanja uvanja informacija (skup promenljivih, nizova podataka, drugih informacija (skup promenljivih, nizova podataka, drugih struktura)struktura)

Page 7: Visi Programski Jezici - Programiranje i Programski Jezici 1
Page 8: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranja: kodiranje Faze programiranja: kodiranje programaprograma

�� KodiranjeKodiranje –– zapis algoritma na zapis algoritma na programskom jeziku. Vreme potrebno za programskom jeziku. Vreme potrebno za kodiranje i verovatnokodiranje i verovatnoćća pojave grea pojave greššaka aka zavise od preciznostizavise od preciznosti algoritma, strukture algoritma, strukture podataka i strukture programa.podataka i strukture programa.

Page 9: Visi Programski Jezici - Programiranje i Programski Jezici 1
Page 10: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranja: verifikacija Faze programiranja: verifikacija programa programa

�� TestiranjeTestiranje -- sluslužži za otklanjanje grei za otklanjanje greššaka u programu. Testiranje se radi na aka u programu. Testiranje se radi na osnovu unapred pripremljenih kontrolnih parametara za koje je poosnovu unapred pripremljenih kontrolnih parametara za koje je poznato znato rereššenje problema. Testiranje mora da obuhvati sve moguenje problema. Testiranje mora da obuhvati sve mogućće grane e grane programaprograma ukljuuključčujuujućći i situaciju kada nema rei i situaciju kada nema reššenja problema. Program radi enja problema. Program radi ispravno kada se reispravno kada se reššenja poklapaju sa oenja poklapaju sa oččekivanim. U toku izrade ekivanim. U toku izrade programaprograma moraju se obuhvatiti i specijalne situacije kao i moraju se obuhvatiti i specijalne situacije kao i ““zazašštitu od titu od glupostigluposti”” ((fool tolerancefool tolerance), koja podrazumeva sposobnost programa da ), koja podrazumeva sposobnost programa da reaguje na nestrureaguje na nestruččna obrana obraććanja korisnika.anja korisnika.

�� Analiza rezultata izvrAnaliza rezultata izvrššavanja programa, njihova interpretacija i avanja programa, njihova interpretacija i eventualna modifikacija modela eventualna modifikacija modela –– kada je program proveren, grekada je program proveren, grešške ke otklonjene i bez obzira otklonjene i bez obzira ššto se smatra da program radi korektno, neophodno to se smatra da program radi korektno, neophodno jeje da se dobijenida se dobijeni rezultatirezultati stave stave ““pod lupupod lupu””. Ako se radi o modeliranju . Ako se radi o modeliranju nekog prirodnog procesa treba uporediti rezultate programa sa renekog prirodnog procesa treba uporediti rezultate programa sa rezultatima zultatima posmatranja. Ako nisu u granicama koje se mogu tolerisati model posmatranja. Ako nisu u granicama koje se mogu tolerisati model se se modifikuje da bi bio modifikuje da bi bio ššto realniji.to realniji.

Page 11: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranja: Faze programiranja: dokumentovanje programadokumentovanje programa

�� Dokumentovanje programa Dokumentovanje programa –– Dokumentacija o programu mora sadrDokumentacija o programu mora sadržžati ati sledesledećće:e:�� opis problema,opis problema,�� grubi dijagram toka,grubi dijagram toka,�� plan operativne memorije,plan operativne memorije,�� detaljan dijagram toka,detaljan dijagram toka,�� program u mnemoniprogram u mnemoniččkom kodu ikom kodu i�� uputstvo za koriuputstvo za koriššććenje programa koje mora obuhvatiti naenje programa koje mora obuhvatiti naččin zadavanja i broj in zadavanja i broj

ulaznih ulaznih parametaraparametara kaokao i i formuformu saopsaopšštavanjatavanja rezultatarezultata..

�� Programska dokumentacijaProgramska dokumentacija: Skup svih pisanih tekstova koji se odnose : Skup svih pisanih tekstova koji se odnose na jedan program ili programski sistem. Programska dokumentacijana jedan program ili programski sistem. Programska dokumentacijapredstavlja vapredstavlja važžan deo programiranja i neophodno je potrebna kod primene an deo programiranja i neophodno je potrebna kod primene programa. U zavisnosti od osoba kojima je dokumentacija namenjenprograma. U zavisnosti od osoba kojima je dokumentacija namenjena, a, razlikujemo:razlikujemo:�� sistemsku dokumentaciju sistemsku dokumentaciju –– opisuje interni rad i konstrukciju programa; ovaj deo opisuje interni rad i konstrukciju programa; ovaj deo

dokumentacije je namenjen programerima, koji se dokumentacije je namenjen programerima, koji se starajustaraju o o odrodržžavanjuavanjuprogramaprograma..

�� korisnikorisniččku dokumentaciju ku dokumentaciju -- namenjena je korisniku i ona opisuje nanamenjena je korisniku i ona opisuje naččin koriin koriššććenja enja i mogui moguććnosti nosti programaprograma..

Page 12: Visi Programski Jezici - Programiranje i Programski Jezici 1

Faze programiranja: odrFaze programiranja: održžavanje avanje programaprograma

�� OdrOdržžavanje i modernizacija programaavanje i modernizacija programa–– podrazumeva obuku korisnika i podrazumeva obuku korisnika i konsultacije o radu programa; vrkonsultacije o radu programa; vršši se i se stalna analiza reakcije korisnika i izrada stalna analiza reakcije korisnika i izrada novih modifikacija i verzija na osnovu novih modifikacija i verzija na osnovu primedbi i primedbi i žželja korisnika.elja korisnika.

Page 13: Visi Programski Jezici - Programiranje i Programski Jezici 1

RaRaččunarski programunarski programraraččunarski program je pojam koji se odnosi na set unarski program je pojam koji se odnosi na set programa, procedura, algoritama i odgovarajuprograma, procedura, algoritama i odgovarajućće e

dokumentacijedokumentacije

�� RaRaččunarski programunarski program je spisak naredbi napisan u nekom je spisak naredbi napisan u nekom programskom jeziku namenjen za određenu raprogramskom jeziku namenjen za određenu raččunarsku platformu. unarsku platformu.

�� RaRaččunarski programunarski program je je skup instrukcija koje upravljaju hardverom skup instrukcija koje upravljaju hardverom na nana naččin da se obrade zahtevi korisnikain da se obrade zahtevi korisnika

�� Skup instrukcija napisan za reSkup instrukcija napisan za reššavanje nekog problema naziva se avanje nekog problema naziva se programprogram

�� Programom zadajemo raProgramom zadajemo raččunaru naunaru naččin na koji izvrin na koji izvrššava poslove. ava poslove. �� Da bismo reDa bismo reššili ili neki problem korineki problem koriššććenjem raenjem raččunara, moramo unara, moramo

raraččunaru precizno opisati sve korake unaru precizno opisati sve korake -- instrukcije (naredbe) koje on instrukcije (naredbe) koje on izvrizvrššava zadatim redosledomava zadatim redosledom

Page 14: Visi Programski Jezici - Programiranje i Programski Jezici 1

RaRaččunarski programunarski program

•• RaRaččunar obavlja unar obavlja ““jednostavnejednostavne”” aritmetiaritmetiččke ke i logii logiččke operacije nad podacimake operacije nad podacima

•• Program:Program: skup instrukcija u skup instrukcija u ččijoj osnovi ijoj osnovi su jednostavne aritmetisu jednostavne aritmetiččke i logike i logiččke ke operacijaoperacija

�� Navedene operacije se izvode brzo i taNavedene operacije se izvode brzo i taččnono

Page 15: Visi Programski Jezici - Programiranje i Programski Jezici 1

RaRaččunarski programunarski program

•• Program se piProgram se pišše (sastavlja) u koracima; svaki korak ree (sastavlja) u koracima; svaki korak reššava po jedan ava po jedan deo problemadeo problema

•• Ove manje zaokurOve manje zaokuržžene logiene logiččke celine nazivaju se MODULIke celine nazivaju se MODULI•• Modul je usmeren na reModul je usmeren na reššavanje jednog uavanje jednog užžeg segmenta problema u eg segmenta problema u

okviru okviru ččitavog programa; svi moduli moraju biti povezani u itavog programa; svi moduli moraju biti povezani u funkcionalnu celinu funkcionalnu celinu –– program koji reprogram koji reššava problem u celiniava problem u celini

•• Svaki pojedinaSvaki pojedinaččni program koji se izvodi u rani program koji se izvodi u raččunaru predstavlja unaru predstavlja jedan POSAO (job) i podrazumeva sve aktivnosti od unojedan POSAO (job) i podrazumeva sve aktivnosti od unoššenja enja programa do dobijanja rezultataprograma do dobijanja rezultata

•• Kada se svakom koraku posla, prKada se svakom koraku posla, prilikom njegovog izvođenja u ilikom njegovog izvođenja u raraččunaru, dodele konkretni resursi dobijamunaru, dodele konkretni resursi dobijamoo ZADATAK (task)ZADATAK (task)

Page 16: Visi Programski Jezici - Programiranje i Programski Jezici 1

Programski jeziciProgramski jezici

�� ProgramskiProgramski jezikjezik jeje vevešštataččkiki jezikjezik kojikoji se se momožžee koristitikoristiti zaza kontrolukontroluponaponaššanjaanja raraččunaraunara..

�� ProgramskiProgramski jezicijezici susu definisanidefinisani prekopreko sintaksnihsintaksnih i i semantisemantiččkihkih pravilapravila kojakojaopisujuopisuju njihovunjihovu strukturustrukturu i i znaznaččenjeenje. .

�� ProgramskiProgramski jezicijezici se se koristekoriste dada olakolakššajuaju komunikacijukomunikaciju sasa raraččunaromunarom prilikomprilikomorganizovanjaorganizovanja i i manipulacijemanipulacije informacijainformacija, , aliali i i dada preciznoprecizno izrazeizraze algoritmealgoritme. .

�� Programski jezik je skup pravila kojim se raProgramski jezik je skup pravila kojim se raččunaru predstavljaju instrukcije i unaru predstavljaju instrukcije i opisuju podaciopisuju podaci

�� Programski jezik se Programski jezik se momožžee definisatidefinisati kaokao notacionanotaciona tehnikatehnika ((pismopismo) ) kojomkojom se se nana kompaktankompaktan, , nedvosmislennedvosmislen i i konakonaččanan nanaččinin navodinavodi nizniz operacijaoperacija kojekoje ććeebitibiti izvrizvrššeneene nadnad nekimnekim objektimaobjektima -- podacimapodacima. . Određeni niz tih operacija Određeni niz tih operacija napisan u nekom jeziku naziva se program.napisan u nekom jeziku naziva se program.

Page 17: Visi Programski Jezici - Programiranje i Programski Jezici 1

Kategorije komandi programskog Kategorije komandi programskog jezikajezika

�� obrada ulaznih podataka obrada ulaznih podataka –– komande koje komande koje ćće obezbediti e obezbediti preuzimanje podataka sa tastature, datoteke ili nekog preuzimanje podataka sa tastature, datoteke ili nekog drugog izvoradrugog izvora

�� obrada izlaznih podataka obrada izlaznih podataka –– komande koje komande koje ćće obrađene e obrađene podatke podatke »»predatipredati«« monitoru, datoteci, bazi podataka ili monitoru, datoteci, bazi podataka ili nekom drugom medijumunekom drugom medijumu

�� obrada podataka obrada podataka –– komande koje komande koje ćće obraditi podatke e obraditi podatke pomopomoćću neke matematiu neke matematiččke operacije (sabiranje, ke operacije (sabiranje, oduzimanje, mnooduzimanje, množženje, delenje, deljenje)jenje)

�� poređenje i izbor poređenje i izbor –– komande kojima se realizuje provera komande kojima se realizuje provera određenih kriterijuma i kontrola izvrodređenih kriterijuma i kontrola izvrššavanja komandiavanja komandi

�� ponavljanje ponavljanje –– komande koje komande koje ćće omogue omoguććiti ponavljanje iti ponavljanje izvrizvrššavanja pojedinih komandi koje je regulisano avanja pojedinih komandi koje je regulisano posebnim pravilima posebnim pravilima

Page 18: Visi Programski Jezici - Programiranje i Programski Jezici 1

Sintaksa jezikaSintaksa jezika

�� Pravila koja definiPravila koja definiššu kako se grade elementarne (reu kako se grade elementarne (rečči) i sloi) i složžene ene konstrukcije (rekonstrukcije (reččenice) jezika enice) jezika ččine gramatiku jezika. Sintaksa jezika ine gramatiku jezika. Sintaksa jezika izuizuččava da li su jeziava da li su jeziččke konstrukcije gramatike konstrukcije gramatiččki korektne i daje ki korektne i daje mogumoguććnost formalnog otkrivanja grenost formalnog otkrivanja greššaka.aka.

�� Sintaksa programskog jezika je veoma Sintaksa programskog jezika je veoma ččesto sloesto složžena, a vrlo je vaena, a vrlo je važžno no da programer shvati kako se reda programer shvati kako se reččenice (programske naredbe) enice (programske naredbe) konstruikonstruiššu pravilno.u pravilno.

�� Jedan od naJedan od naččina prikazivanja sintakse programskog jezika je ina prikazivanja sintakse programskog jezika je upotreba dijagrama reupotreba dijagrama rečči odnosno notacija sa zagradama. i odnosno notacija sa zagradama.

�� Svaki programski jezik ima određeni skup reSvaki programski jezik ima određeni skup rečči i ččiji je smisao i naiji je smisao i naččin in upotrebe unapred definisan, a koje se nazivaju rezervisane reupotrebe unapred definisan, a koje se nazivaju rezervisane rečči ili i ili sluslužžbene rebene rečči.i.

tip_povratne_vrednostitip_povratne_vrednosti nazivMetode (...parametri...) nazivMetode (...parametri...) {{// telo metoda// telo metoda

}}

Page 19: Visi Programski Jezici - Programiranje i Programski Jezici 1

Programi prevodioci

� Programi koji imaju zadatak da programske instrukcije napisane na višem programskom jeziku, prevedu na mašinski jezik, nazivaju se programi prevodioci.

� Program napisan u nekom višem programskom jeziku zove se izvorni program (source program) i pre njegovog prevođenja kaže se da je on napisan u izvornom kôdu (source kôd).

� Nakon prevođenja od strane programa prevodioca dobijamo program u mašinskom kôdu (objektni program).

Page 20: Visi Programski Jezici - Programiranje i Programski Jezici 1

Programi prevodioci� Programi prevodioci javljaju se kao kompajleri i interpreteri� Kompajler najpre prevede ceo program sa programskog jezika na

binarni kôd, pa ga tek nakon toga izvršava. Osim toga, proces prevođenja kod ovih programa prevodioca prati i poces otkrivanjagrešaka.

� Interpreter je program prevodioc koji prevodi jednu po jednu naredbu programa koju odmah zatim i izvršava. Ovi programi ne rade analize poput kompajlera ali ukoliko naiđu na grešku oni jednostavno ne mogu da izvrše programsku instrukciju.

Page 21: Visi Programski Jezici - Programiranje i Programski Jezici 1

Kompajler� Kompajler je program koji na svom ulazu prihvata

program napisan na nekom od programskih jezika nazvan izvorni program, a na svom izlazu generiše ekvivalentan program na mašinskom kodu tj. objektni program koji se može direktno izvršavati od strane računarskog hardvera. Kompajler je u stanju da izvršava:� sintaksnu analizu kojom otkriva greške u ispisivanju programskih

instrukcija usled pogrešno primenjenih sintaksnih pravila koja važe za određeni programski jezik

� logičku analizu kojom otkriva eventualne greške u logičkom dizajnu programa

Page 22: Visi Programski Jezici - Programiranje i Programski Jezici 1

Ciklus kompilacije

� Objektni program koji se generiše na izlazu kompajleta upisuje se u sekundarnu memoriju

� Pomoćni, sistemski program, punilac (loader), smešta program iz sekundarne memorije u glavnu memoriju čime je objektni program spreman za izvršenje

Page 23: Visi Programski Jezici - Programiranje i Programski Jezici 1

Proces kompilacije

� Proces kompilacije može se podeliti na dva dela

analiza izvornog programa

sinteza objektnog programa

Page 24: Visi Programski Jezici - Programiranje i Programski Jezici 1

Programski jeziciProgramski jezici–– podela podela --

�� Na osnovu naNa osnovu naččina prevođenja i izvrina prevođenja i izvrššavanja, programske jezike delimo na:avanja, programske jezike delimo na:�� kompajlerske jezike kompajlerske jezike –– zahtevaju programe za prevođenje zahtevaju programe za prevođenje (kompajlere) pomo(kompajlere) pomoćću u

kojih se ceo program napisan na vikojih se ceo program napisan na viššem programskom jeziku najpre prevodi u em programskom jeziku najpre prevodi u njemu ekvivalentan manjemu ekvivalentan maššinski program, pa se tek onda moinski program, pa se tek onda možže izvre izvrššavati na avati na raraččunaru (Algol, Fortranunaru (Algol, Fortran, , CobolCobol, , PL/1)PL/1)

�� interpreterske jezike interpreterske jezike –– koji kreiraju programe koji se prevode i izvrkoji kreiraju programe koji se prevode i izvrššavaju avaju instrukcija po instrukcija (Lisp, Prolog, Basic)instrukcija po instrukcija (Lisp, Prolog, Basic)

�� prema oblastima u kojima su koriprema oblastima u kojima su koriššććeni programieni programi, , programske jezike delimo programske jezike delimo na:na:�� jezike u oblasti poslovanja jezike u oblasti poslovanja -- veliki broj ulazno/izlaznih podataka i relativno veliki broj ulazno/izlaznih podataka i relativno

jednostavan opis obrade podataka (npr. Cobol)jednostavan opis obrade podataka (npr. Cobol)�� jezike u oblasti nauke i tehnike jezike u oblasti nauke i tehnike -- mali broj ulazno/izlaznih podataka i veoma mali broj ulazno/izlaznih podataka i veoma

slosložžen opis obrade (npr. Fortranen opis obrade (npr. Fortran, , Algol)Algol)

�� prema naprema naččinu reinu reššavanja problema, programske jezike delimo na: avanja problema, programske jezike delimo na: �� proceduralneproceduralne –– programom dajemo raprogramom dajemo raččunaru kompletan skup instrukcija kojim unaru kompletan skup instrukcija kojim

se rese reššava problem odnosno dajemo mu algoritam za reava problem odnosno dajemo mu algoritam za reššavanje zadataka. Ovim avanje zadataka. Ovim jezicima opisujemo kako se rejezicima opisujemo kako se reššava dati problem. (ava dati problem. (Fortran, Cobol, Basic, Pascal, Fortran, Cobol, Basic, Pascal, C)C)

�� deklarativne deklarativne -- opisujemo opisujemo ššta znamo o problemu i ta znamo o problemu i ššta ta žželimo da dobijemo elimo da dobijemo rereššavajuavajućći ga, a sistem sam dolazi do postupka za rei ga, a sistem sam dolazi do postupka za reššavanje problema. Sistavanje problema. Sistem em ima ugrađen algoritam koji dovodi do reima ugrađen algoritam koji dovodi do reššenja. (enja. (Prolog,Prolog,i i SQLSQL))

�� Posebnu klasu Posebnu klasu ččine ine objektno orijentisani jeziciobjektno orijentisani jezici, kod kojih su prisutni i , kod kojih su prisutni i proceduralni i neproceduralni elementi.proceduralni i neproceduralni elementi.

Page 25: Visi Programski Jezici - Programiranje i Programski Jezici 1

Kategorije programskih jezikaKategorije programskih jezika

�� Prema stepenu zavisnosti programskog jezika i raPrema stepenu zavisnosti programskog jezika i raččunaraunara

�� Jezici koji su tesno povezani sa konkretnim raJezici koji su tesno povezani sa konkretnim raččunarskim sistemom i uzimaju unarskim sistemom i uzimaju u obzir specifiu obzir specifiččnosti arhitekture odgovarajunosti arhitekture odgovarajuććeg procesora su maeg procesora su maššinski inski zavisni jezici. Ovi jezici nazivaju se jezicima niskog nivoa popzavisni jezici. Ovi jezici nazivaju se jezicima niskog nivoa poput maut maššinskog, inskog, simbolisimboliččkih i makro jezika. kih i makro jezika.

�� Nasuprot jezicima niskog nivoa, jezici viNasuprot jezicima niskog nivoa, jezici viššeg nivoa su maeg nivoa su maššinski nezavisni inski nezavisni jezici i grade se nezavisno od rajezici i grade se nezavisno od raččunara na kome unara na kome ćće se izvre se izvrššavati. Ovi jezici avati. Ovi jezici su alati koje programeri koriste da bisu alati koje programeri koriste da bi zapisali svoje ideje pri zapisali svoje ideje pri ččemu se ne emu se ne upuupušštaju u detalje arhitekture rataju u detalje arhitekture raččunara. unara. MaMaššinski nezavisni jezici su inski nezavisni jezici su namenjeninamenjeni primenama u razliprimenama u različčitim delatnostima i za svaku od tih primena itim delatnostima i za svaku od tih primena grade se posebne klase programskih jezika visokog nivoa.grade se posebne klase programskih jezika visokog nivoa.

Page 26: Visi Programski Jezici - Programiranje i Programski Jezici 1

Razvoj programskih jezika Razvoj programskih jezika Jezici niskog nivoaJezici niskog nivoa

�� razvijarazvija se se uporedouporedo sasa prvomprvom genercijomgenercijom raraččunaraunara�� PPrirodni jezik rarirodni jezik raččunara definisan njegovom arhitekturomunara definisan njegovom arhitekturom�� JJedini direktno razumljiv raedini direktno razumljiv raččunaruunaru�� CPU je dizajnirana tako da moCPU je dizajnirana tako da možže interpretirati binarne naredbee interpretirati binarne naredbe�� programskeprogramske naredbenaredbe susu zadavanezadavane u u oblikuobliku binarnihbinarnih kodovakodova

(ma(maššinskoginskog jezikajezika),), a a kasnijekasnije ssu u titi brojnibrojni kodovikodovi zamenjenizamenjenisimbolimasimbolima.. OviOvi simbolisimboliččkiki jezicijezici nazivajunazivaju se ASEMBLERIse ASEMBLERI

�� upotrebljavaliupotrebljavali susu se se zaza izraduizradu programaprograma zaza matematmatematččkeke proraproraččuneune�� zahtevalizahtevali susu dobrodobro poznavanjepoznavanje svihsvih unutraunutraššnjihnjih procesaprocesa u u raraččunaruunaru�� danasdanas se se koristekoriste zaza izraduizradu programaprograma zaza upravljanjeupravljanje pojedinimpojedinim

delovimadelovima raraččunaraunara

Page 27: Visi Programski Jezici - Programiranje i Programski Jezici 1

MaMaššinski jezikinski jezik

�� programski jezik prve generacije i jedini jezik koji raprogramski jezik prve generacije i jedini jezik koji raččunar i dalje razume bez pomounar i dalje razume bez pomoćći i dodatnih softverskih alata. dodatnih softverskih alata.

�� Svaki raSvaki raččunar ima svoj maunar ima svoj maššinski jezik koji je izgrađen nad binarnom azbukom inski jezik koji je izgrađen nad binarnom azbukom (simboli (simboli 0 i 1), a operacije i podaci predstavljeni su nizovima bitova ko0 i 1), a operacije i podaci predstavljeni su nizovima bitova koji imaju razliji imaju različčita ita tumatumaččenja u enja u zavisnosti od arhitekture razavisnosti od arhitekture raččunara.unara.

�� Programi razvijeni u maProgrami razvijeni u maššinskom jeziku za jedan rainskom jeziku za jedan raččunar neupotrebljivi su u opunar neupotrebljivi su u opšštem tem slusluččaju za drugi raaju za drugi raččunarunar

�� Kako se maKako se maššinski program sastoji od niza nula i jedinica, izuzetno je teinski program sastoji od niza nula i jedinica, izuzetno je tešško ko programirati i zahteva dobro poznavanje naprogramirati i zahteva dobro poznavanje naččina rada i arhitekture određenog ina rada i arhitekture određenog raraččunara. unara.

�� ProgramerProgramer moramora dada znazna::�� binarnibinarni kodkod zaza svakusvaku instrukcijuinstrukciju raraččunaraunara�� kakvakakva jeje arhitekturaarhitektura raraččunaraunara i i kojikoji susu registriregistri kojikoji se se koristekoriste u u instrukcijamainstrukcijama�� svesve nanaččineine adresiranjaadresiranja�� kakokako dada raraččunaruunaru zadazada nanaččinin adresiranjaadresiranja�� dada odrediodredi tataččnene memorijskememorijske lokacijelokacije zaza svesve instrukcijeinstrukcije grananjagrananja i i zaza podatkepodatke�� kodovekodove stanjastanja i i kodovekodove prekidaprekida

Page 28: Visi Programski Jezici - Programiranje i Programski Jezici 1

MaMaššinski jezikinski jezik

�� Programiranje u maProgramiranje u maššinskom jeziku je:inskom jeziku je:�� DugotrajnoDugotrajno�� NapornoNaporno�� PodloPodložžno greno grešškamakama

�� Programeri su pisali programe u binarnom ili neProgrameri su pisali programe u binarnom ili neššto to ččeeššćće u heksadekadnom kodue u heksadekadnom kodu

Program u maProgram u maššinskom kodu (binarni kod) (heksadekadni kod)inskom kodu (binarni kod) (heksadekadni kod)11000010 00000000 00101000 00101100 11000010 00000000 00101000 00101100 3402000534020005

11000100 00000000 00101000 00110000 11000100 00000000 00101000 00110000 0000000c0000000c

10000110 10001000 11000000 00000000 10000110 10001000 11000000 00000000 3c0110013c011001

10000000 10001000 01000000 00000001 10000000 10001000 01000000 00000001

00000010 10000000 00000000 00000110 00000010 10000000 00000000 00000110

10000010 10000000 01111111 11111100 10000010 10000000 01111111 11111100

KKoji oji ččudak moudak možže pisati program na ovaj nae pisati program na ovaj naččin (bilo ih je nekoliko)in (bilo ih je nekoliko)

Page 29: Visi Programski Jezici - Programiranje i Programski Jezici 1

SimboliSimboliččki jeziciki jezici

�� Asemblerske naredbe Asemblerske naredbe –– simbolisimboliččki zapisane maki zapisane maššinske naredbeinske naredbe�� Da bi se premostile teDa bi se premostile tešškokoćće u pisanju programa na mae u pisanju programa na maššinskom jeziku, razvijaju se simboliinskom jeziku, razvijaju se simboliččki jezici ki jezici

koji umesto instrukcija pisanih nizom bitova, koriste mnemotehnikoji umesto instrukcija pisanih nizom bitova, koriste mnemotehniččke skrake skraććenice za operacije i enice za operacije i simbolisimboliččke oznake podataka ke oznake podataka

Za sabiranje Za sabiranje ADD a, bADD a, b

Za pomeranje Za pomeranje MOV a,bMOV a,b

�� potrebno je poznavati tehnipotrebno je poznavati tehniččke karakteristike konkretnog rake karakteristike konkretnog raččunara za koji se kreira program unara za koji se kreira program �� Programski jezik je bio jasniji i lakProgramski jezik je bio jasniji i lakšši za korii za koriššććenje programeru, ali nerazunljiv procesoruenje programeru, ali nerazunljiv procesoru�� Programi napisani na simboliProgrami napisani na simboliččkom jeziku moraju se prevesti na makom jeziku moraju se prevesti na maššinski jezik da bi se izvrinski jezik da bi se izvrššavali avali

na rana raččunaru. unaru.

�� Svakoj naredbi simboliSvakoj naredbi simboliččkog jezika odgovara jedna kog jezika odgovara jedna naredba manaredba maššinskog jezika, pa program koji inskog jezika, pa program koji vrvršši prevođenje iz simbolii prevođenje iz simboliččkog u makog u maššinski jezik i naziva se asembler (inski jezik i naziva se asembler (translatortranslator), kao ulaz dobija ), kao ulaz dobija program napisan u simboliprogram napisan u simboliččkom jeziku, a kao izlaz odgovarajukom jeziku, a kao izlaz odgovarajućći program na mai program na maššinskom jeziku. inskom jeziku.

�� Upravo po programima koji vrUpravo po programima koji vršše prevođenje simbolie prevođenje simboliččki jezik se ki jezik se ččesto naziva asemblerski jezik ili esto naziva asemblerski jezik ili krakraćće asemblere asembler

Page 30: Visi Programski Jezici - Programiranje i Programski Jezici 1

SimboliSimboliččki jezici ki jezici -- AssemblerAssembler

�� Asemblerski jezici (Asemblerski jezici (assembly languagesassembly languages) dozvoljavaju da se:) dozvoljavaju da se:�� umesto binarnih kodova operacije koristeumesto binarnih kodova operacije koriste simbolisimboliččk kodovi k kodovi

instrukcija (instrukcija (mnemonicsmnemonics))�� postoji samo jedan tip podatka postoji samo jedan tip podatka –– niz bajtaniz bajta�� algoritamske strukture algoritamske strukture –– uslovni i bezuslovni skokoviuslovni i bezuslovni skokovi�� koriste simbolikoriste simboliččka imena za registreka imena za registre�� pridrupridružžuju imena memorijskim lokacijamauju imena memorijskim lokacijama�� potprogrami se realizuju kao prosti skokovi na mesto izvrpotprogrami se realizuju kao prosti skokovi na mesto izvrššenja enja

programaprograma�� nije poznat mehanizam prenosa argumenata funkcijenije poznat mehanizam prenosa argumenata funkcije

�� Deo programa napisan na asembleruDeo programa napisan na asembleru�� LOAD r1,aLOAD r1,a�� LOAD r2,bLOAD r2,b�� MUL r1,r2MUL r1,r2�� DIV r1,#r2DIV r1,#r2�� RETRET

Page 31: Visi Programski Jezici - Programiranje i Programski Jezici 1

Razvoj programskih jezikaRazvoj programskih jezikaJezici visokog nivoa Jezici visokog nivoa

�� vevećća paa pažžnjanja se se posveposveććujeuje komunikacijikomunikaciji korisnikakorisnika sasa raraččunaromunarom�� razvijenirazvijeni susu jezicijezici kojikoji omoguomoguććavajuavaju zapisivanjezapisivanje postupkapostupka rereššavanjavanjaa zadatkazadatka

ssimbolimaimbolima,, a a pripri tome tome nijenije potrebnopotrebno poznavatipoznavati unutraunutraššnjenje proceseprocese u u raraččunaruunaru (nisu zavisni od CPU)(nisu zavisni od CPU)

�� NNaredbe sliaredbe sliččne matematine matematiččkom jeziku kom jeziku �� MMatematiatematiččko oznako označčavanjeavanje�� ZZahtevaju interpretere ili prevodioce (compiler)ahtevaju interpretere ili prevodioce (compiler)

�� Primer koda jezika visokog nivoaPrimer koda jezika visokog nivoax = 2x = 2

If (x <= y)If (x <= y)x = x + 1x = x + 1

elseelsex = x x = x -- 11

Page 32: Visi Programski Jezici - Programiranje i Programski Jezici 1

Jezici visokog nivoaJezici visokog nivoaII generacija II generacija

�� nnajznaajznaččajnijiajniji predstavnicipredstavnici oveovegeneracijegeneracije (te(tešški za uki za uččenje)enje)

�� FORTRANFORTRAN

�� COBOLCOBOL

�� ALGOLALGOL

Page 33: Visi Programski Jezici - Programiranje i Programski Jezici 1

FORTRAN (FORTRAN (FORmulaFORmula TRANslatorTRANslator))

�� prevodilacprevodilac formulaformula�� pogodan za matematipogodan za matematiččke prorake proraččuneune

�� Programiranje postaje problemski orjentisano a ne viProgramiranje postaje problemski orjentisano a ne višše e mamaššinski orjentisanoinski orjentisano

�� UUvode se kontrolne strukture vode se kontrolne strukture if if –– selekcija selekcija i i do do –– petljapetlja

�� UUvodi se mahanizam prenosa argumenata u vodi se mahanizam prenosa argumenata u potprogramepotprograme

�� RRazlikuju se funkcije i procedureazlikuju se funkcije i procedure

Page 34: Visi Programski Jezici - Programiranje i Programski Jezici 1

COBOL (Common Business COBOL (Common Business OrintedOrintedLanguageLanguage))

�� poslovnoposlovno orjentisaniorjentisani jezikjezik�� orjentiorjentissan an nana manipulmanipulacijuaciju sasa velikimvelikim

skupovimaskupovima podatakapodataka�� prvi standardizovani programski jezikprvi standardizovani programski jezik�� jezik sa dosta rejezik sa dosta rečči, pogodan za programerei, pogodan za programere�� prvi put otvara diskusiju o potrebi pisanja prvi put otvara diskusiju o potrebi pisanja

razmljivog kodarazmljivog koda

Page 35: Visi Programski Jezici - Programiranje i Programski Jezici 1

ALGOL (ALGOL (ALGOrithmicALGOrithmic Language)Language)

�� algoritamskialgoritamski jezikjezik�� razvijen je 1960. godine kao potpuno pogodan za strukturalno prrazvijen je 1960. godine kao potpuno pogodan za strukturalno programiranje ogramiranje �� direktni je predhodnik PASCALdirektni je predhodnik PASCAL--aa�� ALGOL uvodi u programske jezike danas standardne elemente poput:ALGOL uvodi u programske jezike danas standardne elemente poput:

�� BBlokovi sa lokalnim deklaracijamalokovi sa lokalnim deklaracijama�� UUgnjegnježždene deklaracije i kontrolne strukturedene deklaracije i kontrolne strukture�� PPrenos parametara potprogramarenos parametara potprograma�� PPotprogrami mogu biti rekurzivniotprogrami mogu biti rekurzivni

�� IIako je dobro koncipiran nije ako je dobro koncipiran nije ššire prihvaire prihvaććen pre svega jer nema standardni en pre svega jer nema standardni pristup I/O urpristup I/O uređajimaeđajima

�� posluposlužžioio zaza teorijskateorijska istaristaržživanjaivanja u u oblastioblasti programskihprogramskih jezikajezika i i doprineodoprineo je je razvojurazvoju sledesledeććihih generacijageneracija programskihprogramskih jezikajezika

Page 36: Visi Programski Jezici - Programiranje i Programski Jezici 1

Jezici visokog nivoa Jezici visokog nivoa III generacijaIII generacija

�� pojavapojava interaktivnoginteraktivnog radarada,, radrad sasa grafikomgrafikom i i bazombazom podatakapodataka

�� imaju visok stepen nezavisnosti u odnosu imaju visok stepen nezavisnosti u odnosu na arhitekturu rana arhitekturu raččunara i operativni sistem unara i operativni sistem na kojem se izvrna kojem se izvrššavajuavaju

�� opis naredbi i podataka vropis naredbi i podataka vršši na nai na naččin blizak in blizak prirodnom (engleskom) jezikuprirodnom (engleskom) jeziku

�� jednoj naredbi vijednoj naredbi viššeg programskog jezika eg programskog jezika odgovara viodgovara višše naredbi simbolie naredbi simboliččkog jezikakog jezika

�� BASICBASIC

�� C jezik C jezik

�� PASCALPASCAL�� rereššava strukturne probleme ava strukturne probleme -- slabostislabosti�� AAkademski jezik kademski jezik –– za uza uččenje logike enje logike

programiranja programiranja

�� zadrzadržžavavaajuju se i se i nekineki jezicijezici drugedrugegeneracijegeneracije kaokao FORTRAN FORTRAN ii COBOLCOBOLaliali u u verzijamaverzijama prilagoprilagođđenimenim novimnovimdostignudostignuććimaima u u razvojurazvoju raraččunaraunara i i programskihprogramskih jezikajezika

Page 37: Visi Programski Jezici - Programiranje i Programski Jezici 1

BASICBASIC (Beginner's All(Beginner's All--purpose Symbolic Instruction purpose Symbolic Instruction Code)Code)

�� RRazvijen 1964. godine kao jezik za neprofesionalce azvijen 1964. godine kao jezik za neprofesionalce -- pogodan za pogodan za popoččetnike u programiranjuetnike u programiranju

�� LLak za uak za uččenjeenje�� PPrvi interpreterrvi interpreter�� VVarijable su zapisivanje jednim slovomarijable su zapisivanje jednim slovom�� NNe koriste se eksplicitne de koriste se eksplicitne deeklaradije varijabliklaradije varijabli�� VVarijable mogu biti numeriarijable mogu biti numeriččke vrednosti ili stringovike vrednosti ili stringovi�� SSvakoj naredbi predhodi numerivakoj naredbi predhodi numeriččka oznaka koja se koristi kao oznaka za ka oznaka koja se koristi kao oznaka za

skokove u programuskokove u programu

Page 38: Visi Programski Jezici - Programiranje i Programski Jezici 1

C jezik C jezik �� rereššava strukturne problemeava strukturne probleme�� jezik za strukturno programiranjejezik za strukturno programiranje�� razvijan u razvijan u BellBell laboratoriji između laboratoriji između 1969. i 1973. god. 1969. i 1973. god. -- Dennis Dennis

Ritchie Ritchie �� namenjen za implementacijuu na ranamenjen za implementacijuu na raččunarima pod unarima pod Unix Unix

operativnim sistemomoperativnim sistemom

Page 39: Visi Programski Jezici - Programiranje i Programski Jezici 1

�� ZjedniZjedniččka ka karakteristikakarakteristika prveprve tri tri generacijegeneracije programskihprogramskih jezikajezika jeje dadakorisnikkorisnik moramora opisatiopisati tataččno no kakokako dada dodedode do redo reššenjaenja odreodređđenogenogproblemaproblema..

�� ZbogZbog toga se toga se svisvi oviovi jezicijezici svrstavajusvrstavaju u u tzv.gruputzv.grupu PROCEDURALNIH PROCEDURALNIH JEZIKAJEZIKA odnosnoodnosno jezikajezika u u kojimakojima jeje potrebnopotrebno definidefinissatiati ččitavuitavuproceduruproceduru doladolažženjaenja do do odgovarajuodgovarajuććegeg rereššenjaenja. .

�� ProceduralnoProceduralno orijentisaniorijentisani jezicijezici ((procedure orientedprocedure oriented languageslanguages) ) dopudopušštajutaju programeruprogrameru dada specificiraspecificira procedure procedure iliili algoritmealgoritme kojekojetrebatreba koristitikoristiti zaza rereššavanjeavanje problemaproblema

�� Proceduralno orijentisani jezici su najProceduralno orijentisani jezici su najččeeššćće razvijeni da podre razvijeni da podržže e specifispecifiččne potrebe:ne potrebe:�� za nauza nauččnike i innike i inžženjere (FORmula TRANslation Language, FORTRAN)enjere (FORmula TRANslation Language, FORTRAN)�� za poza poččetnike u programiranju (Beginers Allpurpose Symbolic Instructionetnike u programiranju (Beginers Allpurpose Symbolic Instruction

Code, BASIC)Code, BASIC)�� za poslovne obrade (COmon Busines Oriented Language, COBOL)za poslovne obrade (COmon Busines Oriented Language, COBOL)�� za obradu stringova (LISt Processing, LISP)za obradu stringova (LISt Processing, LISP)

�� Bez obzira na primenu proceduralno orijentisani jezici imaju sliBez obzira na primenu proceduralno orijentisani jezici imaju sliččne ne funkcijefunkcije

Page 40: Visi Programski Jezici - Programiranje i Programski Jezici 1

Jezici visokog nivoa Jezici visokog nivoa IV generacijaIV generacija

�� korisnikkorisnik utvrutvrđđujeuje šštata tratražži i odod raraččunaraunara,, a a programskiprogramski sistemsistem samsam pronalazipronalazi nanaččin in dda a korisnikukorisniku dada zadovoljavajuzadovoljavajućći i odgovorodgovor

�� razvijarazvija se se klasaklasa interaktivnihinteraktivnih programskihprogramskihjezikajezika kojikoji omoguomoguććavajuavaju stalnustalnu i i direktnudirektnu komunikacijukomunikaciju sasa raraččunaremunarem

�� jezicijezici zaza manipulimanipulisanjesanje bazamabazama podatakapodataka ––SQLSQL ((oviovi jezicijezici se se ččestoesto nazivajunazivaju upitniupitni jezicijezici) )

�� razvojrazvoj jezikajezika oveove generacijegeneracije ideide u u pravcupravcuformiranjaformiranja programskihprogramskih sistemasistema kojikoji mogumoguprupružžitiiti nizniz alternativnihalternativnih rereššenjaenja u u zavisnostizavisnostiodod ulaznihulaznih podatakapodataka

�� ovakviovakvi programskiprogramski sisisstemitemi se se nazivajunazivajuekspertniekspertni sistemisistemi

�� PosebnaPosebna klasaklasa programskihprogramskih jezikajezika oveovegeneracijegeneracije susu objektnoobjektno orjentisaniorjentisani jezicijezici(C++(C++, , JAVA) JAVA)

Page 41: Visi Programski Jezici - Programiranje i Programski Jezici 1

ZaZaššto se istrato se istražžuju novi programski uju novi programski jezicijezici

11. znati. znatižželjaelja

Koji drugi oblici programskih jezika mogu biti realizovaniKoji drugi oblici programskih jezika mogu biti realizovani

22. produktivnost. produktivnost

Standardni proceduralni jezici su vrlo zahtevni za razvoj softveStandardni proceduralni jezici su vrlo zahtevni za razvoj softvera posebne ra posebne namene. U tom slunamene. U tom sluččaju aju ččesto je bolje razviti interpreter za tu posebnu esto je bolje razviti interpreter za tu posebnu namenu (npr. jezik Matlab omogunamenu (npr. jezik Matlab omoguććava jednostavno reava jednostavno reššavanje matematiavanje matematiččkih kih problema) .problema) .

3. 3. sigurnost i pouzdanostsigurnost i pouzdanost

Pitanje sigurnosti izvrPitanje sigurnosti izvrššavanja programa je izuzetno vaavanja programa je izuzetno važžno, a to pitanje se no, a to pitanje se momožže ree reššiti samo na nivou programskog jezika.iti samo na nivou programskog jezika.

4. 4. brzina izvrbrzina izvrššenjaenja

Brzina izvrBrzina izvrššenja programa je joenja programa je jošš jedno izuzetno vajedno izuzetno važžno pitanje. Nekada no pitanje. Nekada programski jezik daje dobre performanse po pitanju sigurnosti i programski jezik daje dobre performanse po pitanju sigurnosti i pouzdanosti pouzdanosti programa, ali loprograma, ali lošše po pitanju brzine izvre po pitanju brzine izvrššenja ( jezici enja ( jezici CC i i C++ C++ omoguomoguććavaju avaju najbrnajbržže izvre izvrššenje programa na standardnim raenje programa na standardnim raččunarima, ali nisu pogodni za unarima, ali nisu pogodni za sisteme rasisteme raččunara koji rade paralelno ili distributivno)unara koji rade paralelno ili distributivno)

Page 42: Visi Programski Jezici - Programiranje i Programski Jezici 1

PPoožželjne karakteristike programskih jezikaeljne karakteristike programskih jezika

�� Jednostavnost upotrebe jezikaJednostavnost upotrebe jezika

�� Programi treba da budu jednostavni i razumljiviProgrami treba da budu jednostavni i razumljivi

�� Konstrukcije jezika treba da budu ortogonalne tj. da postoji samKonstrukcije jezika treba da budu ortogonalne tj. da postoji samo jedan o jedan nanaččin izvrin izvrššenjaenja

�� Zapis treba da bude Zapis treba da bude ššto blito bližži duhu aplikacije koja se programirai duhu aplikacije koja se programira

�� Jezik treba da podrJezik treba da podržžava apstrakcijuava apstrakciju

�� PostojePostojećće strukture i operacije treba da budu dogradive za nove e strukture i operacije treba da budu dogradive za nove apstraktne struktureapstraktne strukture

�� Jezik treba da omoguJezik treba da omogućći jednostavno testiranje i debagiranje i jednostavno testiranje i debagiranje programaprograma

�� PoPožželjno je da jezik omogueljno je da jezik omoguććava portabilnost za razliava portabilnost za različčite operativne ite operativne sistemesisteme

�� OpOpššti zahtevi:ti zahtevi:

�� Brzina izvrBrzina izvrššenja i mali zahtevi za memorijomenja i mali zahtevi za memorijom

�� Prevođenje brzo i modularnoPrevođenje brzo i modularno, sa pripadaju, sa pripadajuććim bibliotekama im bibliotekama

�� Komponente jezika treba da budu Komponente jezika treba da budu ““reusablereusable””

Page 43: Visi Programski Jezici - Programiranje i Programski Jezici 1

Hijerarhijska struktura programskih jezikaHijerarhijska struktura programskih jezika

operacije i podaci, u veoperacije i podaci, u veććini jezika za programiranje, mogu se grupisati ini jezika za programiranje, mogu se grupisati hijerarhijski:hijerarhijski:

�� Tipovi i strukture podatakaTipovi i strukture podataka�� numerinumeriččki (celobrojni i realni)ki (celobrojni i realni)�� logilogiččkiki�� znakovniznakovni�� imena i identifikatori imena i identifikatori

Na apstraktnom nivou, svaki jezik za programiranje koristi objekNa apstraktnom nivou, svaki jezik za programiranje koristi objekte tj. te tj. podatke. Memorija rapodatke. Memorija raččunara sastoji od unara sastoji od ććelija koje mogu da pamte podatak elija koje mogu da pamte podatak bilo kog tipa. Svaka bilo kog tipa. Svaka ććelija ima ime koje je obielija ima ime koje je običčno promenljiva jezika za no promenljiva jezika za programiranje. Svako ime oznaprogramiranje. Svako ime označčava se identifikatorom, tj. nizom znakova. U ava se identifikatorom, tj. nizom znakova. U veveććini jezika identifikator je najmanje jedno slovo ili slovo iza kini jezika identifikator je najmanje jedno slovo ili slovo iza koga sledi niz, oga sledi niz, sastavljen od slova i brojeva.sastavljen od slova i brojeva.

�� Konstante i promenljiveKonstante i promenljiveU programskim jezicima podaci mogu biti definisani kao konstanteU programskim jezicima podaci mogu biti definisani kao konstante odnosno odnosno određene vrednosti koje se ne menjaju tokom izvrodređene vrednosti koje se ne menjaju tokom izvrššavanja programa. Zadaju avanja programa. Zadaju se eksplicitno, pisanjem konkretne vrednosti iz skupa svih vrednse eksplicitno, pisanjem konkretne vrednosti iz skupa svih vrednosti nekog osti nekog tipa. Osim konstanti, programski jezici definitipa. Osim konstanti, programski jezici definiššu i promenljive koje kao i u u i promenljive koje kao i u matematici ne predstavlja nijednu posebnu vrednost, ali ima vremmatematici ne predstavlja nijednu posebnu vrednost, ali ima vremensko ensko trajanje i u određenom trenutku njena vrednost je konstantnatrajanje i u određenom trenutku njena vrednost je konstantna. P. Promenljiva romenljiva je određena svojim imenom i tipomje određena svojim imenom i tipom. T. Tip promenljive određuje iz kog ip promenljive određuje iz kog ćće se e se skupa podataka dodeljivati vrednosti promenljivoj. skupa podataka dodeljivati vrednosti promenljivoj.

�� Strukture podatakaStrukture podataka

Page 44: Visi Programski Jezici - Programiranje i Programski Jezici 1

Hijerarhijska struktura programskih jezikaHijerarhijska struktura programskih jezika

�� IzraziIzraziIzrazi nisu naredbe veIzrazi nisu naredbe većć sintaktisintaktiččke strukture koje, uopke strukture koje, uopššteno, sadrteno, sadržže podatke e podatke (promjenljive i konstante), operacije i funkcije. (promjenljive i konstante), operacije i funkcije.

�� NaredbeNaredbeElementarne operacije izraElementarne operacije izraččunavanja, dodjeljivanja i kontrole redosleda unavanja, dodjeljivanja i kontrole redosleda izraizraččunavanja zadaju se naredbama (komandama) jezika za programiranjeunavanja zadaju se naredbama (komandama) jezika za programiranje. . Naredbe mogu imati razliNaredbe mogu imati različčite oblike i znaite oblike i značčenja. Naredbe se mogu podeliti i na enja. Naredbe se mogu podeliti i na osnovu svog znaosnovu svog značčenja na:enja na:

-- naredbe za izranaredbe za izraččunavanja,unavanja,-- naredbe za kontrolu toka izvrnaredbe za kontrolu toka izvrššavanja,avanja,-- naredbe za deklarisanje,naredbe za deklarisanje,-- ulazno/izlazne naredbe itd.ulazno/izlazne naredbe itd.

�� PodprogramiPodprogramiPodprogrami su strukturirane naredbe. U nekim jezicima primitivnPodprogrami su strukturirane naredbe. U nekim jezicima primitivne i e i strukturirane naredbe mogu da se grupistrukturirane naredbe mogu da se grupiššu u podprograme, tj. celine po svojoj u u podprograme, tj. celine po svojoj funkciji i operacijama koje obavljaju.funkciji i operacijama koje obavljaju.

�� ProgramiProgramiProgrami predstavljaju vrh hijerarhije. Program Programi predstavljaju vrh hijerarhije. Program -- niz naredbi, primitivnih i niz naredbi, primitivnih i slosložženih, kojim se opisuje postupak unosa, izraenih, kojim se opisuje postupak unosa, izraččunavanja i upisivanja podataka i unavanja i upisivanja podataka i rezultata izrarezultata izraččunavanja.unavanja.