Python. Mario Essert, Domagoj Ševerdija, Ivan Vazler. Odjel za matematiku Sveučilišta Josipa Jurja Strossmayera Osijek, Digitalni udžbenik

Size: px
Start display at page:

Download "Python. Mario Essert, Domagoj Ševerdija, Ivan Vazler. Odjel za matematiku Sveučilišta Josipa Jurja Strossmayera Osijek, Digitalni udžbenik"

Transcription

1 Mario Essert, Domagoj Ševerdija, Ivan Vazler Digitalni udžbenik Python - osnove - Odjel za matematiku Sveučilišta Josipa Jurja Strossmayera Osijek, 2007.

2

3 Sadržaj Sadržaj 3 1 Python interpreter Jezične značajke Izvođenje Python programa Naš prvi Python program Tipovi podataka Brojevi Nizovi Stringovi - nizovi alfanumeričkih znakova N-terac Lista Temeljne operacije i metode s nizovima Ugrađene metode string-ova Ugrađene metode listi Rječnik Ugrađene metode rječnika Skup Izrazi, operatori i operacije Varijable Naredbe pridruživanja Obična pridružba Proširena pridružba Naredba del Bool-ove vrijednosti Operatori i operacije Numeričke i aritmetičke operacije Prisilna i eksplicitna pretvorba Usporedba Operacije na bitovima cijelih brojeva Operacije na nizovima Kriška (eng. slicing) niza Stacionarne operacije na listi i rječniku Naredba Print Programsko upravljanje Naredba if Naredba while Naredba for

4 4.4 Iteratori Funkcije range i xrange Sažete liste Naredba break Iznimke Vrste iznimki Rad s iznimkama Obradba iznimki Ignoriranje iznimke Pronalaženje argumenta iznimke Obradba svih iznimki Pokretanje programskog koda bez prisustva iznimke Obradba više iznimki Pokretanje obaveznog kôda za čišćenje Eksplicitno podizanje iznimke Korisnički definirane iznimke Tvorba iznimki Dodjelivalo Funkcije Naredba def Parametri Atributi funkcijskih objekata Naredba Return Pozivanje funkcija Prenošenje argumenata Vrste argumenata Prostori za imena Globalna naredba Ugnježđene funkcije Python - objektni jezik Klasične klase i instance Naredba class Tijelo klase Atributi objekata klase Definicije funkcija unutar tijela klase Varijable specifične za klasu Dokumentacijski string Instance init Atributi objekata instance Tvornička funkcija Brojanje referenci i uništenje instance Reference atributa Metode povezivanja i odvezivanja Detalji nepovezanih metoda Nasljeđivanje Premošćujući (engl. overriding) atributi Posluživanje metoda superklase "Brisanje" atributa klasa Višeobličje (eng. polymorphism)

5 Skrivanje informacije (engl. information hiding) Operatorsko punjenje Testovi pripadnosti klasa i tipova Moduli i paketi Moduli Modulski put traženja (engl. Search Path) Učitavanje, punjenje (engl. import) modula i compilacija Ponovno punjenje modula (engl. reloading) Paketi Ulaz i izlaz Čitanje opcija i varijabli okoliša Datoteke (engl. files) Standardni ulaz, izlaz i pogreška (engl. Input, Output, Error) Naredba print Otpornost Literatura 83 Indeks 84

6

7 POGLAVLJE 1 Python interpreter Python je interpreterski, interaktivni, objektu orjentirani programski jezik, kojeg je godine prvi razvio Guido van Rossum. Već do konca 1998., Python je imao bazu od korisnika, a od već su ga prihvatile ustanove kao MIT, NASA, IBM, Google, Yahoo i druge. Python ne donosi neke nove revolucionarne značajke u programiranju, već na optimalan način ujedinjuje sve najbolje ideje i načela rada drugih programskih jezika. On je jednostavan i snažan istodobno. Više nego drugi jezici on omogućuje programeru više razmišljanja o problemu nego o jeziku. U neku ruku možemo ga smatrati hibridom: nalazi se između tradicionalnih skriptnih jezika (kao što su Tcl, Schema i Perl) i sistemskih jezika (kao što su C, C++ i Java). To znači da nudi jednostavnost i lako korištenje skriptnih jezika (poput Matlab-a), uz napredne programske alate koji se tipično nalaze u sistemskim razvojnim jezicima. Python je besplatan (za akademske ustanove i neprofitnu upotrebu), open-source software, s izuzetno dobrom potporom, literaturom i dokumentacijom. 1.1 Jezične značajke Interpretacija međukôda Python kôd sprema se u tekst datoteke koje završavaju na.py. Program kompilira kôd u niz bytecode-ova koji se spremaju u.pyc datoteke koje su prenosive na bilo koje platforme gdje se mogu izvoditi interpretacijom tog međukôda. Na sličan način izvršava se Java kôd - interpretacijom međukôda. Brzina izvođenja Python kôda istog je reda veličine kao u Javi ili Perlu. Python je napisan u ANSI C i raspoloživ za cijeli niz strojeva i operacijskih sustava uključujući Windows, Unix/Linux i Macintosh. Jezik visoke razine Osim standardnih tipova podataka (brojevi, nizovi znakova i sl.) tipove podataka visoke razine kao što su liste, n-terci i rječnici. Python ima ugrađene Interaktivnost Python se može izvoditi u različitim okruženjima. Za razvitak programa najlakši je interaktivni način rada u kojem se programski kôd piše naredbu za naredbom. Ne postoji razlika u razvojnom i izvedbenom (engl. runtime) okolišu: u prvom se izvodi naredba za naredbom, a u drugom odjednom čitava skripta. Čista sintaksa 7

8 8 Python interpreter Sintaksa jezika je jednostavna i očevidna. Uvlake zamjenjuju posebne znakove za definiranje blokova kôda, pa je napisani program vrlo pregledan i jednostavan za čitanje. Napredne značajke jezika Python nudi sve značajke očekivane u modernom programskom jeziku: objektu orijentirano programiranje s višestrukim nasljeđivanjem, dohvaćanje izuzetaka ili iznimki (engl. exception), redefiniranje standardnih operatora, pretpostavljene argumente, prostore imena (engl. namespaces), module i pakete. Proširivost Python je pisan u modularnoj C arhitekturi. Zato se može lako proširivati novi značajkama ili API-ima. (engl. application programming interface). Bogate knjižnice programa Potpora Pythonova knjižnica (engl. library), koja uključuje standardnu instalaciju, uključuje preko 200 modula, što pokriva sve od funkcija operacijskog sustava do struktura podataka potrebnih za gradnju web-servera. Glavni Python web site ( nudi sažeti index mnogih Python projekata i različitih drugih knjižnica. Python ima veliku entuzijastičku zajednicu korisnika koja se svake godine udvostručuje. 1.2 Izvođenje Python programa Python kôd može se izvoditi na više načina: Interaktivni rad To je najčešći način rada kod pisanja novih programa, a započinje pozivom python u Linux-u, odnosno dvostrukim klikom na ikonicu u Windows okruženju. U MS-DOS okruženju, Python se poziva isto kao u Unix-u/Linux-u, jedino je sistemski znak (engl. prompt) drugačiji. Pozivom interpetera otvara se njegova okolina, npr. pod PythonWin-om: PythonWin 2.5 (r25:51908, Sep , 09:52:17) [MSC v bit (Intel)] on win32. Portions Copyright Mark Hammond - see Help/About PythonWin for further copyright information. >>> ili pod Linux-om: $ python Python 2.5 (r25:51908, Oct , 15:24:43) [GCC (prerelease) (Ubuntu ubuntu4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Interepreter dakle ispisuje svoj prompt >>>, iza kojeg korisnik unosi (utipkava) naredbu, a koju završa s ENTER tipkom (ili Return tipkom). Zatim Python izvodi tu naredbu, ispisuje rezultat i ponovo ispisuje prompt očekujući novu naredbu: >>> print Znam zbrojiti: 1+2 =, 1+2 Znam zbrojiti: 1+2 = 3 >>>

9 1.3. Naš prvi Python program 9 Na ovaj način Python se može koristiti kao jednostavan, ali i vrlo složen kalkulator. U slučaju naredbi koje pretpostavljaju daljnje naredbe u nastavku, npr. naredbe petlje (for, while,...), Python interpreter ispisuje... i automatski čini uvlaku za nove naredbe. U Windows okruženju postoji više grafičkih rješenja za interaktivan rad. U instalacijskom paketu s Pythonom dolazi IDLE kojeg je razvio Python-ov autor. IDLE koristi Tkinter GUI framework i prenosiv je na sve Python platforme koje imaju Tkinter potporu. Bolja rješenja od IDLE-a su PythonWin, PyScripter i novija, koja korisniku daju puno grafičkih rješenja za jednostavnu Python upotrebu kako u interaktivnom tako i u skriptnom radu. Skriptni rad Programi se spremaju u skripte s pomoću običnog text editora ili Python orjentiranog grafičkog okruženja, a onda se kao Unix/Linux ili Windows skripte pozivaju iz sistemske linije. Ako smo na primjer gornju naredbu (ili više njih) spremili u datoteku-skriptu moj.py, onda se pozivom: python moj.py skripta izvodi i na zaslonu se dobije rezultat: Znam zbrojiti: bio isti onaj utipkan u interaktivnom radu. 1+2 = 3 jer je kôd skripte Umetnuti (embeded) kôd Iako se češće unutar Pythona mogu pozivati funkcije iz drugih programa (npr. C -a za slučaj programskog ubrzanja), moguće je Python kôd u obliku izvornih tekst naredbi izvoditi i unutar programa pisanog u drugom programskom jeziku, koristeći Python runtime API, na primjer unutar C -programa: #include <Python.h>... Py_Initialize(); PyRun_SimpleString("x = a + 2*pi"); 1.3 Naš prvi Python program Neka se na početku promotri jedan primjer Python programa, kako bi se uočila svojstva i način pisanja programskog kôda. from random import randint gotovo=false ; korak=0 b r o j=randint ( 1, 100) while not gotovo : x=i n t ( raw_input ( " Pogodi z a m i s l j e n i b r o j : " ) ) i f x==b r o j : p r i n t Cestitamo! gotovo=true ; e l i f x<b r o j : p r i n t ( Pucaj n a v i s e! ) e l s e : p r i n t ( Pucaj nanize! ) korak+=1 p r i n t Pogodak i z %d. puta. % korak

10 10 Python interpreter Prva linija programa uvlači (engl. import) iz modula random funkciju randint() s kojom će se generirati slučajan cijeli broj. Varijabla gotovo postavlja se u Bool-ovo stanje neistine (engl. False), a varijabla korak inicijalizira se sa 0. Znak ; služi za odvajanje naredbi pisanih na istoj liniji. U varijablu broj sprema se slučajni broj (između 1 i 100), kojeg korisnik pogađa. Kako se vidi, postoji petlja while koju program u izvođenju vrti sve dok varijala gotovo ne postane istinita, tj. True, a to se dogadja kad zamišljeni broj bude jednak, od korisnika izabranoj, vrijednosti varijable x. U slučaju da to nije ispunjeno, program pomaže korisniku savjetom da pogađa naviše ili naniže. Pritom se varijabla korak svaki put povećava za 1, kako bi na koncu, nakon čestitke, bilo ispisano i koliko koraka je trebalo da se do nje dođe. Treba primjetiti kako u Pythonu ne postoje oznake početka i konca bloka naredbi (kao što su to vitičaste zagrade u C -jeziku ili begin-end u Pascal-u), nego se to ostvaruje uvlakama. Na taj način korisnik je prisiljen pisati strukturirani kod, lagan za čitanje. Sve upravljače naredbe (if, while, else i sl.) završavaju sa znakom dvotočke ( : ). Treba također uočiti kako je rad sa ulazom i izlazom u Pythonu jednostavan (poput Basic-a) - postoje dvije funkcije: row_input() za ulaz i print za izlaz. Prva ispisuje poruku korisniku i učitava niz znakova (string) koji korisnik upiše, a druga samo ispisuje string i/ili sadržaj varijabli. Moguće je također i formatiranje izlaza (zadnja print naredba).

11 POGLAVLJE 2 Tipovi podataka Računalni program je algoritam zadan programskim naredbama koje se izvršavaju nad nekom vrstom ili tipom (binarno spremljenih) podataka. Sve podatčane vrijednosti u Pythonu predstavljene su objektima, pa se za Python s pravom kaže: "Sve je objekt". Svaki objekt može imati najviše četiri svojstva: identitet - adresa u memoriji gdje je objekt spremljen tip - veličina memorijskog prostora kojeg objekt zauzima i na kojem se stanovite metode (obrade) mogu tj. smiju obavljati vrijednost - sadržaj memorijskog prostora spremljenog objekta metodu - programski kôd koji se primjenjuje na vrijenosti(ma) objekta Identitet i tip objekta su nepromjenljive veličine i definiraju se stvaranjem, generiranjem, objekta. Svaki objekt može imati jednu ili više vrijednosti, te jednu ili više metoda. Neki objekti dolaze se Python interpreterom, zovemo ih ugrađeni objekti (engl. built-in objects), a druge stvara sâm korisnik preko Python klasa. Vrijednosti objekta često se zovu atributi. Dohvaćanje atributa u objektu ostvaruje se sintaksom obj.atr, gdje je obj ime objekta, a atr ime atributa. Objekti kojima se vrijednost(i) mogu mijenjati bez promjene identiteta zovu se promjenljivi (engl. mutable) objekti, a oni kojima se vrijednost ne može mijenjati bez stvaranja novog objekta istog tipa zovu se nepromjenljivi (engl. immutable) objekti. Promjena vrijednosti objekta obično se događa pridruživanjem različitih literala ili djelovanjem metode na vrijednost objekta. Literal označuje vrijednost podatka koja se neposredno, direktno, pojavljuje u programskoj naredbi: 2347 # Cjelobrojni literal # Realni (Floating-point) literal 5.0J # Imaginarni literal hello # String literal, niz znakova Osim alfanumeričkih znakova za brojeve i stringove, Python koristi i posebne simbole i to kao međaše ili graničnike (npr. za početak i završetak string literala koristi simbole jednostrukih, dvostrukih ili trostrukih navodnika) ili kao simbole aritmetičko-logičkih i odnosnih (relacijskih) operatora. Simbol # koristi se za početak komentara i ne obrađuje se od strane Python interpretera: sve napisano u linije iza njega, udesno, interpreter neće obrađivati. Međaši služe i kod definicije složenih tipova, od kojih su najčešće koriste: [ 63, faks, 8.6 ] # Listina, lista ili popis (engl. \emph{list}) ( 450, 320, 600 ) # n-terac (engl. \emph{tuple}) { a :72, b :1.4 } # rje\v{c}nik (engl. \emph{dictionary}) 11

12 12 Tipovi podataka Tipovi objekata mogu se složiti u kategorije (tablica 2.1), pa razlikujemo brojeve, nizove, klase, datoteke, module i sl. Neki objekti su promjenljivi (npr. liste), a neki nisu (npr. stringovi). Tablica 2.1: Ugrađeni (built-in) tipovi u Python programskom jeziku Kategorija tipa podataka Ime tipa podatka Opis Prazno (None) NoneType null objekt Brojevi IntType Cijeli broj LongType Dugi cijeli broj FloatType Realni broj s pom. zarezom ComplexType Kompleksni broj Nizovi StringType Niz znakova (string) UnicodeType Unicode (string) ListType Listina, popis ili lista TupleType n-terac XRangeType Vraćeno iz xrange() BufferType Vraćeno iz buffer() Preslikavanje DictType Rječnik Klase, razredi ClassType Definicija klase Instanca klase, objekt InstanceType Stvaranje instance klase Datoteka FileType Datoteka - podaci na mediju Moduli ModuleType Modul (skup objekata) Objekti koji se pozivaju BuiltinFunctionType Ugrađene funkcije BuiltinMethodType Ugrađene metode ClassType Objekt klase FunctionType Korisnička funkcija InstanceType Instanca klase, objekt MethodType Ograničena (bound) metoda UnboundMethodType Neograničena metoda klase Nutarnji tipovi CodeType Byte-compilirani kôd FrameType Izvedbeni okvir TracebackType Složaj slijeda izuzetaka SliceType Tip kriške (odlomka) EllipsisType Prošireni odlomci () Python program pristupa vrijednostima objekata preko identiteta, adresnih referenci. Referenca je broj koje se odnosi na neku specifičnu lokaciju u memoriji na kojoj je spremljena vrijednost objekta. Vrijednost objekta često se još zove atribut objekta. Atributi složenih tipova (npr. liste, stringa ili rječnika) često se zovu članovi (engl. items). Referenca objekta sprema se u memorijsku lokaciju koja se zove varijabla. Varijabla može pokazivati na spremljeni literal, na isti način kao i na objekt koji ima više vrijendosti i/ili više metoda. Jedna ili više Python programskih naredbi može se spremiti u funkciju. Razlikuju se ugrađene (engl. built-in) i korisničke funkcije. Korisničke funkcije definira korisnik, a ugrađene dolaze s Python interpreterom. Dakako, funkcija je objekt. Funkcija u objektu zove se metoda, a dohvaća se sa obj.fun(), gdje je obj

13 Tipovi podataka 13 ime objekta, a fun()je ime funkcije. Unutar okruglih zagrada mogu doći i argumenti, odnosno parametri funkcije. Funkcija može imati ulazne argumente i vraćati izlazne vrijednosti. Na primjer, provjera tipa nekog objekta ostvaruje se pozivom ugrađene funkcije type(): >>> type("zanimljivi Python svijet!") # string literal <type str > >>> type(512) # numericki literal <type int > >>> k=2.178 # varijabla k >>> type(k) <type float > >>> type ({ a :72, b :1.4 }) <type dict > >>> z=2+3j # varijabla z >>> type(z) <type complex > Objekti (varijable, funkcije, klase i dr.) s programskim naredbama koje na njima rade mogu se spremati u module, a moduli u pakete. Modul se u memoriju učitava s pomoću naredbe import. import sys # ucitava se modul sistemskih funkcija Pojedinačni podatak ili funkcija iz modula dohvaća se naredbom from... import... : from math import sin, cos # ucitavaju se samo sin i cos funkcije Dohvaćanje vrijednosti podatka preko atributa objekta postiže se sintaksom objekt.atribut. Objekt može imati više atributa. U slučaju da je atribut neka funkcija, odgovarajuća sintaksa je objekt.atribut(). >>>import math >>> print math.pi, math.sin(2.3) Dohvaćanje vrijednosti podatka preko članova, često se naziva indeksiranje i odnosi se samo na strukturirane tipove podataka (liste, stringove i sl.). Indeksacija počinje s nultim (0) indeksom. >>> x=[1, 3, 9, 16] # lista s cetiri podatka >>> print x[3] # dohva\ {c}anje treceg podatka 16 Vrijednost reference može se doznati pozivom funkcije id(). Pridruživanjem objekata referenca se ponavlja, tj. objekti se ne dupliciraju. >>> a=123 >>> id(a) >>> b=a # pridruzba b sa a; objekt se ne kopira, samo adresa >>> b 123 >>> id(b) # b kao i a pokazuje na istu memorijsku adresu >>> a=a+1 # stvoren je novi objekt >>> print a=,a, b=,b a= 124 b= 123 >>> print id(a)=,id(a), id(b)=,id(b) # ne pokazuju isto! id(a)= id(b)=

14 14 Tipovi podataka Izraz (engl.expression) je kombinacija vrijednosti (literala), varijabli i operatora. Vrijednost izračunatog izraza ispisuje se na zaslon računala korištenjem naredbe print: >>> print gruba aproksimacija pi =, 22./7 gruba aproksimacija pi = Programske naredbe Pythona temelje se na pridruživanju (objekata referencama), upravljanju tijekom programa (if, else,...), programskim petljama (for, while,...) i pozivima funkcija i klasa. Funkcije obuhvaćaju jednu ili više naredbi. Postoji velik broj ugrađenih (built-in) funkcija, a ostale stvara korisnik. Funkcije, zajedno s podacima, grupiraju se u klase. Funkcije definirane unutar klasa, zovu se metode. Identifikator je ime objekta, tj. ime varijable, funkcije, klase i sl. Identifikatori ne smiju koristiti neku od 30 ključnih riječi Python-a (tablica 2.2), jer su one pridružene osnovnim Python naredbama. 2.1 Brojevi Tablica 2.2: Python ključne riječi and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass with def finally in print yield Ugrađeni brojevni objekti u Pythonu podržavaju cijele brojeve (obične i dugačke), brojeve s pomičnim zarezom (realne brojeve) i kompleksne brojeve. Objekti brojeva u Pythonu su nepromjenljivi (immutable) objekti, što znači da bilo kakva aritmetička operacija na brojevnom objektu, uvijek stvara novi brojevni objekt. >>> a=1234 >>> id(a) >>> a=a+0 >>> id(a) >>> print a 1234 Literali cijelih brojeva mogu biti decimalni, oktetni, ili heksadecimalni. Decimalni literal je predstavljen nizom znamenki gdje je prva znamenka različita od nule. Oktetni literal je određen s početnom 0 iza koje ide niz oktetnih znamenki (0 do 7). Na sličan način heksadecimalni literal koristi početni niz 0x nakon čega slijedi niz heksadecimalnih znamenki (0 do 9 i A do F bilo velikim ili malim slovom). Na, primjer: 1, 23, 3493 #Decimalni cijeli brojevi 01, 027, #Oktetni cijeli brojevi 0x1, 0x17, 0xda5 #heksadecimalni cijeli brojevi Bilo kojem literalu cijelog broja može može se dodati slovo L ili l kako bi se označio dugački cijeli broj (long integer). Na primjer: 1L, 23L, L #Dugacki decimalni cijeli brojevi 01L, 027L, L #Dugacki oktetni cijeli brojevi 0x1L, 0x17L, 0x17486CBC75L #Dugacki heksadec. cijeli brojevi

15 2.2. Nizovi 15 Razlika između dugačkog i običnog cijelog broja je u tome što dugački cijeli broj nema predodređenu numeričku granicu; može biti toliko dug koliko računalo ima memorije. Običan cijeli broj uzima nekoliko okteta memorije i ima minimalnu i maksimalnu vrijednost koju diktira arhitektura stroja. sys.maxinit je najveći dostupni običan cijeli broj, dok je sys.maxinit-1 najveći negativni. >>> print sys.maxint # za uobicajeni stroj najveci cijeli broj je >>> 2L**500 # 2 na 500-tu potenciju L Realni literal (broj s pomičnim zarezom) predstavljen je nizom decimalnih znamenki koje uključuju decimalni zarez, tj. točku (.), exponent (e ili E, te + ili - iza, s jednom ili više znamenki na kraju), ili oboje. Vodeći znak decimalnog literala ne smije biti e ili E, a može biti bilo koja znamenka ili točka (.). Na primjer: 0., 1.0,.2, 3., 4e0, 5.e0, 6.0e0 Pythonova decimalna vrijednost odgovara uobičajena 53 bita preciznosti na modernim računalima. Kompleksni broj sastavljen je od dviju decimalnih vrijednosti, jedne za realni, a druge za imaginarni dio. Moguće je pristupiti dijelovima kompleksnog objekta z kao samo-čitajućim "read-only" atributima z.real i z.imag. Imaginarni literal dobije se dodavanjem znaka j ili J realnom literalu: 1j, 1.j, 1.0j, 1e0j, 1.e0j, 1.0e0j Znak J (ili j ) na kraju literala označuje kvadratni korijen od -1, što je uobičajena oznaka imaginarnog dijela u elektrotehničkoj praksi (neke druge discipline koriste znak i u tu svrhu, ali Python je izabrao baš znak j). Treba primijetiti da brojevni literali ne uključuju predznak: ako postoji + ili - ispred broja, onda su to posebni operatori. 2.2 Nizovi Niz je spremnik (engl. container) članova (engl. items) koji se indeksiraju ili dohvaćaju ne-negativnim cijelim brojevima. Python pruža tri ugrađene (engl. built-in) vrste nizova za stringove (obične i Unicode), n-terace, i liste. Knjižnički i ekstenzijski moduli pružaju druge vrste nizova, a korisnik također može sam napisati svoje. Nizovi se mogu obrađivati na više načina Stringovi - nizovi alfanumeričkih znakova Ugrađeni objekt string je poredan skup znakova koji se koristi za skladištenje i predstavljanje podataka na tekstovnoj bazi. Nizovi znakova u Pythonu su nepromjenljivi (engl. immutable), što znači da se novom operaciijom na nizu znakova, uvijek proizvede novi niz, a ne modificira stari. Objekti stringa imaju ugrađeno više metoda. Literalni niz znakova može biti pod navodnicima jednostrukim, dvostrukim ili trostrukim navodnicima. String u navodnicima je niz od nula ili više znakova unutar identičnih znakova navodnika. Na primjer: Ovo je string literal "Ovo je novi string literal" Dvije različite vrste navodnika imaju identičnu funkciju. Mogu se koristiti tako da apostrofiramo string unutar stringa, što je često jednostavnije nego apostrofirati string upotrebom posebnog znaka (źa jednostruki ili za dvostruki navodnik): jel\ me netko trazio? # eksplicitni navodnik u stringu " jel me netko trazio?" # Na ovaj nacin je citljivije

16 16 Tipovi podataka Ako se string želi prikazati u više linija, onda se na koncu svake linije stavlja znak lijeve kose crte (\): "Ovo je prva, \ a ovo druga linija istog stringa" # Komentar nije dopusten na # liniji sa znakom \ U stringu se dakako mogu umetati i posebni znakovi (\n za novu liniju, \t za tabulator i sl.), ako se takav niz želi programom ispisivati: "Ovo je prva, \n a ovo druga linija istog stringa" Drugi pristup je uporaba stringa s trostrukim navodnicima, koji se dobiju trostrukim ponavljanjem jednostrukih ( ) ili dvostrukih navodnika ("""). """A ovo je jedan duuugi string koji se proteze na vise linija, u ovom slucaju na tri""" # Komentar dopusten samo na kraju U ovakvom literalu stringa s tri navodnika, automatski su sačuvani novi redovi, pa se njihovi kontrolni znakovi ne trebaju dodavati u niz. Nije dopuštena ni upotreba nekih kontrolnih (tzv. escape ) znakova (tablica 2.3), kao na primjer znaka lijeve kose crte (engl. backslash;) Tablica 2.3: Escape znakovi Niz Značenje ASCII/ISO kod \ < novired > Konac linije se zanemaruje Nema ga \\ Kosa crta ulijevo, backslash 0x5c \ Jednostruki navodnik 0x27 \ Dvostruki navodnik 0x22 \a Zvono, bell 0x07 \b Brisanje ulijevo, backspace 0x08 \f Nova stranica, form feed 0x0c \n Nova linija, newline 0x0a \r Skok u novi red, carriage return 0x0d \t Tabulator, tab 0x09 \v Vertikalni tabulator 0x0b \0ooo Oktalna vrijednosti ooo (\0000 do \0377) kako je zadano \xhh Heksadecimalna vrijednost hh (\x00 do \xff) kako je zadano \uhhh Unicode vrijednosti Samo za Unicode str. Unicode je novi standard za pisanje znakova. Za razliku od ASCII standarda, novi standard uključuje sve znakove iz gotovo svih svjetskih jezika. Unicode literalni string ima istu sintaksu kao obični literalni string uz dodatak znaka u ili U koji se piše odmah ispred početnog navodnika. Unicode literalni nizovi znakova mogu koristiti \u iza kojeg slijede četiri heksadecimalne znamenke koje opisuju Unicode znak. >>> a=u str\xf6m gr\xfcn >>> print a ström grün Više string literala bilo koje vrste napisanih u slijedu, compiler će povezati u jedan string objekt. >>> print koliko je tu stringov u \xe4? kolikojetustringovä?

17 2.2. Nizovi N-terac N-terac je nepromjenljivi niz članova. Članovi u n-tercu su bilo koji objekti, istih ili različitih tipova. N- terac se definira nabrajanjem objekata odvojenih zarezima (,). Zadnjem članu u nizu takodjer se može dodati zarez. N-terac sa samo jednim članom mora imati zarez na kraju, jer inače gubi tip n-terca. Prazan n-terac je označen s praznim parom zagrada. Članovi se mogu grupirati, pa nastaju ugnježdeni n-terci. (100, 200, 300) # N-terac s tri clana (3.14,) # N-terac sa samo jednim clanom ( ) # Prazan n-terac Za generiranje n-terca, osim nabrajanjem, moguće je pozvati i ugrađenu funkciju tuple(). Ako je x neki niz, onda tuple(x) vraća n-terac s članovima jednakima članovima niza x. >>> x= abrakadabra >>> tuple(x) ( a, b, r, a, k, a, d, a, b, r, a ) >>> y= sezame >>> (x,y) ( abrakadabra, sezame ) Lista Lista, listina ili popis je promjenljiv poredani niz članova objekata. Članovi u listi su bilo kakvi objekti različitih tipova. Lista se definira nabrajanjem članova odijeljenih zarezima (,) i smještenih unutar uglatih zagrada ([ ]). Dopušteno je iza zadnjeg člana liste, ostaviti još jedan zarez. Prazna lista se označava praznim parom uglatih zagrada. Evo nekih primjera: [42, 3.14, zdravo ] # Lista s tri clana [123] # Lista s jednim clanom [ a, [-45j, b ], 4.5] # ugnjezdena lista s tri clana [ ] # Prazna lista Na sličan način, kao i s generiranjem n-teraca, moguće je pozvati prikladnu funkciju list() za generiranje listi. Na primjer: >>> a= ovo >>> b= je >>> c= lista >>> d=[a,b,c] # tvorba liste nabrajanjem clanova >>> print d [ ovo, je, lista ] >>> list(d) # tvorba liste pozivom funkcije [ ovo, je, lista ] >>> list(a) # tvorba liste pozivom funkcije [ o, v, o ] >>> type(d) <type list > >>> type(a) <type str > Treba primjetiti kako se tvorba listi preko list() funkcije uvijek realizira nad pripadnim tipom objekta.

18 18 Tipovi podataka 2.3 Temeljne operacije i metode s nizovima Dohvaćanje elementa bilo kojeg niza (stringa, n-terca, liste) postiže se indeksiranjem. Dio niza, odlomak ili kriška (engl. slice) dobiva se sintaksom i:j gdje je i početni indeks, a j završni indeks kriške (tablica 2.4). Dužina niza dobiva se pozivom funkcije len(), a maksimalni i minimalni član niza s funkcijama max(), odnosno min(). Tablica 2.4: Operacije i metode nad svim nizovima s[i] s[i:j] len(s) min(s) max(s) Član Opis Vraća element i u nizu s Vraća krišku - niz elemenata od i-tog do j-tog indeksa Vraća broj elemenata u s Vraća minimalni elemenat iz s Vraća maksimalni elemenat iz s Promjenljivi nizovi (liste) imaju mogu mijenjati članove ili kriške članova odjednom, kao i brisati članove i skupine članova. >>> a=(1,3,5,7,9) >>> print a[0], a[3] 1 7 >>> b= ovo je string >>> print b[9],b[0],b[-1] r o g >>> c=[7, marko,-5, kompleksni ] >>> print c[3],c[1] kompleksni marko >>> print len(a),len(b),len(c) >>> print max(a), max(b), max(c) 9 v marko >>> print min(a), min(b), min(c) 1-5 >>> print a[1:3],b[7:12],c[0:2] (3, 5) strin [7, marko ] >>> Treba primjetiti kako se dohvaćanje članova preko indeksa u kriškama ostvaruje od početnog indeksa do konačnog, ali koji se pritom isključuje, ne uzima u obzir. Negativan indeks pak dohvaća članove od kraja niza. Tako je -1 indeks za zadnji član, -2 za predzadnji i tako dalje. Budući da se u kategoriji nizova samo liste mogu mijenjati direktno, postoje pridružbe članovima liste i funkcije brisanja članova (tablica 2.5). Obje operacije mogu se izvesti nad pojedinačnim i skupnim članovima liste. Tablica 2.5: Pridružba i brisanje Član s[i] = v s[i:j] = t del s[i] del s[i:j] Opis Pridružba članu na i-tom mjestu Pridružba skupini članova Brisanje člana Brisanje skupine članova Evo kratkog primjera:

19 2.3. Temeljne operacije i metode s nizovima 19 >>> lista=[ tko zna, bilje, siroko mu, polje ] >>> lista[1]= bolje >>> lista [ tko zna, bolje, siroko mu, polje ] >>> lista[1:3]=[,zna! ] >>> lista [ tko zna,,zna!, polje ] >>> del lista[-1] >>> lista [ tko zna,,zna! ] Ugrađene metode string-ova Budući da svaki objekt ima članove (varijable) i metode (funkcije), korisno ih je skupno prikazati (tablica 2.6), te isprobati ugrađeno. Nabrojene metode nalaze se u modulu string, pa u primjerima prije njihove uporabe treba pozvati naredbu from string import * Tablica 2.6: String metode

20 20 Tipovi podataka Metoda s.capitalize() s.center(width) s.count(sub[,start [,end]]) s.encode([encoding [,errors]]) s.endswith(suffix [,start[,end ]]) s.expandtabs([tabsize]) s.find(sub[,start[,end]]) s.index(sub[,start[,end]]) s.isalnum() s.isalpha() s.isdigit() s.islower() s.isspace() s.istitle() s.isupper() s.join(t ) s.ljust(width ) s.lower() s.lstrip() s.replace(old, new [,maxreplace ]) s.rfind(sub[,start[,end]]) s.rindex(sub[,start[,end]]) s.rjust(width) s.rstrip() s.split([sep[,maxsplit]]) s.splitlines([keepends]) s.startswith(prefix [,start [,end ]]) s.strip() s.swapcase() s.title() s.translate(table [,deletechars ]) s.upper() Opis Pretvara svako slovo od s u veliko slovo. Centrira string u polju duljine width. Broji pojavljivanja podstringa sub u stringu s. Vraća kodiranu inačicu stringa. Provjerava kraj stringa za suffix. Proširuje tabulatore praznim mjestima. Pronalazi prvo pojavljivanje zadanog podstringa sub. Pronalazi prvo pojavljivanje zadanog podstringa sub uz podizanje izuzetka, ako ga nema. Provjerava jesu li svi znakovi alfanumerički. Provjerava jesu li svi znakovi alfabetski. Provjerava jesu li svi znakovi znamenke. Provjerava jesu li svi znakovi pisani malim slovima. Provjerava jesu li svi znakovi praznine. Provjerava jeli string pisan kao naslov (prvo slovo svake riječi napisano velikim slovom). Provjerava jesu li svi znakovi pisani velikim slovima. Povezuje stringove u listi t koristeći s kao međaš. Lijevo poravnanje s u stringu duljine width. Vraća s pretvoren u string s malim slovima. Odstranjuje prazna mjesta ispred stringa. Zamjenjuje podstring old sa new. Nalazi zadnji pojavak podstringa sub. Nalazi zadnji pojavak podstringa sub ili javlja izuzetak Desno poravnanje s u stringu duljine width. Odstranjuje prazna mjesta iza stringa. Dijeli string koristeći sep kao međaš. maxsplit je naveći broj dijeljenja koji će se izvršiti. Dijeli string u listu linija. Ako je keepends jednak 1, čuvaju se kontrolni znakovi novih redaka. Provjerava da li string započinje s prefix-om Odstranjuje prazna mjesta i ispred i iza stringa. Vraća velika slova za string malih slova i obratno. Vraća verziju stringa kao naslova. Mijenja string koristeći transformacijsku tablicu znakova. Vraća string pretvoren u velika slova.

21 2.3. Temeljne operacije i metode s nizovima 21 Primjer 1 String je nepromjenljivi objekt, pa se njegova promjena moguća tek stvaranjem novog stringa. treba primjetiti kako se aritmetički znak + koristi za povezivanje stringova, dok 1: označuje sve znakove nakon prvog. >>> s1 = "Moj san " >>> s2 = Tv + s1 [ 1 : ] >>> p r i n t s2 Tvoj san >>> Primjer 2 Modul string sadrži mnogo funkcija. Funkcija find pronalazi podstring u zadanom stringu. Vraća poziciju nađenog podstringa >>> import s t r i n g >>> r i b a = " zubatac " >>> index = s t r i n g. f i n d ( riba, " t " ) >>> p r i n t index >>> >>> s t r i n g. f i n d ( " abrakadabra ", " ra " ) >>> s t r i n g. f i n d ( " abrakadabra ", " ra ", 4 ) >>> Ugrađene metode listi Na sličan način, s pomoću tablice 2.7 mogu se u primjerima provjeriti ugrađene metode koje olakšavaju rad s listama. Tablica 2.7: Metode liste Metoda Opis li.append(x) Dodaje novi element x na kraj liste li. li.extend(t) Dodaje novu listu t na kraj liste li. li.count(x) Broji pojavke od x u listi li. li.index(x) Vraća najmanji i za koji je s[i] == x. li.insert(i,x) Umeće x na indeksu i. li.pop([i]) Vraća element i i briše ga iz liste. Ako se i izostavi, onda se vraća zadnji element. li.remove(x) Traži x i briše ga iz liste li. li.reverse()) Reverzira (obrće) članove liste li na mjestu. li.sort([cmpfunc ]) Sortira (slaže) članove liste li na mjestu. cmpfunc() je funkcija za usporedbu. Primjer 3 Matrica je lista listi. >>> matrica = [ [ 1, 2, 3 ], [ 2, 3, 1 ] ] >>> matrica [ 1 ] >>> matrica [ 0 ] [ 2 ] [ 2, 3, 1 ] 3

22 22 Tipovi podataka 2.4 Rječnik Preslikavanje (engl. mapping) je skup objekata indeksiranih s pomoću gotovo slobodnih vrijednosti koje se zovu ključevi (engl. keys). Tako nastali objekti su promjenljivi, a za razliku od nizova, nisu poredani. Python nudi jednu vrstu preslikavanja, rječnik (engl. dictionary). Knjižnički i ekstenzijski moduli pružaju još vrsta preslikavanja, a druge može načiniti korisnik sâm. Ključevi u rječniku mogu biti različitih tipova, ali moraju biti jednoznačni (engl. hashable). Vrijednosti u rječniku su također objekti i to mogu biti različitih tipova. Član u rječniku je par kjuč/vrijednost (engl. key/value). O rječniku se može razmišljati kao o asocijativnom polju. Eksplicitno stvaranje rječnika provodi se nizom parova ključ:vrijednost odvojenih zarezima, koji se smještaju unutar vitičastih zagrada. Dopušten je i zarez nakon zadnjeg člana. Ako se ključ pojavljuje više od jednom u rječniku, samo se jedan od članova s tim ključem sprema, jer ključ mora biti jedincat. Drugim riječima, rječnici ne dozvoljavaju duplikate ključeva. Prazan se rječnik označuje parom praznih vitičastih zagrada. Evo nekih rječnika: { x :42, y :3.14, z :7} # Rjecnik s tri clana i string kljucevima {1: 2, 3:4} # Rjecnik s dva clana i cjelobrojnim kljucevima { } # Prazan rjecnik Tvorbu rječnika moguće je izvesti i s pomoću ugrađene funkcije dict(). Na primjer: >>> dict([[ a,12],[ b,54]]) { a : 12, b : 54} >>> dict(a= zagreb, d= ogulin, e= Osijek ) { a : zagreb, e : Osijek, d : ogulin } >>> dict([[12, akumulator ],[ baterija,4.5]]) { baterija : 4.5, 12: akumulator } dict( ) bez argumenata stvara i vraća prazan rječnik. Ako se ključ pojavljuje više nego jednom u popisu (argumentima funkcije dict), samo će se posljednji član s tim kjučem zadržati u rezultirajućem rječniku Ugrađene metode rječnika Na sličan način, s pomoću tablice 2.8 mogu se u primjerima provjeriti ugrađene metode koje olakšavaju rad s rječnicima. Tablica 2.8: Metode i operacije tipova preslikavanja (rječnika)

23 2.5. Skup 23 Član/metoda Opis di[k] Vraća član od di s ključem k. di[k] = x Postavlja di[k] na x. del di[k] Briše di[k]iz di. di.clear() Briše sve članove iz di. di.copy() Vraća kopiju od di. di.has-key(k) Vraća 1 ako di ima ključ k, a 0 inače. di.items() Vraća listu od (key,value) parova. di.keys()) Vraća listu od vrijednosti ključeva. di.update(b) Dodaje sve objekte iz rječnika b u di. di.values() Vraća listu svih vrijednosti spremljenih u di. di.get(k [,v]) Vraća di[k] ako nađe; inače vraća v. di.setdefault(k[, v]) Vraća di[k] ako nađe; vraća v i postavlja di[k]=v. di.popitem() Vraća slučajne (key,value) parove kao n-terce iz di. 2.5 Skup Od Python ver. 2.4, postoji ugrađeni tip (iako također postoji i modul s imenom sets ) s dvije varijante - običan i zamrznuti skup. Skup je neporedan niz jedincatih (neponavljajućih) elemenata. Elementi moraju biti jednoznačni, engl. hashable. Zamrznuti skupovi su jednoznačni, pa mogu biti elementi drugih skupova, dok obični skupovi to ne mogu biti. Tablica 2.9: Glavne operacije skupova

24 24 Tipovi podataka Operacija set/frozenset ([iterabilno=none]) Set/ImmutableSet ([iterabilno=none]) len(s elem in s / not in s for elem ins: process elem... s1.issubset(s2) s1.issuperset(s2) s.add(elem) s.remove(elem)) s.clear() s1.intersection(s2) ili s1&s2 s1.union(s2) ili s1 s2 s1.symmetric_difference(s2) ili sl s2 s.copy() s.update(iterabilni niz Rezultat [koristi se za ugrađene tipove] tvorba običnih ili zamrznutih skupova iz iterabilnog niza, npr. set([5,2,7]), set("zdravo") [koristi se za set modul] tvorba običnih ili nepromjenljivih skupova iz iterabilnog niza, npr. Set([5,2,7]) kardinalni broj skupa s Istinito ako element elem pripada / ne pripada skupu s Iterira na elementima skupa s Istinito ako je svaki element u s1 u s2 Istinito ako je svaki element u s2 u s1 Dodaje element elem u skup s Briše element elem u skupu s. Podiže KeyError iznimku ako se element ne pronađe Briše sve elemente iz skupa s (ne vrijedi za nepromjenljive skupove!) Vraća novi skup s elementima zajedničkim u s1 i s2 Vraća novi skup s elementima koji su i u s1 i u s2. Vraća novi skup s elementima koji su ili u s1,ili u s2, ali ne na oba mjesta Vraća kopiju skupa s Dodaje sve vrijednosti iz iterabilnog niza u skup s

25 POGLAVLJE 3 Izrazi, operatori i operacije 3.1 Varijable Python pristupa podacima s pomoću referenci. Jedna takva referenca je varijabla, tj. imenovani prostor u memoriji koji čuva adresu nekog objekta ili literala. Referenca također postoji i na atribut (vrijednost) nekog objekta. Varijabla ili druga vrsta reference nemaju svoj vlastiti tip, za razliku od podatka na kojeg pokazuju, kojeg referenciraju (čiju adresu pohranjuju). Budući da je adresa jedisntvena u smislu broja okteta, svaka referenca može povezivati objekte različitih tipova i mijenjati se prilikom izvršenja programa. U Pythonu nema deklaracija. Postojanje varijable ovisi o naredbi koja povezuje (eng. binding) varijablu i podatak, ili, drugim riječima, koja postavlja ime koje da se odnosi na neki objekt. Moguće je odvezati (eng. unbinding) varijablu resetiranjem njenog imena, tako da više ne sadrži referencu. Naredba del odvezuje reference. Povezivanje reference koja je već povezana poznato je kao re-povezivanje (eng. rebinding). Repovezivanje ili odvezivanje reference nema nikakv učinak na objekt s koji je referenca bila povezana, osim što objekt nestaje ako više ne postoji nikakva referenca koja se na njega odnosi. Automatsko čišćenje objekata bez referenci zove se sakupljanje smeća (engl. garbage collecting). Varijabla se može imenovati bilo kojim identifikatorom, osim onih 30 koji su rezervirani kao Python ključne riječi. Pritom identifikator ima i neka svoja pravila: ne smije imati zabranjene simbole u sebi, ne smije počinjati brojem i sl. Varijabla može biti globalna ili lokalna. Globalna varijabla je dohvatljiva s više razina, a lokalna uglavnom u funkciji u kojoj se koristi. 3.2 Naredbe pridruživanja Naredbe pridruživanja mogu biti obične ili proširene. Obično pridruživanje varijabli (npr. name=value) je način stvaranja nove varijable ili re-povezivanja postojeće varijable na novu vrijednost (tj. promjena vrijednosti). Obična pridružba na atribut objekta (npr. obj.attr=value) je zahtjev objektu obj da stvori ili re-poveže atribut attr. Obična pridružba za član u nekom nizu ili preslikavanju (listi ili rječniku) (npr. obj[key] = value) je zahtjev spremniku obj da stvori ili re-poveže član s indeksom key. Takva pridružba uključuje indeksiranje niza. Proširena pridružba (npr. name+=value) ne može stvoriti nove reference. Proširene pridružbe mogu samo re-povezati varijablu, narediti objekt da re-poveže jedan od svojih atributa ili članova, ili postaviti zahtjev određenom objektu da sam sebe modificira. Kad se postavi zahtjev objektu, na objektu može izvršiti zahtjev ili podignuti iznimku, kojom se javlja neka vrsta pogreške (tablica 3.1 sadrži neke osnovne iznimke). Iznimka je način na koji Python rješava pogreške bilo kojeg tipa. 25

26 26 Izrazi, operatori i operacije Tablica 3.1: Neke osnovne ugrađene iznimke Iznimka Opis ArithmeticError Baza za aritmetičke iznimke FloatingPointError Pogreška floating-point operacije OverflowError Aritmetički preliv ZeroDivisionError Dijeljenje ili modulo operacija s 0 IndentationError Pogreška uvlake SyntaxError Pogreška sintakse RuntimeError Pogreške u izvođenju programa Obična pridružba Naredba obične pridružbe u svom najjednostavnijem obliku ima sintaksu: cilj = izraz Cilj ili odredište (engl.target) je poznat kao lijeve strana pridružbe, a izraz (engl. expression) je desna strana. Kad se naredba pridružbe izvršava, Python izračunava izraz desne strane, te povezuje vrijednost izraza s ciljem na lijevoj strani. Ovo povezivanje ne ovisi o tipu vrijednosti. Budući da Python ne pravi velike razlike između pozivnih i nepozivnih objekata, za razliku od nekih drugih jezika, cilju su moguće pridružbe funkcija, metoda, tipova i drugih pozivnika. Cilj, na lijevoj strani, može biti varijabli/identifikator, atribut, indeksirani član niza ili kriška (engl. slicing). Detalji povezivanja ipak ovise o tipu cilja: Identifikator je ime varijable: pridružba na identifikator povezuje varijablu s tim imenom. Referenca atributa ima sintaksu obj.name. Pritom je obj identifikator koji označava objekt, a name atributivno ime objekta. Pridružba na referencu atributa traži da objekt obj poveže svoj atribut zvan name. Indeksiranje ima sintaksu obj[expr]. Pritom je obj objekt, a expr je izraz koji indeksira mjesto u nizu. Objekt može biti bilo kojeg tipa. Pridružba na indeksiranje pita spremnik obj da poveže svoj član koji je izabran pomoću vrijednosti expr, također poznate i kao indeksni ključ člana. Kriška (eng. slicing) ima sintaksu obj[start:stop] ili obj[start:stop:korak]. Pritom je Obj objekt, a start, stop i korak su izrazi koji koji indeksiraju dio niza objekata. (Dopušteno je izostavljanje članova, pa je obj[:stop:] sintaksno ispravna kriška, ekvivalentna s obj[none:stop:none]). Pridružba traži od niza objekata obj da se povežu ili odvežu neki od njegovih članova. U jednostavnoj pridružbi može biti više ciljeva i znakova jednakosti (=). Na primjer: a = b = c = 0 povezuje varijable a, b, i c sa vrijednosti 0. Svaki cilj se povezuje s jednim objektom koji vraća izraz, isto kao kad bi se nekoliko jednostavnih naredbi izvršavale jedna za drugom. Cilj u jednostavnoj pridružbi može imati dvije ili više referenci odvojenih zarezima, proizvoljno ograđenih lučnim ili kutnim zagradama. Na primjer: a, b, c = x Ovo zahtijeva da x bude niz od tri člana, te povezuje a s prvim članom, b s drugim, te c s trećim. Ova vrsta pridružbe zove se raspakiravajuća pridružba i pritom izraz s desne strane mora biti niz s točnim brojem članova koliko ima i referenci u cilju, jer se inače podigne iznimka. Svaka referenca u cilju je jednoznačno povezana s odgovarajućim članom u nizu. Raspakiravajuća pridružba također može izmjenjivati reference: a, b = b, a Ovaj izraz repovezuje a da se pridruži na ono što je u b bilo povezano, i obratno.

27 3.2. Naredbe pridruživanja Proširena pridružba Proširena pridružba razlikuje se od obične pridružbe u tomu, što se umjesto znaka jednakosti (=) između cilja i izraza s desne strane koristi prošireni operator, tj. binarni operator nakon kojeg slijedi =. Operatori proširene pridružbe su: + =, =, =, / =, // =, % =, =, =, >>=, <<=, & = i =. Proširena pridružba (tablica 3.2) može imati samo jedan cilj na lijevoj strani, tj. proširena pridružba ne podržava više ciljeva. Tablica 3.2: Proširena pridružba Operacija x+ = y x = x + y x = y x = x y x = y x = x y x/ = y x = x/y x = y x = x y x% = y x = x%y x& = y x = x&y x = y x = x y x = y x = x y x >>= y x = x >> y x <<= y x = x << y Ekvivalentno sa Naredba del Unatoč svome imenu, naredba del ne briše objekte, nego odvezuje reference. Brisanje objekta je implicitno moguće kao posljedica, sa sakupljanjem smeća, ako ne postoji više nijedna referenca na objekt. U Pythonu (slično kao u Java programskom jeziku) postoji ugrađeni sakupljač smeća (engl. garbage collector) koji oslobađa memorijski prostor zauzet objektima koji se ne referenciraju. To se događa na sistemskoj razini, ciklički, tijekom izvođenja programa. Naredba del se sastoji od ključne riječi del, nakon koje slijedi jedna ili više ciljnih referenci razdvojenih zarezima (,). Svaki cilj može biti varijabla, referenca atributa, indeksiranje ili kriška, baš kao za naredbe pridružbe i mora biti povezan u vrijeme izvršavanja naredbe del. Ako je cilj del-a identifikator, naredba del specificira odvezivanje varijable. Dok god je identifikator povezan s objektom, odvezivanje je dopušteno: kada se zahtijeva, onda se i izvrši. U svim drugim slučajevima, naredba del specificira zahtjev objektu da odveže neke (ili sve) svoje atribute ili članove. Objekt može odbiti odvezati neke (ili sve) atribute ili članove, podižući iznimku ako se pokušava nedopušteno odvezivanje. Odvezivanje (ili brisanje) kriške obično ima jednak učinak kao zadavanje praznog niza toj kriški Bool-ove vrijednosti Poslije Pythona ver. 2.3 postoji eksplicitna verzija Bool-ove (engl. boolean) vrijednosti za Python. Boolove vrijednosti True i False postaju tip (podklasa od int). U ranijim Python verzijama označavale su se s 1 i 0. Svaka podatčana vrijednost u Pythonu ima vrijednost istine: istinito ili lažno, ovisi o tomu je li ta vrijednost različita ili jednaka nuli. U stringu nuli odgovara prazan string "", kod n-terca prazan n-terac (), kod rječnika prazan rječnik i sl. Python također ima nekoliko ugrađenih funkcija koje vraćaju Bool-ove vrijednosti kao rezultate. Promjene su bile praktične, jer je lakše govoriti o funkcijama i izrazima koje "vraćanje True ili False" nego izraza različitih ili jednakih nuli. Ove promjene također omogućuju pisanje čišćeg kôda, kada se želi vratiti vrijednost istine (npr. return True umjesto return 1).

28 28 Izrazi, operatori i operacije 3.3 Operatori i operacije Izraz je fraza programskog kôda koju Python interpreter može izvršiti kako bi proizveo neku vrijednost. Najjednostavniji izrazi su literali i identifikatori (varijable). Složeniji izrazi grade se tako da se jednostavni izrazi povezuju operatorima. Tablica 3.3 opisuje operatore po prioritetima, od viših prema nižima. Operatori koji su zajedno imaju jednak prioritet. Stupac A ispisuje asocijativnost (djelovanje s obzirom na stranu) operatora, koja može biti L (s lijeva na desno), D (s desna na lijevo) ili NA (neasocijativna). Na primjer, operator < nije asocijativan, jer bi x < y se promjenom mjesta identifikatora (y < x)dobio sasvim suprotan rezultat. Tablica 3.3: Prioritet operatora u izrazima Operator Opis A izraz,... String pretvorba NA key:izraz,... Stvaranje rječnika NA [izraz,...] Stvaranje liste NA (izrazr,...) Stvaranje n-terca ili jednostavne zagrade NA f(izraz,...) Poziv funkcije L x[index1:index2] Kriška (slicing) L x[index] Indeksiranje (indexing) L x.attr Referenca atributa L x**y Eksponent (x na y potenciju) D x Bitwise NE (NOT) NA +x, -x Unarni plus ili minus NA x*y, x/y, x//y, x%y Množenje, dijeljenje, dijeljenje na cijeli broj, ostatak L x+y, x-y Zbajanje, oduzimanje L x«y, x»y Lijevi pomak, desni pomak L x&y Bitwise I (AND) L x y Bitwise eksluzivni ILI (XOR) L x y Bitwise ILI (OR) L x < y, x <= y, x > y, x >= y, x <> y, x! = y, x == y Usporedbe NA x is y, x is not y Provjera identiteta NA x in y, x not in y Provjera članstva NA not x Bool-ov NE (NOT) NA x and y Bool-ov I (AND) L x or y Bool-ov ILI (OR) L lambda arg,...: izraz Anonimna jednostavna funkcija NA Operatori usporedbe mogu se nizati, čime se implicira logična I (and) funkcija. Na primjer: a < b <= c < d ima isto značenje kao i: a < b and b <= c and c < d Oblik niza je mnogo čitljiviji i provjerava svaki podizraz samo jednom.

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Korisnička sučelja. Aleksandar Maksimović IRB. / 24/05/2007 / Str. 1 korisnička sučelja

Korisnička sučelja. Aleksandar Maksimović IRB. / 24/05/2007 / Str. 1 korisnička sučelja Korisnička sučelja Aleksandar Maksimović IRB / 24/05/2007 / Str. 1 Python Python interpreter Python je interpreterski, interaktivni, objektno orjentirani programski jezik, kojeg je 1990. godine razvio

More information

Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu

Primjer ispisuje rečenicu Dobro dosli na brzi tecaj C-a na ekranu Osnove programiranja p. 1/27 Brzi tečaj C-a Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu Programiranje se sastoji od nekoliko koraka - pisanje programa u tekstualnom editoru (joe,

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom. tog (tack) tog je posebna vrsta liste: od svih operacija dozvoljeno je ubacivanje, brisanje i gledanje sadržaja elementa samo na jednom kraju liste koji zovemo vrh stoga. tog zovemo i lifo last in first

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici 7-8 Definicija, inicijalizacija promenljivih 2/21 u C-u Program napisan u programskog

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 07 - Uvod u PHP 4. svibnja 2015. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

Prirodni jezik - kako ga računalno opisati?

Prirodni jezik - kako ga računalno opisati? Prirodni jezik - kako ga računalno opisati? Predavanje I. : Prof.dr.sc. Mario Essert (messert@fsb.hr) Fakultet strojarstva i brodogradnje, Zagreb Osijek, 9. listopada 2017. M.Essert (FSB, Zagreb) Prirodni

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

NIZOVI.

NIZOVI. NIZOVI LINKOVI ZA KONZOLNI C# OSNOVNO http://www.mycity.rs/net/programiranje-u-c-za-osnovce-i-srednjoskolce.html http://milan.milanovic.org/skola/csharp-00.htm Niz deklarišemo navođenjem tipa elemenata

More information

Uvod, varijable, naredbe, petlje

Uvod, varijable, naredbe, petlje 8. JavaScript Uvod, varijable, naredbe, petlje M. Zekić-Sušac 1 Što je JavaScript? JavaScript je najpopularniji skriptni jezik na Internetu kojeg podržavaju svi poznatiji preglednici (Internet Explorer,

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

16. Sigurnije programiranje

16. Sigurnije programiranje 16. Sigurnije programiranje 16.1 Pretvorba tipova Pretvorba realnog broja u cijeli broj se može izvršiti naredbama: int i; double d; ili: i = (int) d; i = int(d); U cilju bolje kontrole pretvorbe tipova

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

[] znači opciono; znači ili. Strana 3 od 5

[] znači opciono; znači ili. Strana 3 od 5 Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 2-1 Columns Characters and Rows Concatenation (pridruživanje) stanje povezanosti kao kod lanca; unija

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 04 - Uvod u PHP 14. ožujka 2016. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

Nizovi. Programiranje 1

Nizovi. Programiranje 1 Nizovi Programiranje 1 VB Nizovi Zamislite da imate 10,000 šešira i da morate svakome od njih dati jedinstvenu oznaku. Kako biste to napravili? Bilo bi razumno svakom šeširu dati njegov broj. Sada možete

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

9. RAD S DATOTEKAMA PODATAKA

9. RAD S DATOTEKAMA PODATAKA Rad s datotekama 7-1 9. RAD S DATOTEKAMA PODATAKA U programiranju se često radi sa skupovima podataka koji se čuvaju na jedinicama perfernih memorija, a koji se organizuju u posebne cjeline koje nazivamo

More information

6 Datoteke, moduli i paketi

6 Datoteke, moduli i paketi Datoteke Standardni ulaz, izlaz i pogreška (engl. Input, Output, Error) Čitanje naredbene linije i varijable okoliša Dijagnostičko pridruživanje Naredba print Otpornost Modul Traženje modula Učitavanje

More information

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int Sadržaj predavanja 02 Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka Realni tip podataka Aritmetički operatori Izrazi Operatori inkrement i dekrement Kontrola toka programa Naredba za jednostruki

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2 Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe,

More information

Numeričke metode i praktikum

Numeričke metode i praktikum Numeričke metode i praktikum Aleksandar Maksimović IRB / 23/03/2006 / Str. 1 vektori Vektor u 3D prostoru. C: int v1[3]; v1[0]=a;v1[1]=b;v1[2]=c; Fortran: INTEGER V1(3) V1(1)=a V1(2)=b V1(3)=c Skalarni

More information

OSNOVE PROGRAMIRANJA

OSNOVE PROGRAMIRANJA OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica Za svaku formu u aplikaciji postoji pripadajuci modul forme (.frm) koji sadrži njen programski kod Modul forme sadži event procedure - dijelovi koda

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora). SCHEME Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora). Sheme se uglavnom koristi kao intepreter. Koristit ćemo Petit Chez Scheme. Petite

More information

2. Linijska algoritamska struktura

2. Linijska algoritamska struktura Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 2. Linijska algoritamska struktura Milica Ćirić Blokovi za prikaz algoritma Algoritam se vizuelno može prikazati pomoću blok dijagrama,

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

VEŽBA 5 do while petlja, switch case

VEŽBA 5 do while petlja, switch case VEŽBA do while petlja, switch case Petlja sa ulaznim uslovom do while U slučaju do while petlje obavezno izvršavanje bar jedne iteracije se postiže tako što je upravljački izraz petlje na samom dnu petlje.

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Konverzija tipova Konverzija tipova Prilikom komunikacije aplikacije sa korisnikom, korisnik najčešće unosi ulazne podatke koristeći tastaturu.

More information

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold)

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold) Sveučilište u Zagrebu (12 pt, Bold) Ekonomski fakultet (12 pt, Bold) Naziv diplomskog studija (12 pt, Bold) NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad (16 pt, Bold) Ime i prezime studenta/studentice,

More information

modifier returnvaluetype methodname(list of parameters) { // Method body; }

modifier returnvaluetype methodname(list of parameters) { // Method body; } Početna grupa, 28.11.2015. Metodi 1. Metodi opšti oblik metoda: modifier returnvaluetype methodname(list of parameters) // Method body; 2. Ime metoda: početno slovo je malo, a zatim slijede slova, cifre

More information

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama 8. NIZOVI Niz je indeksirani skup podataka - elemenata niza. Niz se deklarira imenom iza kojeg se u uglatim zagradama zapisuje broj elemenata niza, a ispred imena se zapisuje tip elemenata. // deklaracija

More information

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I 1. Definicija svake klase sadrzi kljucnu rec iza koje se navodi ime klase: class public extends 2. Kada je funkcija clanica definisana izvan

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (550) Poglavlje 3 Strukture odluka i ponavljanja dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo Žuljević, dipl.. ing. teo.zuljevic@fesb.hr Pregled

More information

Objektno orjentirano programiranje

Objektno orjentirano programiranje Objektno orjentirano programiranje Predavanje 4 Objektno orijentirani koncepti Konstruktori Metoda koja se poziva prilikom stvaranja novog objekta Svojstveni su OO programiranju Imaju isto ime kao i klasa

More information

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi 2 Uvod u Javu Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi 12 Java i objektno orijentirano programiranje Programski jezik Java Krajem

More information

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić Programiranje 1 Programski jezik C 2. čas Mirko Spasić Operatori U C-u postoji veliki broj operatora. Mogu biti unarni (imaju jedan argument) i binarni (dva argumenta). Unarni operatori mogu biti prefiksni

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (450) Poglavlje 1 Uvod u računala, Microsoft.NET i VB.NET (dio 2 od 2): Pregled.NET platforme dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo

More information

Osnovne strukture podataka

Osnovne strukture podataka Osnovne strukture podataka Osnovni pojmovi Promenljive i konstante su osnovni oblici podataka sa kojima se operiše u programu Deklaracije listaju spisak promenljivih koje ce se koristiti, određuju kog

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } 1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja

More information

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu: Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 7-1 Oracle Equijoin and Cartesian Product Prethodna sekcija se bavila upitima preko više od jedne tabele

More information

IV SQL. Slika 1. SQL*Plus ikona. Slika 2. Dijalog provere identifikacije korisnika. Slika 3. Prozor SQL*Plus programa

IV SQL. Slika 1. SQL*Plus ikona. Slika 2. Dijalog provere identifikacije korisnika. Slika 3. Prozor SQL*Plus programa IV SQL SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.

More information

SVEUČILIŠTE U Z GRE U Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRV TSK.

SVEUČILIŠTE U Z GRE U Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRV TSK. SVEUČILIŠTE U Z GRE U Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRV TSK Računalstvo Unos i ispis podataka Doc. dr. sc. Edouard Ivanjko, dipl.ing. Sadržaj

More information

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2 Java IMI PMF KG OOP 0 AKM 1 Ugnježdeni tipovi najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2 Ugneždeni tipovi IMI PMF KG OOP 0 AKM 2 Unutrašnje klase

More information

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom NISKE (stringovi) u C-u: podsećanje 1. Primer programa koji uvodi niske karaktera terminisane nulom #include main() /* Poslednji bajt niske karaktera s se postavlja na '\0' tj. 0 char s[] = 'a',

More information

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2) 1/42 SQL DDL CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2) 2/42 SQL DDL: CREATE SCHEMA CREATE SCHEMA ime-sheme [ AUTHORIZATION ime-vlasnika-sheme] [ CREATE

More information

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Packages Reference objekata Inheritance nasljeđivanje Exceptions Packages API Application Programmer Interface Sve klase ponuđene u sklopu Java jezika, uključujući i kompajler

More information

Numerical Computation

Numerical Computation GNU Octave Numerical Computation vrlo često u tehnici retko stvarni problemi imaju closed-form solution čak i kad imaju, pitanje upotrebljivosti mnogo detalja numerički pristup u početku tretirano kao

More information

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb Shell programiranje Damir Kirasić Škola otvorenog računarstva FER Zagreb Imenovanje Dijeli pod istim uvjetima 2.5 Hrvatska Shell programiranje UNIX i LINUX shell programi su učinkovito sredstvo za rješavanje

More information

NAPREDNO I OBJEKTNO ORIJENTIRANO PROGRAMIRANJE

NAPREDNO I OBJEKTNO ORIJENTIRANO PROGRAMIRANJE NAPREDNO I OBJEKTNO ORIJENTIRANO PROGRAMIRANJE Objektno orijentirani jezici Kod proceduralnih jezika podaci su pasivan element. OO jezici imaju i proceduralne i neproceduralne elemente, procedure i podaci

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

Objektno orijentirano programiranje. Auditorne vježbe

Objektno orijentirano programiranje. Auditorne vježbe Objektno orijentirano programiranje Auditorne vježbe Elektrotehnički fakultet Osijek Kneza Trpimira 2b 31000 Osijek www.etfos.hr 1. Uvod u C# C# (CSharp) je nastao u tvrtki Microsoft i razvijen je od strane

More information

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

Iskočni okviri (eng. popup boxes)

Iskočni okviri (eng. popup boxes) 9. JavaScript 2.dio Iskočni okviri, funkcije, petlje, događaji M. Zekić-Sušac 1 Iskočni okviri (eng. popup boxes) U JavaScriptu mogu se koristiti 3 vrste iskočnih okvira: Upozoravajući okviri (eng. alert

More information

KURSORI BAZE PODATAKA U ORACLE 11g

KURSORI BAZE PODATAKA U ORACLE 11g KURSORI BAZE PODATAKA U ORACLE 11g SAŽETAK Kursor baze podataka je privatno SQL područje u kojem se čuvaju informacije za procesiranje određene SQL naredbe. Oracle PLSQL jezik koristi implicitne i eksplicitne

More information

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016.

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016. Operacijski sustavi Laboratorijska vježba 2 Petra Lončar, mag. ing. el., asistent ploncar@fesb.hr FESB, 2016. Linux procesi procesi su programi koji se izvršavaju i pritom zauzimaju sredstva sustava (spremnik,

More information

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end; {*Na Evroviziji je ucestvovalo n izvodjaca. Koji od njih je osvojio najvise glasova publike?*} program Evrovizija; glasovi:array[1..50] of integer; max,k:integer; writeln('unosi se broj izvodjaca:'); writeln('unose

More information

Blokovska struktura C++ programa ima četiri razine:

Blokovska struktura C++ programa ima četiri razine: Blokovska struktura C++ programa ima četiri razine: 1. razina datoteke (temeljna kompilacijska jedinica) 2. razina definicije (tijela) funkcije 3. razina bloka kontrolnih struktura (sekvenca, iteracija,

More information

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 5-1 Conversion Functions U db formatiranje i promene izgleda se izvode pomoću funkcija konverzija Ove

More information

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja - ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja - PRIPREMA 5-2015 DVOSMJERNA SERIJSKA KOMUNIKACIJA Paolo Zenzerović, mag. ing. el. Zagreb, 2015. 2 ARDUINO KROZ JEDNOSTAVNE PRIMJERE DVOSMJERNA

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME I PISMENI ZADATAK III6 I GRUPA IME I PREZIME 1.1.Pronaci najveći i najmanji element unete matrice dimenzija n x m i mesto na kome se nalaze. Korististi 2.1. Na osnovu unete matrice A (nxn) celih brojeva

More information

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Programiranje kroz aplikacije. Kontrola toka programa Nizovi Programiranje kroz aplikacije Kontrola toka programa Nizovi Kontrola toka u VBA If naredba Select Case naredba GoTo naredba For petlja While petlja Do While petlja Do Until petlja If naredba Opšti oblik

More information

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end. For 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} for i:=1 to 5do writeln(i); 2) program ispis; {ispisuje brojeve od 5 do 1 jedan ispod drugog} for i:=5 downto 1 do writeln(i); 3) program

More information

EL E E L M E EN E T N I PRO R GR G A R M A SKO K G G JEZ E I Z KA A C# C PROF DR SAŠA BOŠNJAK

EL E E L M E EN E T N I PRO R GR G A R M A SKO K G G JEZ E I Z KA A C# C PROF DR SAŠA BOŠNJAK ELEMENTI PROGRAMSKOG JEZIKA C# PROF DR SAŠA BOŠNJAK 1.Linija menija i torba sa alatima (Menu Bar and Toolbar) Menu File Edit View Website Build Debug Format Tools Test Analyze Windows Help Opis Sadrži

More information

JAVA PROGRAMIRANJE 1

JAVA PROGRAMIRANJE 1 JAVA PROGRAMIRANJE 1 1. Uvod 1. Uvod - kako početi programirati u JAVA jeziku Cilj ovog poglavlja je napisati i pokrenuti jednostavnije Java programe. SADRŽAJ 1. O predmetu. 2. Programi i programski jezici.

More information

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA Fortran 90 Numeričke Metode DECEMBAR 2007. ĐURĐEVAC NATAŠA Zašto Fortran? jer je konstruisan da bi se koristio za rešavanje matematičkih problema. jer je jednostavan jezik sa dobrim performansama (odlična

More information