Yksinkertaisia esimerkkejä
Tarkastellaan seuraavaa esimerkkiä: halutaan kirjoittaa ohjelma, joka tulostaa kuvaruudulle alla olevan mallin mukaisen kuvion.
*
***
*****
*
***
*****
*
***
*****
Havaitaan, että kuvio muodostuu kolmesta kolmiosta. Ohjelma voidaan
kirjoittaa nyt niin, että kirjoitetaan funktio tulosta_kolmio
, joka
tulostaa yhden kolmion ja suoritetaan tämä funktio kolme kertaa. Funktio
määritellään samaan tapaan kuin pääohjelmakin. Määrittely aloitetaan
sanalla def
ja funktion nimellä, jonka jälkeen tulevat sulut ja
kaksoispiste. Seuraavalta riviltä alkavat sitten funktioon kuuluvat
käskyt. Jälleen sisennysten avulla osoitetaan, mitkä käskyt kuuluvat
tämän funktion sisälle.
Pääohjelman tehtäväksi jää kutsua funktiota tulosta_kolmio
kolme
kertaa. Funktiota kutsutaan kirjoittamalla sen nimi ja nimen perään
sulut. Funktion kutsu saa aikaan sen, että pääohjelman suoritus
tavallaan keskeytetään ja siirrytään suorittamaan funktioon kuuluvia
käskyjä. Kun funktion suoritus päättyy, siirrytään takaisin pääohjelmaan
ja jatketaan siitä kohdasta, jossa pääohjelman suoritus keskeytyi.
Ohjelma on kokonaisuudessaan seuraava:
def tulosta_kolmio():
print(" * ")
print(" *** ")
print("*****")
def main():
tulosta_kolmio()
tulosta_kolmio()
tulosta_kolmio()
main()
Ohjelma tulostaa edellä esitetyn kuvion. Koska pääohjelmassa suoritetaan
sama käsky (funktion tulosta_kolmio
kutsu) kolme kertaa peräkkäin,
voidaan kutsu kirjoittaa myös toistokäskyn sisään. Jos vielä
kutsukertojen määrä määritellään vakioksi, on sitä helppo muuttaa
myöhemmin. Muutettu pääohjelma on seuraavan näköinen:
def main():
KERRAT = 3
for i in range(KERRAT):
tulosta_kolmio()
Ohjelman muut osat jäävät ennalleen. Toistokäskyn sisällä oleva käsky
(funktion tulosta_kolmio
kutsu) ei riipu mitenkään toistokäskyssä
käytetystä muuttujasta i
, vaan toistettava käsky suoritetaan joka
kerta täysin samalla tavalla. Muuttujaa i
voidaan kuitenkin käyttää
tällä tavalla pitämään huolta siitä, että toistokäskyä suoritetaan juuri
haluttu määrä kierroksia.
Tarkastellaan seuraavaa esimerkkiohjelmaa, jonka tarkoituksena on lähinnä selventää sitä, miten ohjelman suoritus ja funktiokutsut etenevät.
def tervehdi():
nimi = input("Kuka olet? ")
print("Hei,", nimi)
def tulosta_kolmio():
print(" * ")
print(" *** ")
print("*****")
def main():
print("Alku")
tervehdi()
print("Puolivali")
tulosta_kolmio()
print("Loppu")
main()
Ohjelmassa ensimmäiseksi suoritettava käsky on sen lopussa oleva
pääohjelman kutsu main()
, joka saa aikaan sen, että Python-tulkki
lähtee suorittamaan pääohjelman määrittelyyn kirjoitettua koodia. Siinä
tulostetaan ensin kuvaruudulle yksi rivi. Sen jälkeen ohjelmassa
kutsutaan tervehdi
-funktiota eli lähdetään suorittamaan ko. funktion
määrittelyyn kirjoitettuja käskyjä. Kun funktion suoritus päättyy,
palataan takaisin pääohjelmaan, jossa on seuraavana vuorossa jälleen
yhden rivin tulostus. Sen jälkeen siirrytään suorittamaan funktioon
tulosta_kolmio
määriteltyjä käskyjä. Kun funktion suoritus on
lopussa, palataan pääohjelmaan ja suoritetaan siinä viimeisenä oleva
tulostuskäsky. Ohjelman osien suoritusjärjestystä on kuvattu vielä alla
olevassa kuvassa.
Näin ollen ohjelman tulostus voi olla esimerkiksi seuraava:
Alku
Kuka olet? Pekka
Hei, Pekka
Puolivali
*
***
*****
Loppu