ohjelmoinnin peruskurssi y1tulostuksen muotoilu i tulostuksen muotoilun avulla voi esim. i m a ar at...

30
Ohjelmoinnin peruskurssi Y1 CS-A1111 27.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 1 / 30

Upload: others

Post on 08-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Ohjelmoinnin peruskurssi Y1

CS-A1111

27.9.2017

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 1 / 30

Page 2: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Mahdollisuus antaa luentopalautetta

I Luennon aikana voit kirjoittaa kommentteja ja kysymyksia sivullepresemo.aalto.fi/opey1luento4

I Goblinissa vasemmassa reunassa olevassa valikossa on valinta”Luentopalaute”. Tata kautta on mahdollisuus antaa nimettomanapalautetta luennosta.

I Myos harjoitustehtavista voi antaa palautetta palautuksen yhteydessa,mutta tama palaute ei ole nimetonta.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 2 / 30

Page 3: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Oppimistavoitteet: taman luennon jalkeen

I Tiedat, miten voit muotoilla ohjelman tulostusta (esim. desimaalienmaaraa tulostettavassa luvussa).

I Tiedat, miten ohjelma voidaan jakaa pienempiin osiin kayttamallafunktioita.

I Osaat maaritella funktion.

I Osaat kutsua funktiota eli kirjoittaa muualle ohjelmaan kaskyn, jokasaa aikaan funktion suorittamisen.

I Tiedat, miten funktiolle voi antaa lahtotietoja parametrien avulla.

I Tiedat, miten funktio voi valittaa muulle ohjelmalle tiedonlaskemistaan arvoista tms. paluuarvojen avulla.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 3 / 30

Page 4: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Tulostuksen muotoilu

I Tulostuksen muotoilun avulla voi esim.I maarata desimaaliluvuista tulostettavien desimaalien maaranI maarata, kuinka levea kentta tulostettavalle asialle varataanI paasta eroon ylimaaraisita valilyonneista tulostuksessa.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 4 / 30

Page 5: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Miten tulostusta muotoillaan?

I print-kaskyssa kirjoitetaan ensin lainausmerkkien sisalle tulostettavavakioteksti.

I Tekstin keskelle lisataan aaltosulut ja niiden sisaan muotoilumaaresellaiseen paikkaan, johin tulostuksessa halutaan tulevan jokumuotoiltava arvo, esimerkiksi muuttujan arvo.

I Lainausmerkin jalkeen tulostettavat arvot annetaan format-kaskylla.

I Esimerkki:

luku1 = 4.579875

tulo = luku1 * luku1

print("Luku on {:7.3f}".format(luku1))

print("{:5.2f} toiseen on {:6.2f}".format(luku1, tulo))

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 5 / 30

Page 6: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Muotoilumaare

I Muotoilukoodi alkaa kaksoispisteella.

I Kaksoispisteen jalkeen voidaan antaa kokonaislukuna tulostuksellevarattavan kentan leveys (voidaan myos jattaa pois).

I Taman jalkeen desimaaliluvuilla voidaan antaa piste ja sen jalkeenkaytettava tarkkuus (desimaalien maara) kokonaislukuna.

I Lopuksi tulee maarittelykirjain, joka kertoo, millaista arvoa ollaantulostamassa:d kokonaislukuf desimaaliluku ilman eksponenttiosaae desimaaliluku eksponenttiosan kanssaE desimaaliluku eksponenttiosan kanssag desimaalilukus merkkijono

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 6 / 30

Page 7: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Esimerkkeja

(Jotta esimerkit toimisivat, muuttujille pitaa ensin antaa sopivat arvot)

I Muuttujien arvot tulostetaan kahden desimaalin tarkkuudella:

print("{:.2f} toiseen on {:.2f}".format(luku1, tulo))

I Tulostettaville arvoille varataan vakiolevyiset kentat, desimaaliluvuttulostetaan kolmen desimaalin tarkkuudella:

print("{:3d} {:7.3f} {:9.3f}".format(vuosi, korko, arvo))

I Kaksoispiste tulee suoraan merkkijonon jalkeen ja piste suoraankokonaisluvun jalkeen ilman valilyonteja valissa:

print("Opiskelija {:s}: {:d}.".format(nimi, pisteet))

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 7 / 30

Page 8: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Funktiot

I Todellisessa elamassa tarvitaan ohjelmia, jotka ovat tuhansien taikymmenien tuhansien rivien mittaisia.

I Jos koko ohjelma muodostuu tuolloin yhdesta paaohjelmasta, on senrakenteen ja toiminnan hahmottaminen vaikeaa.

I Lisaksi ohjelmissa tehdaan usein sama asia monta kertaa.

I Ratkaisu: kaytetaan funktioita.

I Funktio on ohjelmakoodin osa, jolle on annettu oma nimi.

I Funktion nimea kayttamalla voidaan kutsua funktiota eli pyytaafunktiota suoritettavaksi muualta ohjelmasta.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 8 / 30

Page 9: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Funktioiden kayton etuja

I Ohjelmakoodi selkiytyy.

I Saman asian tekeva koodi joudutaan kirjoittamaan vain kerran.

I Ohjelman yllapito helpottuu.

I Ohjelman testaus helpottuu.

I Ohjelman kirjoittaminen ryhmatyona helpottuu.

I Ohjelman osia on helpompi kayttaa uudelleen toisissa ohjelmissa.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 9 / 30

Page 10: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Esimerkki: kolmioiden tulostus

I Halutaan kirjoittaa ohjelma, joka tulostaa seuraavan kuvion.

*

***

*****

*

***

*****

*

***

*****

I Kuvio muodostuu kolmiosta, joka piirretaan 3 kertaa. Kirjoitetaanfunktio yhden kolmion tulostamiseen.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 10 / 30

Page 11: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Esimerkin koodi

def tulosta_kolmio():

print(" * ")

print(" *** ")

print("*****")

def main():

tulosta_kolmio()

tulosta_kolmio()

tulosta_kolmio()

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 11 / 30

Page 12: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Toinen versio: kutsut toistokaskyn sisalla

def tulosta_kolmio():

print(" * ")

print(" *** ")

print("*****")

def main():

KERRAT = 3

for i in range(KERRAT):

tulosta_kolmio()

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 12 / 30

Page 13: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Parametrit

I Halutaan kirjoittaa ohjelma, jolle annetaan pituus jalkoina ja tuuminaja joka tulostaa saman pituuden sentteina.

I Muunnoksen laskeminen sopii hyvin omaksi funktioksi.

I Tarvitaan kuitenkin jokin tapa kertoa funktiolle lahtotietoina annetutjalat ja tuumat.

I Tama tieto voidaan valittaa parametrien avulla.

I Parametri on funktion otsikossa sulkujen sisalla annettu nimi, jota voikayttaa funktion sisalla kuin mita tahansa muuttujaa.

I Kun funktiota kutsutaan, maarataan parametrille tuleva alkuarvo.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 13 / 30

Page 14: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Pituusmuunnos, koodi

def muunna_senteiksi(jalat, tuumat):

TUUMAKERROIN = 2.54

JALKAKERROIN = 12 * TUUMAKERROIN

pituus = JALKAKERROIN * jalat + TUUMAKERROIN * tuumat

print("Pituus on sentteina {:.1f} cm".format(pituus))

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 14 / 30

Page 15: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Pituusmuunnos, 1. versio paaohjelmasta

I Lahtotiedot (jalat ja tuumat) on kirjoitettu suoraan paaohjelmaan.

def main():

print("Paljonko on 5 jalkaa 10 tuumaa?")

muunna_senteiksi(5, 10)

print("Enta 5 jalkaa 2 tuumaa?")

muunna_senteiksi(5, 2)

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 15 / 30

Page 16: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Pituusmuunnos, parempi paaohjelma

def main():

print("Ohjelma muuntaa pituuksia senteiksi.")

rivi = input("Montako jalkaa?\n")

pituuden_jalat = int(rivi)

rivi = input("Montako tuumaa?\n")

pituuden_tuumat = int(rivi)

muunna_senteiksi(pituuden_jalat, pituuden_tuumat)

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 16 / 30

Page 17: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Viela parametreista

I Parametrit saavat funktion kutsussa annetut alkuarvot samassajarjestyksessa kuin parametrit ovat funktion otsikossa.

I Funktion kutsussa parametrina arvo voidaan antaa mina tahansalausekkeena, jonka arvo voidaan laskea, esimerkiksi:

I suoraan lukuarvoI muuttujaI monimutkaisempi lauseke

I Esimerkkeja

muunna_senteiksi(8, 2)

muunna_senteiksi(pituuden_jalat, pituuden_tuumat)

muunna_senteiksi(2 * pituuden_jalat, pituuden_tuumat - 5)

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 17 / 30

Page 18: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Valitehtava 1

Vastaa sivulla presemo.aalto.fi/opey1luento4

I Mita seuraava ohjelma tulostaa?

def tulosta_tuplana(luku):

tulos = 2 * luku

print(tulos)

def main():

numero = 3

luku = 5

tulosta_tuplana(numero)

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 18 / 30

Page 19: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Arvon palauttavat funktiot

I Halutaan tieto funktion laskemasta arvosta muualle ohjelmaan.

I Esimerkki: kierroksen 1 tehtavassa 3 piti laskea, millakilometrimaaralla sahkoauto tulee halvemmaksi kuin bensiiniauto.

I Pyydetty kilometrimaara voidaan laskea jakamalla autojen hintojenero niiden kilometrikayttokustannusten erolla.

I Kirjoitetaan funktio, joka laskee bensiiniauton kulutuksesta (l / 100km) sen polttoainekustannuksen kilometria kohti.

I Jotta funktiossa laskettua arvoa voidaan kayttaa muualla ohjelmassa,pitaa se saada jotenkin tietoon funktion ulkopuolelle.

I Funktio voi valittaa tiedon laskemastaan arvosta palauttamalla tamanarvon.

I Arvon voi palauttaa return-kaskylla. Sen suoritus aina paattaafunktion suorituksen.

I Palautetun arvon voi ottaa talteen siella, missa funktiota kutsuttiin.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 19 / 30

Page 20: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Arvon palauttaminen

I Arvo palautetaan return-kaskylla:

return lauseke

I Palautettu arvo voidaan ottaa sijoituskaskylla talteen siella, missafunktiota kutsuttiin:

muuttuja = funktio(parametrit)

I Palautetun arvon voi myos tulostaa suoraan esimerkiksiprint-kaskyssa:

print("Tulos on", funktio(parametrit))

I Palautettua arvoa voi myos kayttaa hyvaksi suoraan toisen lausekkeenarvoa laskettaessa:

uusi_tulos = 2 * funktio(parametrit) - 5

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 20 / 30

Page 21: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Huomaa

I Arvon palauttaminen ja arvon tulostaminen ovat taysin eri asiat.

I Arvon tulostaminen tarkoittaa sita, etta ohjelma tulostaa arvonnakyviin esimerkiksi kuvaruudulle.

I Arvon palauttaminen ei viela tulosta arvoa minnekaan nakyviin. Sevain valittaa funktion laskeman arvon kaytettavaksi sinne, missafunktiota kutsuttiin.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 21 / 30

Page 22: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Autovertailu, koodi

def laske_bensakulut_km(kulutus_sadalla, litrahinta):

kilometrihinta = kulutus_sadalla / 100.0 * litrahinta

return kilometrihinta

def main():

rivi = input("Anna sahkoauton hinta (eur).\n")

sahkoauto = int(rivi)

rivi = input("Anna bensiiniauton hinta (eur).\n")

bensa_auto = int(rivi)

rivi = input("Anna bensiiniauton kulutus (l/100 km).\n")

kulutus = float(rivi)

# jatkuu seuraavalla kalvolla

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 22 / 30

Page 23: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Autovertailu, koodi jatkuu

hintaero = sahkoauto - bensa_auto

bensan_hinta = 1.35

sahkokustannus_km = 0.02

bensakustannus_km = laske_bensakulut_km(kulutus,

bensan_hinta)

ero_kilometrilla = bensakustannus_km - sahkokustannus_km

kilometrit = hintaero / ero_kilometrilla

print("Sahkoautolla pitaa ajaa yli {:.0f} km.".format(\

kilometrit))

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 23 / 30

Page 24: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Valitehtava 2

Vastaa sivulla presemo.aalto.fi/opey1luento4

I Mita seuraava ohjelma tulostaa?

def muuta_jotain(arvo):

luku = 10

tulos = 3 * arvo

return tulos

def main():

maara = 15

luku = muuta_jotain(maara)

print(luku)

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 24 / 30

Page 25: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Sisakkaiset funktiokutsut

I Funktion kutsussa funktiolle voi antaa parametrina toisen funktionkutsun.

I Talloin sisempi funktio suoritetaan ensin. Sisemman funktionpaluuarvoa kaytetaan ulomman funktion parametrin arvona.

I Esimerkki (int ja input ovat Pythonin valmiita funktioita):

sahkoauto = int(input("Anna sahkoauton hinta (eur).\n"))

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 25 / 30

Page 26: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Moduuli math

I Pythonissa on valmiina suuri joukko funktioita erilaisten toimintojentekemiseen.

I Suurin osa naista funktioista on jaettu moduuleihin. Yksi moduulisisaltaa tyypillisesti samaan asiaan liittyvia funktioita ja mahdollisestimyos vakioita.

I Yksi tarkea moduuli on math, joka sisaltaa joukon matemaattisiafunktioita seka vakiot math.pi ja math.e.

I Jotta moduulin vakioita tai funktioita voisi kayttaa, onohjelmatiedoston alkuun kirjoitettava

import math

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 26 / 30

Page 27: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Tarkeita math-moduulin funktioita

ceil(x) pienin kokonaisluku, joka on ≥ x.floor(x) suurin kokonaisluku, joka on ≤ x.sqrt(x) neliojuuriexp(x) e potenssiin x.log(x) luonnollinen logaritmi.log10(x) 10-kantainen logaritmi.cos(x) kosini.sin(x) sini.tan(x) tangentti.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 27 / 30

Page 28: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Esimerkki: toisen asteen yhtalon ratkaisu

I Kirjoitetaan ohjelma, joka ratkaisee toisen asteen yhtalonax2 + bx + c = 0

I Kaytetaan ratkaisukaavaa

x1,2 =−b ±

√b2 − 4ac

2a

I Ohjelma tulostaa vain reaalijuuret.

I Ratkaisujen lukumaaraa tutkitaan neliojuuren alla olevandiskriminantin arvon perusteella.

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 28 / 30

Page 29: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Toisen asteen yhtalo, koodi

import math

def ratkaise_yhtalo(a, b, c):

diskrim = b * b - 4 * a * c

if diskrim < 0:

print("Ei reaalijuuria.")

elif diskrim == 0:

x = -1.0 * b / (2 * a)

print("Yhtalon ratkaisu on {:.2f}.".format(x))

else:

x1 = (-1.0 * b + math.sqrt(diskrim) ) / (2 * a)

x2 = (-1.0 * b - math.sqrt(diskrim) ) / (2 * a)

print("Ratkaisut ovat {:.2f} ja {:.2f}.".format(

x1, x2))

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 29 / 30

Page 30: Ohjelmoinnin peruskurssi Y1Tulostuksen muotoilu I Tulostuksen muotoilun avulla voi esim. I m a ar at a desimaaliluvuista tulostettavien desimaalien m a ar an I m a ar at a, kuinka

Toisen asteen yhtalo, koodi jatkuu

def main():

print("Anna 2. asteen yhtalon kertoimet a, b ja c.")

eka_kerroin = int(input())

toka_kerroin = int(input())

vakio = int(input())

if eka_kerroin == 0:

print("Yhtalo ei ole toista astetta.")

else:

ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio)

main()

CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 30 / 30