Professional Documents
Culture Documents
Kolekcije i petlje
Numpy i Matplotlib
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Osnovni pojmovi
PROMENLJIVE I FUNKCIJE , ARITMETI CKI I LOGI CKI OPERATORI , USLOVNO IZVRAVANJE KODA
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Uzmi
plavu olovku
levom rukom
Funkcija. ta da se uradi?
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
P RIMER
Primer 1: Ispisivanje poruke na ekranu
print(Zdravo drugari!)
Zdravo drugari!
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
F UNKCIJE U P Y T H O N - U
O SNOVNI POJMOVI
Svaka funkcija u Python-u je jednozna cno odredena svojim imenom. Pozivanjem funkcije od ra cunara se zahteva da se funkcija izvri. Svaka funkcija moe imati ni jedan, jedan ili vie argumenata. Argumenti blie odreduju na cin na koji se funkcija izvrava. Argumentima se, takode, mogu prosledivati informacije neophodne za izvrenje naredbe. Funkcije mogu biti ugradene ili mogu biti denisane od strane korisnika. Zapravo, moemo razlikovati tri vrste funkcija 1 Funkcije koje su ugradene (built-in), denisane u samom Python-u 2 Funkcije koje moramo uvoziti iz spoljanjih paketa (package) i modula (module) (objasni cemo kasnije ...). Neke od ovih funkcija su denisali stvaraoci Python-a. Na raspolaganju su, medutim, i mnogobrojni paketi posebne namene koje su projektovali i implementirali ljudi koji nemaju neposrednog kontakta sa razvojnim timom Python-a. 3 Korisni cke funkcije Funkcije koje deniemo mi sami.
Poziv funkcije
ime_funkcije (argument1, argument2, ...)
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
P ROMENLJIVE
Promenljiva Daj plavu olovku Milanu Argumenti. ta? Kome?
Naredba. ta da se uradi?
Promenljive su imena koja opisuju vrednosti, podatke, medurezultate u prora cunima, te uopte bilo koje objekte u programu kojima c emo pristupati kasnije. Poput naredbi (funkcija), i promnljive imaju svoja imena. Promenljive se veoma c esto koriste kao argumenti naredbi (funkcija).
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Svaka promenljiva se, sem imenom, karakterie i svojim tipom. Tip promenljive odreduje prirod informacije koju promenljiva nosi. Poput naredbi, tipovi promenljivih mogu biti ugradeni, denisani u odgovaraju cem spoljnjem paketu ili modulu, a moemo ih denisati i mi sami. Tip promenljive ceo broj (int) realan broj (float) logi cka vrednost (bool) tekst (str) Primeri 1, -6, ... 1.0, -3.14, 6.22e-8, ... True, False Proizvoljan niz karaktera, ...
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
D ODELA VREDNOSTI
O PERACIJA =
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Operacija sabiranje (+) oduzimanje (-) mnoenje (*) deljenje (/) celobrojno deljenje (//) ostatak pri deljenju (%) stepenovanje (**)
Primeri
x x x x x = = = = = 1 + 2 # x <- 3 1 // 2 # x <- 0 1 / 2 # x <- 0 ili x <- 0.5 u zavisnosti od verzije. 1.0 / 2 # x <- 0.5! Prvi argument je realan! 1 / 2.0 # x <- 0.5! Drugi argument je realan!
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Operacija logi cko i (and) logi cko ili (or) logi cko ne (not)
and T F T F T F F F T F
or T T T
F T F
not T F F T
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
O PERACIJE POREENJA
L OGI CKE OPERACIJE NAD NUMERI CKIM VREDNOSTIMA
Operacija jednako (==) ve ce od (>) manje od (<) ve ce ili jednako od (>=) manje ili jednako od (<=) nejednako (razli cito) (<> ili !=)
Operacije poredenja su denisane i za mnoge nenumeri cke tipove podataka. Svaka od ovih operacija se moe denisati i za proizvoljne tipove podataka koje denie korisnik. Sloena poredenja se mogu na ciniti pomo cu logi ckih operacija, recimo: x>3 and x<=18 and (x % 2 != 0) je ta cno za sve parne brojeve izmedu 3 i 18.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
U SLOVNO IZVRAVANJE
N AREDBE if I if-else
Uslovno izvravanje koda omogu cava da se dati deo koda izvri samo pod uslovom da je odredeni uslov zadovoljen.
Dvota cka ozna cava kraj uslova. uslov : Naredbe... Dvota cka ozna cava kraj. : else Naredbe...
if
Primer
if y>6: x = 3
Primer
if y>6: x = 3 else: x = 2
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Primer
x = abs(-2) # x <- 2. print(x) # Ispisuje 2 na ekranu. a, b = divmod(4, 3) # a <- 1, b <- 1
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
D EFINISANJE FUNKCIJA
Kada se neki deo koda u istom ili sli cnom obliku ponavlja iznova i iznova, pogodno ga je denisati u obliku funkcije. Modularizacija koda (podela na manje segmente jasno denisane namene) poeljna je (i neophodna) iz vie razloga > Funkcija se denie na jednom mesto, a poziva proizvoljan broj puta. > Funkcija se moe testirati nezavisno od koda u kome c e se pozivati. > Sve izmene treba vriti na jednom i samo jednom mestu.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
D EFINISANJE FUNKCIJA
Primer
Denisati funkciju koja za dati uneti broj (nazovimo ga x) vra ca broj x + 6, ako je x paran broj, a x/2 ako je x neparan broj.
Denicija funkcije
def primer (x): if x % 2 == 0: # Ispitujemo da li je x paran broj. return x+6 # Ako jeste, vracamo x+6. else: return x/2 # Ako nije, vracamo x/2.
Poziv funkcije
y = primer(6) print(y)
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
D EFINISANJE FUNKCIJA
A LTERNATIVNO , CITKIJE REENJE
Jedan od razloga zbog koga je zgodno i potrebno denisati funkcije jeste radi pove canja c itljivosti koda. Python je jezik koji je c uvan po c itljivosti svog programskog koda (sa tom je namenom i projektovan). Konstrukt if x % 2 == 0 se nakon dovoljno dugo vremena moe u ciniti ne citkim (naro cito ukoliko ne proveravate parnost brojeva na ovaj na cin tako c esto). Umesto toga, korisnije je denisani posebnu funkciju koja samo proverava parnost, a potom tu funkciju koristiti u uslovu.
def primer (x): if is_even(x): # Ispitujemo da li je x paran broj. return x+6 # Ako jeste, vracamo x+6. else: return x/2 # Ako nije, vracamo x/2.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Uslovna dodela vrednosti omogu cava da se na c itkiji, jednostavniji na cin promenljivoj dodeli vrednost u zavisnosti od ispunjenosti nekog uslova.
Sintaksa
promenljiva = vrednost 1 if uslov else vrednost 2
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Kolekcije i petlje
LISTE , N - TORKE , SKUPOVI , RE CNICI
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
K OLEKCIJE
Kao to im i samo ime kae, kolekcije su objekti koji slue za grupisanje i organizaciju drugih objekata. Kolekcije se medu sobom razlikuju prema strukturi (odnosno prema uredenju objekata koje sadre), te prema performansama. Pozivom len(k) dobija se broj elemenata kolekcije k. Pripadnost elementa e kolekciji k proverava se konstrukcijama e in k, odnosno e not in k. list Lista predstavlja niz objekata koji slede jedan iza drugog. Svaki objekat se na jedinstven na cin moe identikovati pomo cu indeksa. Indeks predstavlja rednu broj objekta u listi, pri c emu se po cetni objekat indeksira nulom, a potonji objekti jedan za drugim brojevima 1, 2, ... Poslednji objekat ima indeks L-1, gde je L duina liste (broj objekata koji su u njoj sadrani). tuple N-torka je strukturno identi cna listi, razlika je u performansama i na cinu upotrebe. dict Re cnik predstavlja skup parova klju c/vrednost, pri c emu je klju c identikator koji na jedinstven na cin identikuje vrednost. Re cnik je, u sutini, preslikavanje koje svakom klju cu pridruuje vrednost na jedinstven na cin. set Neureden skup objekata koje se ne mogu ponavljati.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
L ISTE
elementi indeksi 1 0 4 1 8 2 9 3
Primeri
x y z q = = = = [1, 4, 8, 9] # Lista elemenata [] # Prazna lista [2.0, Zdravo] # Lista koja sadrzi raznorodne elemente [Zdravo, [1.3, 2], []] # Lista koja sadrzi druge liste
Lista predstavlja niz objekata (proizvoljnog tipa, objekti u istoj listi mogu biti raznorodni, a neki ili svi i sami mogu biti liste). Svakom elementu liste na jednozna can na cin se pridruuje nenegativan ceo broj koji nazivamo indeksom. Kaemo da se lista indeksira od nule.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
I NDEKSIRANJE LISTI
P RISTUPANJE ELEMENTIMA LISTE ...
Indeksiranje jeste pristupanje elementima liste po rednom broju, po cev od 0. Indeksiranje se vri pomo cu uglastih zagrada: ime_liste[indeks].
Primer
lst = [a, b, c, d] # Definisanje liste print(lst[0]) # Na ekranu se ispisuje a. lst[1] = 2 # Element b se zamenjuje sa 2. Ukoliko se zahteva element koji ne postoji u listi (recimo da lista ima ukupno 5 elemenata, sa zahteva se 10-ti), javlja se greka. Duina liste, odnosno broj elemenata u listi, dobija se pozivom funkcije len. Lista se moe indeksirati i negativnim brojevima. Tada je -1 poslednji, -2 predposlednji, itd. broj u listi.
Primer
N = len(lst) # Promenljiva N sadrzi broj elemenata liste. lst[N] Grska! Psolednji element liste indeksira se sa N-2
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Primeri sa korakom
lst x = y = z = = [a, b, c, d] # Definisanje liste lst[1:4:2] # x <- [b, d] lst[::2] # x <- [a, c] (svaki drugi element) lst[::-1] # x <- [d, c, b, a] (obrnuti poredak)
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
O BJEKTI
O SNOVNI ELEMENTI OBJEKTNO - ORIJENTISANOG PROGRAMIRANJA
Svaki element programskog koda u Python-u je objekat (u OO smislu). su i Brojevne i logi cke konstante su objekti, tekst je objekat, liste su objekti. Cak same funkcije, moduli i paketi zapravo objekti u Python-u. Objekat se moe shvatiti kao podatak (ili skup podataka) sa pridruenim ponaanjem. Uoptenje pojma tipa podataka je klasa klasa je tip objekta. Objekti mogu biti medusobno povezani raznolikim vezama. Za nae primene, upotreba objekata se moe smatrati naprednom tehnikom programiranja. Ipak, razumevanje elementarne sintakse OO programiranja u Python-u je neophodno.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
O BJEKTI
F UNKCIJE CLANICE
Funkcije c lanice su funkcije koje pripadaju nekom objektu. Funkcije c lanice opisuju ponaanje klase. Funkcije c lanice se pozivaju na speci can na cin: ime_objekta.ime_funkcije(arg1, arg2, ...) Ime objekta ima dvojaku ulogu:
> Sa jedne strane, ime objekta je deo imena funkcije. Funkcija pripada objektu, pa je ime objekta deo imena same funkcije. Takav ablon imenovanja se javlja na vie mesta u Python-u. > Sa druge strane, sam objekat je prvi argument funkcije c lanice svaka funkcija c lanica moe da pristupa podacima koji pripadaju objektu.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
append lst.append(e) dodaje element e na kraj liste lst. extend lst.extend(l) dodaje sve elemente liste l na kraj liste lst. insert lst.insert(index, object) ume ce objekat pre indeksa index. Nakon umetanja lst[index] c e biti jednako object. index lst.index(value) vra ca indeks na kome se vrednost value pojavljuje prvi put. Dodatnim argumentima mogu se specicirati po cetni i krajnji indeks pretrage. U slu caju da traeni element ne postoji, javlja se greka. count lst.count(value) vra ca broj ponavljanje vrednosti value u listi. remove lst.remove(value) uklanja prvo pojavljivanje vrednosti value u listi. Javlja greku ukoliko data vrednost ne postoji.
Bitna operacija nad listama koja nije implementirana kao funkcija c lanica jeste uklanjanje elementa po indeksu. Ova operacija se vri pomo cu ugradene funkcije del. Tako recimo, del(lst[i]) uklanja element sa indeksom i iz liste.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
N- TORKE (tuples)
Koncepcijski, N-torke se ne razlikuju od listi predstavljaju uredene skupove vrednosti koje se mogu ponavljati. Svaka vrednost je na jednozna can na cin odredena svojim rednim brojem (indeksom). N-torke se deniu na sli can na cin kao liste, jedino se uglaste zagrade zamenjuju obi cnim. Recimo (1, 2). N-torke se indeksiraju na isti na cin kao i liste. Za razliku od listi koje su osmiljene kao eksibilni, promenljivi objekti (mutable) N-torke su osmiljene kao kruti, nepromenljivi objekti (immutable). Posledi cno, neke od operacija koje moemo vriti na listama (kao to je umetanje vrednosti, uklanjanje elementa i sl.) ne mogu se vriti nad N-torkama. Sa druge strane, operacije koje se mogu vriti nad N-torkama obi cno su znatno ekasnije od odgovaraju cih operacija nad listama. N-torke se iroko koriste pri implementaciji razli citih funkcionalnosti u samom Python-u.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
N- TORKE (tuples)
O PERACIJE NAD N - TORKAMA
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
P ETLJE
O SNOVNI POJMOVI
Petlje su programske konstrukcije koje omogu cavaju da se deo koda izvrava ve ci broj puta. Razlikujemo dve vrste petlji:
for-petlja Nabrojiva ili for petlja jeste petlja u kojoj se kod izvrava po jednom za svaki element neke sekvence (recimo liste ili N-torke). while-petlja Nenabrojiva ili while petlja jeste petlja u kojoj se kod izvrava sve dok je neki logi cki uslov ispunjen.
Uslov
Telo
Iteracija predstavlja jedan ciklus petlje (odnosno skup operacija koje se izvre u jednom ciklusu). for petlja se izvrava unapred poznat broj iteracija. while petlja se izvrava broj puta koji je unapred (u principu) nepoznat - iteracije slede jedna za drugom sve dok je uslov ispunjen.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
for PETLJA
Denisano sintaksom
for
in
sek
Naredbe ...
Promenljiva denisana u petlji koja u svakoj iteraciji uzima slede cu vrednost iz sekvence.
Naredbe ...
Sekvenca kroz koju se iterira.
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Veoma c esto (gotovo uvek) elementima liste je zgodno pristupati po indeksu. To je naro cito slu caj ukoliko jednovremeno treba pristupati ve cem broju listi, ili ukoliko je potrebno prostupati prethodnom i slede cem elementu datog elementa. Tada se koristi ugradena funkcija range. range(N) vra ca sekvencu c iji su elementi 0, 1, ..., N-1. Postoji i varijanta naredbe kojom se mogu zadati i po cetni indeks, kao i korak (sli cno kao kod se cenja liste).
Primer
# Kod koji u listu a upisuje kvadrate elemenata u listi b for i in range(len(a)) : b[i] = a[i]**2
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
while PETLJA
Denisano sintaksom
while
Osnovni pojmovi
Kolekcije i petlje
Numpy i Matplotlib
Numpy i Matplotlib
O SNOVI
PAKETA N U M P Y I M A T P L O T L I B