Funktio

Sisältää
tehtäviä!

Ohjelmointikielissä funktio suorittaa aina jonkin tehtävän tai tehtäviä. Funktiolle annetaan aina yksilöllinen nimi (ei ääkkösiä jne.), jolla sitä kutsutaan aina tarvittaessa. Funktiota ei siis suoriteta aina, vaan vasta kutsuttaessa.

Sivu voi kutsua samaa funktiota useita kertoja, funktion sisältä voidaan kutsua toisia funktioita. Funktio voi saada alkuarvoja parametrina ja se voi myös palauttaa arvoja.

Funktion kirjoittaminen

Pythonissa funktio määritellään def-sanalla. Tämän sanan jälkeen kirjoitetaan funktion nimi ja merkit (): heti nimen perään.

Funktion käskyt kirjoitetaan sisennettynä nimi-rivin alle. Sisennys tehdään tab-napilla.

Funktiota kutsutaan sen nimellä:


def kirjoita():						#funktio alkaa
	print("Kirjoitetaan jotain!")	#funktiossa yksi käsky sisennettynä
	
	
kirjoita()							#kutsutaan funktiota

Kokeile:
Kirjoita yllä olevaan funktioon useampi käsky allekkain.

Muuttujien näkyminen funktion sisällä

Joskus tarvitsemme muuttaa muuttujaa, mikä on sijoitettu funktion ulkopuolelle. Tällöin muuttuja täytyy esitellä funktion sisällä rivillä:

Esimerkiksi:


minunTeksti = "Funktio kirjoittaa";		#funktion ulkopuolinen muuttuja

def kirjoita():
    global minunTeksti                       #haetaan muuttuja käyttöön
    minunTeksti = minunTeksti + " jotain!"   #muutetaan muuttujaa
    print(minunTeksti)		                 #tulostetaan muuttunut arvo
    

kirjoita()

print(minunTeksti)			#muuttuja on muuttunut funktiossa	
	

Kokeile:
Muuta yllä olevaa funktiota siten, että muuttuja minunTeksti ei muutu funktion sisällä ja funktio tulostaa kuitenkin saman tekstin.

Ohjelman tehtävien jaottelua

Ohjelman kirjoittajan pitää pitää huoli, että tehtävä jaotellaan järkevästi osiin eli pienempiin tehtäviin. Jos ohjelma ei ole kirjoitettu "hyvin", on se sekava ja siinä on paljon turhaa koodia.

Jos ohjelmalla on toistuvia pieniä tehtäviä, ne on aina hyvä jaotella funktioiksi.

Tehdään ohjelma, mikä tulostaa kahden kokonaisluvun keskiarvon:


luku = 0			#luvun alkuarvo

def kysyLuku():								
	global luku
	uusiluku = input("Anna kokonaisluku:")  #funktio kysyy uutta lukua
	luku = luku + int(uusiluku)				#ja lisää sen vanhaan 

def tulostaKeskiarvo():
	global luku
	kysyLuku()
	kysyLuku()
	keskiarvo = luku / 2		
	print("Kahden luvun keskiarvo on " + str(keskiarvo))

tulostaKeskiarvo()

Tehtävä 1

Muuta edellinen ohjelma siten, että se toimii desimaaliluvuilla ja antaa vastauksen kolmen desimaalin tarkkuudella.

Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.

Tehtävä 2

Tee ohjelma, mikä kysyy käyttäjän nimeä ja ikää. Sen jälkeen ohjelma tulostaa tervehdyksen: "Hei, xxxx ! Ikäsi on yyyy".

Toteuta ohjelman kysymykset ja tulostukset erillisillä funktioilla.

Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.