Upload
ivana-gojevic
View
165
Download
6
Embed Size (px)
Citation preview
Programiranje 1
Akademska godina 2012/13
1dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split
• Pisanje računalnih programa daje vam moć upravljanja vašim računalom
• Skoro svi znaju koristiti računalo, ali samo rijetki naprave sljedeći logičan korak – naučiti kako upravljati njimeAko koristite pragramski podršku koju je netko drugi• Ako koristite pragramski podršku koju je netko drugi napravio, uvijek ćete biti ograničeni onim što drugi ljudi misle da vi želite napravitip
• Stvarajte svoje programe i jedino ograničenje će biti vaša mašta
• Programiranje će vas učiniti kreativnijima, natjerat će vas da razmišljate precizno, te će vas naučiti kako analizirati i riješiti probleme na logičan načinriješiti probleme na logičan način
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 2
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 3
Ciljevi kolegija Programiranje 1• Urediti znanja stečena o ovom području u
prethodnom obrazovanju.• Razumjeti, usvojiti i naučiti proceduru i aktivnosti za
rješavanje problema i razvoj programske podrške na računalu.
• Razumjeti, usvojiti i naučiti osnovni koncept i j t j lišt kih i t k ijprogramiranja sa stajališta programskih instrukcija za
prihvat podataka, obrade podataka, spremanje i raspodjele rezultata obrade podatakaraspodjele rezultata obrade podataka.
• Razumjeti, usvojiti i naučiti osnovni koncept za spremanje i ponovno korištenje podataka.p j p j p
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 4
• Dakle, morate naučiti kako oblikovati, pisati i analizirati osnovne algoritme, a najvažnije, morate usvojiti algoritamski način mišljenja i izražavanja.
• Do kraja ovog semestra trebali biste:– razumjeti temeljne koncepte programiranja
biti sposobni pisati programe u programskom jeziku Python– biti sposobni pisati programe u programskom jeziku Python– biti spremni za učenje drugih programskih jezika i koncepata
• Kolegiji u neposrednoj vezi sa kolegijem Programiranje 1:– Programiranje II, Strukture podataka i algoritmi, ObjektnoProgramiranje II, Strukture podataka i algoritmi, Objektno
orijentirano programiranje.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 5
Pregled nastavnih cjelina• Programiranje – temeljni pojmovi
– Programiranje, programska podrška (sistemska i aplikacijska)
– Programski jezici (strojni, asembleri, programski jezici visoke razine)razine)
– Programi prevoditelji: kompilatori, interpretatori– Program, instrukcija
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 6
• Osnove razvoja programske podrške– Analiza i specifikacija problema– Razvoj algoritma: dijagrama toka, pseudokod– Kodiranje programa
Pisanje i unošenje programskih instrukcija u računalo– Pisanje i unošenje programskih instrukcija u računalo– Testiranje programa i otklanjanje pogrešaka– Implementacija programa i obuka korisnikaImplementacija programa i obuka korisnika– Održavanje i nadogradnja programa, izrada dokumentacije
• Algoritamske strukture s primjerima– Linijska struktura – Razgranata struktura – Ciklička struktura
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 7
• Vodič kroz Python– Ulazno-izlazne instrukcije– Instrukcije odluke– Programske petlje
Funkcije– Funkcije– Datoteke– Postupci s pogreškama u programu (bug, debug, debugger)Postupci s pogreškama u programu (bug, debug, debugger)
• Pristup programiranjup p g j– Monolitno programiranje– Strukturirano programiranje– Objektno orijentirano programiranje
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 8
Zašto Python…• … a ne neki drugi programski jezik?
• Postoje brojni programski jezici kojima možete riješiti dani problem.S• Svaki od njih ima svoje prednosti i nedostatke.
• Sposobnost logičnog razmišljanja i stručnost programera je važnija od odabira programskog jezikaje važnija od odabira programskog jezika
• Stoga, izbor programskog jezika je - nebitan
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 9
• Cilj ovog kolegija je prvenstveno razviti “programersku logiku”, odnosno natjerati studente da zadane probleme promatraju kao skup manjih problemaskup manjih problema
• Većina ljudi misli da je programerska logika značajno drugačija od logike koju ljudi primjenjuju svakodnevno u različitim g j j p j j jaspektima svog života– Na primjer, roditelj uči dijete pravilima igre:
1. Postavi ploču za igru i neka svi postave svoje figurice na polje Start.2. Prvi igrač baca kocku i pomiče svoju figuricu onoliko polja koliko mu
piše na kocki.3. Igrač može kupiti bilo koji objekt na koji dođe, osim ako taj objekt već
neko posjeduje, te ako ima dovoljno novca.4. Ako igrač dođe na tuđi objekt, mora platiti najam.g j , p j5. Svaki put kada igrač uspješno završi krug, dobiva 200 kuna.6. Igrači ispadaju iz igre kada ostanu bez novca.7 I č k ji t lj d ji j bj d ik7. Igrač koji ostane posljednji je pobjednik.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 10
• Ono što pisanje računalnog programa čini težim je činjenica da računala ne razumiju čovjekov jezik.
• Umjesto prirodnog jezika, morate naučiti kako opisati logiku koja se traži da bi se ostvario dani zadatak uporabomkoja se traži da bi se ostvario dani zadatak uporabom programskog jezika.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 11
• Kao što ima mnogo različitih jezika kojima govore ljudi, tako ima i mnogo programskih jezika.
• Svi računalni programi, bez obzira u kojem su programskom jeziku napisani, imaju određene sličnosti:
Svi se sastoje od instrukcija– Svi se sastoje od instrukcija– Obično svi zahtijevaju određene ulazne podatke, obrađuju te
podatke i daju izlazne podatke
• Ulazni podaci mogu biti sadržani u samom programu ili ih k i ik d j iščit ti i d t t k h j ihkorisnik zadaje, mogu se iščitati iz datoteka pohranjenih u računalu
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 12
• Wallace Wang: “Beginning Programming For Dummies ®”, 3rd Edition– If you’re interested in learning to program, you may wonder,
“Why not jump right in and start learning C++ or Java?” (Then again, if you want to learn how to swim, why not jump ( g , y , y j pright into the ocean and start swimming with the sharks?)
– C++ ili Java zahtijevaju poznavanje kompliciranih pojmova kao što su pointeri objektno orijentirano alokacija memorijekao što su pointeri, objektno-orijentirano, alokacija memorije, itd.
• Programski jezik koji će se raditi u okviru ovog kolegija je Python zbog sljedećih razloga:– besplatan
l– lagan– omogućava strukturirano programiranje
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 13
• 1989. Nizozemac Guido van Rossum • Ime po grupi Monty Python (popularna po TV
emisiji Monty Python’s Flying Circus)
• Python je potpuno besplatan (http://www.python.org/download/)• Python ima vrlo jednostavnu sintaksu• Python omogućuje brzo pripremanje i ispitivanje programa• Koristi se i za profesionalne svrhe
– Google– Računalne igre (Battlefield 2 Star Trek Bridge Commander )Računalne igre (Battlefield 2, Star Trek Bridge Commander )– Yahoo Maps– Industrial Light & Magic– YouTube
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 14
YouTube
• Literatura:
– Budin, L., Brođanac, P., Markučić, Z., Perić, S. (2012) Rješavanje problema programiranjem u Pythonu Elementprogramiranjem u Pythonu, Element, Zagreb, ISBN: 978-953-197-395-3
Griffiths D Barry P (2009) Head First– Griffiths, D., Barry, P. (2009) Head First Programming: A Learner's Guide to Programming Using the Python Language, ISBN 978 0596802370ISBN: 978-0596802370
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 15
Okruženje• Integrirano razvojno okruženje (eng. Integrated
Development Environment – IDE)– skupina programskih pomagala za pisanje i ispitivanje
programa u bilo kojem programskom jeziku • razvojno okruženje za Python IDLE (Integrated• razvojno okruženje za Python IDLE (Integrated
DeveLopment Environment) - prezime komičara iz grupe Monthy Python – Eric Idle
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 16
• kada se pokrene IDLE, pojavit će se, prozor koji čini interaktivno sučelje s Pythonom - Python Shell
– Opis verzije Pythona koji se koristi– Utipkavanjem riječi "copyright“ "credits" or "license()“Utipkavanjem riječi copyright , credits or license()
dobivaju dodatne informacije o Pythonu
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 17
• Python Shell omogućuje interaktivni rad– Na početku novog reda pojavljuju tri strelice >>>– Odzivni znak (eng. prompt ) - poruka kojom se od korisnika
traži neka akcija ili odgovor– Korisnik odgovara utipkavanjem nekog niza znakova koji treba– Korisnik odgovara utipkavanjem nekog niza znakova koji treba
biti zaključen tipkom Enter– Python obavlja akciju i u novom redu ispiše odzivni znak
• Zbog lakšeg prepoznavanja, Python piše svoj ispis plavom bojom
• Kopiranje cijelog retkakliknite na kraj retka koji želite kopirati– kliknite na kraj retka koji želite kopirati
– Pritisnite Enter
• Treba naglasiti da Python razlikuje je li upotrijebljeno veliko ili malo slovo (eng. case sensitive – osjetljiv na veličinu slova)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 18
Varijable• Svi računalni programi na neki način obrađuju podatke. • Podaci se sakupljaju, pohranjuju, obrađuju i mijenjaju tijekom
izvođenja programa.• Pojedinačni podatak nazivat ćemo vrijednošću (eng. value)
S• Svaka vrijednost je određenog tipa
• Jednostavni tipovi podatakaBOOL ti d tk k ji ž i iti d ij ij d ti i ti– BOOL tip podatka koji može poprimiti dvije vrijednosti, istina
(True ili 1) ili laž (False ili 0) (eng. Boolean or logical data type)– STRING "hello“ niz znakova (slova, brojeva i simbola) omeđenih s
navodnicimanavodnicima– INTEGER 5 –32,768 do 32,767– LONG 92883 –2,147,483,648 do 2,147,483,647
SINGLE 39 2932 ±1 401298E 45 do ±3 4028235E+E38– SINGLE 39.2932 ±1.401298E-45 do ±3.4028235E+E38 – DOUBLE 983288.18 5.0×10-324 pa do 1.7×10308
– FLOAT – DOUBLE s pomičnom točkom (eng. floating point number)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 19
• Svi podaci koje program koristi moraju biti pohranjeni u memoriji.• Problem pamćenja vrijednosti riješen je uvođenjem varijabli. • Varijable su imena koja će biti pridružena pojedinim
vrijednostima.
• Memorijska lokacija u kojoj je pohranjen podatak je jedinstveno određena svojom adresom. Da biste mogli koristiti pohranjeneodređena svojom adresom. Da biste mogli koristiti pohranjene podatke, morate znati adresu memorijske lokacije na kojoj su pohranjeni.
• Da bi se olakšao pristup podacima, koriste se varijable koje služe kao spona između programa i memorijskih lokacija s p p g j jpodacima, jer se varijabla pridružuje adresi memorijske lokacije.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 20
• Vrijednost varijable je podatak koji se čuva u računalnoj memoriji (RAM). Lokacija varijable u RAM-u se zove dadresa.
Varijabli X je dodijeljena l b d dslobodna adresa
1000000, a tu se nalazi 0
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 21
• Postavljamo vrijednost varijable X na 15:
Varijabli X je dodijeljena vrijednost 15j
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 22
• Možete koristiti više varijabli u programu:
Memorijske adrese varijabli ne moraju biti baš ove
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 23
• Način smještanja podataka u memoriji
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 24
• Svaka varijabla ima ime, tip i vrijednost
• Kada se nova vrijednost zapisuje u varijablu, ona zamijenjuje (briše) prethodnu vrijednost
• Čitanje varijabli iz memorije ih ne mijenja
• Varijabli se pristupa zvanjem njena imena
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 25
• Važno je znati da se prema različitim tipovima podataka treba različito odnositi.– Na primjer, različiti tipovi brojeva zahtijevaju različitu količinu
memorije za pohranu.
• Također, nekim s tipovima podataka možemo raditi ono što s nekim drugima ne možemo.g– Na primjer, brojeve možemo zbrajati, oduzimati, množiti i
dijeliti, dok stringove ne možemo. S dr ge strane stringo e možemo lanča ati– S druge strane, stringove možemo ulančavati.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 26
Imenovanje varijabli• Imena varijabli mogu imati kombinaciju slova i brojeva. • Imena varijabli ne mogu sadržavati razmake• Ime varijable mora započeti sa slovom
• Sljedeća lista predstavlja nazive valjanih varijabli: Y
num
VALUE
xYz
abc123
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 27
• Programski jezik sadrži ključne riječi – rezervirana imena– ključne riječi ne mogu biti imena varijabli
int float bool strFalse class fi nally is returnFalse class fi nally is returnNone continue for lambda tryTrue def from nonlocal while
d d l l b l t ithand del global not withas elif if or yieldassert else import passbreak except in raise
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 28
• Neispravna imena varijabli:– x.1, Y(2), kamata_u_$ u imenu upotrebljavaju ostali znakovi– 1_x, 3_kat, 0_vrijednost prvi znak u imenu znamenka– del, or, is ključne riječi
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 29
• Kako odabrati imena:– Kraća imena su jednostavnija i brže ih zapisujemo, ali nakon
nekog vremena teško ćemo se sjetiti što nam ona predstavljaju.
– Dulja imena zahtijevaju više tipkanja, ali će nas i nakonDulja imena zahtijevaju više tipkanja, ali će nas i nakon dužeg vremena podsjećati što nam ona predstavljaju.
– Preporučljivo je izabirati imena koja će nam olakšati uporabu programa i kroz neko dulje vrijemeprograma i kroz neko dulje vrijeme.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 30
Inicijalizacija varijabli• Brojčane varijable se inicijaliziraju na vrijednost 0
• String varijable se inicijaliziraju na vrijednost “” (prazan string)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 31
Konstante• Konstanta je varijabla kojoj se vrijednost ne mijenja
tijekom izvođenja programa.– Na primjer, matematička konstanta pi=3.14
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 32
Izrazi• Izraz je nešto što se izračunava i ima vrijednost• Sastoji se od vrijednosti, varijabli i/ili operatora• Može biti aritmetički (vrijednost je brojčani tip podataka) ili
logički (vrijednost je logički tip podataka)
• Na primjer:1 + 1 (d j 2)1 + 1 (daje 2)
100 - 47 (daje 53)
3 * 34 (daje 102)
80 / 4 (daje 20)80 / 4 (daje 20)
(100 * 3) + 56 (daje 356)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 33
• aritmetički izrazi se sastoje od operanada i operatora koji određuju operaciju koju s tim vrijednostima operanada t b ti k k bi d bil k ij d ttreba provesti, kako bi se dobila neka nova vrijednost
aritmetički operatori se koriste u aritmetičkim (i logičkim)• aritmetički operatori se koriste u aritmetičkim (i logičkim) izrazima:
Operator Primjer Značenje
+ A + B Zbroji A i B
A B Odbij B d A- A – B Odbij B od A
* A * B Pomnoži A i B
/ A / B Podijeli A sa B/ A / B Podijeli A sa B
^ A ^ B Potenciraj A sa B
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 34
• Relacijski operatori se koriste u logičkim izrazima:
Operator Primjer ZnačenjeOperator Primjer Značenje
= A = B A jednako B
A B A j j d B< A < B A je manje od B
> A > B A je veće od B
<= A <= B A je manje ili jednako B
>= A >= B A je veće ili jednako B
• Logički operatori: NOT AND OR
<> A <> B A je različito od B
• Logički operatori: NOT, AND, OR– Možete imati više od jednog izraza korištenjem OR
operatora ili AND operatora.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 35
• Primjeri logičkih izraza: – Neka su zadane vrijednosti x = 3; y = 4– Vrijede sljedeće tvrdnje:
x-4 < y Tvrdnja je točna tj. istinita (eng. True)x ! = y-1 Tvrdnja je netočna tj neistinita (eng False)x ! = y-1 Tvrdnja je netočna tj. neistinita (eng. False)"Domagoj"<"Dominik„ Tvrdnja je točna (leksikografski uredaj)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 36
Pridruživanje vrijednostivarijabla = izraz
• Znak = nazivamo znakom pridruživanja– ne smije se poistovjetiti sa znakom jednakosti u matematici gdje on
označava da je ono što stoji lijevo od znaka jednakosti jednako j j j j jonome desno od znaka jednakosti.
– jednakost x = x + 1 u matematici nema nikakvog smisla dok je programskim jezicima potpuno smislena konstrukcijap g j p p j
• Pridruživanje se obavlja tako da se najprije izračuna vrijednost i d t k id ži j i k t tizraza s desne strane znaka pridruživanja i nakon toga se ta vrijednost pridruži varijabli koja se nalazi s lijeve strane znaka pridruživanja.
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 37
• Kada varijabli pridružimo vrijednost izračunatog izraza ona će postati istog tipa kao i desna strana izraza.
• Tijekom uporabe varijabla može sadržavati vrijednosti različitih tipova – dakle ona može mijenjati svoj tiprazličitih tipova – dakle, ona može mijenjati svoj tip
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 38
• Nakon što naredbu utipkamo u interaktivnom sučelju i nakon toga pritisnemo tipku Enter, Python neće vratiti ik k ij d t ć ć i i ti d i i k j j t bnikakvu vrijednost već će ispisati odzivni znak jer je trebao
pridružiti vrijednost varijabli, a ne ispisati njenu vrijednost>>> x = 10
• Ako želimo ispisati vrijednost varijable x, tada treba
>>> x = 10>>>
Ako želimo ispisati vrijednost varijable x, tada treba utipkati x i Python će ju ispisati
>>> x = 10>>> x10>>>
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 39
• Primjer: kako se i kada mijenjaju sadržaji na koje pokazuju varijable
>>> baza = 10>>> dvostruko = 2 * baza>>> dvostruko20>>> baza = 100>>> dvostruko20
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 40
• Višestruko pridruživanjevarijabla_1, varijabla_2, ... = izraz_1, izraz_2, ...
• S desne strane znaka pridruživanja mora se nalaziti onoliko izraza odvojenih zarezima koliko je s lijeve strane imena varijabli
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 41
Zamjena vrijednosti varijabli• Pretpostavimo da imamo 2 akvarija.
– U prvom akvariju (nazovimo ga A) nalaze se ribice roda skalari, dok se u drugom akvariju (B) nalaze pirane.
– Mi želimo skalare premjestiti u akvarij B dok pirane želimo premjestiti u akvarij A.premjestiti u akvarij A.
– Ukoliko prvo stavimo pirane u akvarij A pirane će pojesti skalare.
– Ukoliko prvo skalare stavimo u akvarij B ponovo će pirane pojesti skalare.
>>> a = skalari>>> b = pirane>>> a = b
b>>> b = a
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 42
• Rješenje je uvođenje trećeg akvarija (nazovimo ga C)1. premjestimo skalare u akvarij C2 j ti i k ij A2. premjestimo pirane u akvarij A3. premjestimo skalare u akvarij B
>>> a = skalari>>> b = pirane >>> x = 100>>> c = a>>> a = b>>> b = c
>>> y = 10>>>
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 43
>>> x = 1>>> x = 1>>> y = 2>>> z = 3>>> x, y, z = z, x, y, y, , , y
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 44
Jednostavni tipovi podataka u Pythonu• Osnovni tipovi podataka u Pythonu su:
– int (cijeli broj)– float (broj s pomičnom točkom)– bool (logički ili Booleov tip)
t (znakovni niz string)– str (znakovni niz, string)
• Postoji jedna posebna vrijednost koja se zove None iPostoji jedna posebna vrijednost koja se zove None i označava ništa
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 45
Cijeli brojevi• Broj znamenaka cijelog broja u Pythonu nije ograničen –
cijeli broj može bit proizvoljne veličine
• cijeli broj u binarnom oblikui d bi ik iš 0b– ispred binarnog prikaza napiše 0b
• cijeli broj u heksadekadskom obliku• cijeli broj u heksadekadskom obliku– ispred binarnog prikaza napiše 0x
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 46
Realni brojevi• Prilikom utipkavanja racionalnog broja mora se upotrijebiti
decimalna točka– po toj točki Python prepoznaje da se radi o tipu float
B j i ič t čk d t k i ti• Brojevi s pomičnom točkom dvostruke preciznosti:– mogu poprimiti vrijednosti o granicama od 5.0×10-324 pa do
1.7×10308
• Broj koji bio imao eksponent veći od +308 je za Python beskonačno veliki broj i Python ga zapisuje kao inf (od eng. infinite – beskonačno)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 47
Logički ili Booleov tip• Tip bool ima dvije vrijednosti True i False.
– Vrijednosti logičkog tipa mogu se zapisati i kao brojevi 1 i 0– Python će svaki broj različit od 0 smatrati da je True, dok se
samo broj 0 smatra False– true i True nije jednako case sensitive– true i True nije jednako case sensitive
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 48
Stringovi• Stringovi se mogu ograditi ili jednostrukim ili dvostrukim navodnicima
(dvostruki navodnik se ne smije pisati kao dva uzastopno napisana jednostruka navodnika)jednostruka navodnika)– preporučljivo je upotrebljavati jednostruke navodnike, osim ako se unutar
teksta koristi jednostruki navodni znak, upotrebljava se dvostruki d iknavodnik
• Pri pisanju programa mogu se upotrebljavati naši dijakritički znakovi"0123456789""0123456789""Ovojestring""abc123""1 + 1 = 2"
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 49
"!@#$%^&*()"
• U Pythonu ne postoji tip znak – char– Znak je naprosto vrijednost tipa str duljine jedan
• Posebni znaci za oblikovanje teksta
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 50
Aritmetički izrazi u Pythonu• operandi mogu biti cijeli brojevi (tip int) i brojevi s
pomičnim točkom (tip float)• operatori:
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 51
• Operator dijeljenja / djeluje tako da uvijek daje rezultat float
• pri cjelobrojnom dijeljenju traži se koliko puta se djelitelj može oduzeti od djeljenika s tim da ostatak bude pozitivanmože 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
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 52
>>> 17 // 35
>>> 19 % 31
>>> 17 % 32
>>> 20 // 362
>>> 18 // 36
>>> 20 % 326
>>> 18 % 30
2>>> 21 // 370
>>> 19 // 36
7>>> 21 % 306 0
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 53
• sve zagrade u složenim izrazima su okrugle• potrebno je paziti da broj otvorenih i zatvorenih zagrada
bude jednak
• red prvenstva aritmetičkih operatora je: 1. ** potenciranje2 negacija2. - negacija 3. * /, //, % množenje, dijeljenje, ostatak4. +, - zbrajanje, oduzimanjej j j
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 54
>>> 3 + 12 / 3 * (60 - 20)163.0>>> 3 + 12 / 3 * 60 - 20223.0>>> 3 + 12 / (3 * 60) - 20-16.933333333333334>>> 3 + 12 // 3 * 60 - 20223>>> 2 + 12 //(3 * 60) 20>>> 2 + 12 //(3 * 60) - 20-18
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 55
• Python u svom interaktivnom načinu rada uvijek pamti zadnju izračunatu vrijednost.– ta se vrijednost može iskoristiti u koristiti u sljedećem koraku
izračunavanja tako da se napiše znak _ (podvlaka, eng. underscore))
>>> 33>>> _ + 477
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 56
Naredba PRINT• PRINT naredba kaže da se ispiše nešto na ekranu
print (512)Snimite programPritisnite F5 da pokrenete programPritisnite F5 da pokrenete program
Program se izvršava u drugom prozoru tzv. ljusci (eng. shell)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 57
• Naredba print() stringove ispisuje bez rubnih navodnika
print (“Pozdrav svima”)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 58
Varijable i izrazi• Ako pridijelite izraz varijabli, izraz se izračuna i vrijednost
varijable postaje izračunata vrijednost.
570 x = 500 + (10 * 7)print (x)
• Također se varijable mogu koristiti kao izrazi.
100br vr = 50 2 100br,vr = 50,2udaljenost = br * vrprint (udaljenost)
• Isto tako se mogu kombinirati varijable s brojevima u izrazima.700X = 100
Y = X * 7print (Y)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 59
• PRINT ispisuje izračunatu vrijednost izraza.
print (512 + 478)
990
print (512 + 478)
• Ako zatvorite izraz s navodnicima, onda on postaje string i neće , p j gse izračunati. Na primjer:
print ("512 + 478“)
512 + 478
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 60
Varijable i stringovi
• String varijabla
Pozdrav svimaX = "Pozdrav svima"print (X)
• String se može dodati na kraj postojeće string varijable.PozdravsvimaX = "Pozdrav"
X = X + "svima"print (X)
• Možete također dodavati string varijable jedna drugoj.
Str1Str2Str3a,b,c =“S1”,“S2”,“S3"d = a + b + cd = a + b + cprint (d)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 61
printprint (4)print (7)print (7)print (“sunce”)sunce%=10print (sunce%)sunce%=49print (sunce%)print (123+456)print (“123+456”)print ( 123+456 )print (“Rezultat od 5*5-10 =“, 5*5-10)
62dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split
Naredba INPUT• INPUT naredba dozvoljava korisniku unos stringa ili broja,
koji se zatim sprema u varijablu
Uneseni podatak se x=input() tretira kao string
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 63
print ("Unesi neki tekst:“)tekst=input()print ("Sada unesi broj:“)broj=int(input())print (tekst) Uneseni podatak seprint (tekst)print (broj)
Uneseni podatak se tretira kao broj
64dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split
rijec=input(“Upišite riječ:”)print (“Upisana riječ je “, rijec)print (“Upišite dva broja”)
print (“a+b” a+b)print ( a+b ,a+b)
65dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split
• Python umeće razmak između sadržaja koje ispisuje• Treba odrediti razdjelnik (separator između ispisa)
– Znak kojim treba odvajati sadržaje prilikom ispisa– sep = ‘’ određuje da između ispisanih sadržaja neće biti
razmaka (između dva znaka navodnika nema razmaka –razmaka (između dva znaka navodnika nema razmaka separator je prazan string)
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 66
Formatirani ispisprint('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
varijabli unutar popisa
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 67
• označavanje tipa podataka ispisujemo– unutar vitičastih zagrada iza rednog broja varijable napisati
dvotočku i nakon toga oznaku tipa• d – ukoliko ispisujemo cijeli broj• f – ukoliko ispisujemo realni brojf ukoliko ispisujemo realni broj• s – ukoliko ispisujemo string
>>> print('{2:s} brojeva {0:d} i {1:d} je {3:f}'.format(3, 4, 'Količnik', 3 / 4))Količnik brojeva 3 i 4 je 0.750000
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 68
• Ispis cijelih brojeva moguće je formatirati naredbom {nd}– n prirodan broj ili 0 – označava broj mjesta na koliko će se ispisati određeni
prirodan broj n
• Ispis realnih brojeva ima formatiranje s dva parametra te sljedeći oblik {n.mf}j { }– n je ukupni broj mjesta na koji će se realni broj ispisati
(uključujući i decimalnu točku)j b j k i d i l t čk k j ć biti– m je broj znamenaka iza decimalne točke koje će biti
ispisane
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 69
Zadaci• Obavezno pročitati do sljedećih vježbi i predavanja:
– “Rješavanje problema programiranjem u Pythonu”• stranice: 15 – 55, 167-169
Riješiti test T tT ij 1 u sustavu Moodle• Riješiti test TestTeorija1 u sustavu Moodle – aktivan od 15.10.2012. u 12:00 sati do 16.10.2012. u 12:00
sati
dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 70