osnove programiranja u pajtonu...uočiti da je, pored dimenzija i pomeraja, parametrizovan i simbol...
TRANSCRIPT
OSNOVE PROGRAMIRANJA U PAJTONU
PREDAVANJE 5 - FUNKCIJE
Miloš Kovačević
Đorđe Nedeljković
Marija Petronijević
Dušan Isailović
SADRŽAJ PREDAVANJA
- Dekompozicija i apstrakcija
- Korisničke funkcije
- Imenski prostori
DEKOMPOZICIJA
Za lakše sagledavanje kompleksnih sistema (programa) koristimo dekompoziciju.
Sistemska dekompozicija – podela na manje, jednostavnije i nezavisne delove.
Primer:Računarski sistem dekomponuje se na procesor, radnu memoriju, spoljnu memoriju i ulazno izlazne uređaje.
Dekompozicija nije:
kada se računarski sistem razbije usled pada na proizvoljne delove. Zašto?
Akcenat se stavlja na nezavisno funkcionisanje i ponovnu upotrebu.
Primer:Pravljenje proje: nabavka namirnica, priprema smese, pečenje.
APSTRAKCIJA
Apstrakcija je pojednostavljenje sistema na model.
Stepen pojednostavljenja zavisi od konteksta primene.
Primer 1 (poznat od ranije):
y = sin(x)
Primer 2:
Izračunavanje sinusa:
Apstrahovanje izračunavanja funkcijom na digitronu:
Nije potrebno da znamo kako se sinus izračunava, već kako se poziva funkcija i šta joj treba proslediti.
PRAVOUGAONA UMETNOST
Zadatak:
Nacrtati pravougaonu šemu dimenzija 2 x 3 koja je ispunjena zadatim simbolom. Šema je odmaknuta za 10 mesta udesno.
92
3 k-1a
b
parametrizacijapostupka crtanja
linija je brojač koji se ne koristi u bloku petlje
ČIČA GLIŠA
Zadatak:
Nacrtati čiča Glišu prema sledećoj slici:
Primeniti dekompoziciju!
Sliku podeliti na glavu, trup i noge.
Ponoviti isti parametrizovan postupak za crtanje pravougaonih delova.
ČIČA GLIŠA - MANE TEKUĆEG PRISTUPA
Mane primenjenog pristupa iscrtavanja:
Istovetan parametrizovani postupak (izvorni kod) ponavlja se više puta.
Postupak iscrtavanja složenijih slika postaje sve kompleksniji.
Sa porastom kompleksnosti postupka, raste nepreglednost potrebnog izvornog koda.
Otežano modifikovanje postojećih ili uvođenje novih mogućnosti u iscrtavanju jer treba intervenisati na više različitih mesta.
REŠENJE:
Apstrahovanje iscrtavanja pravougaonika putem korisnički definisane funkcije!
Napomena: input(), print(), range(), ... predstavljaju predefinisane (ili ugrađene) funkcije Pajtona
KORISNIČKE FUNKCIJE - CRTANJE ČIČA GLIŠE
Definisanje funkcije za iscrtavanje pravougaonika putem ključne reči def
ime f-je formalni parametri
obavezna dvotačka kojom počinje blok funkcije
def pravougaonik(a,b,sim,k):
potpis funkcije
Uočiti da je, pored dimenzija i pomeraja, parametrizovan i simbol ispune (sim)
poziv funkcije stvarni parametri (ili argumenti)
KORISNIČKE FUNKCIJE - DOCSTRING
Ispisuje se pozivanjem ugrađene f-je help(ime_f-je)
Između ’’’ … ’’’ obavezno posle potpisa – docstring
docstring - višeredni opis funkcije
PRAVLJENJE SLOŽENIJIH FUNKCIONALNOSTI
Zahvaljujući funkcijama:
nema ponavljanja izvornog koda
smanjena je kompleksnost programa (zbog apstrahovanja funkcionalnosti)
olakšano je modifikovanje koda (promena se vrši na jednom mestu – u funkciji)
Kombinovanjem funkcija grade se složenije funkcionalnosti (dekompozicija i apstrakcija na delu!)
Zagrade se uvek navode (i kod funkcija bez parametara)
Funkcije mogu pozivati druge funkcije
POVRATNE VREDNOSTI FUNKCIJA
Funkcija vraća rezultat svog rada putem objekta određenog tipa, putem naredbe return.
Logička promenljiva određuje smer konverzije
Napomena: u štampanoj verziji knjige, umesto True stoji 1, brojne vrednosti različite od 0 tretiraju se kao logička istina.
FUNKCIJE BEZ RETURN NAREDBE
Funkcija uvek vraća rezultat svoga rada kao jedan ili više objekata.
Šta vraća ova funkcija?
Funkcije bez return vraćaju specijalni objekat None :
POVRATNE VREDNOSTI RAZLIČITIH TIPOVA
Funkcija može da prekine rad na više mesta, vraćajući objekte različitih tipova.
IMENOVANI I OPCIONI PARAMETRI
Ako redosled parametara u potpisu nije kao u potpisu, onda se oni moraju imenovati.
Opcioni parametri mogu se izostaviti iz poziva.
Opcioni parametri u potpisu su oblika ime = vrednost. Definišu se posle obaveznih.
Poziv sa imenovanim parametrima(preko reda)
Opcioni parametar (jezik) izostavljen
IMENSKI PROSTOR I OPSEG VAŽENJA PROMENLJIVE
Promenljive - imena za objekte.
Ime se najčešće vezuje za objekat kroz naredbu dodele vrednosti.
površina = 25.11
obim = 11.24
Skup imena definisanih u programu naziva se imenski prostor programa(realizuje se tabelom imena)
Opseg važenja promenljive: deo izvornog koda u kome se promenljiva može koristiti, uz navođenje njenog imena
IMENSKI PROSTOR I OPSEG VAŽENJA PROMENLJIVE
Program definiše globalni imenski prostor:promnljive definisane u programu – globalne prom.
Funkcija definiše lokalni imenski prostor:promnljive definisane u funkciji – lokalne promenljive.
Ugrađeni imenski prostor kreira se pri pokretanju interpretera. On sadrži predefinisana imena – npr. input()
Imenski prostori omogućavaju da promenljive koje se odnose na različite objekte, u različitim delovima izvornog koda mogu imati ista imena
IMENSKI PROSTORI – PRIMER
b, c – lokalnea – globalna
a, b – globalnec – nedefinisana
IMENSKI PROSTORI – ČESTA GREŠKA!
Prilikom dodele u funkciji a postaje lokalna promenljiva izraz a + 1 ne može da se izračunajer lokalna promenljiva nije prethodno definisana unutar funkcije
PRENOS STVARNIH PARAMETARA U FUNKCIJU
Formalni parametri pripadaju imenskom prostoru funkcije – lokalne promenljive!
Prenose se u funkciju kopiranjem vrednosti objektnih referenci u njen imenski prostor.
tabela imena – globalni prostor
a1
tabela imena – lokalni prostor
a1
a1
2