Professional Documents
Culture Documents
Pisanje raunalnih programa daje vam mo upravljanja vaim raunalom Skoro svi znaju koristiti raunalo, ali samo rijetki naprave sljedei logian korak nauiti kako upravljati njime Ako koristite pragramski podrku koju je netko drugi napravio, uvijek ete biti ogranieni onim to drugi ljudi misle da vi elite napraviti p Stvarajte svoje programe i jedino ogranienje e biti vaa mata Programiranje e vas uiniti kreativnijima, natjerat e vas da razmiljate precizno, te e vas nauiti kako analizirati i rijeiti probleme na logian nain
Dakle, morate nauiti kako oblikovati, pisati i analizirati osnovne algoritme, a najvanije, morate usvojiti algoritamski nain miljenja i izraavanja.
Do kraja ovog semestra trebali biste:
razumjeti temeljne koncepte programiranja biti sposobni pisati programe u programskom jeziku Python biti spremni za uenje drugih programskih jezika i koncepata
Pristup p g p programiranju j
Monolitno programiranje Strukturirano programiranje Objektno orijentirano programiranje
Zato Python
a ne neki drugi programski jezik? Postoje brojni programski jezici kojima moete rijeiti dani problem. S Svaki od njih ima svoje prednosti i nedostatke. Sposobnost loginog razmiljanja i strunost programera je vanija od odabira programskog jezika Stoga, izbor programskog jezika je - nebitan
Cilj ovog kolegija je prvenstveno razviti programersku logiku, odnosno natjerati studente da zadane probleme promatraju kao skup manjih problema Veina ljudi misli da je programerska logika znaajno drugaija od logike koju ljudi p j j j svakodnevno u razliitim g j j primjenjuju aspektima svog ivota
Na primjer, roditelj ui dijete pravilima igre:
1. 2. 3. 4. 5. 6. 7. 7 Postavi plou za igru i neka svi postave svoje figurice na polje Start. Prvi igra baca kocku i pomie svoju figuricu onoliko polja koliko mu pie na kocki. Igra moe kupiti bilo koji objekt na koji doe, osim ako taj objekt ve neko posjeduje, te ako ima dovoljno novca. Ako igra doe na tui objekt, mora p g j , platiti najam. j Svaki put kada igra uspjeno zavri krug, dobiva 200 kuna. Igrai ispadaju iz igre kada ostanu bez novca. Igra koji t I k ji ostane posljednji j pobjednik. lj d ji je bj d ik
dr.sc. Ani Grubii Prirodoslovno-matematiki fakultet, Split 10
Ono to pisanje raunalnog programa ini teim je injenica da raunala ne razumiju ovjekov jezik. Umjesto prirodnog jezika, morate nauiti kako opisati logiku koja se trai da bi se ostvario dani zadatak uporabom programskog jezika.
11
Kao to ima mnogo razliitih jezika kojima govore ljudi, tako ima i mnogo programskih jezika. Svi raunalni programi, bez obzira u kojem su programskom jeziku napisani, imaju odreene slinosti:
Svi se sastoje od instrukcija Obino svi zahtijevaju odreene ulazne podatke, obrauju te podatke i daju izlazne podatke
Ulazni podaci mogu biti sadrani u samom programu ili ih korisnik d j k i ik zadaje, mogu se iit ti iz datoteka pohranjenih u iitati i d t t k h j ih raunalu
12
Programski jezik koji e se raditi u okviru ovog kolegija je Python zbog sljedeih razloga:
besplatan l lagan omoguava strukturirano programiranje
13
1989. Nizozemac Guido van Rossum Ime po grupi Monty Python (popularna po TV emisiji Monty Pythons Flying Circus)
Python je potpuno besplatan (http://www.python.org/download/) Python ima vrlo jednostavnu sintaksu Python omoguuje brzo pripremanje i ispitivanje programa Koristi se i za profesionalne svrhe
Google Raunalne igre (Battlefield 2 Star Trek Bridge Commander ) 2, Yahoo Maps Industrial Light & Magic YouTube
dr.sc. Ani Grubii Prirodoslovno-matematiki fakultet, Split 14
Literatura:
Budin, L., Broanac, P., Markui, Z., Peri, S. (2012) Rjeavanje problema programiranjem u Pythonu Element Pythonu, Element, Zagreb, ISBN: 978-953-197-395-3
Griffiths D Barry P (2009) Head First Griffiths, D., Barry, P. Programming: A Learner's Guide to Programming Using the Python Language, ISBN: 978-0596802370 ISBN 978 0596802370
15
Okruenje
Integrirano razvojno okruenje (eng. Integrated Development Environment IDE)
skupina programskih pomagala za pisanje i ispitivanje programa u bilo kojem programskom jeziku
razvojno okruenje za Python IDLE (Integrated DeveLopment Environment) - prezime komiara iz grupe Monthy Python Eric Idle
16
kada se pokrene IDLE, pojavit e se, prozor koji ini interaktivno suelje s Pythonom - Python Shell
Opis verzije Pythona koji se koristi Utipkavanjem rijei "copyright, "credits" or "license() copyright credits license() dobivaju dodatne informacije o Pythonu
17
Treba naglasiti da Python razlikuje je li upotrijebljeno veliko ili malo slovo (eng. case sensitive osjetljiv na veliinu slova)
dr.sc. Ani Grubii Prirodoslovno-matematiki fakultet, Split 18
Varijable
Svi raunalni programi na neki nain obrauju podatke. Podaci se sakupljaju, pohranjuju, obrauju i mijenjaju tijekom izvoenja programa. Pojedinani podatak nazivat emo vrijednou (eng. value) S Svaka vrijednost je odreenog tipa
Jednostavni tipovi podataka
tip d tk koji ti podatka k ji moe poprimiti d ij vrijednosti, i ti i iti dvije ij d ti istina (True ili 1) ili la (False ili 0) (eng. Boolean or logical data type) STRING "hello niz znakova (slova, brojeva i simbola) omeenih s navodnicima INTEGER 5 32,768 do 32,767 LONG 92883 2,147,483,648 do 2,147,483,647 SINGLE 39 2932 39.2932 1.401298E-45 1 401298E 45 do 3 4028235E+E38 3.4028235E+E38 DOUBLE 983288.18 5.010-324 pa do 1.710308 FLOAT DOUBLE s pominom tokom (eng. floating point number) BOOL
19
Svi podaci koje program koristi moraju biti pohranjeni u memoriji. Problem pamenja vrijednosti rijeen je uvoenjem varijabli. Varijable su imena koja e biti pridruena pojedinim vrijednostima. Memorijska lokacija u kojoj je pohranjen podatak je jedinstveno odreena svojom adresom. Da biste mogli koristiti pohranjene podatke, morate znati adresu memorijske lokacije na kojoj su pohranjeni. Da bi se olakao pristup podacima, koriste se varijable koje slue kao spona izmeu programa i memorijskih lokacija s p p g j j podacima, jer se varijabla pridruuje adresi memorijske lokacije.
20
Vrijednost varijable je podatak koji se uva u raunalnoj memoriji (RAM). Lokacija varijable u RAM-u se zove adresa. d
21
22
23
24
Svaka varijabla ima ime, tip i vrijednost Kada se nova vrijednost zapisuje u varijablu, ona zamijenjuje (brie) prethodnu vrijednost itanje varijabli iz memorije ih ne mijenja Varijabli se pristupa zvanjem njena imena
25
Takoer, nekim s tipovima podataka moemo raditi ono to s nekim drugima ne moemo. g
Na primjer, brojeve moemo zbrajati, oduzimati, mnoiti i dijeliti, dok stringove ne moemo. S druge strane stringo e moemo ulanavati. dr ge strane, stringove lana ati
26
Imenovanje varijabli
Imena varijabli mogu imati kombinaciju slova i brojeva. Imena varijabli ne mogu sadravati razmake Ime varijable mora zapoeti sa slovom Sljedea lista predstavlja nazive valjanih varijabli:
Y num VALUE xYz abc123
27
28
29
30
Inicijalizacija varijabli
Brojane varijable se inicijaliziraju na vrijednost 0 String varijable se inicijaliziraju na vrijednost (prazan string)
31
Konstante
Konstanta je varijabla kojoj se vrijednost ne mijenja tijekom izvoenja programa.
Na primjer, matematika konstanta pi=3.14
32
Izrazi
Izraz je neto to se izraunava i ima vrijednost Sastoji se od vrijednosti, varijabli i/ili operatora Moe biti aritmetiki (vrijednost je brojani tip podataka) ili logiki (vrijednost je logiki tip podataka) Na primjer:
1 + 1 100 - 47 3 * 34 80 / 4 (100 * 3) + 56 (daje (d j 2) (daje 53) (daje 102) (daje 20) (daje 356)
33
aritmetiki izrazi se sastoje od operanada i operatora koji odreuju operaciju koju s tim vrijednostima operanada treba t b provesti, k k bi se d bil neka nova vrijednost ti kako dobila k ij d t aritmetiki operatori se koriste u aritmetikim (i logikim) izrazima:
Operator Primjer Znaenje Zbroji A i B Odbij B od A d Pomnoi A i B Podijeli A sa B Potenciraj A sa B
+ * / ^
34
36
Pridruivanje vrijednosti
varijabla = izraz
Pridruivanje se obavlja tako da se najprije izrauna vrijednost izraza s d i desne strane znaka pridruivanja i nakon t t k id i j k toga se t ta vrijednost pridrui varijabli koja se nalazi s lijeve strane znaka pridruivanja.
37
Kada varijabli pridruimo vrijednost izraunatog izraza ona e postati istog tipa kao i desna strana izraza.
Tijekom uporabe varijabla moe sadravati vrijednosti razliitih tipova dakle ona moe mijenjati svoj tip dakle,
38
Nakon to naredbu utipkamo u interaktivnom suelju i nakon toga pritisnemo tipku Enter, Python nee vratiti nikakvu vrijednost ve e i i ti odzivni znak j j t b ik k ij d t ispisati d i i k jer je trebao pridruiti vrijednost varijabli, a ne ispisati njenu vrijednost
>>> x = 10 >>>
Ako elimo ispisati vrijednost varijable x, tada treba utipkati x i Python e ju ispisati
>>> x = 10 >>> x 10 >>>
39
40
Viestruko pridruivanje
varijabla_1, varijabla_2, ... = izraz_1, izraz_2, ...
S desne strane znaka pridruivanja mora se nalaziti onoliko izraza odvojenih zarezima koliko je s lijeve strane imena varijabli
41
42
a b c a b
= = = = =
skalari pirane a b c
43
x = 1 y = 2 z = 3 x, y, z = z, x, y , , ,
44
45
Cijeli brojevi
Broj znamenaka cijelog broja u Pythonu nije ogranien cijeli broj moe bit proizvoljne veliine cijeli broj u binarnom obliku
i ispred bi d binarnog prikaza napie 0b ik i
46
Realni brojevi
Prilikom utipkavanja racionalnog broja mora se upotrijebiti decimalna toka
po toj toki Python prepoznaje da se radi o tipu float
Broj koji bio imao eksponent vei od +308 je za Python beskonano veliki broj i Python ga zapisuje kao inf (od eng. infinite beskonano)
47
48
Stringovi
Stringovi se mogu ograditi ili jednostrukim ili dvostrukim navodnicima (dvostruki navodnik se ne smije pisati kao dva uzastopno napisana jednostruka navodnika)
preporuljivo je upotrebljavati jednostruke navodnike, osim ako se unutar teksta koristi jednostruki navodni znak, upotrebljava se dvostruki navodnik d ik
50
51
Operator dijeljenja / djeluje tako da uvijek daje rezultat float pri cjelobrojnom dijeljenju trai se koliko puta se djelitelj moe oduzeti od djeljenika s tim da ostatak bude pozitivan ili jednak nuli
Npr., rezultat cjelobrojnog dijeljenje broja 13 s brojem 4 daje p , j j g j j j j j j rezultat 3 i ostatak 1
operator cjelobrojnog dijeljenja // ipak e dati rezultat tipa float ako je i samo jedan od operatora tipa float
52
53
sve zagrade u sloenim izrazima su okrugle potrebno je paziti da broj otvorenih i zatvorenih zagrada bude jednak red prvenstva aritmetikih operatora je:
1. 2. 2 3. 4. ** potenciranje - negacija * /, //, % mnoenje, dijeljenje, ostatak +, - zbrajanje, oduzimanje j j j
54
>>> 3 + 12 / 3 * (60 - 20) 163.0 >>> 3 + 12 / 3 * 60 - 20 223.0 >>> 3 + 12 / (3 * 60) - 20 -16.933333333333334 >>> 3 + 12 // 3 * 60 - 20 223 >>> 2 + 12 //(3 * 60) - 20 -18
55
Python u svom interaktivnom nainu rada uvijek pamti zadnju izraunatu vrijednost.
ta se vrijednost moe iskoristiti u koristiti u sljedeem koraku izraunavanja tako da se napie znak _ (podvlaka, eng. underscore) ) >>> 3 3 >>> _ + 4 7
56
Naredba PRINT
PRINT naredba kae da se ispie neto na ekranu
print (512)
57
58
Varijable i izrazi
Ako pridijelite izraz varijabli, izraz se izrauna i vrijednost varijable postaje izraunata vrijednost.
x = 500 + (10 * 7) print (x)
570
100
59
Ako zatvorite izraz s navodnicima, onda on postaje string i nee , p j g se izraunati. Na primjer:
print ("512 + 478) 512 + 478
60
Varijable i stringovi
String varijabla X = "Pozdrav svima" print (X) Pozdrav svima
String se moe dodati na kraj postojee string varijable. Pozdravsvima X = "Pozdrav" X = X + "svima" print (X) Moete takoer dodavati string varijable jedna drugoj. a,b,c =S1,S2,S3" d = a + b + c print (d) Str1Str2Str3
61
print print (4) print (7) print (sunce) sunce%=10 print (sunce%) sunce%=49 print (sunce%) print (123+456) print (123+456) ( 123+456 ) print (Rezultat od 5*5-10 =, 5*5-10)
62
Naredba INPUT
INPUT naredba dozvoljava korisniku unos stringa ili broja, koji se zatim sprema u varijablu
Uneseni podatak se tretira kao string
x=input()
63
print ("Unesi neki tekst:) tekst=input() print ("Sada unesi broj:) broj=int(input()) print (tekst) print (broj)
64
rijec=input(Upiite rije:) print (Upisana rije je , rijec) print (Upiite dva broja) print (a+b,a+b) ( a+b a+b)
65
Python umee razmak izmeu sadraja koje ispisuje Treba odrediti razdjelnik (separator izmeu ispisa)
Znak kojim treba odvajati sadraje prilikom ispisa sep = odreuje da izmeu ispisanih sadraja nee biti razmaka (izmeu dva znaka navodnika nema razmaka separator je prazan string)
66
Formatirani ispis
print('st_1{br_1}st_2{br_2}... st_n{br_n}'.format(v_1, v_2,..., v_n))
st_1, st_2,... st_n proizvoljan tekst v_1, v_2,... v_n popis varijabli koje elimo ispisati br_1, br_2,... br_n predstavljaju redne brojeve
67
68
Ispis realnih brojeva ima formatiranje s dva parametra te sljedei oblik {n.mf} j { }
n je ukupni broj mjesta na koji e se realni broj ispisati (ukljuujui i decimalnu toku) m j b j znamenaka i d i l t k k j biti je broj k iza decimalne toke koje e ispisane
69
Zadaci
Obavezno proitati do sljedeih vjebi i predavanja:
Rjeavanje problema programiranjem u Pythonu
stranice: 15 55, 167-169
70