Professional Documents
Culture Documents
Python 12395
Python 12395
5.
slijedni programi
moduli
Struktura programa
u
Pythonu
logiki
operatori import
petlje
25?
i 12?
56?
i 17?
61
# prazni redak
x = 17
y = 25
print('Koliki je zbroj brojeva {0} i {1}?'.format(x, y))
input('Utipkati odgovor: ')
z = x + y
print('Odgovor je:', z)
x = 11
y = 12
print('Koliki je umnoak brojeva {0} i {1}?'.format(x, y))
input('Utipkati odgovor: ')
z = x * y
print('Odgovor je:', z)
x = 27
y = 56
print('Koliki je zbroj brojeva {0} i {1}?'.format(x, y))
input('Utipkati odgovor: ')
z = x + y
print('Odgovor je:', z)
62
x = 15
y = 17
print('Koliki je umnoak brojeva {0} i {1}?'.format(x, y))
input('Utipkati odgovor: ')
z = x * y
print('Odgovor je:', z)
x = 28
y = 68
print('Koliki je zbroj brojeva {0} i {1}?'.format(x, y))
input('Utipkati odgovor: ')
z = x + y
print('Odgovor je:', z)
print()
# prazni redak
25?
i 12?
56?
i 17?
68?
63
5.1.
Jednostavni programi
Operator
Znaenje simbola
>
vee od
<
manje od
>=
<=
==
jednako
!=
nije jednako
64
> 35
< 20
== 18
!= 18
Jasno je da nema smisla usporeivati parove brojeva koje unaprijed znamo. Zbog toga se u
relacijskom izrazu obino pojavlju varijable ije se vrijednosti tijekom izvoenja programa mijenjaju.
Logiki sudovi (ili uvjeti) mogu biti sloeni. Primjerice, ako elimo znati je li neki broj x vei od
ili jednak nekoj donjoj granici x_d i istovremeno manji od ili jednak nekoj gornjoj granici x_g,
primjerice za zadane vrijednosti: x_d = 0, x_g = 1000, x = 700 ili za x = 1100. U tom sluaju
moramo ispitati dva uvjeta:
>>> x_d = 0
>>> x_g = 1000
>>> x = 700
>>> x >= x_d
True
>>> x <= x_g
True
>>> x = 1100
>>> x >= x_d
True
>>> x <= x_g
False
>>>
Vidljivo je da je broj 700 u zadanim granicama, a broj 1100 nije. Dva uvjeta koja smo ispitivali
mogli bismo ispitati jednim ispitivanjem ako od dva logika suda stvorimo sloeni logiki sud.
To je mogue uiniti posluimo li se pravilima algebre logikih sudova (logikom algebrom ili
Booleovom algebrom).
65
5.2.
Operator
Naziv operacije
Algebarski simbol
and
I operacija, konjunkcija
or
not
NE operacija, komplementiranje
0 and 0
0 and 1
1 and 0
1 and 1
66
>>>
0
>>>
1
>>>
1
>>>
1
>>>
0 or 0
0 or 1
1 or 0
1 or 1
Dakle, rezultat ILI operacije jednak je True (odnosno 1) ako samo jedan od operanada ima vrijednost True (odnosno 1). Drugim rijeima, rezultat ILI operacije bit e jednak False (odnosno
0) samo onda ako oba operanda imaju vrijednost False (odnosno 0).
Opisivanje operacija rijeima pomoi e nam pri razmiljanju kada budemo pokuavali rjeavati
neki problem.
Operator negacije not djeluje na jedan operand i invertira (True postaje False, False postaje
True) njegovu vrijednost. Zbog toga operaciju negacije (komplementiranja) nazivamo jo i
inverzijom:
>>> not
False
>>> not
True
>>> not
True
>>> not
False
>>>
True
False
0
1
Redoslijed
Operacija
1.
not
2.
and
3.
or
67
5.2.
Redoslijed
Operacija
1.
aritmetiki
2.
relacijski
3.
logiki
68
>>> x = 1100
>>> x_d <= x <= x_g
False
>>> x = -1
>>> (x >= x_d) and (x <= x_g)
False
>>>
Vidjet emo ubrzo da e nam pri rjeavanju problema od znatne koristi biti vjeta i pouzdana
uporaba logikih sudova i vrednovanje logikih izraza. Donoenje razliitih odluka u programima iskljuivo ovisi o logikim izrazima. Poeljno je da oni budu to je mogue jednostavniji i
razumljiviji. U tome nam moe pomoi poznavanje logike algebre. Ovdje se neemo njome
podrobnije baviti i spomenut emo samo neke injenice.
Zanimljivo je razmotriti kako se zamjenom relacijskih operatora pri oblikovanju nekog uvjeta
mijenja oblik logikog izraza koji opisuje taj uvjet. Nekada nam to moe pomoi pri pojednostavnjivanju programa i, to je jo vanije, olakati razumijevanje problema koji rjeavamo.
Pogledajmo tablicu 5.5.
U njoj su u krajnje lijevom stupcu napisani sudovi koje smo imenovali sa G. U krajnje desnom
stupcu napisani su sudovi s istim vrijednostima operanada, ali s tzv. suprotnim relacijskim operatorima. Naime, kako je 5 vee od 2, onda je jasno da 5 nije manje od ili jednako 2.
Ako, primjerice, izrazu koji smo dobili nekim relacijskim operatorom pridruimo logiku varijablu G, moemo se zapitati koji bi relacijski operator trebalo primijeniti tako da uz iste vrijednosti
operanada bude istinit komplement od G. Nazovimo K = notG istinit.
sud G
vrijednost G
vrijednost K = not G
sud K
x>2
x <= 2
x>6
x <= 6
x=5
x != 5
x <= 3
x>3
Operator
Suprotni operator
>
<
>=
<=
==
!=
<=
>=
<
>
!=
==
69
5.2.
70
naredba1_n
else:
naredba2_1
...
naredba2_m
...
Niz naredbi koji smo oznaili sa: naredba1_1, naredba1_2, ..., naredba1_n zvat emo blok naredbi i on e se izvesti ako je uvjet istinit. Primijetimo da je isto tako niz naredbi naredba2_1,
naredb2_2, ..., naredba2_m jedan blok naredbi koji se izvodi ako je uvjet laan.
Na osnovi navedenog slijedi opi oblik naredbe if koji zapisujemo na sljedei nain:
...
if uvjet:
blok_naredbi_1
else:
blok_naredbi_2
...
U interaktivnom suelju i u editoru nakon dvotoke se automatski uvlai sljedei redak za etiri slovna mjesta. Naredbe koje slijede smatraju se dijelom bloka i piu se jedna ispod druge.
Nakon to se napie zadnja naredba prvog bloka i prijee u novi red, potrebno je pokaziva
pomaknuti za etiri mjesta ulijevo i napisati else:. Zatim se na isti nain napie drugi blok (u
interaktivnom se suelju blok zavrava tako da se pritisne tipka unos (Enter) ime se pojavljuje
jedan prazan red).
P r i m j e r 5.1.
Podsjetimo se da funkcija input() utipkani broj vraa kao string te taj string treba prevesti u
cijeli broj, to obavlja funkcija int(). Funkcija input() predstavlja nam, dakle, vrijednost koja
e biti odreena naim utipkavanjem. Zbog toga se ona moe napisati neposredno kao parametar funkcije int(). Isprobajmo program!
71
5.2.