70
Programiranje 1 Akademska godina 2012/13 1 dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split

programiranje 1

Embed Size (px)

Citation preview

Page 1: programiranje 1

Programiranje 1

Akademska godina 2012/13

1dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split

Page 2: programiranje 1

• 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

Page 3: programiranje 1

dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 3

Page 4: programiranje 1

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

Page 5: programiranje 1

• 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

Page 6: programiranje 1

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

Page 7: programiranje 1

• 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

Page 8: programiranje 1

• 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

Page 9: programiranje 1

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

Page 10: programiranje 1

• 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

Page 11: programiranje 1

• 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

Page 12: programiranje 1

• 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

Page 13: programiranje 1

• 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

Page 14: programiranje 1

• 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

Page 15: programiranje 1

• 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

Page 16: programiranje 1

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

Page 17: programiranje 1

• 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

Page 18: programiranje 1

• 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

Page 19: programiranje 1

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

Page 20: programiranje 1

• 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

Page 21: programiranje 1

• 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

Page 22: programiranje 1

• Postavljamo vrijednost varijable X na 15:

Varijabli X je dodijeljena vrijednost 15j

dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 22

Page 23: programiranje 1

• 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

Page 24: programiranje 1

• Način smještanja podataka u memoriji

dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 24

Page 25: programiranje 1

• 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

Page 26: programiranje 1

• 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

Page 27: programiranje 1

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

Page 28: programiranje 1

• 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

Page 29: programiranje 1

• 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

Page 30: programiranje 1

• 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

Page 31: programiranje 1

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

Page 32: programiranje 1

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

Page 33: programiranje 1

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

Page 34: programiranje 1

• 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

Page 35: programiranje 1

• 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

Page 36: programiranje 1

• 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

Page 37: programiranje 1

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

Page 38: programiranje 1

• 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

Page 39: programiranje 1

• 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

Page 40: programiranje 1

• 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

Page 41: programiranje 1

• 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

Page 42: programiranje 1

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

Page 43: programiranje 1

• 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

Page 44: programiranje 1

>>> 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

Page 45: programiranje 1

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

Page 46: programiranje 1

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

Page 47: programiranje 1

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

Page 48: programiranje 1

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

Page 49: programiranje 1

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

"!@#$%^&*()"

Page 50: programiranje 1

• 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

Page 51: programiranje 1

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

Page 52: programiranje 1

• 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

Page 53: programiranje 1

>>> 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

Page 54: programiranje 1

• 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

Page 55: programiranje 1

>>> 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

Page 56: programiranje 1

• 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

Page 57: programiranje 1

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

Page 58: programiranje 1

• Naredba print() stringove ispisuje bez rubnih navodnika

print (“Pozdrav svima”)

dr.sc. Ani Grubišić – Prirodoslovno-matematički fakultet, Split 58

Page 59: programiranje 1

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

Page 60: programiranje 1

• 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

Page 61: programiranje 1

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

Page 62: programiranje 1

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

Page 63: programiranje 1

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

Page 64: programiranje 1

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

Page 65: programiranje 1

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

Page 66: programiranje 1

• 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

Page 67: programiranje 1

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

Page 68: programiranje 1

• 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

Page 69: programiranje 1

• 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

Page 70: programiranje 1

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