OSNOVE PROGRAMIRANJA LEKCIJA I - ALGORITMI

Slides:



Advertisements
Similar presentations
Programi zasnovani na prozorima
Advertisements

Uvod u programiranje - matematika – VI predavanje
Operativni sistemi.
PONAVLJANJE CheckBox Koristi se za rešavanje zadataka gde je potrebno omogućiti uključivanje ili isključivanje jedne ili više opcija. Važna svojstva: –Checked.
Algoritamske/programske strukture
Algoritmi raspoređivanja
Struktura i princip rada računara
Programiranje - Blokovi naredbi i logički tipovi –
Teorema o 4 boje(Four color theorem)
Naredbe ciklusa.
Programiranje u VB Uvod
Programiranje u VB Osnove
DNS mr Milovan B. Ivanović, dipl. inž. el.
Programiranje Uvod Nikola Vlahović.
IF NAREDBA – naredba grananja
Upitni jezik SQL.
Microsoft Office 2007 MS Office je programski paket koji sadrži više programa: MS Word – program za obradu teksta MS Excel – program za izradu tabela sa.
Multimedijalna e-Learning platforma
Quick Basic.
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
PROGRAMSKE PETLJE Milenković Gabrijela.
KAKO RADI INTERNET.
Komponente izbora i kontejnerske komponente
Uvod u HTML Zoltan Geller 2017
Explore-plots Katarina Jeremić 143/2011 Jovana Vulović 33/2011
Klauzule GROUP BY i HAVING
Sintaksa programskih jezika
KREIRANJE OBJEKATA.
Europski dan programiranja
Uvod u programiranje - matematika – X predavanje
Izrada web-stranica.
Reference ćelije i opsega
Razvoj Web aplikacija Ajax.
Elektrotehnički fakultet – Podgorica Operativni sistemi
14 UNUTRAŠNJE I ANONIMNE KLASE
Elementi programskog jezika PASCAL
Arrays and strings -1 (nizovi i znakovni nizovi)
LAPLACEOVA TRANSFORMACIJA
Arhitektura računarskog sistema
Naredba Case Višestruko grananje.
Element form Milena Kostadinović.
MessageBox.
Programski jezici Po stepenu zavisnosti programskog jezika od računara programske jezike delimo na: mašinski zavisne (mašinski i simbolički jezik) mašinski.
Pojmovi digitalnog zapisa
Ključne reči,identifikatori, konstante i promenljive
PROGRAMSKI JEZIK PASCAL
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
Lazarus okruženje TIPOVI UNIT-a
Osnovni simboli jezika Pascal
Razvojne okoline Kolegij: Programski jezik C++ Ak. god. 2017/2018
Do While ... Loop struktura
Virtualizacija poslovnih procesa metodom „Swimlane“ dijagrama
MagistralA (bus) Milan Milovanovic I6.
Osnovne karakteristike
Programiranje – Small Basic
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
C++ WORKSHOP Šimec Tino - FOI.
Skup instrukcija procesora
Naredbe u php-u.
Programski jezik C++ - Vježbe - 5. dio
Programski jezik Python
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Kratkotrajne veze žena i muškaraca
Programiranje - Naredbe za kontrolu toka programa – 3. dio
LimeSurvey Uvjetni prikaz pitanja Internetska istraživanja
7. Baze podataka Postavke MS Accessa.
Ponavljanje Pisana provjera
Programiranje - Naredbe za kontrolu toka programa – 1. dio
INTERPOLACIJA PO DIJELOVIMA POLINOMIMA
Presentation transcript:

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.

Šta je računarski sistem? © 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. © 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. © 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) © Nikola Klem 2006-2011.

PREDNOSTI KORIŠĆENJA RAČUNARA BRZINA TAČNOST RAZNOVRSNOST © Nikola Klem 2006-2011. © 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. © 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. © 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. © 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). © 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. © Nikola Klem 2006-2011.

ALGORITMI Grafički simbol Značenje Terminator Unošenje podataka Izdavanje podataka Obrada podataka Odluka Povezivanje algoritamskih koraka © 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. © Nikola Klem 2006-2011.

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 2006-2011. KRAJ

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

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 2006-2011. Konstantna ciklička struktura 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 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 2006-2011.

"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 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 2006-2011.

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

Komunikacija sa računarom 01100111101 © 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. © 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 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 Klem 2006-2011.

Programski jezici - prevođeni (compiled) interpretativni (interpreted) intermedijarni (intermediate) © 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 © 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. © 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. © 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. © 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. © Nikola Klem 2006-2011.

Programski jezici Svaki programski jezik se sastoji od: Skupa znakova, Rečnika, Sintakse (pravila gramatike), Semantike (značenja svake naredbe). © 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. © 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). © 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. © 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. © 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. © 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. © Nikola Klem 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.

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.

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

K R A J © Nikola Klem 2006-2011.