Ohjelmoinnin perusteet Y Python



Samankaltaiset tiedostot
Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

4 TOISEN ASTEEN YHTÄLÖ

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Luvuilla laskeminen. Esim. 1 Laske

Ohjelmoinnin perusteet Y Python

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

0. Kertausta. Luvut, lukujoukot (tavalliset) Osajoukot: Yhtälöt ja niiden ratkaisu: N, luonnolliset luvut (1,2,3,... ) Z, kokonaisluvut

Ohjelmoinnin perusteet Y Python

Funktio 1. a) Mikä on funktion f (x) = x lähtöjoukko eli määrittelyjoukko, kun 0 x 5?

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe klo Ratkaisut ja pisteytysohjeet

Tutoriaaliläsnäoloista

1. a) b) Nollakohdat: 20 = c) a b a b = + ( a b)( a + b) Derivaatan kuvaajan numero. 1 f x x x g x x x x. 3. a)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

3 Yleinen toisen asteen yhtälö ja epäyhtälö

Juuri 7 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty c) sin 50 = sin ( ) = sin 130 = 0,77

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x 1 ja x 2 on voimassa ehto:

Funktion raja-arvo ja jatkuvuus Reaali- ja kompleksifunktiot

Derivaatan sovellukset (ääriarvotehtävät ym.)

Algoritmit 1. Demot Timo Männikkö

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2

ITKP102 Ohjelmointi 1 (6 op)

TEHTÄVIEN RATKAISUT. Luku a) Merkintä f (5) tarkoittaa lukua, jonka funktio tuottaa, kun siihen syötetään luku 5.

Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe klo 10 13

Ohjelmoinnin peruskurssi Y1

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Ohjelmoinnin peruskurssi Y1

1. Omat operaatiot 1.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

MAA02. A-osa. 1. Ratkaise. a) x 2 + 6x = 0 b) (x + 4)(x 4) = 9 a) 3x 6x

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Algebra. 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. 2. Laske. a) Luku 2 on luonnollinen luku.

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Harjoitustyön testaus. Juha Taina

Lue tehtävänannot huolella. Tee pisteytysruudukko 1. konseptin yläreunaan. ILMAN LASKINTA -OSIO! LASKE KAIKKI SEURAAVAT TEHTÄVÄT:

Ohjelmoinnin peruskurssi Y1

Luento 5. Timo Savola. 28. huhtikuuta 2006

B. 2 E. en tiedä C ovat luonnollisia lukuja?

Transkriptio:

Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36

Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon myynnistä perimän palkkion. Välityspalkkion on 4.5 % asunnon myyntihinnasta, kuitenkin vähintään 2500 euroa. On siis laskettava, kumpi mainituista summista on suurempi. Tähän käytetään funktiota maksimi. T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 2 / 36

Asunnon välityspalkkio, koodi def maksimi(luku1, luku2): if luku1 >= luku2: return luku1 else: return luku2 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 4 / 36

Asunnon välityspalkkio, koodi jatkuu def main(): PALKKIOPROSENTTI = 4.5 MINIMIPALKKIO = 2500 syote = raw_input("anna asunnon myyntihinta.\n") hinta = float(syote) palkkio = maksimi(minimipalkkio, \ PALKKIOPROSENTTI / 100.0 * hinta) print "Valityspalkkio on %.2f euroa." % (palkkio) main() T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 6 / 36

Totuusarvon palauttavat funktiot Funktio voi myös palauttaa totuusarvon True tai False Seuraava esimerkkiohjelma laskee käyttäjän iän tämän syntymävuoden perusteella. Ohjelmaan on lisätty funktio onko_kelvollinen, joka tutkii, onko sille parametrina annettu syntymävuosi hyväksytyllä välillä 1890 2010. Funkton palauttamaa arvoa voitaisiin käyttää esimerkiksi if-käskyn ehdossa seuraavasti: if onko_kelvollinen(syntymavuosi) == True: Vertailu arvoon True on kuitenkin tarpeeton, koska funktio itsessään palauttaa arvon True tai False. Sen vuoksi ehto voidaan kirjoittaa lyhyemmin: if onko_kelvollinen(syntymavuosi): T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 8 / 36

Iän laskeminen, koodi NYKYINEN_VUOSI = 2010 def onko_kelvollinen(vuosi): ALARAJA = 1890 if vuosi < ALARAJA or vuosi > NYKYINEN_VUOSI: return False else: return True T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 10 / 36

Iän laskeminen, koodi jatkuu def main(): print "Ohjelma laskee ikasi." rivi = raw_input("anna syntymavuotesi.\n") syntymavuosi = int(rivi) if onko_kelvollinen(syntymavuosi): ika = NYKYINEN_VUOSI - syntymavuosi print "Ikasi on", ika, "vuotta." else: print "Virhe syntymavuodessa." main() T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 12 / 36

Moduuli math Pythonissa on valmiina suuri joukko funktioita erilaisten toimintojen tekemiseen. Suurin osa näistä funktioista on jaettu moduuleihin. Yksi moduuli sisältää tyypillisesti samaan asiaan liittyviä funktioita ja mahdollisesti myös vakioita. Yksi tärkeä moduuli on math, joka sisältää joukon matemaattisia funktioita sekä vakiot math.pi ja math.e. Jotta moduulin vakioita tai funktioita voisi käyttää, on ohjelmatiedoston alkuun kirjoitettava import math T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 14 / 36

Tärkeitä math-moduulin funktioita ceil(x) pienin kokonaisluku, joka on suurempi kuin x. floor(x) suurin kokonaisluku, joka on pienempi kuin x. sqrt(x) neliöjuuri exp(x) e potenssiin x. log(x) luonnollinen logaritmi. log10(x) 10-kantainen logaritmi. cos(x) kosini. sin(x) sini. tan(x) tangentti. Huomaa, että funktoiden ceil ja floor paluuarvon tyyppi on float. T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 15 / 36

Esimerkki: hypotenuusan pituus import math def laske_hypotenuusa(a, b): c = math.sqrt(a * a + b * b) return c def main(): rivi = raw_input("anna 1. sivun pituus.\n") sivu1 = float(rivi) rivi = raw_input("anna 2. sivun pituus.\n") sivu2 = float(rivi) sivu3 = laske_hypotenuusa(sivu1, sivu2) print "Hypotenuusan pituus on %.2f" % (sivu3) main() T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 17 / 36

Esimerkki: toisen asteen yhtälön ratkaisu Kirjoitetaan ohjelma, joka ratkaisee toisen asteen yhtälön ax 2 + bx + c = 0 Käytetään ratkaisukaavaa Ohjelma tulostaa vain reaalijuuret. x 1,2 = b ± b 2 4ac 2a Ratkaisujen lukumäärää tutkitaan neliöjuuren alla olevan diskriminantin arvon perusteella. T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 18 / 36

Toisen asteen yhtälö, 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 %f." % (x) else: x1 = (-1.0 * b + math.sqrt(diskrim) )/ (2 * a) x2 = (-1.0 * b - math.sqrt(diskrim) )/ (2 * a) print "Ratkaisut ovat %f ja %f." % (x1, x2) T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 20 / 36

Toisen asteen yhtälö, koodi jatkuu def main(): print "Anna 2. asteen yhtalon kertoimet a, b ja c." rivi = raw_input() eka_kerroin = int(rivi) rivi = raw_input() toka_kerroin = int(rivi) rivi = raw_input() vakio = int(rivi) if eka_kerroin == 0: print "Yhtalo ei ole toista astetta." else: ratkaise_yhtalo(eka_kerroin, toka_kerroin, vakio) main() T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 22 / 36

Useampi paluuarvo Funktio voi palauttaa samanaikaisesti myös useamman kuin yhden arvon. Palautettavat arvot erotetaan toisistaan return-käskyssä pilkulla: return arvo1, arvo2, arvo3 Arvot voidaan ottaa samanaikaisella sijoituksella talteen siellä, missä funktiota kutsutaan: muuttuja1, muuttuja2, muuttuja3 = funktio(parametrit) T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 24 / 36

Esimerkki: nopeuden yksikön muutos Monet englanninkieliset urheilulehdet ja Internet-sivut antavat harjoitusohjelmissa ohjeellisen nopeuden mailia kohti. Kirjoitetaan ohjelma, joka muuntaa annetun mailinopeuden nopeudeksi kilometriä kohti. Muunnoksen tekevä funktio palauttaa erikseen kilometrinopeuden minuutit ja sekunnit, jotta ne voitaisiin tulostaa siististi. T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 25 / 36

Nopeusyksikkömuunnos, koodi def muuta_km_vauhdiksi(minuutit, sekunnit): MAILIKERROIN = 1.609344 vauhti = int ((minuutit * 60 + sekunnit) / MAILIKERROIN) km_minuutit = vauhti / 60 km_sekunnit = vauhti % 60 return km_minuutit, km_sekunnit def main(): rivi = raw_input("anna mailinopeuden minuutit: ") maili_min = int(rivi) rivi = raw_input("anna mailinopeuden sekunnit: ") maili_sek = int(rivi) km_min, km_s = muuta_km_vauhdiksi(maili_min, maili_sek) print "Nopeus on %d min %d s/km." % (km_min, km_s) main() T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 27 / 36

Valikkopohjaisen ohjelman kirjoittaminen Hyvin yleinen tehtävä on kirjoittaa ohjelma, jossa käyttäjä voi valita valikosta haluamansa toiminnon useasta vaihtoehdosta. Käyttäjä voi valita aina uuden toiminnon niin kauan, kunnes hän haluaa lopettaa. Seuraava esimerkki näyttää, miten tällainen ohjelma kannattaa kirjoittaa. Valikon tulostamista ja käyttäjän valinnan pyytämistä varten kirjoitetaan oma funktio. Myös jokaista toimintoa varten kirjoitetaan oma funktio (nämä funktiot voivat mahdollisesti vielä kutsua muita funktioita). Pääohjelmaan kirjoitetaan toistokäsky, joka kutsuu käyttäjän valintaa pyytävää funktiota ja valinnan mukaan aina jonkun toiminnon toteuttavaa funktiota. Toistokäsky loppuu, kun käyttäjä valitsee ohjelman lopettamisen. Seuraavassa esimerkissä käyttäjä voi laskea erilaisten kuvioiden pinta-aloja. T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 28 / 36

Valikko-ohjelma, koodi import math def valitse_toiminto(): print print "Valitse toiminto:" print "1. laske ympyran pinta-ala" print "2. laske suorakulmion pinta-ala" print "3. laske kolmion pinta-ala" print "4. lopeta" vastaus = raw_input() return int(vastaus) T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 30 / 36

Valikko-ohjelma, koodi def ympyran_ala(): rivi = raw_input("anna ympyran sade.\n") sade = float(rivi) ala = math.pi * sade * sade print "Pinta-ala on %.4f." % (ala) def suorakulmion_ala(): rivi = raw_input("anna suorakulmion leveys.\n") leveys = float(rivi) rivi = raw_input("anna suorakulmion korkeus.\n") korkeus = float(rivi) ala = leveys * korkeus print "Pinta-ala on %.4f." % (ala) T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 32 / 36

Valikko-ohjelma, koodi def kolmion_ala(): rivi = raw_input("anna kolmion alasivun leveys.\n") leveys = float(rivi) rivi = raw_input("anna kolmion korkeus.\n") korkeus = float(rivi) ala = 0.5 * leveys * korkeus print "Pinta-ala on %.4f." % (ala) T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 34 / 36

Valikko-ohjelma, koodi def main(): valinta = valitse_toiminto() while valinta!= 4: if valinta == 1: ympyran_ala() elif valinta == 2: suorakulmion_ala() elif valinta == 3: kolmion_ala() valinta = valitse_toiminto() print "Ohjelman suoritus paattyy" main() T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 36 / 36