You are on page 1of 43

Prof. dr Nikola Klem, dipl.el.inž.

Građevinski fakultet
Univerziteta u Beogradu

OSNOVE PROGRAMIRANJA
LEKCIJA I - ALGORITMI
Beograd, šk. god. 2010/2011.
Šta je računarski sistem?

© Nikola Klem 2/44


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.

© Nikola Klem 3/44


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.

© Nikola Klem 4/44


2006-2011.
Podela računarskih sistema

SISD – Single Instruction Single Data


SIMD – Single Instruction Multiple Data
(supercomputers)
MIMD – Multiple Instruction Multiple Data
(ultracomputers – clusters)

© Nikola Klem 5/44


2006-2011.
PREDNOSTI KORIŠĆENJA RAČUNARA

BRZINA TAČNOST

RAZNOVRSNOST

© Nikola Klem 6/44


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.

© Nikola Klem 7/44


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.
© Nikola Klem 8/44
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.
© Nikola Klem 9/44
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).
© Nikola Klem 10/44
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.

© Nikola Klem 11/44


2006-2011.
ALGORITMI
Grafički Značenje
simbol
Terminator
Unošenje podataka
Izdavanje podataka
Obrada podataka
Odluka
Povezivanje algoritamskih koraka

© Nikola Klem 12/44


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.

© Nikola Klem 13/44


2006-2011.
ALGORITMI POČETAK

Linijska struktura 1. Pripremi dizalicu


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

© Nikola Klem KRAJ 14/44


2006-2011.
ALGORITMI POČETAK

Razgranata struktura 1. Stani ispred kolovoza


2. Pogledaj semafor
Struktura algoritma u
kojoj tok operacija zavisi
od ispunjenosti nekih NE DA
Zeleno
uslova zove se svetlo
razgranata struktura.
3. Čekaj zeleno svetlo
3. Pređi ulicu
4. Pređi ulicu
Primer
Algoritam za prelazak
ulice sa semaforom.
KRAJ
© Nikola Klem 15/44
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.
© Nikola Klem 16/44
2006-2011.
POČETAK ALGORITMI 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 NE Nema vozila DA
5. Odloži punu bocu
3. Sačekaj malo
4. Pređi ulicu

6. Zatvori vodu

KRAJ KRAJ
© Nikola Klem 17/44
Konstantna ciklička struktura
2006-2011. Uslovna ciklička struktura
ALGORITMI

Složene algoritamske strukture

Složene algoritamske strukture sastoje se


od proizvoljnog broja, proizvoljnih
kombinacija osnovnih algoritamskih
struktura.

© Nikola Klem 18/44


2006-2011.
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/44


2006-2011.
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/44
2006-2011.
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/44
2006-2011.
FUNKCIONALNA ŠEMA RAČUNARA

JEDINICE
ULAZNE KONTROLNA UNUTRAŠNJA
SPOLJNE
JEDINICE JEDINICA MEMORIJA
MEMORIJE

IZLAZNE
JEDINICE ARITMETIČKO
LOGIČKA
JEDINICA

© Nikola Klem 23/44


2006-2011.
Komunikacija sa računarom

01100111101

© Nikola Klem 24/44


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.

© Nikola Klem 25/44


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

© Nikola Klem 26/44


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

© Nikola Klem 27/44


2006-2011.
Programski jezici

- prevođeni (compiled)
- interpretativni (interpreted)
- intermedijarni (intermediate)

© Nikola Klem 28/44


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 MAŠINSKI


PROGRAM PREVODILAC KOD

© Nikola Klem 29/44


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.

© Nikola Klem 30/44


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.

© Nikola Klem 31/44


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.

© Nikola Klem 32/44


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.
© Nikola Klem 33/44
2006-2011.
Programski jezici

Svaki programski jezik se sastoji od:


 Skupa znakova,
 Rečnika,
 Sintakse (pravila gramatike),
 Semantike (značenja svake naredbe).

© Nikola Klem 34/44


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.

© Nikola Klem 35/44


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).

© Nikola Klem 36/44


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.

© Nikola Klem 37/44


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.

© Nikola Klem 38/44


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.

© Nikola Klem 39/44


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.
© Nikola Klem 40/44
2006-2011.
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/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/44
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/44
2006-2011.
© Nikola Klem 44/44
2006-2011.

You might also like