Ohjelmoinnin peruskurssi Y1



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

T Ohjelmoinnin perusteet Y (Python). Tentti

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin jatkokurssi, kurssikoe

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

ITKP102 Ohjelmointi 1 (6 op)

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

Ohjelmoinnin peruskurssi Y1

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

Ohjelmoinnin peruskurssi Y1

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmointi 2 / 2010 Välikoe / 26.3

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

SATAKUNNAN AMMATTIKORKEAKOULU

815338A Ohjelmointikielten periaatteet

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmoinnin peruskurssi Y1

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Mallilukujärjestys Teknistieteellinen kandidaattiohjelma Tietotekniikka, 2. vuosikurssi

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Transkriptio:

Ohjelmoinnin peruskurssi Y1 CSE-A1111 11.11.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 1 / 23

Kertausluento Luennolla käydään läpi tenttivaatimuksia ja vanhoja tenttitehtäviä. Lisäksi luennolla esitellään jatkomahdollisuuksia tämän kurssin jälkeen. Joitakin linkkejä oikean maailman Python-ohjelmiin. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 2 / 23

Esimerkkejä oikean maailman Python-ohjelmista Sivulla http://en.wikipedia.org/wiki/list_of_python_software on lueteltu suuri joukko Pythonilla tehtyjä ohjelmia. Myös sivulla https://www.python.org/about/success/ on kerrottu eri alojen projekteista, joissa on käytetty Pythonia. Voit asentaa matkapuhelimeen (Android, IPhone tai Windows Phone) Python-tulkin. Tällöin voit itsekin kirjoittaa Python-ohjelmia, jotka esim. hakevat haluttua tietoa joltain www-sivulta. (Tietoa voi lukea www-sivulta lähes samaan tapaan kuin tekstitiedostosta.) CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 3 / 23

Mitä tämän kurssin jälkeen? Kaikki tällä kalvolla luetellut kurssit ovat mahdollisia heti tämän kurssin jälkeen. CSE-A1121 Ohjelmoinnin peruskurssi Y2 (5 op) (kl) Lisää ohjelmointia Pythonilla, mm. suurempi harjoitustyö. Pohja ohjelmoinnin muille jatkokursseille. Kuuluu pakollisena tietotekniikan sivuaineeseen. CSE-A1130 Tietotekniikka sovelluksissa (5 op) (kl) Datan analysointia ja visualisointia eri ohjelmoistoilla. Tietoteknisen sovelluksen hankintaprosessi. CSE-A1141 Tietorakenteet ja algoritmit Y (5 op) (sl) Tietorakenteita, esim. linkitetyt listat, hakupuut, verkot Algoritmeja, esim. järjestäminen, haku Algoritmin tehokkuuden arviointi Kuuluu pakollisena tietotekniikan sivuaineeseen. ELEC-A7100 C-ohjelmoinnin peruskurssi (5 op) (kl) Ohjelmointia C-kielellä. Oletetaan toisen ohjelmointikielen aikaisempi tuntemus. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 4 / 23

Tentti Ensimmäinen tenttimahdollisuus on ti 1.12. klo 17:00 20:00 Kandidaattikeskuksessa (Otakaari 1) ja Tietotekniikan talossa (Konemiehentie 2). Salijako ilmoitetaan kurssin MyCourses-sivulla viimeistään ma 30.11. Noudata salijakoa ja tarkista etukäteen, kumpaan rakennukseen sinun pitää mennä. Tämän jälkeen on vielä neljä muuta mahdollisuutta: Tentit kevätlukukaudella 2016: ke 17.2. ja to 26.5. Kesätentti (todennäköisesti elokuussa 2016). Syyslukukauden 2016 ensimmäinen tentti (todennäköisesti lokakuussa). Varaa ylimääräistä aikaa tentin päättymisajan jälkeen, sillä tentti ei välttämättä pääse alkamaan tasan ilmoitettuna alkamisaikana. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 5 / 23

Tenttiin ilmoittautumisesta Muista ilmoittautua tenttiin WebOodissa viimeistään viikko etukäteen! Ilmoittautumisaika 1.12. tenttiin päättyy siis 24.11. Tenttiin ei pysty osallistumaan, jos ei ole ilmoittautunut ajoissa, tai ainakaan vastauksia ei tarkisteta. Tämä sääntö on ehdoton. Jälki-ilmoittautuminen esim. sähköpostitse ei ole mahdollista. Tarkista, että ilmoittautuminen näkyy sinulla WebOodissa omissa ilmoittautumisissa. Jos tarvitset tenttikysymykset ruotsiksi, ilmoita siitä sähköpostitse luennoijalle viimeistään kaksi viikkoa ennen tenttiä, mieluummin jo aikaisemmin. Jos haluat tenttikysymykset englanniksi, riittää että rastitat oikean ruudun tenttiin ilmoittautuessasi. Jos tarvitset erityisjärjestelyjä esim. lukihäiriön tai jonkin vamman vuoksi, lähetä sähköpostia luennoijalle viimeistään kaksi viikkoa ennen tenttiä, mieluummin jo aikaisemmin. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 6 / 23

Tenttitehtävätyyppejä Koodin ymmärtämistä testaavia tehtäviä, esimerkiksi: Mitä annettu ohjelma tulostaa? Mikä arvo ohjelmassa käytetyllä muuttujalla/muuttujilla on oltava, jotta ohjelma tulostaisi X? Mitä annettu funktio/ohjelma tekee? Mitä virheitä annetussa ohjelmassa on? Selitystehtäviä Esimerkiksi käsitteiden lyhyitä selityksiä. Näitä ei ole joka tentissä ja selitystehtävien osuus tentin maksimipistemäärästä on korkeintaan 20 prosenttia. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 7 / 23

Tenttitehtävätyyppejä, jatkoa Omien ohjelmien ja funktioiden kirjoittaminen, esimerkiksi Kirjoita ohjelma, joka tekee vaaditun asian. Kirjoita funktio, joka saa parametrina tehtävässä mainitut arvot ja palauttaa vaaditun arvon. Olkoon olemassa funktio X, jonka parametrit ja paluuarvo on kerrottu tehtävässä. Kirjoita ohjelma, joka tekee vaaditun asian käyttämällä hyväksi funktiota X. Ratkaisuja kirjoittaessa voi tarvita esimerkiksi seuraavia asioita: If-käsky Toistokäsky Listojen tai merkkijonojen käsittely Funktion kirjoittaminen (sisältää parametrien ja paluuarvojen käytön) Tiedostosta lukeminen tai tiedostoon kirjoittaminen Poikkeusten käsittely try except-rakenteen avulla. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 8 / 23

Tenttitehtävätyyppejä, jatkoa Olio-ohjelmointitehtävä Vastaa vaativuustasoltaan yhteensä harjoitustehtäväkierroksen 9 tehtäviä 2 ja 3. (Kirjoita yksinkertainen luokka ja pääohjelma, joka luo luokan olioita ja kutsuu niille luokan metodeita.) Tällainen tehtävä on joka tentissä ja sen pistemäärä on 25 prosenttia tentin maksimipisteistä. Käytännössä tentistä on vaikea saada arvosanaa 3 tai parempaa, jos ei saa lainkaan pisteitä olio-ohjelmointitehtävästä. (Arvosanan 3 raja on noin 70 prosenttia tentin maksimipistemäärästä.) CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 9 / 23

Vanhoja tenttejä Esimerkkejä tenteistä voi katsoa sekä tämän kurssin että sen edeltäjän T-106.1208 vanhoista tenteistä osoitteessa tenttiarkisto.fi CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 10 / 23

Tenttivaatimuksista Kaikki opetusmonisteessa kerrotut asiat kuuluvat tenttivaatimuksiin, paitsi seuraavat asiat: Tulostuksen muotoilu (tenttitehtävissä tulostusta ei tarvitse muotoilla). Monikko Sanakirja Listoja käsittelevistä funktioista ja metodeista seuraavia ei tarvitse osata ulkoa (jos niitä tarvitaan, ne on annettu tehtävässä): index, insert, remove, sort, sorted, reverse. Myöskään sellaisia Pythonin valmiita listoja käsitteleviä funktioita ja metodeita ei tarvitse osata, joita ei ole esitelty lainkaan opetusmonisteessa. Merkkijonoja käsittelevistä funktioista ja metodeista seuraavia ei tarvitse osata ulkoa (jos niitä tarvitaan, ne on annettu tehtävässä): index, lower, upper, strip. Myöskään sellaisia Pythonin valmiita merkkijonoja käsitteleviä funktioita ja metodeita ei tarvitse osata, joita ei ole esitelty lainkaan opetusmonisteessa. Tentissä ei vaadita graafisen käyttöliittymän kirjoittamista (esitelty vain luennolla, ei opetusmonisteessa) CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 11 / 23

Tenttiin valmistautumisesta ja vastaamisesta Harjoittele tenttiin kirjoittamalla itse pieniä Python-ohjelmia. Harjoittele myös ohjelmien kirjoittamista ilman mallia ja paperille. Ratkaisujen pienistä kirjoitusvirheistä ei yleensä sakoteta, jos niillä ei ole periaatteellista merkitystä ja muusta ratkaisusta näkyy, että vastaava asia on osattu. Poikkeuksena on kuitenkin sisennykset: niiden on oltava selvästi merkitty ja oikein, koska sisennyksillä on koodin toimintaan ratkaiseva merkitys. Jos sisennyksistä ei saa selvää tai ne puuttuvat, niin se vähentää pisteitä selvästi. Käytä kahden ruudun levyisiä sisennyksiä. Jos joku tehtävä tuntuu liian vaikealta, älä jää liian pitkäksi aikaa tekemään sitä, vaan tee ensin ne tehtävät, jotka osaat. Tee vain se, mitä tehtävässä on pyydetty. Jos tehtävässä pyydetään kirjoittamaan vain funktio, niin pääohjelmaa ei tarvitse kirjoittaa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 12 / 23

Vanhoja tenttitehtäviä Seuraavilla kalvoilla esitetään esimerkkejä viime syksyn kurssin ensimmäisen tentin tenttitehtävistä. Kalvoilla esitettyjä tehtävänantoja on lyhennetty. Alkuperäisiä tenttejä on tenttiarkistossa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 13 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä Mitä seuraava ohjelma tulostaa? (2 p.) def main(): matka = 3100 if matka > 2200: print("cooperin testin tulos on hyva.") elif matka > 2800: print("cooperin testin tulos on erinomainen.") else: print("cooperin testin tulos on huono.") main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 14 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Mitä seuraava funktio tekee, kun sille annetaan parametrina positiivisia kokonaislukuja sisältävä lista ja positiivinen kokonaisluku. (5 p.) def mysteeri3(lista, luku): uusi = [] i = 0 while i < len(lista): if lista[i] % luku == 0: uusi.append(lista[i]) i += 1 return uusi CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 15 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Mitä seuraava funktio tekee, kun sille annetaan parametrina positiivisia kokonaislukuja sisältävä lista ja positiivinen kokonaisluku. (5 p.) def mysteeri3(lista, luku): uusi = [] i = 0 while i < len(lista): if lista[i] % luku == 0: uusi.append(lista[i]) i += 1 return uusi Esimerkki täydet pisteet tuovasta vastauksesta: Funktio tekee ja palauttaa uuden listan, jossa on parametrina annetusta listasta ne luvut, jotka ovat jaollisia toisena parametrina annetulla luvulla. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 15 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Olet töissä yrityksessä, joka on pyytänyt kahdelta painotalolta tarjouksen mainoslehtisten painamisesta. Painotalo A laskuttaa painettavien kappaleiden määrästä riippumattomana aloitusmaksuna 150 euroa ja sen lisäksi 5 senttiä jokaisesta painettavasta kappaleesta. Painotalo B ei pyydä aloitusmaksua, mutta se laskuttaa aina vähintään 1000 kappaleesta, vaikka mainoksia painettaisiin vähemmän. Myös kappalehinta voi olla eri kuin Painotalo A:lla. Kirjoita Python-ohjelma, joka pyytää käyttäjältä painettavien kappaleiden määrän ja Painotalo B:n laskuttaman kappalehinnan. Ohjelma tulostaa, kumman painotalon tarjous on edullisempi ja mikä on tämän edullisemman vaihtoehdon kokonaishinta. (10 p.) CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 16 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Kiinteistönvälittäjä saa palkkiota jokaisesta myymästään asunnosta 2 % asunnon myyntihinnasta, mutta kuitenkin vähintään yrityksen päättämän vähimmäispalkkion. Palkkio lasketaan erikseen jokaiselle myydylle asunnolle. Kirjoita Python-funktio laske_kokonaispalkkio(myyntihinnat,vahimmaispalkkio). Funktio saa ensimmäisenä parametrina listan, joka sisältää välittäjän myymien asuntojen myyntihinnat (kukin alkio on yhden asunnon myyntihinta). Funktion toinen parametri on yhden asunnon myynnistä tuleva vähimmäispalkkio. Funktio laskee ja palauttaa arvonaan myydyistä asunnoista välittäjälle yhteensä tulevan palkkion. (20 p) CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 17 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Eräällä kurssilla opiskelijoiden tiedot on tallennettu tekstitiedostoon seuraavasti: Yhdellä rivillä on ensin opiskelijan opiskelijanumero, sitten nimi, tämän jälkeen harjoituspisteet ja lopuksi tenttipisteet. Eri tiedot on erotettu toisistaan kaksoispisteellä. Tiedoston rivit voisivat näyttää esim. seuraavilta: 123456:Tiina Teekkari:1800:46 334455:Sampo Sahkolainen:1660:52 Kurssista pääsee läpi ne opiskelijat, jotka ovat saaneet harjoitustehtävistä vähintään 1500 pistettä ja tentistä vähintään 50 pistettä. Kirjoita Python-ohjelma, joka pyytää käyttäjältä tiedot sisältävän tiedoston nimen. Ohjelma lukee tiedot tästä tiedostosta ja tulostaa kaikkien läpipäässeiden opiskelijoiden nimet ja opiskelijanumerot. (20 p) CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 18 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Kirjoita luokka Asiakas kaupan tiliasiakkaan kuvaamiseen. Asiakas voi tehdä ostoksia kaupassa kahdella tavalla: hän voi joko maksaa ostoksen heti (käteisellä) tai ostaa luotolla (tilille), jolloin ostossumma lisätään asiakkaan velkaan. Velan lisäksi asiakkaista pidetään kirjaa heidän suurimmasta ostoksesta jollain aikavälillä. Näin kaupan on helppo poimia asiakasrekisteristä sellaiset asiakkaat, jotka tekevät suuria kertaostoksia. Käteisellä maksetuista ostoksista ei pidetä muuten kirjaa, mutta ne vaikuttavat siihen, mikä on asiakkaan suurin kertaostos tarkastelulla aikavälillä. Asiakas-oliolla on oltava seuraavat kentät: nimi luottoraja velka suurin_ostos CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 19 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Maarittele luokkaan seuraavat metodit init (self, nimi1, luottoraja1) kerro_nimi(self) kerro_luottoraja(self) kerro_velka(self) kerro_suurin_ostos(self) muuta_luottoraja(self, uusi_raja) uusi luottoraja ei voi olla negatiivinen eikä pienempi kuin asiakkaan velka tällä hetkellä. Palauttaa True tai False sen mukaan, onnistuuko muutos. lisaa_ostos(self, arvo, onko_velaksi) lisää tiedon asiakkaan ostoksesta ja palauttaa True tai False sen mukaan, onnistuuko lisäys. poista_suurin_ostos(self) muuttaa suurimman ostoksen arvoksi 0.0. str (self) palauttaa merkkijonon, joka sisältää asiakkaan nimen, luottorajan, velan määrän sekä suurimman ostoksen arvon tarkasteltavana aikavälillä. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 20 / 23

Esimerkkejä syksyn 2014 tenttitehtävistä, jatkuu Kirjoita lisäksi pääohjelma, joka tekee seuraavat asiat: Luo kaksi Asiakas-oliota ja muuttaa niistä toisen luottorajaa. Lisää ostoksen kummallekin asiakkaalle ja tulostaa, onnistuiko lisäys. Lyhentää ensiksi luodun asiakkaan velkaa ja tulostaa hänen velkansa lyhennyksen jälkeen. Tulostaa molempien asiakkaiden tiedot (nimi, luottoraja, velan määrä ja suurimman ostoksen arvo). CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 21 / 23

Erityistä 1.12. tentissä Tentin maksimipistemäärä on 100 pistettä. Pisteistä 4 tulee siitä, että opiskelija vastaa 24.11.-8.12. välisenä aikana Goblinissa lopputestiin ja loppumotivaatiokyselyyn. Nämä 4 pistettä tulevat ko. kyselyihin vastaamisesta. Vastausten sisältö ei vaikuta pisteisiin, joten vastaa esimerkiksi lopputentin kysymyksiin parhaan tietosi mukaan lunttaamatta. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 22 / 23

Kurssipalautekysely Kurssipalautekysely aukeaa 18.11. ja on auki 8.12. asti. Linkki palautekyselyyn tulee sähköpostissa niille opiskelijoille, jotka ovat ilmoittautuneet kurssille WebOodissa. Palautekyselyyn vastanneet saavat 200 lisäharjoitustehtäväpistettä. Pisteitä ei lasketa minkään kierroksen pisteisiin, mutta ne vaikuttavat harjoitustehtäväarvosanaan. CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 23 / 23