Kolmapäev, 1. mai 2019

Python - funktsioonid

Eelmistel tundidel rääkisime, et Pythonis ei saa anda muutujatele nimeks selliseid sõnu, nagu print, input, sest neid sõnu kasutab Python ise oma programmi koodis.
Tegelikult tähendavad need sõnad Pythonisse sisse ehitatud funktsioone, mida me programmi kirjutamisel kasutada saame.

Funktsioonid on programmilõigud, mis määravad ära mingi konkreetse (või mingid konkreetsed) tegevused ning mida saab vajadusel programmi eri osades välja kutsuda.

Funktsiooni kirjeldus algab lühendiga def edasi  tuleb funktsiooni nimi ning sulud (sulgudesse saab lisada parameetri, aga kui seda ei ole, siis tühjad sulud tuleb ikkagi kirjutada. Rea lõpetab koolon!
Funktsiooni sisu kirjutatakse taandega ehk trepitakse!

Ilma parameetrita funktsioon

def loenda():
    i = 10
    while i > 0:
          print(i)
          i = i - 1
loenda()

Parameetriga funktsioon

def loenda(i):
     while i > 0:
          print(i)
          i = i - 1
loenda(10)

NB! Funktsioonid peavad olema kirjeldatud enne, kui neid programmis välja kutsutakse! Tavaliselt kirjeldatakse funktsioonid ära programmi alguses.

Funktsiooni väljakutsumiseks kirjutatakse funktsiooni nimi ja selle järel ümarsulud (või ümarsulgudes parameeter).

Näiteks loenda(10) kutsub viimases näites välja funktsiooni loenda ning annab parameetri kaudu teada, et loendamist tuleb alustada 10-st.


Ülesanne 14
Testi ülalolevaid funktsioone! Kas nende poolt väljastatud tulemuses on mingi erinevus?


Parameetri (antud näidete puhul selle arvu, millest me hakkame alla loendama), saame ka kasutajalt küsida.

Näiteks küsib allolev programm kasutajalt arvu, millest saa soovib allapoole loendama hakata ning funktsiooni parameetriks saabki see arv:

def loenda(i):
    while i > 0:
        print (i)
        i = i-1
n = int(input("Sisesta arv: "))     
loenda(n)

Ülaltoodud näidetes väljastas funktsioon midagi (printis ekraanile numbreid). Vahel on aga vaja, et funktsioon lihtsalt arvutaks midagi välja ning annaks meile vastuse (ja meie saame selle vastusega edasi tegeleda).
Väärtuse väljastamiseks on käsklus return

Näiteks allolev funktsiooninäide liidab funktsiooni nimetuse juures sulgudes antud arvud, aga vastust välja ei prindi.

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

Ka funktsiooni väljakutsumisel ei prindita midagi. Selleks, et näha, kas funktsioon ka õigesti töötab, tuleb lisada käsklus print.

def liitmine(a,b):
    return a + b
print(liitmine(2,4))



Ülesanne 15
Kasutades ülalolevat näidet loo programm, mis küsib kasutajalt 2 arvu (näiteks a ja b) ning väljastab nende summa. Väljastamisel võiks progamm ka öelda, et a ja b summa on ... 

Ülesanne 16
Täienda eelmist programmi lahutamise funktsiooniga nii, et peale arvude sisestamist väljastaks programm nii nende summa kui vahe!


Ülesanne 17
Täienda eelmist programmi selliselt, et kasutaja käest küsitakse, kumba tehet ta teha soovib ning vastavalt sellele käivitatakse funktsioon ning kuvatakse tulemus.


Ülesanne 18
Tuleta meelde eelmisel tunnil õpitud kilpkonnagraafikat. Kuidas saab siin ülesandes 13 funktsiooni kasutada?

Koodinäide