You are on page 1of 44

Programiranje

Izrazi i operatori
Veleučilište Velika Gorica
Smjer: Održavanje računalnih sustava
Akademska godina 2019./2020.

Vladimir Bralić pred., mag. inf.


Operatori
• Operatori su posebni znakovi koji na vrijednostima koje
im prethode ili ih slijede izvode neku operaciju (npr.
aritmetičku operaciju ili operaciju uspoređivanja).
• Python operatore dijeli na:
• aritmetičke operatore: +, -, *,**, /, //, %
• operatore uspoređivanja: <, <=, >, >=
• operatore jednakosti: ==, !=
• logičke operatore: not, and, or
• operatore za rad s bitovima: ~, &, |, ^, <<, >>
• operatore identiteta: is, is not
• operatore pripadnosti: in, not in
Operatori
• Većina operatora formira izraz na način da se s lijeve i
desne strane operatora dodaje operand prikladnog
podatkovnog tipa.
Lijevi operand Operator Desni operand

>>> a = 5 a = 5
>>> 4 + 6 4 + 6
>>> 4 == 4 4 == 4

• Iznimka su operatori koji očekuju operand samo s


desne strane, npr. not i unarni minus.
Aritmetički operatori
• Aritmetički operatori omogućavanju izračun
osnovnih aritmetičkih operacija.

• Podatkovni tip rezultata izračuna aritmetičkog


operatora je uvijek isti kao i najsloženiji podatkovni
tip korišten u izrazu (float je složeniji od int) osim u
slučaju dijeljenja kada je rezultat uvijek float.
Aritmetički operatori: +
• Operacija zbrajanja.

>>> 1+5
6
>>> 0x1+1
2
>>> bin(1+1)
'0b10'
>>> round(3.2114+1.13,1)
4.3
Aritmetički operatori: -
• Operacija oduzimanja.

>>> 1-1
0
>>> 45-7.2
37.8
>>> 4-5-4-3
-8
>>> 4-3-2+1
0
Unarni + i -
• Znak – (moguć je i +) koji nije između dvije vrijednosti
tj. broja se zove unarni minus i označava predznak
broja.

>>> -1
-1
>>> +1
1

• Unarni + nema nikakvo posebno značenje.


Aritmetički operatori: *
• Operacija množenja.

>>> 2*3
6
>>> 2.5*2
5.0
Aritmetički operatori: /
• Operacija dijeljenja. Rezultat je uvijek tipa float!

>>> 3/1
3.0
>>> 4/2
2.0
>>> 5/2
2.5
>>> 5/2.
2.5
Aritmetički operatori: //
• Operacija cjelobrojnog dijeljenja, podatkovni tip
rezultata ovisi o podatkovnom tipu ulaza.

>>> 2//1
2
>>> 4//2
2
>>> 5//2
2
>>> 5.0//2.0
2.0
Aritmetički operatori: %
• Operacija modulo vraća ostatak cjelobrojnog dijeljena.

• Matematička definicija ostatka cjelobrojnog dijeljenja napisana


jezikom Pythona:
x % y = x - (x // y) * y

>>> 4%2
0
>>> 5%2
1
>>> 16%5
1
Aritmetički operatori: **
• Operacija potenciranja.
• Koristimo je i za korjenovanje:
𝑥 = x1/2 ; ∛x = x1/3

>>> 2**2 >>> 9**0.5 >>> 9**1/2


4 3.0 4.5
>>> 2**3 >>> 9**(1/2)
8 3.0
>>> 3**2 >>> 16**(1/4)
9 2.0
Operatori pridruživanja –
jednostavno pridruživanje
• Operator pridruživanja (=) pohranjuje operand
(vrijednost) s desne strane u varijablu imena koje je
jednako operandu s lijeve strane.
>>> a=2
>>> a
2
>>> b=3
>>> b
3
Operatori pridruživanja –
višestruko pridruživanje
• Operator pridruživanja moguće je koristiti za
dodjeljivanje iste vrijednosti većem broju varijabli.
>>> a=b=c=d=12 >>> a,b=2,3
>>> a >>> a
12 2
>>> b
>>> d
3
12
Operatori pridruživanja – skraćeno
pridruživanje
• Skraćeno pridruživanje dozvoljava da u skraćenom
obliku izvršimo aritmetičku operaciju sa samo
jednom varijablom. Npr.: a=a+1 je isto što i a+=1.
• Ovakvo skraćivanje je moguće izvesti sa svim
aritmetičkim operatorima.
>>> a=3 >>> a=2
>>> a//=2 >>> a**=2
>>> a >>> a
1 4
>>> a-=1
>>> a
3
Operatori uspoređivanja i
jednakosti
• Dva izraza (vrijednosti, varijable) moguće je
usporediti upotrebom operatora uspoređivanja i
jednakosti. Oni odgovaraju na sljedeća pitanja:
1. a==b, jesu li a i b jednaki?
2. a!=b, je li a različit od b?
3. a<b, je li a manji od b?
4. a>b, je li a veći od b?
5. a<=b, je li a manji ili jednak b?
6. a>=b, je li a veći ili jednak b?
Bool podatkovni tip
• Rezultat operacije uspoređivanja je podatak tipa
bool.
• Podatkovni tip bool ima samo dva moguća stanja
(True ili False, istina ili neistina)

>>> 2==3 >>> "Ana"=="Marko"


False False
>>> a=2==3 >>>
>>> a type("Ana"=="Marko")
False <class 'bool'>
>>> type(a)
<class 'bool'>
Bool podatkovni tip
• Predajom nekog podatka ili izraza funkciji bool
možemo provjeriti njegovu istinitost (pretvaramo
određenu vrijednost u bool).
• Kod provjere vrijednosti, tj. pretvaranja podatka u
bool, funkcija bool vraća istinu u svim osim tri
slučaja:
• Broja 0
• Praznog niza, npr. stringa, liste ili n-torke
• Ključne riječi none
Bool podatkovni tip
>>> bool(23) >>> bool(0)
True False
>>> bool(-1) >>> bool("")
True False
>>> bool([])
>>> bool("a")
False
True
>>> bool(())
>>> bool([23]) False
True >>> bool(None)
False
Operatori uspoređivanja - primjeri
>>> 1+1>=2 >>> "Ana"+"lena"=="Analena"
True True
>>> 1+1>2 >>> "Python"!="Python"
False False
>>> "20"==20 >>> 2*3==8+1
False
False
>>> int("20")==20
True >>> 3**2==8+1
>>> str(3)=="3" True
True >>> 1==0b1
>>> str(3)==3
False True
>>> 3==3.0 >>> 15==0xF
True True
Logički operatori
• Operacije uspoređivanja možemo kombinirati upotrebom logičkih
operatora. Tj. logički operatori mogu povezati dva izraza sa
operatorima za uspoređivanje. Ovo zovemo složeni izraz.
• Rezultat izraza sa logičkim operatorima je bool vrijednost(True ili
False).

• Logički operateri su:

1. and – hrv. i

2. or – hrv. ili

3. not – hrv. ne
Logički operator and
• Izraz će rezultirati sa True ako je rezultat svih izraza
povezanih sa ovim operaterom True.

>>> 2==2 and 1==1


True
>>> "a"=="a" and "b"=="b"
True
>>> 2==2 and 3==1
False
>>> type(2==2 and 3==1)
<class 'bool'>
Logički operator or
• Izraz će rezultirati sa True ako je rezultat barem jednog
izraza povezanog sa ovim operaterom True.

>>> 2==2 or 1==1


True
>>> 2==2 or 3==1
True
>>> "a"=="a" or "a"=="b"
True
>>> 2==1 or 3==2
False
Logički operator not
• Operator not, mijenja rezultat nekog izraza
uspoređivanja, tj. podatkovnog tipa bool, u njegovu
suprotnost.

>>> not(2==1)
True
>>> not(2==2)
False
Složeni izrazi
• Složeni izrazi su izrazi koji uključuju više od jednog
operatora.

>>> 3+4*5 >>> a=3+4*5


23 >>> a
>>> 2+3>4-1 23
True >>> b=(3+4)*5
>>> b
35
Složeni izrazi
• Prioriteti izvršavanja složenih izraza su:
1) izraz u zagradi, prvo se rješavaju unutarnje
zagrade
2) funkcija
3) potenciranje
4) predznak (unarna operacija "-" ili "+")
5) množenje, dijeljenje, ostatak dijeljenja (modulo)
6) zbrajanje, oduzimanje
7) uspoređivanje ili jednakost
8) logički operatori (redoslijedom not, and, or)
• Ako je povezano više operatora istog prioriteta oni se
rješavaju s lijeva na desno.
Potpuna lista prioriteta operatora
Operator Description
() Parentheses (grouping)
f(args...) Function call
x[index:index] Slicing
x[index] Subscription
x.attribute Attribute reference
** Exponentiation
~x Bitwise not
+x, -x Positive, negative

*, /, % Multiplication, division,
remainder
+, - Addition, subtraction
<<, >> Bitwise shifts
& Bitwise AND
^ Bitwise XOR
| Bitwise OR

in, not in, is, is not, <, <=, >, >=, Comparisons, membership,
<>, !=, == identity

not x Boolean NOT


and Boolean AND
or Boolean OR
lambda Lambda expression
Složeni izrazi
>>> 1+2*3 >>> 2//3
7 0
>>> 1+(2*3)
>>> 2/3
7
0.6666666666666666
>>> (1+2)*3
9 >>> round(2/3)
>>> (2+3)*(4+6) 1.0
50 >>> round(2/3,1)
>>> 2+3*4+6 0.7
20
Primjer složenog izraza
uspoređivanja
• Uzmimo izraz:
3==3 and (2==2 or 2==1)
• Zbog zagrade prvo se uspoređuje 2==2 što je
istina(True) i 2==1 što je neistina(False).
• Ova dva izraza povezana su operatorom or, dakle samo
jedan od njih mora biti istinit da bi cijeli izraz u zagradi
bio istinit. Jedan do njih zaista je istinit pa je rezultat
zagrade True.
• Broj 3 je jednak broju 3 što znači da i sa desne strane
operatora and imamo True rezultat.
• S obzirom da operater and povezuje dva True rezultata
krajnji rezultat je također True.
Tablica rezultata izraza uspoređivanja s
logičkim operatorom

a b a and b a or b not a
true true true true false
true false false true false
false true false true true
false false false false true
Složeni izrazi uspoređivanja -
primjeri
>>> 3<2 or not(1<3)
False
>>> (1==1) and not(2==1)
True
>>> not("pas"=="macka") or ((1==1) and not(2==1))
True
>>> not("pas"=="macka") and ((1==1) and not(2==1))
True
>>> ("pas"=="macka") and ((1==1) and not(2==1))
False
Operatori + i * s podatokvnim
tipom string
• Nad nizovima znakova moguće je izvesti operaciju
konkatenacije (pridruživanja) upotrebom operatera + ili
višestruku konkatenaciju upotrebom operatera *.
• Ove operacije prate uobičajena pravila prioriteta
višestrukih izraza.

>>> 'Dobar dan' + 'Laku noc'


>>> 'Sunce sija' * 5
>>> 'Sunce sija' + ( 'a' * 10 )
>>> ( 'Sunce sija' + 'a' ) * 10
Operatori pripadnosti – in , not in
• Operator pripadnosti, ključna riječ in, provjerava je li
lijevi operand sadržan u desnom, koji mora biti niz
podataka (sting, lista, n-torka…).

>>> "y" in "Python"


True
>>> 5 not in [1,2,3,4]
True

• Rezultat ove provjere je bool vrijednost.


Uvoz dodatnih modula – naredba
import
• Uvozom dodatnih modula može se proširiti funkcionalnost
Pythona.

• Moduli se uvoze upotrebom naredbe import.

• Sadržaj modula moguće je pregledati funkcijom dir.

• Nakon uvoza modula sadržaj pozivamo upotrebom sljedeće


sintakse:
• [imeModula].[imeFunkcije]

• Neke module je potrebno skinuti sa Interneta i instalirati dok


drugi uobičajeno dolaze sa Pythonom npr. modul math.
Modul math
• Modul math dolazi standardno sa Pythonom i sadrži neke
često korištene funkcije i konstante.

>>> import math


>>> dir (math)
['__doc__', '__name__', '__package__', 'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign',
'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma',
'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10',
'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt',
'tan', 'tanh', 'trunc']
Naredba from/import
• Upotrebom naredbe from i import moguće je
zaobići stalno pozivanje imena uvezenog modula.

from math import sqrt

• Moguće je dodati ključnu riječ as te promijeniti


naziv funkcije koju uvozimo.

from math import sqrt as korjen


Naredba from/import – nast.
>>> import math
>>> sqrt(9)
Traceback (most recent call last):
File "<pyshell#224>", line 1, in <module>
sqrt(9)
NameError: name 'sqrt' is not defined
>>> math.sqrt(9)
3.0
>>> from math import sqrt as drugiKorijen
>>> drugiKorijen(9)
3.0
>>> from math import *
>>> sqrt(9)
3.0
>>> ceil(9.1)
10.0
Funkcija help
• Funkcija help ispisuje dokumentaciju predanog objekta.

>>> help(math)

>>> help(float)

• Ova funkcija ne prima rezervirane riječi, npr. import i


as.
• Funkcija help posebno je korisna u kombinaciji s
funkcijom dir.
Zadatak 1
Napišite program koji učitava tri broja (a, b, c) s
tipkovnice i računa rješenje sljedeće jednadžbe (x):
𝒂+𝒃
𝒙=
𝒄
Nakon računanja program mora ispisati rješenje.
Zadatak 2
Napišite program koji učitava dva broja (a i b) s
tipkovnice te ispisuje vrijednost True ako je a veći od
b ili False ako nije tako.
Zadatak 3
Jednim izrazom izračunajte trajanje bloka predavanja
u satima ako se ono sastoji od 2 školska sata
predavanja po 45 minuta, 3 sata vježbi po 45 min i 3
pauze od 10 minuta.
Rezultat, koji je realni broj sati, ispišite.
Zadatak 4
Napišite program koji učitava tri broja (a, b, c) s
tipkovnice i računa rješenje sljedeće jednadžbe (x):
𝑎
𝑥 = 22 + − 𝑏%𝑐
2
Nakon računanja program mora ispisati rješenje.
Zadatak 5
Napišite program koji učitava jedan cijeli broj i
ispisuje koliko iznosi znamenka jedinice, desetice i
stotice.

Nakon računanja program mora ispisati rješenje.


Pitanja?

You might also like