Funkcije — parametri i povratne vrednosti


U prethodnoj lekciji naučio si kako da napišeš i pozoveš funkciju. Sada idemo korak dalje: naučićemo kako funkcije mogu da primaju podatke (parametre) i da vrate rezultat pomoću ključne reči return.


Ovo je veoma važno jer nam omogućava da istu funkciju koristimo sa različitim vrednostima, bez pisanja novog koda.


1. Šta su parametri?


Parametri su promenljive koje funkcija dobija kada je pozovemo. Možeš da ih zamisliš kao ulazna vrata kroz koja podaci ulaze u funkciju.

Kada pozovemo funkciju, prosleđujemo joj argumente — to su konkretne vrednosti koje ulaze u parametre.


2. Primer: sabiranje sa parametrima



# saberi.py

def saberi(a, b):
    return a + b

rezultat = saberi(3, 5)
print("3 + 5 =", rezultat)

# U Thonny-ju probaj i druge vrednosti:
# saberi(10, 20)

Kako ovaj kod radi?

  • a i b su parametri funkcije
  • 3 i 5 su argumenti koje prosleđujemo funkciji
  • return vraća rezultat poziva funkcije
  • Vraćena vrednost se smešta u promenljivu rezultat

3. Šta znači return?


Ključna reč return:

  • vraća vrednost iz funkcije
  • prekida izvršavanje funkcije
  • omogućava da se rezultat koristi dalje u programu

Bez return, funkcija samo izvršava kod, ali ne vraća rezultat.


4. Funkcija sa jednim parametrom



def kvadrat(x):
    return x * x

print(kvadrat(4))   # 16
print(kvadrat(10))  # 100

5. Funkcija bez parametara



def poruka():
    return "Zdravo iz funkcije!"

print(poruka())

Razlika između funkcija sa i bez povratne vrednosti


U Pythonu postoje dve česte vrste funkcija:

  • funkcije koje ne vraćaju vrednost
  • funkcije koje vraćaju vrednost pomoću return

1. Funkcija bez povratne vrednosti

Ova funkcija samo izvršava neku radnju (najčešće ispis na ekran), ali ne možeš da sačuvaš njen rezultat.



def pozdrav():
    print("Zdravo!")

pozdrav()

Ova funkcija:

  • ne koristi return
  • ne može se smestiti u promenljivu


x = pozdrav()   # x će biti None

2. Funkcija sa povratnom vrednošću

Ova funkcija računa nešto i vraća rezultat, koji možeš koristiti dalje u programu.



def saberi(a, b):
    return a + b

rezultat = saberi(2, 3)
print(rezultat)

Ova funkcija:

  • koristi return
  • vraća vrednost
  • može se sačuvati u promenljivu

Uporedni pregled

Bez return Sa return
Ispisuje poruku Računa i vraća vrednost
Koristi print() Koristi return
Ne može u promenljivu Može u promenljivu

Zapamti

Ako želiš samo da se nešto prikaže → koristi print()
Ako želiš da se nešto izračuna i koristi dalje → koristi return


6. Mini zadaci


Zadatak 1 (osnovni)

Napiši funkciju pozdrav(ime) koja vraća poruku: Zdravo, ime!


Zadatak 2 (srednji)

Napiši funkciju paran_broj(n) koja vraća True ako je broj paran, a False ako nije.


Zadatak 3 (za talentovane učenike)

Napiši funkciju maksimum(a, b) koja vraća veći od dva broja.



# zadatak_maksimum.py

def maksimum(a, b):
    if a > b:
        return a
    else:
        return b

print(maksimum(7, 10))  # očekivano 10

7. Zašto su funkcije sa return važne?


Funkcije koje vraćaju vrednosti su osnova:

  • matematičkih izračunavanja
  • igara i bodovanja
  • rada sa senzorima (MicroPython)
  • većih i ozbiljnijih programa

U sledećoj lekciji naučićeš šta se dešava sa promenljivama unutar funkcije i kako Python pamti njihove vrednosti.


Dodatni zadaci za vežbu — Parametri i povratne vrednosti (Python)


Ovi zadaci su napravljeni kako bi ti pomogli da dodatno vežbaš funkcije koje primaju podatke i vraćaju rezultate (povratne vrednosti).

  1. Kvadratni koren i formatiran ispis

    Napiši funkciju kvadratni_koren(x) koja vraća kvadratni koren broja x. Testiraj je u glavnom programu i lepo ispiši rezultat.

    
    def kvadratni_koren(x):
        # vrati sqrt(x) bez built-in math (npr. x**0.5)
        pass
    
    print(kvadratni_koren(25))  # 5.0
        

  2. Pozdrav sa porukom

    Funkcija pozdrav_poruka(ime, poruka) neka vraća spojenu poruku: npr. „Zdravo Ana! Dobrodošao!“ — bez direktnog print() u funkciji.

    
    def pozdrav_poruka(ime, poruka="Zdravo"):
        pass
    
    print(pozdrav_poruka("Ana"))
    print(pozdrav_poruka("Marko", "Ćao"))
        

  3. Prosečna ocena

    Napiši funkciju koja prima listu ocena i vraća prosečnu vrednost. U glavnom programu testiraj sa nekoliko listi.

    
    def prosek_ocena(ocene):
        # vrati prosek
        pass
    
    print(prosek_ocena([5, 4, 3, 5]))
        

  4. Višestruki povratak vrednosti

    Funkcija min_max(lista) vraća najmanji i najveći broj iz liste (kao tuple).

    
    def min_max(lista):
        pass
    
    naj, najv = min_max([10, 2, 7, 14])
    print(naj, najv)
        

  5. Računanje obima i površine (više parametara)

    Napiši funkciju pravougaonik(a, b) koja vraća obim i površinu pravougaonika — prvo obim, pa površinu.

    
    def pravougaonik(a, b):
        pass
    
    o, p = pravougaonik(5, 3)
    print(o, p)  # 16, 15
        

  6. Podrazumevani parametri

    Napiši funkciju pozdrav(ime, pozdrav=\"Zdravo\") koja koristi podrazumevani pozdrav ako se drugi parametar ne prosledi.

    
    def pozdrav(ime, pozdrav="Zdravo"):
        pass
    
    print(pozdrav("Luka"))
    print(pozdrav("Sara", "Ćao"))
        

  7. Delilac i ostatak

    Funkcija deljenje(a, b) neka vraća i rezultat deljenja i ostatak (kao tuple). Testiraj sa različitim brojevima.

    
    def deljenje(a, b):
        pass
    
    rez, ost = deljenje(17, 5)
    print(rez, ost)  # 3, 2
        

  8. Kalkulator sa povratnom vrednošću

    Napiši funkciju calc(a, b, op) koja vraća rezultat za operacije '+', '-', '*', '/' (voditi računa o deljenju sa nulom).

    
    def calc(a, b, op):
        pass
    
    print(calc(8, 3, '+'))
    print(calc(8, 0, '/'))
        

  9. Filter parnih brojeva

    Funkcija parni(lista) koja vraća novu listu samo sa parnim brojevima iz prosleđene liste.

    
    def parni(lista):
        pass
    
    print(parni([1,2,3,4,5,6]))
        

  10. Parameter tipa „keyword“

    Testiraj funkciju pozdrav_kw(ime=None, poruka=None) tako da radi i ako pozoveš sa imenima parametara npr. pozdrav_kw(poruka=\"Ćao\", ime=\"Mila\").

    
    def pozdrav_kw(ime=None, poruka=None):
        pass
    
    print(pozdrav_kw(poruka="Ćao", ime="Mila"))
        

Bonus izazov: Kombinuj funkcije — napravi aplikaciju koja pita korisnika da unese listu brojeva, a zatim koristi jednu funkciju da izračuna prosek, drugu da izračuna min/max, i treću da ispiše lepu poruku sa rezultatima.

Dodatna pojašnjenja: parametri i povratne vrednosti


U ovoj sekciji produbljujemo razumevanje rada funkcija u Pythonu i obrađujemo česte nedoumice koje se javljaju kod početnika.




1. Razlika između print() i return


Jedna od najčešćih grešaka je mešanje print() i return.

  • print() služi samo za ispis na ekran
  • return služi da funkcija vrati vrednost koju možemo dalje koristiti


def saberi(a, b):
    print(a + b)

rezultat = saberi(2, 3)
print(rezultat)

Iako se broj 5 ispisuje na ekranu, promenljiva rezultat nema vrednost koja se može koristiti.


Ispravan pristup:



def saberi(a, b):
    return a + b

rezultat = saberi(2, 3)
print(rezultat)



2. Šta se dešava ako funkcija nema return?


Ako funkcija ne sadrži return, Python automatski vraća vrednost None.



def test():
    x = 10

print(test())

Rezultat će biti:


None

To je važno znati jer korišćenje None u daljim proračunima može dovesti do grešaka.




3. Funkcije koje vraćaju različite tipove podataka


Funkcija ne mora da vraća samo jedan broj ili tekst — može vratiti:

  • broj (int, float)
  • tekst (str)
  • listu
  • tuple (više vrednosti)


def statistika(a, b):
    zbir = a + b
    razlika = a - b
    return zbir, razlika

z, r = statistika(10, 3)
print(z, r)

Ovde funkcija vraća dve vrednosti odjednom, koje Python pakuje u tuple.




4. Šta ako prosledimo pogrešan tip parametra?


Python ne proverava tipove unapred, pa greška nastaje tek tokom izvršavanja.



def uvecaj_za_jedan(x):
    return x + 1

print(uvecaj_za_jedan("5"))

Ovaj kod izaziva grešku jer Python ne može da sabere string i broj.


Dobra praksa je:

  • jasno imenovanje funkcija i parametara
  • provera tipa pomoću isinstance() (u naprednijim primerima)



5. Kako razmišljati o funkciji – dijagram toka


Funkciju možeš zamisliti kao mali „mašinski proces“:


  • Ulaz → parametri
  • Obrada → telo funkcije
  • Izlaz → povratna vrednost (return)

Ako nema return, izlaz je automatski None.


Razmišljanje na ovaj način pomaže kod pisanja složenijih programa i mini-projekata.


Skriveni mini kviz — Parametri i povratne vrednosti

Proveri razumevanje parametara, return naredbe i povratnih vrednosti iz funkcija.

Otvori kviz

Mini kviz: Parametri i return

1. Šta vraća sledeća funkcija?


def zbir(a, b):
    return a + b



2. Šta će se ispisati?


def f(x):
    return x * 2

print(f(3))



3. Koliko parametara ima funkcija?


def test(a, b, c):
    return a + b + c



4. Šta se dešava posle return naredbe?




5. Šta funkcija vraća ako nema return?




Zadaci za samostalno rešavanje — Parametri i povratne vrednosti (7. i 8. razred)


Ovi zadaci proveravaju razumevanje parametara, povratnih vrednosti i kombinovanja više funkcija. Teži zadaci sadrže kratko uputstvo, ali ne i rešenje.


  1. Dupliranje broja

    Napiši funkciju koja prima jedan broj i vraća njegovu duplu vrednost.


  2. Površina kvadrata

    Napiši funkciju koja prima dužinu stranice kvadrata i vraća njegovu površinu.


  3. Broj cifara

    Napiši funkciju koja prima ceo broj i vraća koliko cifara ima taj broj.

    Uputstvo: možeš koristiti pretvaranje broja u string ili ponavljano deljenje sa 10.


  4. Višestruke povratne vrednosti

    Napiši funkciju koja prima dva broja i vraća njihov zbir, razliku i proizvod.

    Uputstvo: razmisli kako Python vraća više vrednosti iz funkcije.


  5. Takmičarski nivo — analiza liste

    Napiši funkciju koja prima listu celih brojeva i vraća koliko ima pozitivnih, negativnih i nula u toj listi.

    Uputstvo: koristi tri brojača i vrati ih kao jednu celinu. Rešenje treba da bude čisto i pregledno.