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