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.
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.
def kirjoita(): print("Kirjoitetaan jotain!")
Funktiota kutsutaan sen nimellä:
kirjoita()
def kirjoita(): #funktio alkaa print("Kirjoitetaan jotain!") #funktiossa yksi käsky sisennettynä kirjoita() #kutsutaan funktiota
Kokeile:
Kirjoita yllä olevaan funktioon useampi käsky allekkain.
Joskus tarvitsemme muuttaa muuttujaa, mikä on sijoitettu funktion ulkopuolelle. Tällöin muuttuja täytyy esitellä funktion sisällä rivillä:
global muuttujanNimi
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 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()
Muuta edellinen ohjelma siten, että se toimii desimaaliluvuilla ja antaa vastauksen kolmen desimaalin tarkkuudella.
Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.
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.