predavanje_1___algoritmi_1392904331353
DESCRIPTION
osnove programiranjaTRANSCRIPT
-
Prof. dr Nikola Klem, dipl.el.in.
Graevinski fakultet
Univerziteta u Beogradu
OSNOVE PROGRAMIRANJA
LEKCIJA I - ALGORITMIBeograd, k. god. 2010/2011.
1.unknown -
Nikola Klem
2006-2011.
ta je raunarski sistem?
Nikola Klem2006-2011.
2.unknown -
Nikola Klem
2006-2011.
ta je raunarski sistem?
Raunar je elektronska maina koja obrauje ulazne podatke ili informacije (INPUT) i proizvodi iz njih nove podatke ili izlazne informacije (OUTPUT).
Raunar obrauje podatke na osnovu programa koji je napisan za odreenu primenu.
Program po kome raunar radi mora za vreme izvravanja da bude u memoriji raunara.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ta je program?
Skup instrukcija za reavanje odreenog problema naziva se program.
Proces pisanja instrukcija za raunar naziva se programiranje.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Podela raunarskih sistema
SISD Single Instruction Single Data
SIMD Single Instruction Multiple Data (supercomputers)
MIMD Multiple Instruction Multiple Data (ultracomputers clusters)
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
PREDNOSTI KORIENJA RAUNARA
Nikola Klem
2006-2011.
BRZINA
TANOST
RAZNOVRSNOST
15.unknown16.unknown17.unknown -
Nikola Klem
2006-2011.
ALGORITMI
Persijski matematiar Al-Khowarizmi (Abu Ja'far Mohammed Ibn Musa al Khowarizmi ) u udbeniku matematike (oko 825. godine n.e.) prikazao je reenja nekih aritmetikih problema u obliku uputstava koja su se sastojala od tano odreenih osnovnih koraka.
Ovakva uputstva su kasnije nazvana algoritmima.
Razvojem raunara algoritmi su postali samostalno i vano podruje raunarskih nauka.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI ta je algoritam?
Algoritam je u optem sluaju konani redosled operatora, elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja reenja nekog problema.
Izvoenje svakog operatora predstavlja jedan algoritamski korak.
Sa raunarskog stanovita ova definicija nije dovoljna pa se mora dopuniti jo nekim uslovima koje algoritam mora da zadovolji. To su:
- definisanost,
- konanost i
- rezultat.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
Definisanost. Svaka operacija ili pravilo mora imati definisano i samo jedno znaenje, tj. rezultat svake operacije mora biti jasno definisan.
Konanost. Svaki korak mora biti takav da bi ga, bar u prinicipu, mogao izvesti ovek koristei olovku i papir za konano vreme.
Postoje jednostavni i jednoznani postupci koji nisu algoritmi jer su beskonani sa stanovita broja koraka potrebnog za dobijanje rezultata.
Algoritmi se moraju zaustaviti posle izvrenog konanog broja koraka i u konanom vremenu.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
U vezi sa primenom raunara treba napomenuti da vreme rada raunara potrebno za zavretak algoritma treba da bude razumno kratko.
Rezultat. Po zavretku algoritma mora da pos-toji mogunost da se ustanovi rezultat njegovog rada, odnosno da li je algoritam postigao svoj cilj ili nije.
Pojam algoritma ne mora biti vezan za primenu raunara. Algoritmi se koriste u svakodnevnom ivotu za izvravanje razliitih aktivnosti (na pr. kuvarski recepti).
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
Postoje razliite mogunosti za predstavljanje algoritma, ali se on najee pretstavlja grafiki pod imenom dijagram toka programa (flowchart).
U ovom dijagramu pojedine akcije predstavljene su tano odreenim grafikim simbolima ime se osigurava jednostavnost, preglednost i jednoznanost zapisa algoritma.
Najee korieni simboli su prikazani na sledeem slajdu.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
Grafiki simbolZnaenjeTerminatorUnoenje podatakaIzdavanje podatakaObrada podatakaOdlukaPovezivanje algoritamskih korakaNikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI Struktura algoritma
Pod strukturom algoritma podrazumeva se redosled izvravanja pojedinih vrsta algoritamskih koraka u algoritmu.
Sa stanovita ovog redosleda postoje tri osnovne algoritamske strukture:
- linijska,
- razgranata i
- ciklika.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
Linijska struktura
Algoritamski koraci se izvravaju jedan za drugim redosledom kojim su napisani.
Primer
Algoritam za zamenu toka na automobilu.
1. Pripremi dizalicu
2. Pripremi rezervni toak
3. Olabavi rafove na toku
4. Podigni auto
5. Odvrni rafove na toku
6. Skini toak
7. Stavi rezervni toak
8 . Zavrni rafove na toku
9. Spusti auto
10. Zategni rafove
11. Spremi dizalicu
12. Spremi rezervni toak
POETAK
KRAJ
Nikola Klem2006-2011.
-
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.
1. Stani ispred kolovoza
2. Pogledaj semafor
Zeleno svetlo
DA
NE
3. Prei ulicu
3. ekaj zeleno svetlo
4. Prei ulicu
POETAK
KRAJ
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
Ciklika struktura
Algoritam kod kog se odreeni broj algoritamskih koraka ponavlja vie puta ima cikliku strukturu.
Ako je broj ponavljanja dela algoritma poznat unapred struktura je konstantna (brojaki 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 Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
2. Uzmi praznu bocu
3. Napuni je vodom
4. Zatvori bocu
5. Odloi punu bocu
6. Zatvori vodu
1. Otvori vodu
Ponovi 10 puta
Konstantna ciklika struktura Uslovna ciklika strukturaNema vozila
4. Prei ulicu
3. Saekaj malo
1. Stani ispred kolovoza
DA
NE
2. Pogledaj levo i desno
KRAJ
POETAK
KRAJ
POETAK
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
ALGORITMI
Sloene algoritamske strukture
Sloene algoritamske strukture sastoje se od proizvoljnog broja, proizvoljnih kombinacija osnovnih algoritamskih struktura.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Nikola Klem2006-2011.
-
REAVANJE PROBLEMA
PRIMENOM RAUNARAKoraci:
1. Izbor i formulacija problema,
2. Analiza problema,
3. Izbor metoda za reavanje problema,
4. Projektovanje programa,
Nikola Klem
2006-2011.
-
ALGORITMI
Na svakom nivou postoji algoritam za reavanje problema.
Svaki modul moe da se zameni drugim modulom koji mu je funkcionalno ekvivalentan.
"TOP-DOWN" PROJEKTOVANJE
Nikola Klem
2006-2011.
6.unknown -
REAVANJE PROBLEMA
PRIMENOM RAUNARAKoraci:
1. Izbor i formulacija problema,
2. Analiza problema,
3. Izbor metoda za reavanje problema,
4. Projektovanje programa,
5. Kodiranje algoritma,
6. Ispitivanje korektnosti programa,
7. Izrada dokumentacije,
8. Odravanje programa.
Nikola Klem
2006-2011.
-
Nikola Klem
2006-2011.
FUNKCIONALNA EMA RAUNARA
ULAZNE
JEDINICE
IZLAZNE
JEDINICE
JEDINICE
SPOLJNE
MEMORIJE
KONTROLNA
JEDINICA
UNUTRANJA
MEMORIJA
ARITMETIKO
LOGIKA
JEDINICA
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Komunikacija sa raunarom
01100111101
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Tipovi jezika
Nieg nivoa:
Mainski,
Asemblerski (mainski orijentisani).
Vieg nivoa:
Proceduralno orijentisani (trea generacija),
Problemski orijentisani jezici,
Objektno orijentisani jezici.
Nikola Klem2006-2011.
-
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
Nikola Klem2006-2011.
-
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
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
- prevoeni (compiled)
interpretativni (interpreted) intermedijarni (intermediate)Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
Program se pie u izvornom jeziku (source language).
Raunar izvrava program u mainskom jeziku (object language).
IZVORNI
PROGRAM
PROGRAM
PREVODILAC
MAINSKI
KOD
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
Program prevodilac (compiler) prevodi program napisan u izvornom jeziku u mainski kod.
Proces prevoenja se zove kompilacija.
Kod asemblerskih jezika proces prevoenja se zove asemblovanje.
SVAKI RAUNAR MORA DA IMA PROGRAM PREVODILAC ZA SVAKI PROGRAMSKI JEZIK KOJI SE KORISTI.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
Cilj prevoenja ne mora uvek biti mainski kod.
To moe biti neki meujezik ili drugi programski jezik.
Na primer, iz FORTRAN-a u C++.
Ako je cilj prevoenja meujezik, onda se obino iz vie programskih jezika prevodi u meujezik, a zatim posebnim optimizacionim prevodiocem iz meujezika u mainski kod.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
Interpretativni i interaktivni programski jezici su jezici kod kojih svaka naredba moe da se tumai i izvrava nezavisno od ostalih programskih naredbi.
Interpreteri prepoznaju i izvravaju naredbe jednu po jednu, to olakava, ali i usporava rad programa, naroito kod ciklusa.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
Intermedijarni programski jezici su jezici kod kojih se izvorni kod prevodi u specijalni meujezik - meta-kod. Meta-kod je univerzalni vetaki kod koji ne moe da se izvri ni na jednom raunaru, ali je osmiljen da bude krajnje jednostavan za prevoenje u bilo koji mainski jezik.
Za svaki raunar se pie specijalni program (virtualna maina) koji izvrava meta-kod.
Primer: Java, byte-code, VM.
Nikola Klem2006-2011.
-
Nikola Klem
2006-2011.
Programski jezici
Svaki programski jezik se sastoji od:
Skupa znakova, Renika, Sintakse (pravila gramatike), Semantike (znaenja svake naredbe). -
Nikola Klem
2006-2011.
Struktura programa
Program je skup instrukcija (naredbi) za raunar, napisanih za reavanje jednog problema.
Naredbe programskog jezika formiraju se koristei rei iz renika programskog jezika i nazive koje programer dodeljuje memorijskim lokacijama u koje su uskladiteni podaci sa kojima se radi u programu, a prema pravilima sintakse jezika.
-
Nikola Klem
2006-2011.
Struktura programa
Svaka naredba se zavrava oznakom za kraj naredbe. U velikom broju programskih jezika oznaka za kraj naredbe je taka-zapeta (;).
Naredbe se izvravaju redosledom kojim su napisane, ukoliko taj redosled nije izmenjen posebnim naredbama za izmenu toka programa (grananje i ciklusi).
-
Nikola Klem
2006-2011.
Struktura programa
Naredbe programskog jezika mogu se podeliti u dve kategorije:
Izvrne i
Nezvrne.
Izvrne naredbe (naredbe koje raunar treba da izvri) su naredbe koje se u procesu prevoenja prevode u odgovarajui mainski kod.
-
Nikola Klem
2006-2011.
Struktura programa
Neizvrne naredbe (deklaracije) su naredbe kojima se daju uputstva programu prevodiocu neophodna za prevoenje 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 prevoenje programa i ne prevode se u mainski kod.
-
Nikola Klem
2006-2011.
Struktura programa
U veini programskih jezika u programu se, na poetku, pravi odeljak u kome su date neizvrne naredbe, a posle toga sledi blok sa izvrnim naredbama.
Tako se program prevodilac prvo upozna sa uputstvima za prevoenje programa, a zatim, sledei ta uputstva i pravila sintakse jezika, uitava naredbe iz bloka sa izvrnim naredbama i prevodi ih u mainski kod.
-
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,
Numeriki cifre 0,1,2,3,4,5,6,7,8,9
Specijalni zavisno od jezika (. , = ; + zagrade itd.)
Znakovi iz prva dva skupa (alfabetskih i numerikih) nazivaju se alfanumeriki.
-
Imena podataka
Podaci sa kojima program radi moraju za vreme izvravanja programa da se nalaze u memoriji raunara.
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.
-
Imena podataka
Postoje dve grupe memorijskih lokacija za podatke:
konstante - lokacije u kojima se podaci postavljaju pre poetka rada programa i ne menjaju tokom rada programa,
promenljive (varijable) - lokacije kod kojih se sadraj (podaci uskladiteni u njima) menjaju tokom rada programa.
-
Nikola Klem
2006-2011.
Tipovi podataka
Podaci sa kojima raunari rade se dele prema nainu njihovog skladitenja u memoriji raunara na sledee tipove:
celi brojevi, realni brojevi u obinoj tanosti realni brojevi u dvostrukoj tanosti znakovni podaci logiki podaciSvaki tip podataka ima odgovarajui tip konstante.
-
Nikola Klem
2006-2011.
Nikola Klem2006-2011.