Ysin teoria

Funktioteoria

Funktion luominen alkaa määrittelemällä se def-avainsanalla. Sana tulee englannin kielen sanasta define. Tämän jälkeen tulee funktion nimi ja sulkeisiin mahdolliset syötteet eli parametrit. Loppuun kaksoispiste. Funktiota kutsutaan tästä eteenpäin sen nimellä ja se voidaan kutsua pääohjelman sisällä niin monta kertaa kuin halutaan.

HUOMATKAA! SISENNYS TEHDÄÄN NAPILLA TAB (NÄPPÄIMISTÖN VASEN YLÄKULMA)

Parametri

Funktiosta saa monipuolisemman, kun sille antaa parametreja. Parametrit ovat muuttujia, jotka määritellään funktion ylimmällä rivillä funktion nimen jälkeen olevissa sulkeissa. Kun funktiota kutsutaan, niin sen parametreille annetaan arvot kutsuvaiheessa. Jos funktiolle halutaan antaa useampia parametreja, niin ne erotetaan pilkulla toisistaan. Parametrilista voi olla myös tyhjä, jolloin lisätään vain tyhjät sulkeet ().

KOODI

OHJELMA TULOSTAA RUUDULLE

def sanoTerve(nimi, vuosiluokka, ryhmä):
SISENNYSprint("Terve vaan " +nimi+"!")
SISENNYSprint("Olet "+vuosiluokka+ ". luokalla.")
SISENNYSprint("Ryhmäsi on "+ryhmä+".")
sanoTerve("Mikko", "9", "B")

Terve vaan Mikko!
Olet 9. luokalla.
Ryhmäsi on B.

Myös listaa voi käyttää parametrina.

KOODI

OHJELMA TULOSTAA RUUDULLE

def tulostaAlkiot(lista):
SISENNYSfor alkio in lista:
SISENNYSSISENNYSprint(alkio)
luvut=[1, 2, 3, 4, 5]
tulostaAlkiot(luvut)

1
2
3
4
5

Huomaa, että parametrin nimi funktion sisällä voi olla mikä tahansa. Nimen ei tarvitse olla sama kuin kutsuvassa ohjelmassa. Yllä olevassa koodissa listaa kutsutaan metodin sisällä lista, metodin kutsuja näkee saman listan luvut-nimisenä.

Parametreilla voi olla myös oletusarvot, joita käytetään, mikäli käyttäjä ei halua tai muista antaa arvoa.

KOODI

OHJELMA TULOSTAA RUUDULLE

def sano (viesti, kerroin=1):
SISENNYSif kerroin == 1:
SISENNYSSISENNYSprint("Annoit oletuskertoimen.")
SISENNYSprint (viesti * kerroin) 

kerroin=int(input("Anna ensimmäinen kerroin: "))
kerroin2= int(input("Anna toinen kerroin: "))
sano("Hampurilainen ", kerroin)
sano("Lihapiirakka ", kerroin2)

Anna ensimmäinen kerroin: 6
Anna toinen kerroin: 4
Hampurilainen Hampurilainen Hampurilainen Hampurilainen Hampurilainen Hampurilainen
Lihapiirakka Lihapiirakka Lihapiirakka Lihapiirakka

 punaiset numerot = käyttäjän antama luku ajoikkunassa  


Paluuarvo

Paluuarvo on funktion osa, joka suorittaa funktiosta poistumisen. Paluuarvo hoitaa myös mahdollisen muuttuja-arvon palauttamisen. Pythonissa paluuarvoa varten on varattu return.

Funktion paluuarvoa ei tarvitse sijoittaa muuttujaan, vaan se voi olla osana tulostuslausetta kuten muutkin muuttujat. Palautettava arvo voi olla mikä tahansa tietotyyppi. Return-lause voidaan kirjoittaa myös ilman palautusarvoa, jolloin tulkki palauttaa arvon ’None’.

 

KOODI

OHJELMA TULOSTAA RUUDULLE

def summa (eka,toka):
SISENNYSreturn eka + toka

eka=int(input("Anna ensimmäinen kokonaisluku: "))
toka=int(input("Anna toinen kokonaisluku: "))

print("Lukujen summa on: " + str(summa(eka,toka)))

Anna ensimmäinen kokonaisluku: 8
Anna toinen kokonaisluku: 53
Lukujen summa on: 61

punaiset numerot = käyttäjän antama luku ajoikkunassa  

kursivoitu ja alleviivattu = muuttujien avulla laskettu/tulostettu luku

Muuttujat funktioissa

Funktion sisäisiä muuttujia sanotaan paikallisiksi, koska ne näkyvät vain oman funktion sisällä. Jos luot funktion sisällä muuttujan luku, niin tämä muuttuja on käytettävissä ainoastaan sen funktion sisälle, johon se luotiin. Voit luoda jokaiseen alifunktioon muuttujan luku, koska jokainen funktio toimii omassa nimiavaruudessa. Tästä johtuen funktioiden välillä muuttujilla ei ole mitään yhteyttä.

KOODI

OHJELMA TULOSTAA RUUDULLE

def func(x):
SISENNYSprint ("x on funktion sisään tullessa",x)
SISENNYS x=2
SISENNYS print("x on muutettu funktion sisällä arvoon",x)

x=50
print("x on ennen funktiota",x)
func(x)
print("x on funktion kutsumisen jälkeen edelleen",x)

x on ennen funktiota 50
x on funktion sisään tullessa 50
x on muutettu funktion sisällä arvoon 2
x on funktion kutsumisen jälkeen edelleen 50

Useampia funktioita

Funktioita kutsutaan pääohjelmasta sen tunnisteella. Kutsuun liitetään sulkeisiin funktiolle välitettävät parametrit. Parametrien määrän ja tyyppien on vastattava toisiaan.

Yleinen ja selkein tapa on kirjoittaa funktiot ohjelman alkuun tai omaksi tiedostoksi.

KOODI

OHJELMA TULOSTAA RUUDULLE

#esimerkkejä aliohjelmista

def sano_moi(): #ei yhtään parametria
SISENNYSprint("Moi!")

def sano_hei(nimi): #yksi parametri
SISENNYSprint("Hei," ,nimi)

def sano_paivaa(etu,suku): #kaksi parametria
SISENNYSprint("Hyvää päivää", etu, suku)

def kolmen_summa(a, b, c): #kolme parametria
SISENNYSsumma = a + b + c
SISENNYSprint (summa)

#pääohjelma, jossa kutsutaan määriteltyjä funktioita
sano_moi()
sano_hei("Saara")
sano_paivaa("Tero", "Tietäväinen")
kolmen_summa(10, 40, 70)