26
OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 1 - ALGORITMI I PROGRAMSKI JEZICI Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović

OSNOVE PROGRAMIRANJA U PAJTONU - grf.bg.ac.rs · - Viši programski jezik (VPJ) –Pajton, Java, C/C++/C#, ... naredbe u prirodnom jeziku koje se prevode u niz mašinskih instrukcija,

  • Upload
    others

  • View
    35

  • Download
    0

Embed Size (px)

Citation preview

OSNOVE PROGRAMIRANJA U PAJTONU

PREDAVANJE 1 - ALGORITMI I PROGRAMSKI JEZICI

Miloš Kovačević

Đorđe Nedeljković

Marija Petronijević

Dušan Isailović

SADRŽAJ PREDAVANJA

- Sistemi, modeli, procesi i informacije

- Model računara

- Algoritmi i heuristike

- Prevođenje i interpretacija

- Zašto Pajton?

SISTEM I MODEL

Svet možemo da posmatramo kroz sisteme

Primeri: zgrada (materijalni), srpski jezik (nematerijalni)

Sastoji se od delova (podsistema) koji međusobno interaguju

Sistemi se izučavaju preko modela

Model je pojednostavljenje sistema namenjen specifičnoj upotrebi

Pojednostavljenje se izvodi kroz proces apstrahovanja

PROCES APSTRAHOVANJA

Primer apstrahovanja:

Zgrada - materijalni sistem

Osnova zgrade - model za uređenje entrijera

Tačka na mapi - model u sistemu za navigaciju

nivo apstrakcije kompleksnost

PROCES

ulazi izlazi

Sistem se može posmatrati kroz procesekoji se odvijaju između njegovih delova

Proces – skup aktivnosti kojim se može menjati stanje sistema

Primer: proces fotosinteze – menja stanje biljke (biološki sistem)

Ulazi i izlazi iz procesa:

Sunčeva energija + voda + CO2 => => kiseonik + šećeri

PODATAK I INFORMACIJA

Podaci o sistemu i njegovim interakcijama sa okruženjem dobijaju se opažanjem, merenjem, itd.

Podaci stavljeni u odgovarajući kontekst postaju informacije

7.8 7.8°C, prosečna tmin u Beogradu, u aprilu

Na osnovu informacija razumemo šta se dešava u sistemu (da bismo upravljali sistemom ili predvideli njegovo ponašanje)

podatak informacija

INFORMACIJE

Podaci (informacije) se prenose, obrađuju i skladište

Podatke (informacije) treba pogodno reprezentovati – kodiranje

Reprezentacija zavisi od primene

Reaktor (sistem)

termometar

Reprezentacija T pogodna za prenos

Računar

0010011101...

Reprezentacija T pogodna za obradu i skladištenje

RAČUNAR I PROGRAM

Računar je sistem za obradu podataka (informacija)

Program - skup instrukcija za obradu podataka

Program se može shvatiti i kao računarski model sistema ili procesa

Fon Nojmanov model računara

MODEL RAČUNARA

Memorija:

• sadrži program i podatke – binarna apstrakcija (biti)

• lokacija podatka opisana je adresom

• brzina pristupa memoriji ne zavisi od lokacije (~10-7 s)

Binarna reprezentacija: n bita – 2n različitih podataka

• 8 bita – jedan bajt (256 podataka)

• Memorijska reč obično 4 ili 8 bajta

Memorija

CPU

0100...1010adresa x

upis

čitanje

KODIRANJE PODATAKA

A 0 0 0 0B 0 0 0 1C 0 0 1 0D 0 0 1 1E 0 1 0 0F 0 1 0 10 0 1 1 01 0 1 1 12 1 0 0 03 1 0 0 14 1 0 1 05 1 0 1 16 1 1 0 07 1 1 0 18 1 1 1 09 1 1 1 1

Preslikavanje simbola u nizove bita

n bita – 2n simbola

simbol biti

Moguće preslikavanje

KAPACITET MEMORIJE

Meri se u bajtima (8 bita) – oznaka B

Veće jedinice umnošci od 1024 (210):

1024B = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

U prenosu informacija brzina prenosa izražava se u bitima (malo b), odnosno u umnošcima od 1000:

1000b/s = 1Kb/s, 1000Kb/s = 1Mb/s, 1000Mb/s = 1Gb/s

MODEL RAČUNARA

Procesor

• čita instrukcije iz memorije i dekodira ih

• obavlja aritmetičke i logičke operacije

• čita i upisuje podatke

• jedna instrukcija traje ~10-9 s (procesor od 1GHz)

Obično se između procesora i memorije nalazi keš memorija (~10-8 s).

Fon Nojmanov model podrazumeva sekvencijalnu obradu (instrukcija za instrukcijom).

Moderne arhitekture računara uvode paralelizam u izvršavanju.

CPU

Memorija

0100...1010adresa x

upis

čitanje

MODEL RAČUNARA

Ulazne i izlazne jedinice:

• ulazne: tastura, miš, bar-kod čitač, senzor...

• izlazne: monitor, štampač, ...

Spoljna memorija:

veliki kapacitet (meri se u TB)

perzistentnost (podaci opstaju po prestanku napajanja)

vreme pristupa podacima:

• Hard disk (vreme pristupa ~10-3 s)

• SSD disk (vreme pristupa ~10-4 s)

Procesor je obično brži od radne memorije oko 100 puta, a od diska 1000 000 puta!

ALGORITMI

Algoritam - precizan opis postupka za rešavanje nekog problema

ALGORITMI

ALGORITMI

U opštem slučaju, potreban je algoritam za proizvoljne brojeve x i y:

Postaviti rezultat z na nulu pa proveriti da li je x veće od y.

Ako jeste, y puta dodavati broj x na broj z.

U suprotnom, x puta dodavati broj y na broj z.

x i y – ulazne veličine (ulaz), z – izlazna veličina (izlaz)

ulaz A(ulaz) izlaz

Uočiti vezu algoritma A sa funkcijama u matematici:

Da bi postupak bio algoritam, mora biti tačan za sve ulaze.

Potreban je dokaz korektnosti – u primeru množenja dokaz je trivijalan.

ALGORITMI

Opis algoritma u prirodnom jeziku (nepogodno za složeniji postupak):

Postaviti rezultat z na nulu pa proveriti da li je x veće od y.Ako jeste, y puta dodavati broj x na broj z. U suprotnom, x puta dodavati broj y na broj z.

Formalni zapis algoritma za složenije postupke - pseudokod:

ALGORITMI

Formalni zapis algoritma: za složenije postupke – dijagram toka

Uklapa se u sekvencijalnu prirodu obrade iz Fon Nojmanovog modela računara.

ALGORITMI

Algoritam grube sile (brute force): probaju se sve mogućnosti

Algoritam 1: probamo redom sve do pogotka.

1, 2, 3, ..., 73, ..., 100

ALGORITMI

Algoritam 2: polovimo skup mogućih preostalih rešenja.

1, 2, 3, ..., 50, 51,..., 73, ..., 100

1, 2, 3, ..., 50, 51,..., 73, 74, 75, ...

51,..., 73, 74, 75, ..., 100

...

73

Koliko puta polovimou najnepovoljnijem slučaju?

log2100

Algoritam podeli pa vladaj (divide and conquer): problem se deli na jednostavnije potprobleme

ALGORITMI – EFIKASNOST JE BITNA!

0

200

400

600

800

1000

1200

1 2 3 4 5 6 7 8 9 10 11

Efikasnost algoritma

A1 (gruba sila) A2 (podeli pa vladaj)

bro

j poku

šaja

n (x100)

HEURISTIKE

Konačan niz koraka iz konačnog skupa elementarnih operacija koji ne rešava problem u opštem slučaju – heuristika

Koriste se kada algoritam ne postoji, ili je neefikasan u datom kontekstu.

Rešiv grubom silom.Koliko različitih putanja?

(n-1)!neefikasno

HEURISTIKE

Procesor 1GHz, 109 instrukcija po sekundi (nerealno), gruba sila - jedna putanja po instrukciji (nerealno):

- za n = 15, 22 minuta

- za n = 18, 4.12 dana

- za n = 21, 77.1 godina

Rešavamo heuristikom - na primer pohlepna heuristika (greedy approach):

Pohlepna heuristika - u svakom gradu biramo najbliži sledeći grad

PROGRAMSKI JEZICI

Algoritmi i heuristike realizuju se uz pomoć programskih jezika:

- Mašinski jezik

procesorske instrukcije reprezentovane nulama i jedinicama, rade sa memorijskim lokacijama, realizuju aritmetičko-logičke operacije (sabiranje, da li je nula, ...)

- Asemblerski jezik

skraćenice koje predstavljaju mašinske naredbe, mogućnost grupisanja naredbi pod istim imenom, olakšava programiranje

- Viši programski jezik (VPJ) – Pajton, Java, C/C++/C#, ...

naredbe u prirodnom jeziku koje se prevode u niz mašinskih instrukcija, bliže problemu koji se rešava - izražajnost, produktivnost nezavisnost od tipa procesora - prenosivost

nivo apstrakcije

PROGRAMSKI JEZICI

Prevođenje: generisanje mašinskih naredbi iz naredbi VPJ. Obavlja se pre pokretanja programa, uz mogućnost optimizacije mašinskih naredbi

Interpretacija: interpreter izvršava program u VPJ „naredba po naredba“. Naredba se izvršava uz pomoć već prevedenih funkcionalnosti unutar interpretera. Pristup bez optimizacije, sporije izvršavanje, ali povećana produktivnost (nema prevođenja)

ZAŠTO PAJTON?

Univerzalan jezik

Jednostavan za učenje (interpretira se)

Jezik otvorenog koda (obilje biblioteka za inženjerske primene)

Popularan

Na kursu se uči verzija 3.x