![Page 1: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/1.jpg)
OSNOVE PROGRAMIRANJA U PAJTONU
PREDAVANJE 9 – KOLEKCIJE: SKUPOVI I REČNICI
Miloš Kovačević
Đorđe Nedeljković
Marija Petronijević
Dušan Isailović
![Page 2: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/2.jpg)
SADRŽAJ PREDAVANJA
- Skupovi
- Mape (Rečnici)
- Kombinatorne strukture, modul itertools
![Page 3: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/3.jpg)
SKUPOVI I MAPE
Za razliku od sekvenci (tekst, liste, torke), skupovi i mape predstavljaju neuređene kolekcije.
Neuređenost implicira da ne postoje indeksi koji govore o redosledu ubacivanja.
Skupovi su kolekcije nepromenljivih objekata koji ne sadrže duplikate.
Predstavljaju apstrakciju skupova iz matematike.
Mape sadrže parove objekata (preslikavanja tipa ključ - vrednost).
Objektima vrednostima pristupa se navođenjem odgovarajućeg ključa.
Ključevi moraju biti nepromenljivi objekti. Vrednosti su proizvoljni objekti.
![Page 4: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/4.jpg)
SKUPOVI – TIP set
Poput ostalih kolekcija, skupovi se mogu praviti implicitno – korišćenjem {}, ili eksplicitno korišćenjem konstruktora set()
![Page 5: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/5.jpg)
SKUPOVI – TIP set
Liste su promenljivi objektipa ne mogu biti elementiskupa
Prazan skup pravi se pomoću konstruktora
![Page 6: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/6.jpg)
SKUPOVNE OPERACIJE
![Page 7: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/7.jpg)
MAPE U PAJTONU: REČNICI – TIP dict
Rečnici sadrže parove objekata (preslikavanja tipa ključ - vrednost).
Objektima vrednostima pristupa se navođenjem odgovarajućeg ključa.
![Page 8: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/8.jpg)
REČNICI – TIP dict
Uočiti neuređenuprirodu rečnika
Prazan rečnik pravi se pomoću {}. Uporediti sa skupovima – prazan skup pravi se sa set()
ključ vrednost
![Page 9: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/9.jpg)
UBACIVANJE NOVIH VREDNOSTI U REČNIK
Prilikom ubacivanja, između uglastih zagrada navodi se ključ koji odgovara vrednost koja se ubacuje:
Ako zadati ključ već postoji, onda se dotično preslikavanje ažurira novom vrednošću!
![Page 10: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/10.jpg)
ČITANJE VREDNOSTI IZ REČNIKA
da li je ključ u rečniku?
za čitanje se savetuje metoda get()koja vraća None ako ključ nije u rečniku
Ako nema traženog preslikavanja, vraća drugi (opcioni) parametar.
ključ za koji se traži vrednost.
![Page 11: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/11.jpg)
BRISANJE IZ REČNIKA
del briše samo ako postoji ključ
metod pop briše i vraćavrednost iz rečnika
ako se navede, opcioni argument se vraća ako ključ ne postoji
metod clear() briše sve!
![Page 12: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/12.jpg)
PROLAZAK KROZ REČNIK
![Page 13: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/13.jpg)
Svi pogoci za datog strelca – grupisanje :rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova
Koliko je puta pogođen svaki krug – prebrojavanje (računanje frekvencija)rečnik čiji je ključ broj kruga a vrednost frekvencija pogađanja
Kako pogoci stižu u realnom vremenu, podaci se obrađuju u petlji while, sve dok korisnik ne unese prazno ime – kraj takmičenja.
![Page 14: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/14.jpg)
STRELCI – GRUPISANJE I PREBROJAVANJE
![Page 15: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/15.jpg)
KOMBINATORNE STRUKTURE
U programiranju se često bira k od n objekata iz zadate kolekcije, na sve moguće načine – kombinacije bez ponavljanja (npr. u metodi grube sile).
Ako se potencijalna rešenja predstavljaju kao sekvence objekata, potrebno je generisati sve moguće rasporede – permutacije, ili izabrati određeni broj objekata na k pozicija – varijacije.
Za generisanje kombinacija, permutacija i varijacija iz zadate kolekcije, koriste se funkcije iz modula itertools.
Za generisanje kombinacija bez ponavljanja, ako se ne koristi itertools,mogu se koristiti ugnježđene petlje – videti obavezno problem 5.9 u knjizi !
![Page 16: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/16.jpg)
MODUL ITERTOOLS
vraća objekat iterator.
vraća objekat iterator.
![Page 17: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/17.jpg)
OBJEKAT ITERATOR
Funkcija combinations() vraća objekat iterator. Iterator na eksplicitan zahtev (u for petlji) vraća elemente jedan po jedan (kombinacije u obliku torki).
Iterator ne sadrži celu sekvencu već generiše sledeći objekat na osnovu tekućeg objekta i pravila za generisanje sledećeg objekta – štednja memorije.
Sa iteratorima smo se već sreli – objekat tipa range
Ako se žele svi objekti odjednom – iterator se prosledi konstruktoru torke ili liste:
![Page 18: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/18.jpg)
Treba generisati sve trojke stranica iz liste stranica – stranice kandidati,kombinacije bez ponavljanja treće klase!
Tri kandidatne stranice a, b i c čine trougao ako važe sledeće nejednakosti (domensko znanje):
Površina trougla zadatog stranicama računa se preko Heronovog obrasca (domensko znanje):
![Page 19: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/19.jpg)
TROUGLOVI
Iterator za generisanje kombinacija treće klase iz liste stranice
Dekompozicija na 3 fje olakšava rešavanje
![Page 20: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/20.jpg)
TROUGLOVI – TEST PROGRAM
Funkcija combinations() u svakoj iteraciji proizvodi po jednu tročlanu torku sa dužinama stranica.
![Page 21: PREDAVANJE 9–KOLEKCIJE:SKUPOVI I REČNICI · 2018-04-16 · rečnik čiji je ključ ime a vrednost lista sa brojevima pogođenih krugova Koliko je puta pogođen svaki krug –prebrojavanje](https://reader033.vdocuments.net/reader033/viewer/2022041807/5e559c5c1858810d0b42f375/html5/thumbnails/21.jpg)
PERMUTACIJE, VARIJACIJE