Program programiranje programski jezik 1 Software podela SOFTWARE

  • Slides: 35
Download presentation
Program, programiranje, programski jezik… 1

Program, programiranje, programski jezik… 1

Software - podela • SOFTWARE – skup programa za neki računar • SISTEMSKI •

Software - podela • SOFTWARE – skup programa za neki računar • SISTEMSKI • APLIKACIJSKI - programi koji služe za osnovni rad računala - programi koji rješavaju konkretne probleme (korisnički programi) 2

Osnovni pojmovi • PROGRAM – niz naredbi koje su pisane tako da ih računar

Osnovni pojmovi • PROGRAM – niz naredbi koje su pisane tako da ih računar razume i može izvesti, a koje rešavaju neki problem. • PROGRAMIRANJE – priprema i pisanje programa, odnosno, rešavanje problema u nekom programskom jeziku • PROGRAMER – osoba koja se bavi programiranjem • PROGRAMSKI JEZIK – skup pravila, reči i simbola pomoću kojih se pišu programi, tj. pomoću kojih se detaljno opisuju koraci rešavanja nekog problema. 3

Programski jezik • Podaci u računaru su u digitalnom obliku (niz nula i jedinica).

Programski jezik • Podaci u računaru su u digitalnom obliku (niz nula i jedinica). • Program zapisan u digitalnom obliku zove se mašinski (strojni) jezik. • Prvi programi pisani su u mašinskom jeziku. • Danas programe pišemo u nekom od programskih jezika. 4

Razvoj programskih jezika I Osnovne kategorije: 1. Mašinski jezici • • • programi su

Razvoj programskih jezika I Osnovne kategorije: 1. Mašinski jezici • • • programi su pisani direktno u mašinskom jeziku za izvođenje programa nije potrebno prevođenje program se sastoji od niza binarnih znamenki takvo programiranje je izuzetno težak posao mogućnost greške je velika program radi samo na jednom tipu računara 2. Simbolički jezici • • • Naredbe mašinskog jezika zamenjene su rečima Lakše pamćenje i pisanje naredbi (instrukcija) Prvi simbolički jezik – ASEMBLER Naredba asemblerskog jezika je sinonim za naredbu mašinskog jezik, npr. : LOAD – 00100100, ADD – 00100101… Prevodilački asemblerski jezik prevodi program u mašinski jezik kako bi ga računar mogao izvršiti ASEMBLER je poznat i kao niži simbolički programski jezik 5

Razvoj programskih jezika II • ASEMBLER je i dalje dosta nespretan za korištenje •

Razvoj programskih jezika II • ASEMBLER je i dalje dosta nespretan za korištenje • Pojavljuju se viši simbolički programski jezici koji su više orijentirani programeru • Zapis programa je još više pojednostavljen • Postoje dve kategorije viših simboličkih programskih jezika: – Proceduralni jezici • U središtu je postupak odnosno procedura kako nešto napraviti • Pascal, C, QBASIC, Java, … – Neproceduralni jezici • U središtu je ono što želimo dobiti, ne zamaramo se procedurom (postupkom) • Excel, SQL, … • Još više su orijentirani programeru • Nedostatak je da su ograničeni na rešavanje samo jedne klase problema (npr. Excel – tablični proračuni, SQL – rad s bazama podataka, …) 6

Programi prevodioci • Program napisan u simboličkom programskom jeziku pre izvođenja treba prevesti u

Programi prevodioci • Program napisan u simboličkom programskom jeziku pre izvođenja treba prevesti u mašinski. • Prevođenje se vrši na dva načina: – Kompiliranje • celi program se prevodi na mašinski jezik, a zatim se izvrši • poznati kompajleri: C, Pascal, … – Interpretiranje • Naredba po naredba programa se prevodi i odmah izvršava • Poznati interpreteri: ASP, PHP, … • Program pisan u višem programskom jeziku naziva se izvorni program (source code). • Prevedeni izvorni program naziva se izvršna verzija programa (EXEcutable program). 7

Generacije programskih jezika • • • Prva generacija: mašinski jezici Druga generacija: asemblerski jezici

Generacije programskih jezika • • • Prva generacija: mašinski jezici Druga generacija: asemblerski jezici Treća generacija: proceduralni jezici Četvrta generacija: neproceduralni jezici Peta generacija: jezici koji su osnova razvoja veštačke inteligencije (PROLOG) Programski jezici Mašinski jezici Simbolički jezici Niži simbolički jezici Viši simbolički jezici Proceduralni Neproceduralni Shematski prikaz programskih jezika 8

Primeri programa u različitim programskim jezicima Deo programa koji računa sumu dva broja (c=a+b)

Primeri programa u različitim programskim jezicima Deo programa koji računa sumu dva broja (c=a+b) zapisan u mašinskom jeziku, asemblerskom jeziku i Javi Mašinski jezik Asemblerski jezik Java 00100100 0001 00100101 00010010 00010011 LOAD a ADD b STOR c c = a + b; 9

Tehnike pisanja programa Strukturno programiranje (top-down programiranje, modularno programiranje) – Problem se deli na

Tehnike pisanja programa Strukturno programiranje (top-down programiranje, modularno programiranje) – Problem se deli na manje probleme, koji se nezavisno rešavaju i ponovo spajaju – Programer je fokusiran na način rešavanja problema, a ne na izvođenje naredbi na nivou hardwarea – Programi su rastavljeni na potprograme (funkcije i procedure), koji se pozivaju u različiotim delovima programa Objektno-orijentirano programiranje – Cilj je napraviti program čiji s delovi mogu koristiti u drugim programima – Prvi korak je identificirati važne delove koje zovemo objekti. – Za svaki objekt određena su • svojstva (osnovne karakteristike koje opisuju objekt) i • metode (operacije koje se nad objektom mogu izvršavati) Svi noviji programski jezici su objektno-orijentirani. 10

Algoritam • Algoritam predstavlja upute računaru kako da se ponaša u određenim situacijama. •

Algoritam • Algoritam predstavlja upute računaru kako da se ponaša u određenim situacijama. • Algoritam je konačan skup koraka koji računaru detaljno opisuju šta treba napraviti. • Algoritam je moguće pisati: – prirodnim (govornim) jezikom – veštačkim jezikom – jezik u kojem su definisana posebna pravila, reči, … pomoću kojih se zapisuju algoritmi • Dva najjednostavnija načina zapisivanja algoritma su – Pseudo kod – zapisivanje algoritma rečima govornog jezika – Dijagram toka – koristimo specijalne simbole za zapis algoritma 11

Pseudo kod U pseudo kodu algoritam zapisujemo rečima govornog jezika. Najosnovnije naredbe u pseudo

Pseudo kod U pseudo kodu algoritam zapisujemo rečima govornog jezika. Najosnovnije naredbe u pseudo kodu su: Naredba Značenje početak Označava početak algoritma pisanog u pseudo kodu unesi Unos podataka ispiši Ispis podataka kraj Kraj algoritma pisanog u pseudo kodu 12

Primer pseudo koda Računanje površine pravokutnika: početak unesi a, b P=a*b Ispiši p kraj

Primer pseudo koda Računanje površine pravokutnika: početak unesi a, b P=a*b Ispiši p kraj Zadatak Napiši algoritam u pseudo kodu za računanje: 1. 2. 3. površine kruga, umnoška tri broja, razlike dva broja. 13

Dijagram toka U dijagramu toka koristimo specijalne simbole za zapis algoritma. Osnovni simboli su:

Dijagram toka U dijagramu toka koristimo specijalne simbole za zapis algoritma. Osnovni simboli su: Početak algoritma pisanog dijagramom toka Unos podataka Ispis podataka Obrada (računanje) Kraj algoritma Poveznica Priključna tačka 14

Dijagram toka: računanje površine pravokutnika Početak a, b P=a*b p Kraj početak unesi a,

Dijagram toka: računanje površine pravokutnika Početak a, b P=a*b p Kraj početak unesi a, b P=a*b ispiši p kraj 15

Zadaci 1 • Napiši algoritam koji će unositi cenu proizvoda c i postotak poskupljenja

Zadaci 1 • Napiši algoritam koji će unositi cenu proizvoda c i postotak poskupljenja p. Algoritam treba ispisivati cenu proizvoda nakon poskupljenja S=C*(1+p/100) • Napiši algoritam kojim se unosi glavnica G, kamatna stopa P i vreme u godinama N. Algoritam treba ispisati kamate K na glavnicu G, uz kamatnu stopu P, nakon N godina, pri čemu kamate računamo jednostavnim kamatnima računom K=G*N*(P/100) • Napiši algoritam koji će unositi 4 broja A, B, C, D i izračunavati i ispisivati sumu S kvadrata unetih brojeva S=A 2+B 2+C 2+D 2 16

Zadaci 2 1. Šta je algoritam? 2. Zašto algoritam mora biti konačan? 3. Koji

Zadaci 2 1. Šta je algoritam? 2. Zašto algoritam mora biti konačan? 3. Koji su načini zapisivanja algoritama? 4. Šta će ispisati algoritam s desne strane ako se vrednost varijable x postavi na 4, a vrednost varijable y na 2? Početak x, y z=2*x+y z Kraj 17

Zadaci 3 5. 6. 7. 8. Napiši algoritam koji će unositi dva broja i

Zadaci 3 5. 6. 7. 8. Napiši algoritam koji će unositi dva broja i ispisivati njihovu: a) Sumu b) Razliku c) Umnožak d) Kvocijent Napiši algoritam koji će unositi cenu proizvoda c te postotak pojeftinjenja p. Algoritam treba ispisivati cenu proizvoda nakon pojeftinjenja Napiši algoritam koji će unositi cenu proizvoda nakon poskupljenja c te postotak poskupljenja p, a ispisivaće se cena proizvoda pre poskupljenja Napiši algoritam koji će unositi cenu proizvoda pre i posle pojeftinjenja, a ispisivaće se postotak pojeftinjenja. 18

Grananje • Nizanje naredbi koje se izvršavaju u neprekinutom nizu, jedna za drugom, nazivamo

Grananje • Nizanje naredbi koje se izvršavaju u neprekinutom nizu, jedna za drugom, nazivamo sled ili sekvenca • U praksi je sled ili sekvenca vrlo retka • Vrlo često se u dijagramu toka izvršavaju različite grupe naredbi ovisno o vrednosti neke varijable. U tom slučaju radi se o grananju u algoritmu. • Opšti oblik naredbe grananja: DA Naredba_1 uslov NE Naredba_2 19

Primer Početak Napišimo algoritam koji će unositi dva prirodna broja i ispisivati veći od

Primer Početak Napišimo algoritam koji će unositi dva prirodna broja i ispisivati veći od njih. a, b DA Prvo ćemo uporediti sadržaje varijabli a i b. Ako je vrednost varijable a veća, ispisaćemo a, inače ćemo ispisati b. a>b a NE b Kraj 20

Operatori upoređivanja Opis Manje Veće Jednako Različito Manje ili jednako Veće ili jednako Pseudo

Operatori upoređivanja Opis Manje Veće Jednako Različito Manje ili jednako Veće ili jednako Pseudo kod Matematika < > = <> <= >= < > = ≠ ≤ ≥ 21

Početak Zadatak Napiši algoritam koji će unositi tri prirodna broja a, b i c

Početak Zadatak Napiši algoritam koji će unositi tri prirodna broja a, b i c te će se ispisivati najmanji od njih. a, b, c DA DA a a<c NE a<b DA NE b c Kraj b<c NE c 22

Logički operatori • NE, I, ILI (NOT, AND, OR) • Reši tablicu istinitosti (upiši

Logički operatori • NE, I, ILI (NOT, AND, OR) • Reši tablicu istinitosti (upiši T ili F): A B C 1 2 3 1 3 1 2 3 2 1 3 1 1 2 1 2 1 1 A≥B A≥C A≤B B≥C B>A A≥B I A≥C B≥C I B>A NE (B ≥ C) ILI A≥C A≥B I NE(A ≥ C) NE(A ≥ B ) ILI A≥C 23

Zadatak Početak Napiši algoritam koji će unositi tri prirodna broja a, b i c

Zadatak Početak Napiši algoritam koji će unositi tri prirodna broja a, b i c te će se ispisivati najveći od njih. Koristi logičke operatore. a, b, c DA (a >= b) I (a >=c) NE DA a b Kraj (b >= c) I (b > a) NE c 24

Zadatak Algoritam koji unosi tečaj eura (t) i jedno slovo (c) koje može imati

Zadatak Algoritam koji unosi tečaj eura (t) i jedno slovo (c) koje može imati vrednost E (za unos iznosa u kunama i preračunavanje u eure) ili vrednost K (za unos iznosa u eurima i preračunavanje u kune). Početak t, c DA c=K NE eu kn kn=eu*t eu=kn/t kn eu Kraj 25

Vežbe 1. 2. 3. 4. 5. Kada se služimo grananjem u algoritmu? Koji je

Vežbe 1. 2. 3. 4. 5. Kada se služimo grananjem u algoritmu? Koji je znak grananja u dijagramu toka? Nabroji relacijske operatore. Napiši algoritam kojim se unose dva prirodna broja i ispisuje manji od njih. Odredi vrednosti logičkih izraza ako je A = true a B = false AIB A ILI B NE A I B A ILI NE B NE A ILI NE(NE B) 6. Odredi vrednosti logičkih izraza: 2>3 (2<5) I (3<5) NE ((1<0) ILI NE (3<4)) NE (NE(6<1) I NE(5>3)) ILI (2>5) 26

Vežbe 8. 9. 10. 11. Godina je prestupna ako je deljiva sa 4 i

Vežbe 8. 9. 10. 11. Godina je prestupna ako je deljiva sa 4 i nije deljiva sa 100 ili je deljiva sa 400. Napišite algoritam koji će unositi godinu i proveravati da li je godina prestupna te ispisivati odgovarajuću poruku. Napišite algoritam koji će unositi dan, mesec i godinu rođenja dve osobe. Algoritam treba da ispiše dan, mesec i godinu rođenja starije osobe. Napišite algoritam koji će unositi cenu nekog proizvoda, postotak i jedan znak. Ako je uneseni znak bio S, algoritam treba ispisati cenu proizvoda nakon pojeftinjenja za uneseni postotak. Ako je unesen znak P, algoritam treba ispisati cenu proizvoda nakon poskupljenja za uneseni postotak. Napišite algoritam koji će unositi glavnicu G, kamatnu stopu p, vreme n te znak z. Algoritam treba računati kamate K na glavnicu G uz kamatnu stopu p za vreme n. Ako je uneseni znak z jednak G, uneseno vreme je u godinama, ako je z jednak M, vreme je u mesecima, a ako je z jednak D, vreme je u danima. Napomena: Ako je vreme u godinama, formula glasi: Ako je vreme u mesecima, fomula glasi: AKo je vreme u danima, formula glasi: 27

Petlje Petlja je naredba ili nekoliko naredbi koje se izvršavaju određeni broj puta, dok

Petlje Petlja je naredba ili nekoliko naredbi koje se izvršavaju određeni broj puta, dok je neki uslov istinit. DA Naredbe uslov NE Naredba_2 28

Početak Primer n Algoritam koji unosi prirodan broj n i ispisuje prvih n prirodnih

Početak Primer n Algoritam koji unosi prirodan broj n i ispisuje prvih n prirodnih brojeva. i=1 DA i i <= n NE Kraj i=i+1 29

Početak Primer Algoritam koji unosi prirodan broj n i sabire prvih n prirodnih brojeva.

Početak Primer Algoritam koji unosi prirodan broj n i sabire prvih n prirodnih brojeva. n i=1 s=0 DA s=s+i i=i+1 i <= n NE s Kraj 30

Operatori DIV i MOD • Operator DIV je operator celobrojnog deljenja, npr. 7 DIV

Operatori DIV i MOD • Operator DIV je operator celobrojnog deljenja, npr. 7 DIV 2 je 3 • Operator MOD daje ostatak celobrojnog deljenja, npr. 7 MOD 2 je 1. • Izračunaj: – 15 DIV 4 – 19 DIV 7 – 13 MOD 4 DIV 2 31

Primer Početak n Algoritam koji unosi prirodni broj n i proverava da li je

Primer Početak n Algoritam koji unosi prirodni broj n i proverava da li je broj n prost broj te ispisuje odgovarajuću poruku. i=1 b=0 DA DA N MOD i = 0 NE i <= n NE DA B=2 “Broj je prost” b=b+1 i=i+1 NE “Broj nije prost” Kraj 32

Početak Primer n Algoritam koji unosi prirodan broj n i sabire sve njegove znamenke.

Početak Primer n Algoritam koji unosi prirodan broj n i sabire sve njegove znamenke. s=0 DA z = n MOD 10 s=s+z n = n DIV 10 n>0 NE s Kraj 33

Zadaci za vežbu 1. 2. 3. 4. 5. 6. Šta je petlja? Napišite algoritam

Zadaci za vežbu 1. 2. 3. 4. 5. 6. Šta je petlja? Napišite algoritam koji će unositi prirodni broj n i ispisivati sve prirodne brojeve do n, ali unatrag od n do 1. Napišite algoritam koji će unositi prirodni broj n i množiti sve brojeve do n. Napišite algoritam koji će unositi prirodni broj n i: 1. ispisivati sve brojeve do n koji su deljivi s 3; 2. sabirati sve parne brojeve do n, 3. pomnožiti prvih n parnih brojeva; 4. ispisivati sve delitelje broja n; Za broj ćemo reci da je savršen ako je jednak sumi svojih delitelja (ne uključujući njega samoga). Savršeni su npr. brojevi 6 i 28 (6 = 1+2+3, 28 = 1+2+4+7+14). Napišite algoritam koji će unositi prirodni broj i provjeravati da li je savršen. Napišimo algoritam koji će unositi prirodni broj n i: 1. ispisati koliko n ima znamenaka; 2. pomnožiti sve neparne znamenke broja n. 34

Zadaci za vežbu 7. 8. 9. Za broj ćemo reci daje potpuno paran ako

Zadaci za vežbu 7. 8. 9. Za broj ćemo reci daje potpuno paran ako se sastoji samo od parnih znamenaka. Napišite algoritam koji će unositi prirodni broj n i proveravati da li je n potpuno paran. Prvi mesec štediša je u banku uložio određeni iznos kuna (x). Drugi mesec je u banku uložio dvostruko više kuna (2*x). Treći je mesec uložio dvostruko više nego drugi mesec (2*(2*x)), „. Štedišu zanima koliko će imati u banci nakon n meseci. Pomozite mu i napišite algoritam koji će unositi početni iznos x te vreme u mesecima n i ispisivati iznos kojim će raspolagati nakon n meseci. Napiši algoritam koji će unositi dva prirodna broja (n i m) i računati njihov najveći zajednički delitelj. Najveći zajednički delitelj brojeva n i m je najveći prirodni broj koji deli i n i m. Na primer, najveći zajednički delitelj brojeva 24 i 18 je 6 jer je 6 najveći prirodni broj koji deli 18 i 24. 35