Programski jezici i naela programiranja 1 Teme Program

  • Slides: 64
Download presentation
Programski jezici i načela programiranja 1

Programski jezici i načela programiranja 1

Teme • • Program Strojni jezik Asembler Simbolički jezici visoke razine BASIC Pascal C

Teme • • Program Strojni jezik Asembler Simbolički jezici visoke razine BASIC Pascal C (C++) © L. Blagojević i D. Grundler, 2009 2

Teme • • Jezični prevoditelji Interpreter Kompajler Objektno usmjereni programi Prenosivi programski jezici Java

Teme • • Jezični prevoditelji Interpreter Kompajler Objektno usmjereni programi Prenosivi programski jezici Java bytecodes © L. Blagojević i D. Grundler, 2009 3

Teme • • Java prividno računalo Pomoćni postupci Planiranje Analiza zadatka i specifikacija Algoritam

Teme • • Java prividno računalo Pomoćni postupci Planiranje Analiza zadatka i specifikacija Algoritam Dijagram tijeka Pseudo jezik © L. Blagojević i D. Grundler, 2009 4

Teme • • Programiranje Sintaktička pogrješka Logička pogrješka Provjera programa Održavanje programa Dokumentacija Programske

Teme • • Programiranje Sintaktička pogrješka Logička pogrješka Provjera programa Održavanje programa Dokumentacija Programske strukture © L. Blagojević i D. Grundler, 2009 5

Teme • Pravocrtna struktura • Grananje • Petlja © L. Blagojević i D. Grundler,

Teme • Pravocrtna struktura • Grananje • Petlja © L. Blagojević i D. Grundler, 2009 6

Program • Program je skup naredaba nanizanih strogo utvrđenim redoslijedom, čijim se izvršenjem obavlja

Program • Program je skup naredaba nanizanih strogo utvrđenim redoslijedom, čijim se izvršenjem obavlja željeni posao. • Jezik koji računalo razumije je programski jezik računala. © L. Blagojević i D. Grundler, 2009 7

Strojni jezik • U užem je smislu strojni jezik računala (engl. machine language, machine

Strojni jezik • U užem je smislu strojni jezik računala (engl. machine language, machine code) binarni prikaz programa za računalo. • To je jedini oblik programa koji računalo “razumije” te se svaki drugi oblik programa mora prije izvođenja prevesti u strojni oblik. • Svaki procesor ima sebi svojstven strojni jezik. © L. Blagojević i D. Grundler, 2009 8

Strojni jezik • Prednosti su strojnog jezika mogućnost izravnog djelovanja na sklopovske dijelove računala,

Strojni jezik • Prednosti su strojnog jezika mogućnost izravnog djelovanja na sklopovske dijelove računala, djelotvorno iskorištenje memorije i brzina izvođenja napisanog programa. • Nedostatci su složenost postupka izradbe programa i ograničenost programa na jedan tip procesora. © L. Blagojević i D. Grundler, 2009 9

Asembler • Asembler (engl. assembler) je simbolički jezik u kome je svaka binarna naredba

Asembler • Asembler (engl. assembler) je simbolički jezik u kome je svaka binarna naredba strojnog jezika predočena odgovarajućim simbolom. • Naredbe strojnog jezika predočuju se simbolima koji se najčešće sastoje od kombinacije nekoliko slova, npr. : ADD, SUB, CMP. © L. Blagojević i D. Grundler, 2009 10

Asembler • Program napisan u asembleru mora biti preveden u binarni oblik odgovarajućim programom

Asembler • Program napisan u asembleru mora biti preveden u binarni oblik odgovarajućim programom prevoditeljem da bi ga procesor “razumio”. © L. Blagojević i D. Grundler, 2009 11

Simbolički jezici visoke razine • Kod simboličkih jezika visoke razine se veći ili manji

Simbolički jezici visoke razine • Kod simboličkih jezika visoke razine se veći ili manji skup naredaba strojnog jezika nadomješta jednom naredbom višeg programskog jezika. • Isti program napisan u simboličkom jeziku visoke razine može se primijeniti na različitim vrstama računala, tj. različitim procesorima. © L. Blagojević i D. Grundler, 2009 12

Simbolički jezici visoke razine • Simbolički jezici visoke razine opće namjene nisu namijenjeni strogo

Simbolički jezici visoke razine • Simbolički jezici visoke razine opće namjene nisu namijenjeni strogo uskom području primjene, već je njima moguće rješavati relativno širok raspon zadataka. © L. Blagojević i D. Grundler, 2009 13

BASIC • BASIC je kratica od engl. beginner’s allpurpose symbolic instruction code ili u

BASIC • BASIC je kratica od engl. beginner’s allpurpose symbolic instruction code ili u slobodnom prijevodu jezik opće namjene za početnike. • Ponajprije je namijenjen učenicima i ostalim početnicima. • Glavne su prednosti BASIC-a jednostavnost i razumljivost. © L. Blagojević i D. Grundler, 2009 14

BASIC © L. Blagojević i D. Grundler, 2009 15

BASIC © L. Blagojević i D. Grundler, 2009 15

Pascal • Pascal (ime je dobio prema slavnomu francuskom učenjaku Blaiseu Pascalu) ubraja se

Pascal • Pascal (ime je dobio prema slavnomu francuskom učenjaku Blaiseu Pascalu) ubraja se u programske jezike opće namjene, a posebice podržava tzv. strukturno programiranje. • Strukturno programiranje je skup programskih tehnika koje vode logičkoj organizaciji programa koja olakšava pisanje, održavanje i popravak programa. © L. Blagojević i D. Grundler, 2009 16

Pascal © L. Blagojević i D. Grundler, 2009 17

Pascal © L. Blagojević i D. Grundler, 2009 17

C (C++) • C (i inačica C++) najpopularniji je programski jezik opće namjene za

C (C++) • C (i inačica C++) najpopularniji je programski jezik opće namjene za profesionalnu primjenu. • Jezik je vrlo složen i velikih mogućnosti, a namijenjen je ponajprije stručnjacima koji se profesionalno bave pisanjem programa. • Temeljni razlozi velike popularnosti jezika jesu njegova djelotvornost, prilagodljivost, dobra normiranost. © L. Blagojević i D. Grundler, 2009 18

C (C++) © L. Blagojević i D. Grundler, 2009 19

C (C++) © L. Blagojević i D. Grundler, 2009 19

Jezični prevoditelji • Izvorne programe u strojni oblik prevode programi koji se nazivaju jezični

Jezični prevoditelji • Izvorne programe u strojni oblik prevode programi koji se nazivaju jezični prevoditelji: – interpreteri (interpretatori, engl. interpreter), – kompajleri (kompilatori, engl. compiler). • Procesor je sposoban prihvaćati samo strojni oblik programa. • Svaki drugi oblik programa potrebno je prije izvođenja prevesti u strojni oblik. © L. Blagojević i D. Grundler, 2009 20

Jezični prevoditelji © L. Blagojević i D. Grundler, 2009 21

Jezični prevoditelji © L. Blagojević i D. Grundler, 2009 21

Interpreter • Svaku naredbu izvornog programa prevodi u strojni oblik u trenutku izvođenja programa.

Interpreter • Svaku naredbu izvornog programa prevodi u strojni oblik u trenutku izvođenja programa. • Prevodi se pri svakom izvođenju programa. • Izvorni program je moguće izvršiti samo ako je na računalu prisutan i interpreter koji prevodi naredbe u strojni oblik. • Relativno sporije izvršavanje programa u usporedbi s drugom vrstom jezičnih prevoditelja. © L. Blagojević i D. Grundler, 2009 22

Kompajler • Prevoditelj koji prevodi izvorni program tako da analizira cjelokupni izvorni program odjednom.

Kompajler • Prevoditelj koji prevodi izvorni program tako da analizira cjelokupni izvorni program odjednom. • Kao rezultat nastaje prevedeni, izvršni tj. strojni oblik programa. • Izvorni i izvršni program potpuno su odvojeni i pri izvođenju neovisni. • Izvršni se program može izvršavati na računalu na kome nema kompajlera. © L. Blagojević i D. Grundler, 2009 23

Objektno usmjereni programi • Objektno usmjereno programiranje je postupak izradbe složenog programa uporabom skupa

Objektno usmjereni programi • Objektno usmjereno programiranje je postupak izradbe složenog programa uporabom skupa objekata koji međusobno razmjenjuju poruke. • Glavne značajke objektno usmjerenih programa jesu prilagodljivost, kvaliteta i pouzdanost te povećana proizvodnost programera koji ih rabe. © L. Blagojević i D. Grundler, 2009 24

Objektno usmjereni programi • Gotovi dijelove programa nazivaju se objektima (engl. object, class). •

Objektno usmjereni programi • Gotovi dijelove programa nazivaju se objektima (engl. object, class). • Programi koji ih rabe nazivaju se objektno usmjerenim programima (engl. OOP – object oriented programs). • Glavne značajke objektno usmjerenih programa jesu prilagodljivost, kvaliteta i pouzdanost te povećana proizvodnost programera koji ih rabe. © L. Blagojević i D. Grundler, 2009 25

Prenosivi programski jezici • Simbolički jezici visoke razine načelno su primjenjivi na različitim vrstama

Prenosivi programski jezici • Simbolički jezici visoke razine načelno su primjenjivi na različitim vrstama računala i različitim operacijskim sustavima pa se kaže da su prenosivi (engl. portable). • To, primjerice, znači da se isti program napisan u jeziku C++ može izvoditi na različitim računalima koja rade pod različitim operacijskim sustavima. © L. Blagojević i D. Grundler, 2009 26

Java • Java je snažan objektno usmjereni programski jezik opće namjene nalik na jezik

Java • Java je snažan objektno usmjereni programski jezik opće namjene nalik na jezik C++. • Glavna mu je prednost pred ostalim programskim jezicima potpuna prenosivost, tj. neovisnost o računalu i operacijskom sustavu na kojemu će se izvoditi. © L. Blagojević i D. Grundler, 2009 27

Java bytecodes • Izvorni Java program se prevodi Java kompajlerom koji se mora nalaziti

Java bytecodes • Izvorni Java program se prevodi Java kompajlerom koji se mora nalaziti na programerovu računalu. • Kao rezultat rada Java kompajlera nastaje engl. Java bytecodes. • Java bytecodes oblik programa je neovisan o računalu i operacijskom sustavu. • Java bytecodes nije strojni oblik programa ni za jedno stvarno računalo. © L. Blagojević i D. Grundler, 2009 28

Java prividno računalo • Java bytecodes se isporučuje korisniku programa. • Na korisnikovu računalu

Java prividno računalo • Java bytecodes se isporučuje korisniku programa. • Na korisnikovu računalu na kojem se program želi izvršiti, mora postojati drugi program prevoditelj (interpreter). • Taj se program prevoditelj naziva Java prividno ili virtualno računalo. Zadatak mu je prevesti Java bytecodes u strojni jezik korisnikova računala i izvršiti ga. © L. Blagojević i D. Grundler, 2009 29

Java © L. Blagojević i D. Grundler, 2009 30

Java © L. Blagojević i D. Grundler, 2009 30

Pomoćni postupci • • Planiranje Analiza zadatka i specifikacija Algoritam Dijagram tijeka Pseudo jezik

Pomoćni postupci • • Planiranje Analiza zadatka i specifikacija Algoritam Dijagram tijeka Pseudo jezik Provjera i ispravljanje programa Održavanje Dokumentacija © L. Blagojević i D. Grundler, 2009 31

Planiranje • Planiranjem se predviđa tko će, kada i što raditi. • Pri izradbi

Planiranje • Planiranjem se predviđa tko će, kada i što raditi. • Pri izradbi složenih programa često sudjeluje mnogo ljudi pa je planiranje veoma važan dio pripreme kako bi se uskladio rad sviju. © L. Blagojević i D. Grundler, 2009 32

Analiza zadatka i specifikacija • Analiza zadatka je raščlamba i potpuno razumijevanje zadatka i

Analiza zadatka i specifikacija • Analiza zadatka je raščlamba i potpuno razumijevanje zadatka i željenih rezultata. • Rezultat analize je specifikacija zadatka, koja sadržava dovoljno podataka da bi se taj zadatak mogao riješiti. • Specifikacija je dokument koji sadržava podroban popis i opis zadataka i željenih rezultata. © L. Blagojević i D. Grundler, 2009 33

Algoritam • Algoritam je naputak kako riješiti neki zadatak ili obaviti neki posao. •

Algoritam • Algoritam je naputak kako riješiti neki zadatak ili obaviti neki posao. • Algoritam redovito svodi cjelokupan zadatak na rješavanje više jednostavnijih, manjih radnji. • Algoritam sastoji od niza mehaničkih radnji koje, slijedeći upute, izvršiti bilo tko (uključujući i stroj). © L. Blagojević i D. Grundler, 2009 34

Dijagram tijeka • Dijagram tijeka (engl. flow chart) je grafički prikaz algoritma. • To

Dijagram tijeka • Dijagram tijeka (engl. flow chart) je grafički prikaz algoritma. • To je pomoćno sredstvo koje je neovisno o programskom jeziku i računalu, a vizualizira zadatak pa on postaje pregledniji. • Dijagram tijeka sastoji se od niza jednostavnih geometrijskih likova spojenih usmjerenim crtama. Usmjerene crte pokazuju tijek rješavanja zadatka. © L. Blagojević i D. Grundler, 2009 35

Dijagram tijeka © L. Blagojević i D. Grundler, 2009 36

Dijagram tijeka © L. Blagojević i D. Grundler, 2009 36

Dijagram tijeka • Pješak za zadani vremenski period učini određeni broj koraka. • Zadatak

Dijagram tijeka • Pješak za zadani vremenski period učini određeni broj koraka. • Zadatak je odrediti brzinu pješaka u km/h i m/s ako je poznata prosječna duljina njegovog koraka. © L. Blagojević i D. Grundler, 2009 37

Pseudo jezik • Pseudo jezik ili pseudokod je tobožnji program (grč. pseudos – laž).

Pseudo jezik • Pseudo jezik ili pseudokod je tobožnji program (grč. pseudos – laž). • Pseudo jezik zapravo nije napisan u programskom jeziku koji bi se mogao izravno primijeniti na računalu. • Pseudo jezik se sastoji od kratkih izraza na govornom jeziku koji opisuju i ukratko objašnjavaju pojedine zadatke algoritma. © L. Blagojević i D. Grundler, 2009 38

Pseudo jezik © L. Blagojević i D. Grundler, 2009 39

Pseudo jezik © L. Blagojević i D. Grundler, 2009 39

Pseudo jezik © L. Blagojević i D. Grundler, 2009 40

Pseudo jezik © L. Blagojević i D. Grundler, 2009 40

Pseudo jezik © L. Blagojević i D. Grundler, 2009 41

Pseudo jezik © L. Blagojević i D. Grundler, 2009 41

Pseudo jezik © L. Blagojević i D. Grundler, 2009 42

Pseudo jezik © L. Blagojević i D. Grundler, 2009 42

Pseudo jezik © L. Blagojević i D. Grundler, 2009 43

Pseudo jezik © L. Blagojević i D. Grundler, 2009 43

Pseudo jezik © L. Blagojević i D. Grundler, 2009 44

Pseudo jezik © L. Blagojević i D. Grundler, 2009 44

Pseudo jezik • Napisati algoritam u pseudo jeziku za unos dva broja, njihovo zbrajanje

Pseudo jezik • Napisati algoritam u pseudo jeziku za unos dva broja, njihovo zbrajanje i ispis. ulaz (a, b); c : = a+b; izlaz (c); © L. Blagojević i D. Grundler, 2009 45

Pseudo jezik • Napisati algoritam u pseudo jeziku koji će za unesenu cijenu nekog

Pseudo jezik • Napisati algoritam u pseudo jeziku koji će za unesenu cijenu nekog proizvoda c i postotka sniženja p računati cijenu proizvoda nakon sniženja. ulaz (c, p); s : = c - (c*p)/100; izlaz (s); © L. Blagojević i D. Grundler, 2009 46

Pseudo jezik • Napisati algoritam u pseudo jeziku koji će za uneseni broj izračunati

Pseudo jezik • Napisati algoritam u pseudo jeziku koji će za uneseni broj izračunati i ispisati drugi korijen, apsolutnu vrijednost, zaokruženu vrijednost realnoga broja na najbliži cijeli broj i najveći cijeli broj manji ili jednak od unesenog broja. ulaz (x); a : = Sqrt(x); b : = Abs(x); c : = Round(x); d : = Trunc(x); izlaz (a, b, c, d); © L. Blagojević i D. Grundler, 2009 47

Pseudo jezik • Napisati algoritam u pseudo jeziku koji će za unesena dva broja

Pseudo jezik • Napisati algoritam u pseudo jeziku koji će za unesena dva broja izračunati i ispisati kvocijent, cjelobrojni dio kvocijenta i ostatak dijeljenja. ulaz (x, y); a : = x/y; b : = x DIV y c : = x MOD y izlaz (a, b, c); © L. Blagojević i D. Grundler, 2009 48

Programiranje • Programiranje (kodiranje) je postupak zapisivanja temeljnih radnji naredbama odabranog programskog jezika. •

Programiranje • Programiranje (kodiranje) je postupak zapisivanja temeljnih radnji naredbama odabranog programskog jezika. • Svaki programski jezik rabi vlastiti, ograničeni skup riječi koje imaju posebna značenja. Takve se riječi nazivaju ključnim riječima. • Za svaki su programski jezik propisana stroga pravila slaganja ključnih riječi u naredbe i program. Takva se pravila nazivaju sintaksa. © L. Blagojević i D. Grundler, 2009 49

Sintaktička pogrješka • Pogrješka koja nastaje zbog nepoštivanja propisane sintakse naziva se sintaktička pogrješka.

Sintaktička pogrješka • Pogrješka koja nastaje zbog nepoštivanja propisane sintakse naziva se sintaktička pogrješka. • Sintaktičke pogrješke najčešće je u stanju otkriti jezični prevoditelj s pomoću kojega se izvorni oblik programa prevodi u izvršni, tj. strojni. © L. Blagojević i D. Grundler, 2009 50

Logička pogrješka • Pogrješka koja uzrokuje neispravan rad programa, naziva se logička pogrješka. •

Logička pogrješka • Pogrješka koja uzrokuje neispravan rad programa, naziva se logička pogrješka. • Logičku ispravnost programa, tj. ispravnost u smislu da program obavlja zadani zadatak, mora osigurati programer i tu mu računalo ne može pomoći. © L. Blagojević i D. Grundler, 2009 51

Provjera programa • Logička ispravnost programa osigurava se provjerama ili testiranjem. • Provjera ili

Provjera programa • Logička ispravnost programa osigurava se provjerama ili testiranjem. • Provjera ili testiranje programa provodi se kod proizvođača programa i neovisnih ispitivača. • Engl. bug je naziv za pogrješku u programu ili sklopovlju računala. © L. Blagojević i D. Grundler, 2009 52

Održavanje programa • Postupak mijenjanja programa tijekom njegovog životnog vijeka naziva se održavanje programa.

Održavanje programa • Postupak mijenjanja programa tijekom njegovog životnog vijeka naziva se održavanje programa. • U određenim vremenskim razdobljima izdaju se nove inačice (verzije) programa. © L. Blagojević i D. Grundler, 2009 53

Dokumentacija • U dokumentaciju se ubrajaju, primjerice, uputa za instaliranje programa i priručnici za

Dokumentacija • U dokumentaciju se ubrajaju, primjerice, uputa za instaliranje programa i priručnici za korisnika. © L. Blagojević i D. Grundler, 2009 54

Programske strukture • Programska struktura je ustrojstvo programa, tj. način i redoslijed rješavanja pojedinih

Programske strukture • Programska struktura je ustrojstvo programa, tj. način i redoslijed rješavanja pojedinih manjih radnji da bi se došlo do konačnog rješenja zadatka. – Pravocrtna programska struktura (slijed, niz) – Grananje – Petlja © L. Blagojević i D. Grundler, 2009 55

Pravocrtna struktura • Pravocrtna programska struktura (slijed, niz) je pravocrtna i program se uvijek

Pravocrtna struktura • Pravocrtna programska struktura (slijed, niz) je pravocrtna i program se uvijek izvršava istim slijedom naredbi. • Npr. progam za unos dva broja, njihovo zbrajanje i ispis. ulaz (A, B); C : = A + B; izlaz (C); © L. Blagojević i D. Grundler, 2009 56

Grananje • Grananje je programska struktura koja omogućuje različit tijek programa, ovisno o rezultatu

Grananje • Grananje je programska struktura koja omogućuje različit tijek programa, ovisno o rezultatu postavljenog uvjeta. • Rezultat postavljenog uvjeta mora biti jedno od dva stanja: zadovoljen/nezadovoljen, istina/laž, da/ne. © L. Blagojević i D. Grundler, 2009 57

Grananje • Korisnik unosi težinu pisma, a program izračunava i ispisuje poštansku naknadu. ulaz

Grananje • Korisnik unosi težinu pisma, a program izračunava i ispisuje poštansku naknadu. ulaz (x); ako je x < 20 onda izlaz („Poštanska naknada iznosi 2, 80 kn“) inače ako je x < 100 onda izlaz („Poštanska naknada iznosi 5 kn“) inače ako je x < 250 onda izlaz („Poštanska naknada iznosi 7 kn“) inače ako je x < 500 onda izlaz („Poštanska naknada iznosi 10 kn“) inače ako je x < 1000 onda izlaz („Poštanska naknada iznosi 13, 80 kn“) inače ako je x < 2000 onda izlaz („Poštanska naknada iznosi 20 kn“) inače izlaz („Pošiljka je preteška i ne smatra se pismom“); © L. Blagojević i D. Grundler, 2009 58

Petlja • Programska struktura petlje omogućava ponavljanje jedne ili više naredbi. • Petlja može

Petlja • Programska struktura petlje omogućava ponavljanje jedne ili više naredbi. • Petlja može biti bezuvjetna, pri čemu se izvršava unaprijed zadan broj puta ili uvjetna pri čemu broj ponavljanja petlje ovisi o postavljenom uvjetu. © L. Blagojević i D. Grundler, 2009 59

Petlja • Npr. treba ispisati prvih sto parnih brojeva. za i : = 1

Petlja • Npr. treba ispisati prvih sto parnih brojeva. za i : = 1 do 100 činiti { ako je i MOD 2 = 0 onda izlaz (i); } © L. Blagojević i D. Grundler, 2009 60

Pitanja za provjeru znanja 1. Što je naredba, a što program? 2. Zašto se

Pitanja za provjeru znanja 1. Što je naredba, a što program? 2. Zašto se programi malokad pišu strojnim jezikom? 3. Koje su glavne prednosti simboličkih programskih jezika visoke razine pred strojnim jezikom? 4. Zašto je simboličke programske jezike visoke razine potrebno prevoditi? 5. Po čemu se razlikuje prevođenje interpreterom od prevođenja kompajlerom? © L. Blagojević i D. Grundler, 2009 61

Pitanja za provjeru znanja 6. Kakva je razlika između programskih jezika opće namjene i

Pitanja za provjeru znanja 6. Kakva je razlika između programskih jezika opće namjene i namjenskih programa? 7. Koje su pobude potaknule razvoj objektno usmjerenih programa? 8. Koje su glavne značajke programa Java? 9. Zašto je potrebna analiza zadatka? 10. Što je algoritam? 11. Čemu služi dijagram tijeka? © L. Blagojević i D. Grundler, 2009 62

Pitanja za provjeru znanja 12. Koji se geometrijski likovi uobičajeno rabe pri crtanju dijagrama

Pitanja za provjeru znanja 12. Koji se geometrijski likovi uobičajeno rabe pri crtanju dijagrama tijeka i koje je njihovo značenje? 13. Može li pseudo jezik pisati osoba koja ne zna ni jedan programski jezik za računalo? 14. Kakve su sintaktičke, a kakve logičke pogrješke u računalnom programu? 15. Tko provjerava ispravnost programa? 16. Što je to engl. Bug? © L. Blagojević i D. Grundler, 2009 63

Pitanja za provjeru znanja 17. Zašto je grananje važna programska struktura? 18. Što je

Pitanja za provjeru znanja 17. Zašto je grananje važna programska struktura? 18. Što je programska petlja i kad se ona rabi? 19. Kakva je razlika između uvjetne i bezuvjetne petlje? 20. Što su to ugnježđene petlje? © L. Blagojević i D. Grundler, 2009 64