matematički fakultet u nišu - nasport.pmf.ni.ac.rs

20
dr Dejan S. Aleksić Programiranje u fizici Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku

Upload: others

Post on 19-Oct-2021

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

dr Dejan S. Aleksić Programiranje u fizici

Programiranje u fizici

Prirodno-matematički fakultet u NišuDepartman za fiziku

Page 2: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Pod (računarskim) programiranjem obično se podrazumevačovekova aktivnost (odnosno, aktivnost programera) usmerena karešenju nekog konkretnog problema na računaru.

• Problem se obično rešava konstrukcijom algoritma za rešenjeproblema, a algoritam se zapisuje posredstvom programskog jezika.

• Po jednoj od najopštijih definicija programskog jezika njegova ulogaje da obezbedi konstrukcije (i načine) za organizovanje„izračunavanja“ na računaru.

• Organizovano izračunavanje obično nazivamo „programom“izračunavanja (ili samo programom).

• Po drugoj mogućoj definiciji, programski jezik predstavlja sredstvonamenjeno za komunikaciju između čoveka i računara, a služi zaopis algoritma na način „razumljiv“ računaru (direktno, ili posle nizatransformacija).

• Program tada predstavlja jedan način zapisa algoritma – rešenjapostavljenog problema.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 2/20

Page 3: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Po stepenu zavisnosti programskog jezika od računara programske jezike delimo na:

➢ mašinski zavisne (mašinski i simbolički jezik)

➢ mašinski nezavisne (jezici višeg nivoa)

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 3/20

Page 4: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Prilikom projektovanja računara CPU (Centralna procesorskajedinica) se projektuje tako da interpretira skup instrukcija koje senazivaju instrukcijski skup.

• Svaka instrukcija u ovom skupu ima jedinstven binarni kod kojiCPU može da interpretira i on se zove mašinski kod instrukcije, askup svih mašinskih kodova instrukcija se zove mašinski jezik.

• CPU tj. računar može da izvršava samo programe u formimašinskog jezika a svaki tip CPU-a razume isključivo svoj sopstvenimašinski jezik.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 4/20

Page 5: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Veoma je teško programirati direktno u mašinskom jeziku. Slediprimer instrukcije koja izračunava zbir EAX i EBX registara i rezultatsmešta u EAX registar: 03 C3

Primer

• Jedan kratak (hipotetički) mašinski program (od tri komande).

00000100111100111010001010

00000101000100100111100010

00101100101010111111001111

• Programi na prvim računarima bili su zapisani mašinskim jezikomšto je uslovilo da uzak krug ljudi piše i održava programe.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 5/20

Page 6: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Umesto instrukcija pisanih nizom bitova,uvedene su skraćenice za operacije isimboličke oznake podataka npr. naredbom

03 C3 ADD a, b

vrši se sabiranje podataka a i b.

• Na taj način proces programiranja je u znatnojmeri olakšan, ali i dalje zavisi od konkretnogprocesora, tj. i dalje je potrebno poznavatitehničke karakteristike konkretnog računara.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 6/20

Page 7: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Primer.

• Jednostavni (hipotetički) program na simboličkomjeziku koji bi odgovarao naredbi računanja sume dva broja

C := A + B

• Ovde su A, B i C imena za memorijske lokacije.

LOAD A

ADD B

STORE C

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 7/20

Page 8: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Da bi se program napisan na simboličkom jezikuizvršavao na računaru, mora se prethodnoprevesti na mašinski jezik.

• Kako svakoj naredbi simboličkog jezika odgovarajedna naredba mašinskog jezika, posao jeautomatizovan tako što je napisan program kojikao ulaz dobija program napisan u simboličkomjeziku, a kao izlaz odgovarajući program namašinskom jeziku.

• Program koji vrši prevođenje iz simboličkog u mašinski jezik naziva se asembler.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 8/20

Page 9: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Proces prevođenja sa mašinski orijentisanih jezika namašinski jezik, koji obavljaju asembleri, naziva seasembliranje

• Asembleri prevode izvorni program na mašinskiorijentisanom jeziku u međuoblik koji se naziva objektniprogram

• Povezivači (linkeri) povezuju objektni program iodgovarajuće rutine niskog nivoa u izvršni program

• Skup naredbi simboličkog jezika zavisi od arhitektureračunara, pa program napisan u simboličkom jeziku zajedan računar ne može se koristiti za računar drugearhitekture, već se mora pisati novi program za istiproblem.

• Zato za mašinske i simboličke jezike i kažemo da sumašinski zavisni jezici !!!!!!!!!.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 9/20

Page 10: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Proces prevođenja asemblerskog programa

Izvorni

program Objektni programAsembler

Izvršni programPovezivač

Izveštaj o

greškama

Izveštaj o

greškama

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 10/20

simbolički jezik mašinski jezik

mašinski jezik

Objektni program

(rutine niskog

nivoa)

mašinski jezik

Page 11: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Programiranje na simboličom jeziku se koristi za pisanje programa tkz. „niskog nivoa“ tj. obično se koriste za programa za interakciju računara sa I/O uređajima:

– štampačima

– skenerima

– uređajima za čuvanje podataka,...

• Njime su pisani programi poznati kao drajveri.

• Razlog: brzina i mogućnost direktnog pristupa resursima računara

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 11/20

Page 12: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• 50 godina XX veka počinju da se razvijajumašinski nezavisni jezici, drugim rečima jezicivišeg nivoa.

• Korišćenjem jezika višeg nivoa opis naredbi ipodataka vrši se na način bliži prirodnom(engleskom) jeziku.

• U ovim jezicima jednoj naredbi odgovara višeinstrukcija simboličkog jezika.

• S obzirom na to da računar razume samoprogram napisan na mašinskom jeziku, svakiprogram pisan jezikom višeg nivoa mora seprevesti na mašinski jezik.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 12/20

Page 13: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Na osnovu načina prevođenja i

izvršavanja programa, programe za prevođenje delimo na:

– prevodioce (kompajlere)

– interpretere.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 13/20

Page 14: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Izve{taj o

gre{kama

Izvorni

program Objektni programPrevodilac

Izveštaj o

greškama

Izvršni programPovezivač

Izveštaj o

greškama

Najpre su nastali kompilatorski jezici Fortran, Cobol, Algol, PL/I... Kod ovih jezika

izgrađuju se programi za prevođenje (kompilatori) kojim se ceo program napisan na

višem programskom jeziku prevodi u njemu odgovarajući, mašinski program koji se

može više puta izvršavati na računaru.

Danas su najpoznatiji jezici ove vrste C i Pascal

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 14/20

mašinski jezik

mašinski jezik

Objektni program

(rutine niskog

nivoa)

mašinski jezik

jezik visokog nivoa

Page 15: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6

Dejan Živković

Leksički analizator

Sintaksni analizator

Semantički analizator

Generator međukoda

Optimizator međukoda

Generator koda

Rukovalac

tabelamaObrađivač

grešaka

Izvorni program

Prevedeni program

Kompajler

15/20

Page 16: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6

• Leksicka analiza – u ovoj fazi koristi se leksički analizator(skener) koji prevodi tekst programa u niz tokena (tj.prepoznaje tokene u ulaznom tekstu, na osnovu zadatihleksičkih specifikacija)

• Sintaksna analiza – u ovoj fazi parser kao ulaz uzima niztokena i na osnovu date gramatike, proverava da li jedata sekvenca tokena i neterminala ispravna ili ne

• Semantička analiza – u ovoj fazi vrši se provera tipova. Uovoj fazi se proverava da li:– Sve promenljive u programu su deklarisane pre korišćenja– Operandi svakog operatora imaju imaju odgovarajući tip– Broj i tip argumenata funkcije odgovara broju i tipu parametara

u pozivu funkcije

16/20

Page 17: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6

• Generisanje memeđukoda – u ovoj fazi vrši segenerisanje jednostavnog međukoda

• Optimizacija memeđukoda – u ovoj fazi, (koja jeopciona) vrši se optimizacija međukoda u smislubrzine izvršavanja i/ili smanjenja veličine programa

• Generisanje koda – generator koda prevodimemeđukod u izvršni kod (mašinski jezik)

17/20

Page 18: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Kod interpreterskih jezika, jedna po jedna instrukcija se

prevodi i odmah nakon prevođenja izvršava, fazaprevođenja i faza izvršavanja se prepliću.

• Primeri interpreterskih jezika su Lisp, Prolog, Basic, ...

Izvorni

program Interpretator

Izveštaj o

greškama

Ulazni

podaci

Rezultati programa

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 18/20

Page 19: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Važno je napomenuti da jezici višeg nivoa imaju

visok stepen nezavisnosti u odnosu na

arhitekturu računara i operativni sistem na kojemse izvršavaju.

• Bliži su prirodnom jeziku, čitljiviji i lakši za

pisanje programa.

• Skraćeno vreme obuke u programiranju

• Za svaki tip računara postoji program za

prevođenje koji isti izvorni kod programa prevodiu odgovarajući mašinski jezik.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 19/20

Page 20: matematički fakultet u Nišu - nasport.pmf.ni.ac.rs

• Java – programski jezik visokog nivoa koji jekombinacija prevodioca i interpretera.

• Najpre se izvorni kod napisan u Javaprogramskom jeziku prevodi na mašinski jezikJava virtuelne mašine a zatim se u trenutkupokretanja tako prevedenog programa komandeJava virtuelne mašine interpretiraju na ciljnommikroprocesoru.

• Prednost ovakvog koncepta je da programinapisani u Java programskog jeziku su nezavisniod operativnog sistema i hardverske platforme nakojoj se izvršavaju.

Definicija programa i programiranjaPodela programskih jezikaMašinski jezici, Simbolički jezici, AsembleriJezici visokog nivoa, njihova podelaPrevodioci, InterpreteriPrednosti jezika visokog nivoa, Java?5-6 20/20