Ohjelmoinnin perusteet Y Python



Samankaltaiset tiedostot
Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

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

Ohjelmoinnin peruskurssi Y1

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Python-ohjelmointi Harjoitus 5

Ohjelmoinnin peruskurssi Y1

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Muistutus aikatauluista

Harjoitus 7 -- Ratkaisut

Todellinen vuosikorko. Efektiivinen/sisäinen korkokanta. Huomioitavaa

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Matematiikan pohjatietokurssi

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0.

n. asteen polynomilla on enintään n nollakohtaa ja enintään n - 1 ääriarvokohtaa.

Epäyhtälöt 1/7 Sisältö ESITIEDOT: yhtälöt

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Yhtälön ratkaiseminen

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

Matematiikan tukikurssi

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

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

Matematiikan tukikurssi, kurssikerta 3

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

2 Raja-arvo ja jatkuvuus

Ohjelmoinnin peruskurssi Y1

1 Rationaalifunktio , a) Sijoitetaan nopeus 50 km/h vaihtoaikaa kuvaavan funktion lausekkeeseen.

Ohjelmoinnin perusteet Y Python

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

Reaalilukuvälit, leikkaus ja unioni (1/2)

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

811120P Diskreetit rakenteet

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Juuri 6 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Vastaus: Määrittelyehto on x 1 ja nollakohta x = 1.

T Ohjelmoinnin perusteet Y (Python). Tentti

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

Transkriptio:

Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34

Luentopalaute kännykällä käynnissä! 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. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 2 / 34

Kertausta: toistokäskyt while ja for While-käskyn yleinen muoto on while ehto: kasky For-käskyn avulla voidaan käydä jonkun rakenteen alkiot järjestyksessä, esimerkiksi for i in range(11): tee jotain arvolle i jossa i saa vuorotellen arvot 0 10. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 4 / 34

Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun. Sievennyksessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä, syt. Käytetään sytin laskemiseen Euclideen algoritmia (toimii positiivisille luvuille): Jos luvut ovat yhtäsuuret, syt on kumpi tahansa luvuista. Muussa tapauksessa vähennetetään aina suuremmasta luvusta pienempi, kunnes luvut ovat yhtäsuuret. Esimerkissä osoittaja ja nimittäjä voivat olla myös negatiivisia, mutta niiden itsearvo saadaan Pythonin valmiilla funktiolla abs. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 5 / 34

Sieventäminen, koodi def main(): print "Ohjelma sieventaa antamasi murtoluvun." syote = raw_input("anna osoittaja.\n") osoittaja = int(syote) syote = raw_input("anna nimittaja.\n") nimittaja = int(syote) if osoittaja == 0 or nimittaja == 0: print "Ohjelma ei pysty sieventamaan lukua." # Jatkuu seuraavalla kalvolla. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 7 / 34

main() else: # Laske osoittajan ja nimittajan syt. luku1 = abs(osoittaja) luku2 = abs(nimittaja) while luku1!= luku2: if luku1 > luku2: luku1 = luku1 - luku2 else: luku2 = luku2 - luku1 syt = luku1 # Sievennetaan osoittaja = osoittaja / syt nimittaja = nimittaja / syt print "Sievennettyna:", osoittaja, "/", nimittaja T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 9 / 34

Iterointiesimerkki Insinöörimatematiikassa pitää usein ratkaista jokin yhtälö iteroimalla: Arvataan yhtälölle joku ratkaisu. Jos arvaus ei ole tarpeeksi hyvä, sijoitetaan edellinen arvaus johonkin kaavaan ja saadaan tällä tavalla uusi arvaus. Tätä jatketaan, kunnes arvaus on tarpeeksi hyvä tai todetaan, että ratkaisua ei löydy tällä tavalla. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 10 / 34

Neliöjuuri Newtonin iteraatiolla Haetaan luvun x neliöjuuri. Newtonin iteraatio: jos funktion f (y) nollakohdalle on arvaus y n, niin parempi arvaus saadaan kaavalla y n+1 = y n f (y n) f (y n ) Tässä tapauksessa lasketaan funktion f (y) = y 2 x nollakohtaa, jolloin kaavaksi saadaan y n+1 = 1 2 (y n + x y n ) Pitää vielä päättää, koska saatu ratkaisu on tarpeeksi hyvä. Tässä esimerkissä lopetetaan, kun kahden peräkkäisen arvauksen erotuksen itseisarvo on korkeintaan 0.0001. Huomautus: neliöjuuren laskemiseen löytyy Pythonista myös valmis funktio, mutta samalla periaatteella voidaan ratkaista monia muita yhtälöitä. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 11 / 34

Neliöjuuri iteroimalla, koodi def main(): TARKKUUS = 0.0001 rivi = raw_input("minka luvun neliojuuri lasketaan? ") x = float(rivi) if x < 0: print "Ei onnistu negatiivisille luvuille" T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 13 / 34

Neliöjuuri iteroimalla, koodi jatkuu main() else: arvaus = 1.0 uusi_arvaus = 0.5 * (arvaus + x / arvaus) while abs(uusi_arvaus - arvaus) > TARKKUUS: arvaus = uusi_arvaus uusi_arvaus = 0.5 * (arvaus + x / arvaus) print "luvun", x, "neliojuuri on", uusi_arvaus T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 15 / 34

Tulostuksen muotoilu Tavallisesti print-käsky käyttää Pythonin oletustarkkuuksia esim. desimaalilukuja tulostaessaan. Usein ohjelmoija haluaisi kuitenkin vaikuttaa desimaalilukujen tulostusten tarkkuuteen. Lisäksi tulostuskenttien leveyksiä säätämällä voidaan vaikuttaa siihen, että päällekkäisillä riveillä toisiaan vastaavat asiat saadaan tulostumaan omiin sarakkeihinsa. Näihin asioihin voidaan vaikuttaa tulostuksen muotoilulla. Seuraavassa ei esitetä läheskään kaikkia muotoilumahdollisuuksia, vaan vain tärkeimmät perusasiat. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 16 / 34

Miten tulostusta muotoillaan? print-käskyssä kirjoitetaan ensin lainausmerkkien sisälle tulostettava vakioteksti. Tekstin keskelle lisätään muotoilukoodeja niihin paikkoihin, joihin tulostuksessa halutaan tulevan joku muotoiltava arvo, esimerkiksi muuttujan arvo. Lainausmerkeissä olevan tekstin jälkeen kirjoitetaan %-merkki ja sen jälkeen suluissa muotoiltavat arvot (esim. muuttujien nimet) toisistaan pilkulla erotettuna. Esimerkki: luku1 = 4.579875 luku2 = 6.812765 tulo = luku1 * luku2 print "%4.2f kertaa %4.2f on %6.2f." % (luku1, luku2, tulo) T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 18 / 34

Muotoilukoodi Muotoilukoodi alkaa %-merkillä. Merkin jälkeen voidaan antaa kokonaislukuna tulostukselle varattavan kentän leveys. Jos sitä ei anneta, tulostustettavalle arvolle varataan tarpeellinen määrä tilaa. Tämän jälkeen desimaaliluvuilla voidaan antaa piste ja sen jälkeen käytettävä tarkkuus (desimaalien määrä) kokonaislukuna. Lopuksi tulee määrittelykirjain, joka kertoo, millaista arvoa ollaan tulostamassa: d kokonaisluku f desimaaliluku ilman eksponenttiosaa e desimaaliluku eksponenttiosan kanssa E desimaaliluku eksponenttiosan kanssa g desimaaliluku s merkkijono T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 20 / 34

Huomautuksia muotoilukoodeista Määrittelykirjainta g käytettäessä desimaaliluku tulostetaan joko ilman eksponenttiosaa tai sen kanssa luvun suuruuden mukaan. Muotoilukoodissa annettu tarkkuus ei tällöin tarkoita desimaalien määrää, vaan merkitsevien numeroiden määrää. Oletusarvoisesti tulostettava arvo tulostetaan kentän oikeaan reunaan. Jos halutaan tulostus kentän vasempaan reunaan, lisätään muotoilukoodin alkuun %-merkin jälkeen - T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 22 / 34

Esimerkki: sijoituksen arvokehitys Käyttäjä antaa ohjelmalle sijoitettavan pääoman, oletetun vuosituoton ja sijoitusajan. Ohjelma laskee ja tulostaa sijoituksen arvon kunkin vuoden lopussa sekä vuoden aikana kertyneen koron. Käytetään tulostuksen muotoilua siihen, että eri vuosien tiedot tulostuvat kauniisti päällekkäin omiin sarakkeihinsa. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 23 / 34

Sijoituksen arvokehitys, koodi def main(): print "Ohjelma laskee sijoituksen arvon kehittymisen." vastaus = raw_input("anna sijoitettava paaoma.\n") paaoma = float(vastaus) vastaus = raw_input("anna sijoitusaika.\n") aika = int(vastaus) vastaus = raw_input("anna vuosituotto (%).\n") tuotto = float(vastaus) T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 25 / 34

Sijoituksen arvokehitys, koodi jatkuu i = 0 print "vuosi vuosikorko paaoma" print " vuoden lopussa" while i < aika: korko = tuotto / 100.0 * paaoma paaoma = paaoma + korko i = i + 1 print "%4d. %10.2f %12.2f" % (i, korko, paaoma) main() T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 27 / 34

Jatko for-käskyn avulla print "vuosi vuosikorko paaoma" print " vuoden lopussa" for i in range(1, aika + 1): korko = tuotto / 100.0 * paaoma paaoma = paaoma + korko print "%4d. %10.2f %12.2f" % (i, korko, paaoma) main() T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 29 / 34

Sisäkkäiset toistokäskyt Toistokäskyn sisällä voi olla toinen toistokäsky. Tällöin sisempi toistokäsky suoritetaan kokonaan eli sen kaikki kierrokset suoritetaan jokaisella ulomman toistokäskyn kierroksella. Seuraavien kalvojen esimerkkiohjelmat tulostavat kellonaikoja (tunnit ja minuutit) yhden minuutin välein. Minuutteja muutetaan sisemmässä toistokäskyssä ja tunteja ulommassa toistokäskyssä. T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 30 / 34

Kello for-käskyn avulla def main(): for tunnit in range(24): for minuutit in range(60): print tunnit, ":", minuutit main() T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 32 / 34

Kello while-käskyn avulla def main(): tunnit = 0 while tunnit < 24: minuutit = 0 while minuutit < 60: print tunnit, ":", minuutit minuutit += 1 tunnit += 1 main() T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 34 / 34