29
Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 1 / 29

Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Ohjelmoinnin peruskurssi Y1

CSE-A1111

28.9.2016

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 1 / 29

Page 2: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Mahdollisuus antaa luentopalautetta

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

I Tata kautta voit myos antaa palautetta, jos jokin asiaopetusmonisteessa on jaanyt epaselvaksi.

I Jos jokin asia on jaanyt palautteen perusteella epaselvaksi, palataansiihen mahdollisuuksien mukaan seuraavalla luennolla.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 2 / 29

Page 3: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Oppimistavoitteet: taman luennon jalkeen

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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 3 / 29

Page 4: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Funktiot

I Tahan asti esitetyt ohjelmat ovat oleet hyvin lyhyita. Todellisessaelamassa tarvitaan kuitenkin 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 (mutta eiheti perakkain niin, etta voitaisiin kayttaa toistokaskya). On tyolastakirjoittaa sama koodi 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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 4 / 29

Page 5: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 5 / 29

Page 6: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Esimerkki: kolmioiden tulostus

I Halutaan kirjoittaa ohjelma, joka tulostaa seuraavan kuvion.

*

***

*****

*

***

*****

*

***

*****

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

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 6 / 29

Page 7: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Esimerkin koodi

def tulosta_kolmio():

print(" * ")

print(" *** ")

print("*****")

def main():

tulosta_kolmio()

tulosta_kolmio()

tulosta_kolmio()

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 7 / 29

Page 8: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Toinen versio: kutsut toistokaskyn sisalla

def tulosta_kolmio():

print(" * ")

print(" *** ")

print("*****")

def main():

KERRAT = 3

for i in range(KERRAT):

tulosta_kolmio()

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 8 / 29

Page 9: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Parametrit

I Halutaan kirjoittaa ohjelma, jolle annetaan kuljettu matka ja aika(minuutit ja sekunnit erikseen) ja joka tulostaa sitten nopeudenkilometria kohti.

I Kilometrinopeuden laskeminen sopii hyvin omaksi funktioksi.

I Tarvitaan kuitenkin jokin tapa kertoa funktiolle, mika on kuljettumatka ja aika.

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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 9 / 29

Page 10: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Kilometrinopeus, koodi

def laske_kilometrinopeus(matka, minuutit, sekunnit):

aika_sekunteina = minuutit * 60 + sekunnit

sekunnit_per_km = int(aika_sekunteina / matka)

km_min = sekunnit_per_km // 60

km_sek = sekunnit_per_km % 60

print("Nopeus on {:d} min {:d} s/km.".format(

km_min, km_sek))

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 10 / 29

Page 11: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Kilometrinopeus, 1. versio paaohjelmasta

I Lahtotiedot (matka ja kaytetty aika) on kirjoitettu suoraanpaaohjelmaan.

def main():

print("Matka on 5.8 km ja aika 32:46")

laske_kilometrinopeus(5.8, 32, 46)

print("Matka on 11.5 km ja aika 69:14")

laske_kilometrinopeus(11.5, 69, 14)

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 11 / 29

Page 12: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Kilometrinopeus, parempi paaohjelma

def main():

rivi = input("Anna matka kilometreina.\n")

kilometrit = float(rivi)

rivi = input("Anna ajan minuutit.\n")

min = int(rivi)

rivi = input("Anna ajan sekunnit.\n")

sek = int(rivi)

laske_kilometrinopeus(kilometrit, min, sek)

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 12 / 29

Page 13: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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

laske_kilometrinopeus(12.0, 55, 15)

laske_kilometrinopeus(kilometrit, min, sek)

laske_kilometrinopeus(2 * kilometrit, min, sek - 15)

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 13 / 29

Page 14: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Valitehtava

I Kirjoita funktio muuta_kiloiksi, joka saa parametrina massanpaunoina (kokonaisluku) ja muuttaa sen kilogrammoiksi. Yksi paunaon noin 0,453 kg. Funktio tulostaa massan kilogrammoina.

I Kirjoita myos paaohjelma, joka pyytaa kayttajalta massan paunoina jakutsuu kirjoittamaasi funktiota.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 14 / 29

Page 15: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Arvon palauttavat funktiot

I Usein on tarve saada tieto funktion laskemasta arvosta muualleohjelmaan.

I Esimerkki: halutaan kirjoittaa ohjelma, joka sieventaa annetunmurtoluvun.

I Murtolukua sievennettaessa tarvitaan osoittajan ja nimittajan suurinyhteinen tekija, syt. Sen laskeminen sopii hyvin omaksi funktioksi.

I Jotta funktiossa laskettua syt:ia voitaisiin kayttaa sievennyksessa,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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 15 / 29

Page 16: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Arvon palauttaminen

I Arvo palautetaan return-kaskylla:

return lauseke

lauseke voi olla vakioarvo, muuttujan nimi tai monimutkaisempilauseke.

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

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 16 / 29

Page 17: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 17 / 29

Page 18: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Murtoluvun sieventaminen, koodi

I Kaytetaan sytin laskemiseen Euclideen algoritmia (toimii positiivisilleluvuille):

I Jos luvut ovat yhtasuuret, syt on kumpi tahansa luvuista.I Muussa tapauksessa vahennetetaan aina suuremmasta luvusta

pienempi, kunnes luvut ovat yhtasuuret.

def laske_syt(kokonaisluku1, kokonaisluku2):

luku1 = abs(kokonaisluku1)

luku2 = abs(kokonaisluku2)

while (luku1 != luku2):

if luku1 > luku2:

luku1 = luku1 - luku2

else:

luku2 = luku2 - luku1

return luku1

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 18 / 29

Page 19: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Murtoluvun sieventaminen, koodi jatkuu

def main():

print("Ohjelma sieventaa antamasi murtoluvun.")

syote = input("Anna osoittaja.\n")

osoittaja = int(syote)

syote = input("Anna nimittaja.\n")

nimittaja = int(syote)

if osoittaja == 0 or nimittaja == 0:

print("Ohjelma ei pysty sieventamaan lukua.")

else:

syt = laske_syt(osoittaja, nimittaja)

osoittaja = osoittaja // syt

nimittaja = nimittaja // syt

print("Sievennettyna: {:d}/{:d}".format(

osoittaja, nimittaja))

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 19 / 29

Page 20: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Valitehtava 2

I Muuta kirjoittamaasi funktiota muuta_kiloiksi niin, etta se ei itsetulosta massaa kilogrammoina, vaan palauttaa lasketun massan.

I Lisaa paaohjelmaan funktion muuta_kiloiksi paluuarvon tulostus.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 20 / 29

Page 21: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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):

osoittaja = int(input("Anna osoittaja.\n"))

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 21 / 29

Page 22: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Totuusarvon palauttavat funktiot

I Funktio voi myos palauttaa totuusarvon True tai False

I Seuraava esimerkkiohjelma laskee kayttajan ian tamansyntymavuoden perusteella.

I Ohjelmaan on lisatty funktio onko_kelvollinen, joka tutkii, onkosille parametrina annettu syntymavuosi hyvaksytylla valilla 1900–2016.

I Funkton palauttamaa arvoa voitaisiin kayttaa esimerkiksi if-kaskynehdossa seuraavasti:

if onko_kelvollinen(syntymavuosi) == True:

I Vertailu arvoon True on kuitenkin tarpeeton, koska funktio itsessaanpalauttaa arvon True tai False. Sen vuoksi ehto voidaan kirjoittaalyhyemmin:

if onko_kelvollinen(syntymavuosi):

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 22 / 29

Page 23: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Ian laskeminen, koodi

NYKYINEN_VUOSI = 2016

def onko_kelvollinen(vuosi):

ALARAJA = 1900

if vuosi < ALARAJA or vuosi > NYKYINEN_VUOSI:

return False

else:

return True

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 23 / 29

Page 24: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

Ian laskeminen, koodi jatkuu

def main():

print("Ohjelma laskee ikasi.")

syntymavuosi = int(input("Anna syntymavuotesi.\n"))

if onko_kelvollinen(syntymavuosi):

ika = NYKYINEN_VUOSI - syntymavuosi

print("Ikasi on", ika, "vuotta.")

else:

print("Virhe syntymavuodessa.")

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 24 / 29

Page 25: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 25 / 29

Page 26: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 26 / 29

Page 27: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 27 / 29

Page 28: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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))

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 28 / 29

Page 29: Ohjelmoinnin peruskurssi Y1€¦ · ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29. Title: Ohjelmoinnin peruskurssi

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()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 29 / 29