Booleova logika i strukture odlučivanja

Booleove varijable

Booleove varijable

  • bool tip podatka: tip podataka koji može uzeti jednu od dvije moguće vrijednosti (iz Booleove algebre):
    • True
    • False
  • Vrijednosti True i False su doslovne vrijednosti (sirovi podaci, eng. literals) bool tipa
  • Booleova varijabla: varijabla koja čuva podatak bool tipa
# naziv varijable = vrijednost
true = True
false = False
false = True
x = False

Booleove varijable

Booleove varijable

Booleove varijable

Booleovi izrazi

Booleovi izrazi

  • Izraz: sastoji se od operatora i operanda

Booleovi izrazi

  • Booleov izraz: bilo koji izraz koji vraća vrijednost koja je ili True ili False
    • može se dodijeliti Booleovoj varijabli
# varijabla = izraz 
varijabla = a < b

Operatori poređenja

Poređenje float-point vrijednosti

Logički operatori

  • Logički operatori: operatori koji se mogu koristiti za pravljenje kompleksnih Booleovih izraza
    • and operator i or operator: binarni operatori, povezuju dva Booleova izraza u složeni Booleov izraz

    • not operator: unarni operator, mijenja istinu Booleovog operanda

Logički operatori

and operator

  • Uzima dva Booleova izraza kao operande
    • Kreira složeni Booleov izraz koji je tačan samo ukoliko su oba podizraza tačna
Izraz Rezultat
False and False False
False and True False
True and False False
True and True True

or operator

  • Uzima dva Booleova izraza kao operande
    • Kreira složeni Booleov izraz koji je tačan samo ukoliko je bar jedan od podizraza tačan
Izraz Rezultat
False or False False
False or True True
True or False True
True or True True

not operator

  • Uzima Booleov izraz kao operand
    • Mijenja logičku vrijednost tog operanda
    • Nekada je potrebna upotreba zagrada da bi se razjasnilo nad kojim operandom se upotrebljava operator
Izraz Rezultat
not False True
not True False

Skraćeno izračunavanje

Skraćeno izračunavanje

  • Skraćeno izračunavanje: donošenje odluke o složenom Bulovom izrazu nakon procjene jednog podizraza
    • Izvršavaju ga or i and operatori
    • or operator: ukoliko je lijevi operand tačan, evaluira lijevi oprand; u suprotnom, evaluira se desni operand
    • and operator: ukoliko je lijevi operand netačan, evaluira se lijevi operand; u suprotnom, evaluira se desni operand
>>> False and 3/0
False

Uvod u strukture odlučivanja

Uvod u strukture odlučivanja

  • Upravljačka struktura (eng. control structure): logički dizajn koji kontroliše redoslijed u kojem će se izvršiti skup naredbi

 

  • Sekvencijalna struktura (eng. sequence structure): skup naredbi koje se izvršavaju u redoslijedu u kojem se pojavljuju

Dijagram toka

if naredba

if naredba

  • Struktura odluke: skup naredbi se izvršava samo ukoliko je ispunjen postavljeni uslov
    • naziva se i struktura izbora
  • Naredbe se izvršavaju uslovno
    • izvršavaju se ukoliko je uslov tačan
  • Struktura odluke sa jednom alternativom: omogućava samo jednu alternativnu putanju izvršavanja

    • ukoliko uslov nije tačan, izlaz iz strukture

if uslov:
  naredba
  naredba

if naredba

  • Prva linija se naziva if odredba (eng. if clause)
    • Uključuje ključnu riječ if, iza koje slijedi uslov (eng. condition)
    • Uslov može biti tačan ili netačan
    • Prilikom izvršavanja if naredbe, uslov se provjerava, pa ukoliko je tačan blok naredbi se izvršava; u suprotnom, blok naredbi se preskače
  • Blok je skup komandi koje su grupisane zajedno
    • U Pythonu se blok kreira uvlačenjem linija koda
if uslov:
  naredba
  naredba

if naredba

  • U dijagramu toka, romb predstavlja uslov tačno/netačno koji se mora provjeriti

if naredba

if naredba

if naredba

if naredba

if naredba

if-else naredba

if-else naredba

  • Struktura odluke sa dvije alternative: dvije moguće putanje izvršavanja
    • Kreće se jednom putanjom ukoliko je uslov tačan, a drugom ukoliko je netačan
    • if uslov i else uslov moraju biti poravnani

    • Naredbe se moraju uvlačiti dosljedno

if uslov:
  naredba
  naredba
else:
  naredba
  naredba

if-else naredba

if-else naredba

if-else naredba

if-else naredba

if-else naredba

if-else naredba

Poređenje stringova

Poređenje stringova

  • Stringovi se mogu uporediti koristeći operatore == i !=
  • Poređenje stringova pravi razliku između velikih i malih slova
  • Stringovi se mogu uporediti koristeći operatore >, <, >=, i <=
    • Upoređuje se znak po znak na osnovu vrijednosti u ASCII tabeli
    • Ukoliko se upoređuju dvije riječi gdje je jedna riječ početak druge onda je duža riječ veća od kraće riječi

>>> "abc" > "ab"
True

Poređenje stringova

Poređenje stringova

Poređenje stringova

Umetnute strukture odlučivanja

Umetnute strukture odlučivanja

Umetnute strukture odlučivanja

  • Važno koristiti ispravno uvlačenje linija prilikom upotrebe umetnutih struktura
    • Važno za Pythonov interpreter
    • Poboljšava čitkost koda
    • Pravila za pisanje umetnutih if naredbi:
      • else odredba treba biti poravnana sa odgovarajućom if odredbom

      • Naredbe u svakom bloku trebaju biti dosljedno uvučene

Umetnute strukture odlučivanja

Umetnute strukture odlučivanja

Umetnute strukture odlučivanja

Umetnute strukture odlučivanja

Umetnute strukture odlučivanja

if-elif-else naredba

  • if-elif-else naredba: posebna verzija strukture odluke
    • Pojednostavljuje logiku i pisanje uvučenih struktura odluke
    • Može uključivati više elif naredbi
if uslov:
  naredba
  naredba
elif uslov:
  naredba
  naredba
else:
  naredba
  naredba

if-elif-else naredba

  • Poravnavanje prilikom upotrebe if-elif-else naredbe:
    • if, elif, else odredbe su jednako poravnane
    • Blokovi koji se uslovno izvršavaju moraju biti poravnani dosljedno
  • if-elif-else naredba nikada nije neophodna, ali je lakše pratiti njenu logiku
    • Alternativa su uvučene if-else naredbe
    • Kod postaje komplikovan i uvučene linije mogu prouzrokovati problematičnu dužinu liniju