Presentation is loading. Please wait.

Presentation is loading. Please wait.

OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI

Similar presentations


Presentation on theme: "OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI"— Presentation transcript:

1 OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI
Prof. dr Nikola Klem, dipl.el.inž. Građevinski fakultet Univerziteta u Beogradu OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI Beograd, šk. god. 2010/2011.

2 Šta je računarski sistem?
© Nikola Klem

3 Šta je računarski sistem?
Računar je elektronska mašina koja obrađuje ulazne podatke ili informacije (INPUT) i proizvodi iz njih nove podatke ili izlazne informacije (OUTPUT). Računar obrađuje podatke na osnovu programa koji je napisan za određenu primenu. Program po kome računar radi mora za vreme izvršavanja da bude u memoriji računara. © Nikola Klem

4 Šta je program? Skup instrukcija za rešavanje određenog problema naziva se program. Proces pisanja instrukcija za računar naziva se programiranje. © Nikola Klem

5 Podela računarskih sistema
SISD – Single Instruction Single Data SIMD – Single Instruction Multiple Data (supercomputers) MIMD – Multiple Instruction Multiple Data (ultracomputers – clusters) © Nikola Klem

6 PREDNOSTI KORIŠĆENJA RAČUNARA
BRZINA TAČNOST RAZNOVRSNOST © Nikola Klem © Nikola Klem

7 ALGORITMI Persijski matematičar Al-Khowarizmi (Abu Ja'far Mohammed Ibn Musa al Khowarizmi ) u udžbeniku matematike (oko 825. godine n.e.) prikazao je rešenja nekih aritmetičkih problema u obliku uputstava koja su se sastojala od tačno određenih osnovnih koraka. Ovakva uputstva su kasnije nazvana algoritmima. Razvojem računara algoritmi su postali samostalno i važno područje računarskih nauka. © Nikola Klem

8 ALGORITMI – Šta je algoritam?
Algoritam je u opštem slučaju konačni redosled operatora, elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja rešenja nekog problema. Izvođenje svakog operatora predstavlja jedan algoritamski korak. Sa računarskog stanovišta ova definicija nije dovoljna pa se mora dopuniti još nekim uslovima koje algoritam mora da zadovolji. To su: - definisanost, - konačnost i - rezultat. © Nikola Klem

9 ALGORITMI Definisanost. Svaka operacija ili pravilo mora imati definisano i samo jedno značenje, tj. rezultat svake operacije mora biti jasno definisan. Konačnost. Svaki korak mora biti takav da bi ga, bar u prinicipu, mogao izvesti čovek koristeći olovku i papir za konačno vreme. Postoje jednostavni i jednoznačni postupci koji nisu algoritmi jer su beskonačni sa stanovišta broja koraka potrebnog za dobijanje rezultata. Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu. © Nikola Klem

10 ALGORITMI U vezi sa primenom računara treba napomenuti da vreme rada računara potrebno za završetak algoritma treba da bude razumno kratko. Rezultat. Po završetku algoritma mora da pos-toji mogućnost da se ustanovi rezultat njegovog rada, odnosno da li je algoritam postigao svoj cilj ili nije. Pojam algoritma ne mora biti vezan za primenu računara. Algoritmi se koriste u svakodnevnom životu za izvršavanje različitih aktivnosti (na pr. kuvarski recepti). © Nikola Klem

11 ALGORITMI Postoje različite mogućnosti za predstavljanje algoritma, ali se on najčešće pretstavlja grafički pod imenom dijagram toka programa (flowchart). U ovom dijagramu pojedine akcije predstavljene su tačno određenim grafičkim simbolima čime se osigurava jednostavnost, preglednost i jednoznačnost zapisa algoritma. Najčešće korišćeni simboli su prikazani na sledećem slajdu. © Nikola Klem

12 ALGORITMI Grafički simbol Značenje Terminator Unošenje podataka
Izdavanje podataka Obrada podataka Odluka Povezivanje algoritamskih koraka © Nikola Klem

13 ALGORITMI – Struktura algoritma
Pod strukturom algoritma podrazumeva se redosled izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu. Sa stanovišta ovog redosleda postoje tri osnovne algoritamske strukture: - linijska, - razgranata i - ciklička. © Nikola Klem

14 ALGORITMI Linijska struktura
POČETAK Linijska struktura Algoritamski koraci se izvršavaju jedan za drugim redosledom kojim su napisani. Primer Algoritam za zamenu točka na automobilu. 1. Pripremi dizalicu 2. Pripremi rezervni točak 3. Olabavi šrafove na točku 4. Podigni auto 5. Odvrni šrafove na točku 6. Skini točak 7. Stavi rezervni točak 8 . Zavrni šrafove na točku 9. Spusti auto 10. Zategni šrafove 11. Spremi dizalicu 12. Spremi rezervni točak © Nikola Klem KRAJ

15 ALGORITMI Razgranata struktura
POČETAK Razgranata struktura Struktura algoritma u kojoj tok operacija zavisi od ispunjenosti nekih uslova zove se razgranata struktura. Primer Algoritam za prelazak ulice sa semaforom. 1. Stani ispred kolovoza 2. Pogledaj semafor NE DA Zeleno svetlo 3. Čekaj zeleno svetlo 4. Pređi ulicu 3. Pređi ulicu KRAJ © Nikola Klem

16 ALGORITMI Ciklička struktura
Algoritam kod kog se određeni broj algoritamskih koraka ponavlja više puta ima cikličku strukturu. Ako je broj ponavljanja dela algoritma poznat unapred struktura je konstantna (brojački ciklus). Primer - algoritam za punjenje deset boca vodom Ako broj ponavljanja nije poznat unapred, nego zavisi od ispunjenosti nekog uslova struktura je promenljiva (uslovni ciklus). Primer - algoritam za prelazak ulice bez semafora. © Nikola Klem

17 ALGORITMI NE DA POČETAK POČETAK 1. Otvori vodu
1. Stani ispred kolovoza Ponovi 10 puta 2. Pogledaj levo i desno 2. Uzmi praznu bocu 3. Napuni je vodom 4. Zatvori bocu 5. Odloži punu bocu NE DA Nema vozila 3. Sačekaj malo 4. Pređi ulicu 6. Zatvori vodu KRAJ KRAJ © Nikola Klem Konstantna ciklička struktura Uslovna ciklička struktura

18 ALGORITMI Složene algoritamske strukture
Složene algoritamske strukture sastoje se od proizvoljnog broja, proizvoljnih kombinacija osnovnih algoritamskih struktura. © Nikola Klem

19 REŠAVANJE PROBLEMA PRIMENOM RAČUNARA
Koraci: 1. Izbor i formulacija problema, 2. Analiza problema, 3. Izbor metoda za rešavanje problema, 4. Projektovanje programa, © Nikola Klem

20 "TOP-DOWN" PROJEKTOVANJE
ALGORITMI "TOP-DOWN" PROJEKTOVANJE Na svakom nivou postoji algoritam za rešavanje problema. Svaki modul može da se zameni drugim modulom koji mu je funkcionalno ekvivalentan. © Nikola Klem

21 REŠAVANJE PROBLEMA PRIMENOM RAČUNARA
Koraci: 1. Izbor i formulacija problema, 2. Analiza problema, 3. Izbor metoda za rešavanje problema, 4. Projektovanje programa, 5. Kodiranje algoritma, 6. Ispitivanje korektnosti programa, 7. Izrada dokumentacije, 8. Održavanje programa. © Nikola Klem

22 FUNKCIONALNA ŠEMA RAČUNARA
ULAZNE JEDINICE IZLAZNE SPOLJNE MEMORIJE KONTROLNA JEDINICA UNUTRAŠNJA MEMORIJA ARITMETIČKO LOGIČKA © Nikola Klem

23 Komunikacija sa računarom
© Nikola Klem

24 Tipovi jezika Nižeg nivoa: Mašinski,
Asemblerski (mašinski orijentisani). Višeg nivoa: Proceduralno orijentisani (treća generacija), Problemski orijentisani jezici, Objektno orijentisani jezici. © Nikola Klem

25 Programski jezici FORTRAN = FORmula TRANslation
COBOL = Common Bussines Oriented Language ALGOL = ALGOrithmic Language PL/I = Programing Language I BASIC = Beginners All Purpose Symbolic Instruction Code PASCAL ADA C © Nikola Klem

26 Programski jezici Problemski orijentisani jezici
COGO = Civil Engineering Coordinate Geometry STRESS = STRuctural Engineering System Solver HYDRO = Hydraulic Engineering Computations Objektno orijentisani SmallTalk, C++, Java, Delphi, Visual Basic © Nikola Klem

27 Programski jezici - prevođeni (compiled) interpretativni (interpreted)
intermedijarni (intermediate) © Nikola Klem

28 Programski jezici Program se piše u izvornom jeziku (source language).
Računar izvršava program u mašinskom jeziku (object language). IZVORNI PROGRAM PROGRAM PREVODILAC MAŠINSKI KOD © Nikola Klem

29 Programski jezici Program prevodilac (compiler) prevodi program napisan u izvornom jeziku u mašinski kod. Proces prevođenja se zove kompilacija. Kod asemblerskih jezika proces prevođenja se zove asemblovanje. SVAKI RAČUNAR MORA DA IMA PROGRAM PREVODILAC ZA SVAKI PROGRAMSKI JEZIK KOJI SE KORISTI. © Nikola Klem

30 Programski jezici Cilj prevođenja ne mora uvek biti mašinski kod.
To može biti neki međujezik ili drugi programski jezik. Na primer, iz FORTRAN-a u C++. Ako je cilj prevođenja međujezik, onda se obično iz više programskih jezika prevodi u međujezik, a zatim posebnim optimizacionim prevodiocem iz međujezika u mašinski kod. © Nikola Klem

31 Programski jezici Interpretativni i interaktivni programski jezici su jezici kod kojih svaka naredba može da se tumači i izvršava nezavisno od ostalih programskih naredbi. Interpreteri – prepoznaju i izvršavaju naredbe jednu po jednu, što olakšava, ali i usporava rad programa, naročito kod ciklusa. © Nikola Klem

32 Programski jezici Intermedijarni programski jezici su jezici kod kojih se izvorni kod prevodi u specijalni međujezik - meta-kod. Meta-kod je univerzalni veštački kod koji ne može da se izvrši ni na jednom računaru, ali je osmišljen da bude krajnje jednostavan za prevođenje u bilo koji mašinski jezik. Za svaki računar se piše specijalni program (virtualna mašina) koji izvršava meta-kod. Primer: Java, byte-code, VM. © Nikola Klem

33 Programski jezici Svaki programski jezik se sastoji od: Skupa znakova,
Rečnika, Sintakse (pravila gramatike), Semantike (značenja svake naredbe). © Nikola Klem

34 Struktura programa Program je skup instrukcija (naredbi) za računar, napisanih za rešavanje jednog problema. Naredbe programskog jezika formiraju se koristeći reči iz rečnika programskog jezika i nazive koje programer dodeljuje memorijskim lokacijama u koje su uskladišteni podaci sa kojima se radi u programu, a prema pravilima sintakse jezika. © Nikola Klem

35 Struktura programa Svaka naredba se završava oznakom za kraj naredbe. U velikom broju programskih jezika oznaka za kraj naredbe je tačka-zapeta (;). Naredbe se izvršavaju redosledom kojim su napisane, ukoliko taj redosled nije izmenjen posebnim naredbama za izmenu toka programa (grananje i ciklusi). © Nikola Klem

36 Struktura programa Naredbe programskog jezika mogu se podeliti u dve kategorije:  Izvršne i  Nezvršne. Izvršne naredbe (naredbe koje računar treba da izvrši) – su naredbe koje se u procesu prevođenja prevode u odgovarajući mašinski kod. © Nikola Klem

37 Struktura programa Neizvršne naredbe (deklaracije) – su naredbe kojima se daju uputstva programu prevodiocu neophodna za prevođenje programa (definisanje imena memorijskih lokacija, definisanje tipova podataka, opisi funkcija i procedura). S obzirom na to da su namenjene programu prevodiocu, one se koriste samo za prevođenje programa i ne prevode se u mašinski kod. © Nikola Klem

38 Struktura programa U većini programskih jezika u programu se, na početku, pravi odeljak u kome su date neizvršne naredbe, a posle toga sledi blok sa izvršnim naredbama. Tako se program prevodilac prvo upozna sa uputstvima za prevođenje programa, a zatim, sledeći ta uputstva i pravila sintakse jezika, učitava naredbe iz bloka sa izvršnim naredbama i prevodi ih u mašinski kod. © Nikola Klem

39 Struktura programa U svim programskim jezicima znakovi koji se mogu koristiti za formiranje elemenata jezika su: Alfabetski – velika i mala slova engleske abecede, Numerički – cifre 0,1,2,3,4,5,6,7,8,9 Specijalni – zavisno od jezika (. , = ; + zagrade itd.) Znakovi iz prva dva skupa (alfabetskih i numeričkih) nazivaju se alfanumerički. © Nikola Klem

40 Imena podataka Podaci sa kojima program radi moraju za vreme izvršavanja programa da se nalaze u memoriji računara. U naredbama programa zadaju se memorijske lokacije na kojima se nalaze podaci sa kojima naredba radi. Korisnik se poziva na podatke tako što dodeljuje imena ovim lokacijama na osnovu pravila sintakse.

41 Imena podataka Postoje dve grupe memorijskih lokacija za podatke:
konstante - lokacije u kojima se podaci postavljaju pre početka rada programa i ne menjaju tokom rada programa, promenljive (varijable) - lokacije kod kojih se sadržaj (podaci uskladišteni u njima) menjaju tokom rada programa.

42 Tipovi podataka Podaci sa kojima računari rade se dele prema načinu njihovog skladištenja u memoriji računara na sledeće tipove: celi brojevi, realni brojevi u običnoj tačnosti realni brojevi u dvostrukoj tačnosti znakovni podaci logički podaci Svaki tip podataka ima odgovarajući tip konstante. © Nikola Klem

43 K R A J © Nikola Klem


Download ppt "OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI"

Similar presentations


Ads by Google