1 / 36

Programski jezici

Programski jezici. Pregled i osnovne karakteristike. Algoritam. Algoritam je niz nedvosmislenih koraka koji se mogu izvršiti i koji definišu proces koji se može završiti – neformalna definicja Ne postoji formalna definicija Čerčova teza – neformalna definicija poklapa se sa formalnom.

sorcha
Download Presentation

Programski jezici

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programski jezici Pregled i osnovne karakteristike

  2. Algoritam • Algoritam je niz nedvosmislenih koraka koji se mogu izvršiti i koji definišu proces koji se može završiti – neformalna definicja • Ne postoji formalna definicija • Čerčova teza – neformalna definicija poklapa se sa formalnom

  3. Naći zapreminu valjka Ako je R poluprečnik osnove i H visina, tada je zapremina valjka jednaka V=R*R*H*PI, gdje je PI=3.14 Ludolfov broj Na stolu je N listova papira, na svakom listu po jedan broj. Naći najmanji broj. U lijevu ruku uzmimo jedan list (označimo ga sa L), a desnom rukom uzimamo redom listove sa stola (označimo ih sa D) i upoređujemo L i D. Ako je D<L, prebacujemo ga u lijevu ruku, a papir koji je tamo bio odlažemo. Ako nije D<L, odlažemo papir iz desne ruke i nastavljamo upoređivanje. Poslije upoređivanja sa svim elementima, u lijevoj ruci je najmanji broj. Primjeri algoritama

  4. Ako je u banku uloženo x eura sa godišnjom kamatom od y procenata, odrediti niz čiji je i-ti element iznos na računu na kraju i-te godine, i=1,...,10. Prvi element niza a[1] je x+x*y/100 Ponavljaj devet puta radnju, redom za i=1,2,...,9: a[i+1] = a[i]+a[i]*y/100 Drugo rješenje: ponavljaj deset puta, redom za i=1,2,...,10: a[i] = x(1+y/100)i Naći najmanji element niza sa N elemenata Neka je M najmanji element i neka je jednak prvom elementu niza; Neka i označava tekući element niza, i=2,...,n; ako je i-ti element niza manji od M, tada M dobija vrijednost i-tog elementa; ako i-ti element niza nije manji od M, preći na sledeći element Poslije upoređivanja sa svim elementima, M je najmanji element niza Primjeri algoritama II

  5. Primjer: procedura swap koja zamjenjuje dvije uzastopne vrijednosti v[k] i v[k+1] u nizu v Algoritamska šema ili pseudo kod t v[k] v[k] v[k+1] v[k+1] t

  6. Pseudo kod procedure Swap /* Zadatak: Zameniti vrijednosti ulaznih argumenata procedure. */ PROCEDURA Swap(UI Arg1Def_Tip, UI Arg2Def_Tip) Argp Def_Tip // Pomoćna promenljiva za zamenu POČETAK PROCEDURE Swap Argp  Arg1 Arg1  Arg2 Arg2  Argp KRAJ PROCEDURE Swap

  7. Šta se dešava?

  8. Logička šema računara

  9. Zadaci kontrolne jedinice • Mogućnost dohvatanja podataka iz memorije • Logika za nizanje (ređanje) instrukcija • Logika za generisanje signala koji kontrolišu protok informacija između različitih komponenti datapath-a • Logika za kontrolu koje operacije mogu izvršavati funcionalne jedinice datapath-a

  10. Zadaci datapath-a • Posjeduje funcionalne jedinice (na primjer sabirač) i memorijske lokacije (registre); • Veze između komponenti tako da se mogu odraditi pojedine funkcije • Mogućnost učitavanja podataka iz memorije i smještanja podataka u memoriju

  11. Istorijat • Mašinski jezik • Primjer: sabiranje dvije vrijednosti koje su smještene u memoriji • (1) učitaj prvu vrijednost iz memorije u registar; (2) učitaj drugu vrijednost iz memorije u drugi registar; (3) aktiviraj kolo za sabiranje tako da ulazi budu dati registri, a izlaz neki treći registar. (4) Smjesti rezultat u neku memorijsku lokaciju. (5) Stop.

  12. Primjer mašinskog koda • binarni i heksadecimalni zapis datog algoritma: • 0001010101101100 156C • 0001110011001110 166D • 0101000001010110 5056 • 0011000001101111 306E • 1100000000000000 C000

  13. Asemblerski jezik • Deskriptivna imena za memorijske lokacije, registre i kodove operacija - mnemonici • Primjer: LD – Load, ST – Store, HLT -Halt LD R5, Price LD R6, Tax ADDI R0, R5 R6 ST R0, Total HLT

  14. Asembler • Program koji prevodi programe napisane u mnemoničkoj formi u mašinski jezik je asembler • Jezici druge generacije • Mane: konstrukcije su i dalje na niskom nivou, razvoj programa se mora zasnivati na sitnim koracima mašinskog jezika, mašinska zavisnost

  15. Treća generacija • Elementarne konstrukcije (primitivi) od kojih treba izgraditi program nisu obavezno i konstrukcije pomoću kojih se može dizajnirati program • Konstrukcije su višeg nivoa i nisu mašinski zavisne

  16. Konstruisanje programskog jezika – izbor konstrukcija od kojih se može izgraditi program. Svaka takva konstrukcija je dizajnirana tako da se može izraziti kao niz konstrukcija nižeg nivoa (npr. mašinskog jezika) • assign Total thevalue Price+Tax – ne zavisi od mašine • assignPromjenljivathevalueIzraz

  17. Programski prevodioci: prevođenje programa iz konstrukcija višeg nivoa u programe na mašinskom jeziku • Kompajleri (Grace Hopper) • Interpreteri – instrukcije se izvršavaju istovremeno sa prevođenjem

  18. Paradigme programiranja evolucija

  19. Paradigme programiranja • Impertivna (proceduralna) - niz instrukcija koje obrađuju podatke tj. program je implementacija algoritma koji rješava problem • Primjeri jezika: Pascal, Cobol, C, Fortran, Algol, APL, itd.

  20. Opšтi oblik imperativnog programa

  21. Deklarativno programiranje • Primjena generalnog algoritma za rješavanje problema; prevođenje problema u formu koja je dostupna algoritmu; osnovni nedostatak: razvoj opšteg algoritma; većina jezika su usko specijalizovani • Primjer jezika: Prolog, Goedel

  22. Funkcionalno programiranje • Program se sastoji od funkcija, koje su izgrađene od elementarnih funkcija • Primjer: LISP - aritmetička sredina • (Divide (Sum Numbers) (Count Numbers)) • Najmanji element liste: (First (Sort List))

  23. Funkcionalno programiranje

  24. Funkcionalna paradigma – modularan pristup projektovanju • Prirodan pristup izgradnji programa - od već postojećih cjelina • Primjeri jezika: LISP, Haskell, Scheme,ML • Često se koristi za matematičke sisteme, npr. dokazivače teorema i logičke sisteme

  25. Objektno-orijentisano programiranje • Jednice programa su “aktivni objekti” • Posljedica modularnog pristupa – svaki objekat je definisan u posebnoj zaokruženoj jedinici i može se kasnije koristiti • Objekti komuniciraju predajom poruka – “message passing” • Trenutno dominantna paradigma programiranja i uopšte razvoja softvera

  26. Primjer: lista je “pasivan objekat” u proceduralnim jezicima, jer se kontroliše pomoću programa; • U OO paradigmi, lista je objekat koji se satoji od same liste i kolekcije procedura za manipulaciju listom (dodavanje elementa, brisanje, sortiranje, detektovanje da li je lista prazna); program koji pristupa listi ne mora da sadrži navedene procedure • Primjer: C++, SmallTalk, Eiffel, Java

More Related