predavanje_1___algoritmi_1392904331353

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

Upload: ivan-milicevic

Post on 25-Sep-2015

214 views

Category:

Documents


1 download

DESCRIPTION

osnove programiranja

TRANSCRIPT

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

    Graevinski fakultet

    Univerziteta u Beogradu

    OSNOVE PROGRAMIRANJA
    LEKCIJA I - ALGORITMI

    Beograd, 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 koraka

    Nikola 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 struktura

    Nema 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 RAUNARA

    Koraci:

    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 RAUNARA

    Koraci:

    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 podaci

    Svaki tip podataka ima odgovarajui tip konstante.

  • Nikola Klem

    2006-2011.

    Nikola Klem2006-2011.