SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Prof. dr Nikola Klem, dipl.el.inž.
Građevinski fakultet
Univerziteta u Beogradu
OSNOVE PROGRAMIRANJA
LEKCIJA I - ALGORITMI
Beograd, šk. god. 2010/2011.
2/44
© Nikola Klem
2006-2011.
Šta je računarski sistem?
3/44
© Nikola Klem
2006-2011.
Š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.
4/44
© Nikola Klem
2006-2011.
Šta je program?
Skup instrukcija za rešavanje određenog
problema naziva se program.
Proces pisanja instrukcija za računar naziva se
programiranje.
5/44
© Nikola Klem
2006-2011.
Podela računarskih sistema
SISD – Single Instruction Single Data
SIMD – Single Instruction Multiple Data
(supercomputers)
MIMD – Multiple Instruction Multiple Data
(ultracomputers – clusters)
6/44
© Nikola Klem
2006-2011.
PREDNOSTI KORIŠĆENJA RAČUNARA
© Nikola Klem
2006-2011.
BRZINA TAČNOST
RAZNOVRSNOST
7/44
© Nikola Klem
2006-2011.
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.
8/44
© Nikola Klem
2006-2011.
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.
9/44
© Nikola Klem
2006-2011.
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.
10/44
© Nikola Klem
2006-2011.
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).
11/44
© Nikola Klem
2006-2011.
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.
12/44
© Nikola Klem
2006-2011.
ALGORITMI
Grafički
simbol
Značenje
Terminator
Unošenje podataka
Izdavanje podataka
Obrada podataka
Odluka
Povezivanje algoritamskih koraka
13/44
© Nikola Klem
2006-2011.
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.
14/44
© Nikola Klem
2006-2011.
ALGORITMI
Linijska struktura
Algoritamski koraci se
izvršavaju jedan za
drugim redosledom
kojim su napisani.
Primer
Algoritam za zamenu
točka na automobilu.
POČETAK
KRAJ
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
15/44
© Nikola Klem
2006-2011.
ALGORITMI
Razgranata struktura
Struktura algoritma u
kojoj tok operacija zavisi
od ispunjenosti nekih
uslova zove se
razgranata struktura.
Primer
Algoritam za prelazak
ulice sa semaforom.
POČETAK
KRAJ
1. Stani ispred kolovoza
2. Pogledaj semafor
Zeleno
svetlo
DA
NE
3. Pređi ulicu
3. Čekaj zeleno svetlo
4. Pređi ulicu
16/44
© Nikola Klem
2006-2011.
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.
17/44
© Nikola Klem
2006-2011.
ALGORITMI
2. Uzmi praznu bocu
3. Napuni je vodom
4. Zatvori bocu
5. Odloži punu bocu
KRAJ
6. Zatvori vodu
POČETAK
1. Otvori vodu
Ponovi
10 puta
Konstantna ciklička struktura Uslovna ciklička struktura
Nema vozila
4. Pređi ulicu
3. Sačekaj malo
KRAJ
POČETAK
1. Stani ispred kolovoza
DA
NE
2. Pogledaj levo i desno
18/44
© Nikola Klem
2006-2011.
ALGORITMI
Složene algoritamske strukture
Složene algoritamske strukture sastoje se
od proizvoljnog broja, proizvoljnih
kombinacija osnovnih algoritamskih
struktura.
20/44
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
2006-2011.
21/44
ALGORITMI
Na svakom nivou postoji algoritam za rešavanje problema.
Svaki modul može da se zameni drugim modulom koji mu je
funkcionalno ekvivalentan.
"TOP-DOWN" PROJEKTOVANJE
© Nikola Klem
2006-2011.
22/44
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
2006-2011.
23/44
© Nikola Klem
2006-2011.
FUNKCIONALNA ŠEMA RAČUNARA
ULAZNE
JEDINICE
IZLAZNE
JEDINICE
JEDINICE
SPOLJNE
MEMORIJE
KONTROLNA
JEDINICA
UNUTRAŠNJA
MEMORIJA
ARITMETIČKO
LOGIČKA
JEDINICA
24/44
© Nikola Klem
2006-2011.
Komunikacija sa računarom
01100111101
25/44
© Nikola Klem
2006-2011.
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.
26/44
© Nikola Klem
2006-2011.
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
27/44
© Nikola Klem
2006-2011.
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
28/44
© Nikola Klem
2006-2011.
Programski jezici
- prevođeni (compiled)
- interpretativni (interpreted)
- intermedijarni (intermediate)
29/44
© Nikola Klem
2006-2011.
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
30/44
© Nikola Klem
2006-2011.
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.
31/44
© Nikola Klem
2006-2011.
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.
32/44
© Nikola Klem
2006-2011.
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.
33/44
© Nikola Klem
2006-2011.
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.
34/44
© Nikola Klem
2006-2011.
Programski jezici
Svaki programski jezik se sastoji od:
 Skupa znakova,
 Rečnika,
 Sintakse (pravila gramatike),
 Semantike (značenja svake naredbe).
35/44
© Nikola Klem
2006-2011.
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.
36/44
© Nikola Klem
2006-2011.
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).
37/44
© Nikola Klem
2006-2011.
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.
38/44
© Nikola Klem
2006-2011.
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.
39/44
© Nikola Klem
2006-2011.
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.
40/44
© Nikola Klem
2006-2011.
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.
41/44
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.
42/44
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.
43/44
© Nikola Klem
2006-2011.
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.
44/44
© Nikola Klem
2006-2011.

Weitere ähnliche Inhalte

Mehr von OsnovnakolaJovanCvij

Mehr von OsnovnakolaJovanCvij (15)

03 Uvod u QBasic (5.r)-1.pptx
03 Uvod u QBasic (5.r)-1.pptx03 Uvod u QBasic (5.r)-1.pptx
03 Uvod u QBasic (5.r)-1.pptx
 
kotiranjerazmeraissimboliugradjevinarstvu-6-201027135930.pdf
kotiranjerazmeraissimboliugradjevinarstvu-6-201027135930.pdfkotiranjerazmeraissimboliugradjevinarstvu-6-201027135930.pdf
kotiranjerazmeraissimboliugradjevinarstvu-6-201027135930.pdf
 
LINIJSKE-ALGORITAMSKE-STRUKTURe-seminarski.ppt
LINIJSKE-ALGORITAMSKE-STRUKTURe-seminarski.pptLINIJSKE-ALGORITAMSKE-STRUKTURe-seminarski.ppt
LINIJSKE-ALGORITAMSKE-STRUKTURe-seminarski.ppt
 
DOPUNSKA NASTAVA.ppt
DOPUNSKA NASTAVA.pptDOPUNSKA NASTAVA.ppt
DOPUNSKA NASTAVA.ppt
 
spa1.ppt
spa1.pptspa1.ppt
spa1.ppt
 
CS02.ppt
CS02.pptCS02.ppt
CS02.ppt
 
5.4.1._tehnicka_dokumentacija_0.pptx
5.4.1._tehnicka_dokumentacija_0.pptx5.4.1._tehnicka_dokumentacija_0.pptx
5.4.1._tehnicka_dokumentacija_0.pptx
 
346913768-Mjerenja-ppt.ppt
346913768-Mjerenja-ppt.ppt346913768-Mjerenja-ppt.ppt
346913768-Mjerenja-ppt.ppt
 
abc_algoritmi_teorija.ppt
abc_algoritmi_teorija.pptabc_algoritmi_teorija.ppt
abc_algoritmi_teorija.ppt
 
značaj_i_primena_računara(2).ppt
značaj_i_primena_računara(2).pptznačaj_i_primena_računara(2).ppt
značaj_i_primena_računara(2).ppt
 
01 _ Brojni sistemi i predstavljanje brojeva _ 2013.ppt
01 _ Brojni sistemi i predstavljanje brojeva _ 2013.ppt01 _ Brojni sistemi i predstavljanje brojeva _ 2013.ppt
01 _ Brojni sistemi i predstavljanje brojeva _ 2013.ppt
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
 
5 Pred5.ppt
5 Pred5.ppt5 Pred5.ppt
5 Pred5.ppt
 
Техничка документација 1.pptx
Техничка документација 1.pptxТехничка документација 1.pptx
Техничка документација 1.pptx
 

predavanje_1___algoritmi_1456322499054.ppt

  • 1. Prof. dr Nikola Klem, dipl.el.inž. Građevinski fakultet Univerziteta u Beogradu OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI Beograd, šk. god. 2010/2011.
  • 2. 2/44 © Nikola Klem 2006-2011. Šta je računarski sistem?
  • 3. 3/44 © Nikola Klem 2006-2011. Š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.
  • 4. 4/44 © Nikola Klem 2006-2011. Šta je program? Skup instrukcija za rešavanje određenog problema naziva se program. Proces pisanja instrukcija za računar naziva se programiranje.
  • 5. 5/44 © Nikola Klem 2006-2011. Podela računarskih sistema SISD – Single Instruction Single Data SIMD – Single Instruction Multiple Data (supercomputers) MIMD – Multiple Instruction Multiple Data (ultracomputers – clusters)
  • 6. 6/44 © Nikola Klem 2006-2011. PREDNOSTI KORIŠĆENJA RAČUNARA © Nikola Klem 2006-2011. BRZINA TAČNOST RAZNOVRSNOST
  • 7. 7/44 © Nikola Klem 2006-2011. 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.
  • 8. 8/44 © Nikola Klem 2006-2011. 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.
  • 9. 9/44 © Nikola Klem 2006-2011. 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.
  • 10. 10/44 © Nikola Klem 2006-2011. 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).
  • 11. 11/44 © Nikola Klem 2006-2011. 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.
  • 12. 12/44 © Nikola Klem 2006-2011. ALGORITMI Grafički simbol Značenje Terminator Unošenje podataka Izdavanje podataka Obrada podataka Odluka Povezivanje algoritamskih koraka
  • 13. 13/44 © Nikola Klem 2006-2011. 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.
  • 14. 14/44 © Nikola Klem 2006-2011. ALGORITMI Linijska struktura Algoritamski koraci se izvršavaju jedan za drugim redosledom kojim su napisani. Primer Algoritam za zamenu točka na automobilu. POČETAK KRAJ 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
  • 15. 15/44 © Nikola Klem 2006-2011. ALGORITMI Razgranata struktura Struktura algoritma u kojoj tok operacija zavisi od ispunjenosti nekih uslova zove se razgranata struktura. Primer Algoritam za prelazak ulice sa semaforom. POČETAK KRAJ 1. Stani ispred kolovoza 2. Pogledaj semafor Zeleno svetlo DA NE 3. Pređi ulicu 3. Čekaj zeleno svetlo 4. Pređi ulicu
  • 16. 16/44 © Nikola Klem 2006-2011. 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.
  • 17. 17/44 © Nikola Klem 2006-2011. ALGORITMI 2. Uzmi praznu bocu 3. Napuni je vodom 4. Zatvori bocu 5. Odloži punu bocu KRAJ 6. Zatvori vodu POČETAK 1. Otvori vodu Ponovi 10 puta Konstantna ciklička struktura Uslovna ciklička struktura Nema vozila 4. Pređi ulicu 3. Sačekaj malo KRAJ POČETAK 1. Stani ispred kolovoza DA NE 2. Pogledaj levo i desno
  • 18. 18/44 © Nikola Klem 2006-2011. ALGORITMI Složene algoritamske strukture Složene algoritamske strukture sastoje se od proizvoljnog broja, proizvoljnih kombinacija osnovnih algoritamskih struktura.
  • 19. 20/44 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 2006-2011.
  • 20. 21/44 ALGORITMI Na svakom nivou postoji algoritam za rešavanje problema. Svaki modul može da se zameni drugim modulom koji mu je funkcionalno ekvivalentan. "TOP-DOWN" PROJEKTOVANJE © Nikola Klem 2006-2011.
  • 21. 22/44 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 2006-2011.
  • 22. 23/44 © Nikola Klem 2006-2011. FUNKCIONALNA ŠEMA RAČUNARA ULAZNE JEDINICE IZLAZNE JEDINICE JEDINICE SPOLJNE MEMORIJE KONTROLNA JEDINICA UNUTRAŠNJA MEMORIJA ARITMETIČKO LOGIČKA JEDINICA
  • 23. 24/44 © Nikola Klem 2006-2011. Komunikacija sa računarom 01100111101
  • 24. 25/44 © Nikola Klem 2006-2011. 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.
  • 25. 26/44 © Nikola Klem 2006-2011. 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
  • 26. 27/44 © Nikola Klem 2006-2011. 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
  • 27. 28/44 © Nikola Klem 2006-2011. Programski jezici - prevođeni (compiled) - interpretativni (interpreted) - intermedijarni (intermediate)
  • 28. 29/44 © Nikola Klem 2006-2011. 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
  • 29. 30/44 © Nikola Klem 2006-2011. 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.
  • 30. 31/44 © Nikola Klem 2006-2011. 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.
  • 31. 32/44 © Nikola Klem 2006-2011. 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.
  • 32. 33/44 © Nikola Klem 2006-2011. 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.
  • 33. 34/44 © Nikola Klem 2006-2011. Programski jezici Svaki programski jezik se sastoji od:  Skupa znakova,  Rečnika,  Sintakse (pravila gramatike),  Semantike (značenja svake naredbe).
  • 34. 35/44 © Nikola Klem 2006-2011. 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.
  • 35. 36/44 © Nikola Klem 2006-2011. 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).
  • 36. 37/44 © Nikola Klem 2006-2011. 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.
  • 37. 38/44 © Nikola Klem 2006-2011. 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.
  • 38. 39/44 © Nikola Klem 2006-2011. 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.
  • 39. 40/44 © Nikola Klem 2006-2011. 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.
  • 40. 41/44 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. 42/44 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. 43/44 © Nikola Klem 2006-2011. 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.