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 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 perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

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 perusteet Y Python

Ohjelmoinnin perusteet Y Python

4 TOISEN ASTEEN YHTÄLÖ

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Tutoriaaliläsnäoloista

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

Luvuilla laskeminen. Esim. 1 Laske

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

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

Funktion raja-arvo ja jatkuvuus Reaali- ja kompleksifunktiot

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

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

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

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

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 peruskurssi Y1

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

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

Ohjelmoinnin peruskurssi Y1

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

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

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

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

Ohjelmoinnin peruskurssi Y1

1. Omat operaatiot 1.1

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

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

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

joissa on 0 4 oikeata vastausta. Laskimet eivät ole sallittuja.

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

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

Ohjelmoinnin peruskurssi Y1

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

Transkriptio:

Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37

Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast ilmo numeroon 16403 tai vaihtoehtoisesti täytä lomake osoitteessa http://opey.experq.com/register Ilmoittautuneille lähetetään luennon jälkeen yksi kysymys luennosta. Kysymykseen voi vastata ilmaisella tekstiviestillä, joka on muotoa Vast *num* *vapaa palaute*, esim. Vast 3 enemmän esimerkkejä. Myös ne ilmoittautuneet, jotka eivät ole kysymystä luennon jälkeen saaneet, voivat lähettää vapaamuotoista palautetta ja kysymyksiä numeroon 16403 tekstiviestillä (max 160 merkkiä), joka on muotoa Vast *vapaa palaute*, esim Vast enemmän esimerkkejä. Yhteystietoja ei luovuteta kolmansille osapuolille eikä vastauksia liitetä takaisin puhelinnumeroihin. Kaikki palautetekstiviestit ovat opiskelijoille ilmaisia. T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 2 / 37

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 2.2.2011 3 / 37

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

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 2.2.2011 7 / 37

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 2011. 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 2.2.2011 9 / 37

Iän laskeminen, koodi NYKYINEN_VUOSI = 2011 def onko_kelvollinen(vuosi): ALARAJA = 1890 if vuosi < ALARAJA or vuosi > NYKYINEN_VUOSI: return False else: return True T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 11 / 37

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 2.2.2011 13 / 37

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 2.2.2011 15 / 37

Tärkeitä math-moduulin funktioita ceil(x) pienin kokonaisluku, joka on x. floor(x) suurin kokonaisluku, joka on 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 2.2.2011 16 / 37

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 2.2.2011 18 / 37

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 2.2.2011 19 / 37

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 2.2.2011 21 / 37

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 2.2.2011 23 / 37

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 2.2.2011 25 / 37

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 2.2.2011 26 / 37

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 2.2.2011 28 / 37

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 2.2.2011 29 / 37

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 2.2.2011 31 / 37

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 2.2.2011 33 / 37

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 2.2.2011 35 / 37

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 2.2.2011 37 / 37