Funktiot 1/4

Ohjelman monimutkaistuessa otetaan funktiot käyttöön

Ohjelmiston jäsenteleminen

Hyvään ohjelmointityyliin ohjelmointikielestä riippumatta kuuluu ohjelmiston jäsentely osiin, joissa suoritetaan periaatteessa vain yksi toiminto. Funktiot ovat eräs tällainen jäsentelykeino. Funktioiden käytölle on muitakin perusteita.

Seuraavassa periaatteellinen esimerkki. Ensimmäistä koodia ei ole jäsennelty funktioihin, mutta jälkimmäinen on.

Esimerkki 1:


Esimerkki 2:


No mitä järkeä tässä oli? Koodi vain piteni, eikä siihen tullut mitään lisäominaisuutta!

Ohjelman logiikassa on kuitenkin kolme eri osiota, jotka on jälkimmäisessä esimerkissä ryhmitelty omiksi osikseen eli funktioiksi.

Osiin jakaminen on perusteltua myös lisäpiirteiden laatimisen kannalta.

Seuraava esimerkki ei ole ammattimainen tapa toteuttaa kielellistäminen, mutta tässä tilanteessa se sopii hyvin havainnollistaminaan koodin osittelun merkitystä.

Oletetaan nimittäin, että ohjelmiston avulla pitää kommunikoida eri kielillä. Esimerkiksi suomeksi ja englanniksi. Ohjelmisto voisi silloin olla esimerkiksi seuraavanlainen:

Esimerkki 3:

Funktion rakenne

def funktio (parametrit):
[funktion toiminnot}
return(arvo)

  • sana def aloittaa funktion määrittelyn
  • funktiolla on nimi
    • nimen kannattaa olla mahdollisimman kuvaava
    • jos nimi muodostuu eri sanoista, yhdistä sanat alaviivalla tapaan: ympyran_piiri
      • esiintyy myös tapaa kirjoittaa sanat toisesta sanasta alkaen isolla kirjaimella: ympyranPiiri
  • nimen jälkeen tulee aina sulkeet ja kaksoispiste
  • sulkeiden sisällä voidaan funktiolle välittää tietoa yhden tai usemman parametrin avulla
    • Esimerkiksi ympyran_piiri(sade)
  • mikäli funktio palauttaa arvon, se annetaan funktion viimeisellä rivillä return-lauseessa sulkeiden sisällä

Harjoittelua

Esimerkki 4:


Tehtävä 1:
Täydennä esimerkkiä 4 laajentamalla kielivalikoimaa jollain valitsemallasi kielellä. Esimerkiksi ruotsi, saksa, italia, ranska, yms.
Kopioi esimerkin 4 koodi ja tee tarvittavat muutokset.


Tehtävä 2:
Täydennä esimerkkiä 4 siten, että ohjelma kysyy aluksi käyttäjän nimen. Nimen kysyminen tapahtuu vain suomen kielellä. Mutta tervehtiminen, kuulumisten kysyminen ja hyvästeleminen tapahtuvat valitulla kielellä. Ohjelma mainitaam siten myös käyttäjän nimi tapaan: 'Mitä kuuluu Matti?'
Voit kopioida koodin tehtävästä 1 jatkaen siten ohjelman laajentamista tai voit kopioida koodin esimerkistä 4.


Esimerkki 5:


Tehtävä 3:
Laajenna esimerkin 5 ohjelmistoa siten, että ohjelmassa lasketaan myös ympyrän pinta-ala ja se tulostetaan näyttöön samalla tavoin kuin ympyrän piiri. Potenssiin korottaminen voidaan toteuttaa kirjoittamalla kaksi tähteä peräkkäin; a potenssiin b = a ** b.


Tehtävä 4:
Luvun kertoma on kokonaislukujen tulo alkaen ykkösestä. Esimerkiksi luvun 4 kertoma: 4! = 1 * 2 * 3 * 4 = 24
Laadi ohjelma, joka kysyy käyttäjältä luvun ja laskee ja tulostaa luvun kertoman.
Laadi funktio nimeltään 'kertoma', joka laskee luvun kertoman, kun funktiolle annetaan parametrina kyseinen luku. Funktio palauttaa kertoman arvon.
Tutki, miten kertoma käyttäytyy eri arvoilla.
Kertomalla on käytännöllinen merkitys. Esimerkiksi nelihenkinen viestijoukkue voidaan järjestää neljän kertoman verran eri järjestykseen. Moneenko eri järjestykseen Jukolan viestin joukkue (7 jäsentä) voidaan järjestää? Entäpä luokallasi olevat oppilaat?

Lisätehtävä 1: laadi while true -rakenteellla silmukka, jota toistetaan niin kauan, kunnes käyttäjä antaa luvun nolla.
Lisätehtävä 2: varmista, että mikäli käyttäjä antaa jonkin muun kuin positiivisen kokonaisluvun tai nollan ohjelma ei pääty virhetilanteeseen.


Esimerkki 6:


Tehtävä 5:

Laadi funktio 'suurin', joka etsii suurimman listan alkion arvon. Tulosta se näyttöön.
Laadi funktio 'summa', joka laskee listan alkioiden arvojen summan. Tulosta se näyttöön.
Laadi funktio 'keskiarvo', joka tulostaa listan alkioiden arvojen keskiarvon.
Voit kopioida edellisen esimerkin pohjaksi.



Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä