Ohjelmoinnin perusteet Y Python - Aalto · 2012. 1. 2. · Ajoesimerkki Kerro nimesi: Minna Hei,...

22
Ohjelmoinnin perusteet Y Python T-106.1208 17.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 1 / 27

Transcript of Ohjelmoinnin perusteet Y Python - Aalto · 2012. 1. 2. · Ajoesimerkki Kerro nimesi: Minna Hei,...

  • Ohjelmoinnin perusteet Y Python

    T-106.1208

    17.1.2011

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 1 / 27

  • Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia?

    I Pienten laskentasovellusten kirjoittaminen.

    I Mittauslaitteen tms. ohjaaminen.

    I Ohjelmointitaidosta on apua myös matriisilaskenta- jataulukkolaskentaohjelmia käytettäessä.

    I Pienikin ohjelmointitaito auttaa valmiiden ohjelmien toiminnanopettelussa ja ymmärtämisessä.

    I Työelämässä paljon tehtäviä niille, joilla on sekä jonkin insinöörialantuntemus että hyvä ohjelmointitaito.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 2 / 27

  • Esimerkki harjoitustyöstä, jossa tarvitaan ohjelmointia

    I Kurssi: ENE-58.129 Rakennusten energiatalous (syksy 2007)

    I Annettu: Tiedot rakennuksen koosta, rakenteesta, sijainnista,lämmintysjärjestelmästä, eri asioiden kustannuksista jne.

    I Tehtävä (osa harjoitustyöstä): Hae optimaalinen yhdistelmäseuraaville viidelle parametrille

    1. seinien eristyspaksuus2. yläpohjan eristyspaksuus3. ikkunoiden U-arvo4. lämpöpumpun kompressorin nimellisteho5. höyrystymislämpötila

    siten, että seinämien lämpöeristysten, ikkunoiden jalämmöntuottojärjestelmän muodostaman investoinnin sekärakennuksen lämmityskustannusten yhteensä muodostamatelinkaarikustannukset saavat minimiarvon tarkasteluaikana jarakennus on energiatehokkuusluokassa A.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 3 / 27

  • Tämä kurssi

    I Tavoitteena on oppia ohjelmoinnin perusasiat. Aikaisempiohjelmointitaito ei ole tarpeen.

    I Ohjelmointikielenä käytetään Pythonia.

    I Kurssi keskittyy perusasioihin.I Kurssin jälkeen voi jatkaa toiselle tai molemmille seuraavista

    kursseista:I T-106.1223 Tietorakenteet ja algoritmit Y (5 op)I AS-0.1101 C-ohjelmoinnin peruskurssi (4 op)

    mutta ei muille ohjelmointikursseille.

    I Niiden, jotka haluavat opiskella ohjelmointia pidemmälle, ontäydennettävä tietojaan ennen muita jatkokursseja. Tarkemmatvaatimukset selviävät kevään aikana.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 4 / 27

  • Yleistä

    I HenkilökuntaI Luennoija Kerttu Pollari-Malmi, vastaanotot keskiviikkoisin klo

    12:00-13:00 tietotekniikan talon huoneessa B209.I 17 tuntiopettajaa.

    I TiedotusI Kurssin kotisivu NopassaI Uutisryhmä opinnot.tik.opey.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 5 / 27

  • Ilmoittatuminen

    I Ilmoittaudu kurssille WebOodilla.

    I Ilmoittautuminen luennolle, ei harjoitusryhmiin.

    I Kurssille ei voi ilmoittautua sähköpostitse.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 6 / 27

  • Opetusmuodot

    I LuennotI ma 12-14 salissa A ja ke 14-16 salissa M (19.1. ja 26.1.) tai salissa B

    (2.2. alkaen)I Ei luentoja 21.–23.2 eikä 7.–9.3.I Viimeinen luento 30.3.

    I Harjoitukset, joissa opiskelijat ratkaisevat harjoitustehtäviätietokoneella ja assistentit kiertävät neuvomassa.

    I 19 ryhmää viikossa, ajat Nopassa.I Osanotto ei ole pakollista eikä siitä saa lisäpisteitä. Tehtävät ovat

    pakollisia, mutta niitä voi palauttaa myös netin kautta.I Oppimateriaali

    I Opetusmoniste (Nopassa, paperiversion tilaus WebOodissa).I Perusteellisempaa materiaalia haluaville suositellaan Gaddis: Starting

    Out with Python, Pearson 2009.I Tiiviimpää, mutta Python-ohjelmointia laajemmin käsittelevää

    materiaalia haluaville suositellaan Budd: Exploring Python,McGraw-Hill 2010.

    I Opetusvideot

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 7 / 27

  • Haluatko antaa palautetta luennoista?

    I Luennoista on mahdollisuus antaa palautetta kännykällä 24.1. alkaen.I Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti ”Vast

    ilmo”numeroon 16403 tai vaihtoehtoisesti täytä lomake osoitteessahttp://opey.experq.com/register

    I Joka luennon jälkeen ilmoittautuneiden joukosta arvotaan 80opiskelijaa, joille lähetään yksi kysymys luennosta (esim. ”Annaarvosana luennolle asteikolla 1 - 5, (5 on paras)”

    I Kysymykseen voi vastata ilmaisella tekstiviestillä, joka on muotoa”Vast *num* *vapaa palaute*”, esim. ”Vast 3 enemmänesimerkkejä”.

    I Myös ne, jotka eivät ole kysymystä luennon jälkeen saaneet, voivatlähettää vapaamuotoista palautetta ja kysymyksiä (24.1. alkaen)numeroon 16403 tekstiviestillä, joka on muotoa ”Vast *vapaapalaute*”, esim ”Vast enemmän esimerkkejä”.

    I Yhteystietoja ei luovuteta kolmansille osapuolille eikä vastauksialiitetä takaisin puhelinnumeroihin.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 8 / 27

  • Pakolliset osasuoritukset

    I TenttiI Perustuu opetusmonisteeseen ja harjoitustehtäviin.I Ensimmäinen mahdollisuus 19.5. klo 13:00–16:00.I MUISTA ILMOITTAUTUA VIIMEISTÄÄN VIIKKOA AIKAISEMMIN.

    KESÄTENTIN ILMOITTAUTUMISAIKA PÄÄTTYY VIELÄAIKAISEMMIN.

    I HarjoitustehtävätI 9 kierrosta, joista 8 ensimmäistä pakollista.I Palautetaan netin kautta automaattisille tarkastajalle (Goblin).I Jos haluaa harjoitustehtävistä vähintään arvosanan 3, on myös

    viimeisestä kierroksesta saatava minimipisteet.I Kurssiarvosana on tenttiarvosanan ja harjoitusarvosanan keskiarvo, jos

    molemmat osasuoritukset on hyväksytty.

    I PaikkausmahdollisuudetI Rästitentit.I Harjoitustehtävien rästikierros.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 9 / 27

  • Tarvittavat ATK-tunnukset

    I Gobliniin kirjautumiseen tarvitaan TKK:n Weblogin-tunnus. Jos et voijostain syystä saada vielä tunnusta (esim. jatko-opiskelija, jonkajatko-opintohakemusta ei ole virallisesti vielä hyväksytty), lähetäsähköpostia luennoitsijalle Goblin-tunnuksen saamiseksi.

    I Pääteluokissa työskentelyyn tarvitaan lisäksi Aalto-tunnus.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 10 / 27

  • Yhteistyö harjoitustehtävissä

    I Tehtävien ratkaisuista saa keskustella muiden opiskelijoiden kanssa,mutta jokainen kirjoittaa oman koodinsa itse.

    I Kaveria saa neuvoa, mutta valmista tai lähes valmista ratkaisua ei saaluovuttaa kaverille.

    I Opetusmonisteessa, luennoilla ja oppikirjassa esitettyä koodia saakäyttää apuna.

    I Suojaa työhakemistosi, jotta muut eivät kopioisi vastauksiasitietämättäsi!

    I Harjoitustehtävien kopioinnista seuraa yleensä kokoharjoitustehtäväsuorituksen (kaikki tehtävät) hylkääminen ja ilmoitusopiskelijan tutkinto-ohjelman kansliaan.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 11 / 27

  • Arvio kurssin työmäärästä

    I Kurssin laajuus on 5 op, joka vastaa noin 133 tuntia työtä. Sen onarvioitu jakautuvan seuraavasti:

    I Luennot 36 tuntia (tai vastaava aika itseopiskeluun).I Harjoitustehtävät 8,5 tuntia / krs.I Tentti 20 tuntia (valmistautuminen ja osallistuminen).

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 12 / 27

  • Tietokoneen perusosat

    I Prosessori eli suoritin

    I Keskumuisti

    I Syöttölaitteet

    I Tulostuslaitteet

    I Lisäksi ulkoista muistia, joka voi toimia sekä syöttö- ettätulostuslaitteena.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 13 / 27

  • Mikä on tietokoneohjelma?

    Keittokirjan resepti

    1. Vatkaa munat ja sokeri vaahdoksi.

    2. Lisää jauhot ja sekoita.

    3. Kaada vuokaan ja paista 20 minuuttia.

    Tietokoneohjelma

    1. Pyydä rahasumma markkoina ja lue se.

    2. Jaa luettu rahasumma 5.94573:lla.

    3. Tulosta jakolaskun tulos kuvaruudulle.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 14 / 27

  • Erilaisia tapoja esittää ohjelma tietokoneelle

    I Käskyt esitetään konekielellä (bittijonoina).

    I Symbolinen konekieli

    I Lausekieli, esim. Python, Java, C, C++, Pascal jne.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 15 / 27

  • Kääntäjä ja tulkki

    I Tietokoneen prosessori ymmärtää vain konekielellä annettuja käskyjä.Jos tietokoneohjelma annetaan jossain muussa muodossa, pitää semuuttaa konekielelle.

    I Muuttaminen voidaan tehdä toisella tietokoneohjelmalla.

    I Tarkoitukseen tehdyt tietokoneohjelmat jaetaan kahteen luokkaan,kääntäjiin ja tulkkeihin.

    I Kääntäjä ottaa koko ohjelman, kääntää sen konekielelle ja tallentaakonekielisen ohjelman tiedostoon. Ohjelma voidaan ajaa tästätiedostosta halutun määrän kertoja, eikä ohjelmaa tarvitse kääntääuudelleen.

    I Tulkki ottaa käskyn kerrallaan, muuttaa sen konekielelle ja suorittaakäskyn heti. Sen jälkeen se siirtyy ohjelman seuraavaan käskyyn. Josohjelma halutaan suorittaa uudelleen, se pitää tulkata joka kertauudelleen.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 16 / 27

  • Kolme eri tapaa kirjoittaa ja ajaa Python-ohjelmia

    I Käynnistä Python-tulkki ja anna sille käsky kerrallaan.

    I Kirjoita ohjelma tiedostoon ja aja se komentotulkissa käskyllä pythontiedosto.py

    I Käytä työkalua, jolla voi sekä kirjoittaa että ajaa Python-ohjelmia,tällä kurssilla Eclipse.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 17 / 27

  • Ensimmäinen Python-ohjelma

    print "Hyvaa paivaa"

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 19 / 27

  • Muuttujat

    I Muuttujia käytetään ohjelman käsittelemien arvojen tallentamiseen jakäsittelyyn.

    I Muuttujalle voi antaa arvon sijoituskäskyllä, jota merkitään =:lla.

    nimi = "Matti"print "Hei,", nimiprint "Tervetuloa Python-kurssille!"

    Esimerkkiajo

    Hei, MattiTervetuloa Python-kurssille!

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 21 / 27

  • Arvon pyytäminen käyttäjältä

    I Käyttäjän antaman arvon voi lukea raw_input-käskyllä.

    I Käskyn sulkujen sisään kirjoitetaan käyttäjälle annettava kehote.

    I Luetun arvon voi antaa arvoksi muuttujalle sijoituskäskyllä.

    nimi = raw_input("Kerro nimesi: ")print "Hei,", nimiprint "Tervetuloa Python-kurssille!"

    Ajoesimerkki

    Kerro nimesi: MinnaHei, MinnaTervetuloa Python-kurssille!

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 23 / 27

  • Lukuarvon lukeminen käyttäjältä

    I Lukuarvojen lukeminen on vähän monimutkaisempaa, sillä raw_inputantaa aina luetun arvon tekstinä, merkkijonona.

    I Jotta luettua arvoa voitaisiin käsitellä lukuna, se pitää ensin muuttaakokonais- tai desimaaliluvuksi.

    I Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitävastaava kokonaisluku muuttujan luku1 kokonaislukutyyppiseksiarvoksi seuraavasti:

    luku1 = int(rivi)

    I Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitävastaava desimaaliluku muuttujan luku2 float-tyyppiseksi arvoksiseuraavasti:

    luku2 = float(rivi)

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 25 / 27

  • Esimerkki: eurolaskuri

    print "Muutan markat euroiksi."rivi = raw_input("Anna rahasumma markkoina: ")markat = float(rivi)eurot = markat / 5.94573print "Se on", eurot, "euroa."

    Esimerkkiajo

    Muutan markat euroiksi.Anna rahasumma markkoina: 543.50Se on 91.4101380318 euroa.

    T-106.1208 Ohjelmoinnin perusteet Y 17.1.2011 27 / 27