XX (1, 4) (1, 5) (2, 4) (2, 5)

Koko: px
Aloita esitys sivulta:

Download "XX (1, 4) (1, 5) (2, 4) (2, 5)"

Transkriptio

1 1. Johdanto 1.1. Tehtävä Lausekielinen ohjelmointi (Laki) -kurssin toisena harjoitustyönä ohjelmoidaan Java-kielellä Tetris-pelin [1] tekstipohjainen muunnelma Txtris. Pelissä on kenttä, jonka yläreunaan ilmestyy palikoina tunnettuja kuvioita, jotka tippuvat kohti kentän alareunaa. Pelaaja voi omalla vuorollaan siirtää palikkaa askeleen vasemmalle tai oikealle, kiertää palikkaa 90 asetetta vastapäivään, tipauttaa palikan alas, lopettaa pelin tai olla tekemättä mitään. Peli siirtää omalla vuorollaan palikkaa yhden askeleen alaspäin. Palikka tippuu alas, kunnes vastaan tulee alareuna tai toinen palikka. Jos pohjalle päätynyt palikka tuottaa yhdestä neljään vain palikan merkistä koostuvaa riviä, peli poistaa kyseiset rivit ja palkitsee pelaajaa pisteillä. Kentän yläreunaan tulee uusi palikka, kun edellinen palikka on päätynyt tavalla tai toisella pohjalle. Peli jatkuu niin kauan kunnes pelaaja päättää lopettaa tai kenttä on niin täynnä, että uusi palikka ei enää mahdu kentälle Pelikenttä Peliä pelataan kokoisella kentällä, joka esitetään ohjelmassa vastaavan kokoisena kaksiulotteisena taulukkona. Taulukon alkiot vastaavat kentän paikkoja ja alkioiden arvot paikkojen sisältöä. Kentän paikkoihin viitataan jatkossa taulukon alkioiden tapaan kahdella nollasta alkavalla indeksillä. Kentän ensimmäinen paikka (0, 0) on kentän vasemmassa yläkulmassa. Viimeinen paikka (21, 11) on puolestaan kentän oikeassa alakulmassa. Luontevin valinta alkion tyypiksi lienee char, koska harjoitustyössä paikkojen sisältö esitetään merkeillä. Pelikentällä on pisteellä ('.') piirretty yhden merkin levyinen reuna. Sisäpaikoissa on palikoita ja kentän taustaa. Palikat esitetään suurella x-kirjaimella ('X') ja tausta välilyönnillä (' '). Mikään sisäpaikkojen merkeistä ei saa olla kentän reunalla. Palikoita on seitsemää tyyppiä, jotka kaikki koostuvat neljästä merkistä. Palikoiden muodot ja kirjaimet, joilla palikoihin viitataan jatkossa on esitetty taulukossa 1. Taulukossa on listattu myös palikoiden merkkien paikat, kun palikka on alkuasemassaan kentän yläreunassa. Paikat määritellään vasemmalta oikealle ja ylhäältä alas. Taulukko 1: Eri tyyppisten palikoiden muodot ja palikoiden merkkien paikat alkuasemassa. Esimerkiksi O-tyyppisen palikan merkit (ylävasen, yläoikea, alavasen ja alaoikea) ovat aluksi paikoissa (1, 4), (1, 5), (2, 4) ja (2, 5). Palikan kiertopaikka on lihavoitu. (I) (J) (L) (O) (S) (T) (Z) XXXX (1, 4) (1, 5) (1, 6) (1, 7) XXX X (1, 4) (1, 5) (1, 6) (2, 6) XXX X (1, 4) (1, 5) (1, 6) (2, 4) XX XX (1, 4) (1, 5) (2, 4) (2, 5) XX XX (1, 5) (1, 6) (2, 4) (2, 5) XXX X (1, 4) (1, 5) (1, 6) (2, 5) XX XX (1, 4) (1, 5) (2, 5) (2, 6) Palikan merkkien keskinäinen järjestys on aina sama kuin alkuasemassa palikan myöhemmästä asemasta riippumatta. Palikkaa kierretään aina toisen merkin suhteen. Kunkin palikan kiertopaikka on lihavoitu taulukossa 1. Jos esimerkiksi J- Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 1 / 15

2 tyyppistä palikkaa kierretään 180 astetta, katsotaan palikan ensimmäiseksi merkiksi edelleen aluksi paikassa (1, 4) ollut merkki, vaikka uudessa asennossa kyseinen merkki on vasemmalta oikealle ja ylhäältä alas lukien kuvion alemman rivin viimeinen merkki. On erittäin tärkeää, että paikkojen keskinäinen järjestys säilyy, jotta palikan kierto tapahtuisi aina samalla tavalla. Tästä syystä harjoitustyöohjelman on pyydettävä palikan alkuaseman paikat apuluokalta (luku 3.2) ja palikan paikat on kierrettävä samaisen apuluokan avulla. Kuvassa 1a on esitelty eräs pelin lähtötilanne, jossa J-tyyppinen palikka on alkuasemassa. Kentän sisäpaikoissa on palikan lisäksi vain taustaa. Palikkaa on siirretty askel vasemmalle (kuva 1b) ja kierretty yhden kerran (kuva 1c). Ohjelma on siirtänyt palikkaa yhden askeleen alas käyttäjän kummankin valinnan jälkeen. Kuva 1: a) kenttä lähtötilanteessa, b) pelaaja siirtänyt palikkaa vasemmalle ja ohjelma siirtänyt palikkaa alas ja c) pelaaja kiertänyt palikkaa ja ohjelma siirtänyt palikkaa alas. Palikan kiertopaikan merkki on lihavoitu Pelin kulku (a) Peliä pelataan vuorottain siten, että ensin on pelaajan ja sitten ohjelman vuoro kunnes kenttä on täynnä tai pelaaja päättää lopettaa pelin. Ohjelma sijoittaa aluksi palikan alkuasemaansa, mikäli mahdollista. Palikkaa ei voida sijoittaa kentälle, jos yhdessä tai useammassa alkuaseman paikoissa on jo palikkamerkki. Palikkaa ei tipauteta alkuasemaansa, jotta peli olisi helpompi toteuttaa. (b) (c) Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 2 / 15

3 Pelaaja voi siirtää palikkaa yhden askeleen vasemmalle tai oikealle, kiertää palikkaa 90 astetta vastapäivään, tipauttaa palikan kentän pohjalle tai jättää palikan paikoilleen. Palikka ei voi olla reunalla eikä yhden tai useamman palikan päällä. Tipautettu palikka putoaa alaspäin, kunnes palikan merkkiä tai merkkejä vastaan tulee joko alareuna tai palikkamerkki tai -merkkejä. Palikka jää nykyiseen asemaansa, jolloin toiminto käytännössä ohitetaan, jos siirto tai kierto ei onnistu reunan tai toisen palikan vuoksi. Ohjelma yrittää siirtää omalla vuorollaan palikkaa kentällä yhden rivin alaspäin. Siirto katsotaan mahdottomaksi samoin periaattein kuin tipautetun palikan päätellään tulleen pohjalle: Palikka jää nykyiseen asemaansa, mikäli välittömästi yhden tai useamman palikan merkin alla on alareuna tai yksi tai useampia yhden tai useamman aiemman palikan merkkejä. Kun palikka on joko pelaajan tai ohjelman toimesta kentän pohjalla, tutkitaan onko kentällä täysiä rivejä, joiden sisäpaikoissa on pelkästään palikkamerkkejä. Yhdellä palikalla voidaan palikan tyypistä ja pelitilanteesta riippuen muodostaa nollasta neljään tällaista riviä. Ohjelma poistaa täydet rivit ja antaa pelaajalle jokaisesta poistettavasta rivistä 100 pistettä. Vajaat rivit saattavat siirtyä poiston seurauksena alaspäin. Harjoitustyötä on helpotettu siten, että apuluokassa (luku 3.2) on metodi, jolla täydet rivit voi poistaa. Ohjelma yrittää sijoittaa kentälle uuden palikan mahdollisten täysien rivien poiston jälkeen. Peli loppuu, jos uusi palikka ei mahdu kentälle. Jos ohjelma lopetetaan käyttäjän toimesta, ohjelma ei enää yritä siirtää palikkaa eikä poista rivejä. Ohjelman idea karkealla tasolla pseudokoodina: Algoritmi Txtris jatketaan T; do { if (palikka mahtuu kentälle) Aseta seuraava palikka kentälle; else jatketaan F; while (jatketaan AND palikka ilmassa) { Lue käyttäjän valinta; if (käyttäjä jatkaa peliä) { Suorita tai ohita toiminto; Yritä siirtää palikkaa askel alas; } else jatketaan F; } if (jatketaan) Poista rivit; } while (jatketaan); Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 3 / 15

4 Kuvan 2a tilanteeseen päädytään kuvasta 1c, kun palikkaa kierretään toisen kerran, palikka siirretään vasempaan reunaan ja palikka tipautetaan kentän pohjalle. Ohjelma arpoo seuraavaksi I-tyylisen palikan ja sijoittaa sen kentän yläreunaan. Käyttäjä tipauttaa I-palikan heti alas ja ohjelma antaa L-tyylisen palikan (kuva 2b). L-palikkaa on siirretty oikealle, kierretty kahdesti ja siirretty oikeaan reunaan. Tämän jälkeen vuoroja on ohitettu, kunnes palikka on paikallaan ja alin sisärivi on täynnä (kuva 2c). Lopuksi ohitetaan vielä yksi vuoro, jolloin ohjelma poistaa täyden rivin, palkitsee käyttäjää 100 pistellä, siirtää poistettavaa riviä edeltävän rivin merkit alimmalle sisäriville ja sijoittaa O-tyylisen palikan kentälle (kuva 2d). (c) (d) (a). XXXX..X..XXX. (b).x..xxxxxxx..x X..XXXXXXXXXX..X X. Kuva 2: a) ensimmäinen palikka on tipautettu siirron ja kierron jälkeen alas, b) toinen palikka on tipautettu suoraan alas, c) kolmatta palikkaa on siirretty ja kierretty ja se on laskettu alariville vuoroja ohittamalla ja d) täyttynyt alarivi on poistettu Valmiin koodin käytöstä Kurssin verkkosivuilla on apuluokka, jossa on metodit palikan paikkojen tuottamiseen, paikkojen kiertämiseen ja täysien rivien poistamiseen (luku 3.2). Palikkoja ei saa luoda muulla tavoin, jotta oma ohjelma tuottaisi palikat aina samassa järjestyksessä kuin malliratkaisu. Apuluokkaa käyttäen on varmaa myös, että yksittäisen palikan merkit ovat aina oikeassa keskinäisessä järjestyksessä, jolloin kierto toimii samoin ajatellulla tavalla. Harjoitustyön teossa saa käyttää kurssin verkkosivuilla julkaistuja mallivastauksia joko sellaisenaan tai muokattuna. Huomaa, että osa viikkoharjoituksen tehtävistä ja niiden mallivastauksista on tarkoitettu avuksi harjoitustyön teossa. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 4 / 15

5 Tiedustele harjoitustyön ohjaajaan mielipidettä, jos Javan API:sta sattuu löytymään palvelu, jolla harjoitustyö ratkeaa kovin helposti. Harjoitustyön ohjaajaan kannattaa ottaa yhteyttä muutenkin, mikäli on epävarma siitä mitä saa tehdä ja mitä ei. Harjoitustyö tehdään itse omalla ajalla. Kaverien kanssa saa keskustella, mutta suora kopiointi eli plagiointi on kiellettyä. Verkosta löytyviä ja harjoitustyötä muistuttavia ohjelmia saa ajaa, mutta niiden koodia ei saa kopioida. Muualta kuin kurssisivuilta poimitun koodin käyttö katsotaan plagioinniksi. Kurssisivuilla mahdollisesti julkaistavan mallivastauksen tavukoodin purkaminen lähdekoodiksi katsotaan plagioinniksi Pakollisuus ja korvaavuudet Harjoitustyö on pakollinen. Ainoa poikkeus tähän sääntöön ovat harjoitustyön korvanneet opiskelijat. Harjoitustyön voi korvata A) muiden oppilaitosten opinnoilla, B) edellisellä Laki-kurssilla hyväksytyllä toisella harjoitustyöllä tai C) edellisten kohtien tapaisella painavalla syyllä. Kohdan A perusteella on annettu kaikki opintoasiain amanuenssin (Heli Rikala) kurssin vastuuopettajalle (Jorma Laurikkala) esittämät korvaavuudet. Kohdan B ja C perusteella annettavista harjoitustyökorvaavuuksista on tarkemmat tiedot kurssin kotisivuilla. B- ja C- kohtien osalta on tärkeintä muistaa, että harjoitustyö korvautuu vain, jos ottaa yhteyttä kurssin vastuuopettajaan. (Tähän mennessä tulleet yhteydenotot ja sopimukset on kirjattu ylös eikä uusia yhteydenottoja näiltä osin tarvita.) 2. Ohjelman toiminnot Seuraavassa esitellään ohjelman toiminnallisuutta pienten esimerkkien avulla. Laajempia esimerkkiajoja julkaistaan kurssin kotisivujen Harjoitustyöt Harjoitustyö 2 -kohdassa. Tietojen lukemiseen näppäimistöltä käytetään In-luokan operaatiota. Myös In-luokka löytyy kurssin sivuilta. Huomaa, että harjoitustyössä syötteiden lukuun ei saa käyttää muita keinoja (esimerkiksi Scanner-luokkaa sellaisenaan), jotta töiden puoliautomaattinen tarkistus (luku 6) onnistuisi paremmin. Ohjelmassa on komennot palikan siirtoon askel vasemmalle tai oikealle (luku 2.3), palikan kiertoon (luku 2.4), palikan tipauttamiseen (2.5), pelaajan vuoron ohittamiseen (luku 2.6) ja ohjelma lopettamiseen (luku 2.7). Tehtävän helpottamiseksi oletetaan, että ohjelmalle annetaan aina syöte sitä luettaessa ja että syöte on aina oikean tyyppinen (char) Tervehdystekstin tulostaminen Käynnistyessään ohjelma tulostaa näytölle tähtimerkeillä (' * ') kehystetyn viestin: *************** * T X T R I S * *************** Tämä teksti tulostetaan vain kerran. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 5 / 15

6 2.2. Komennon lukeminen Heti tervehdysrivien jälkeen tulostetaan pisterivi "Points: x", missä x on pisteiden lukumäärä ( 0). Pelin alkaessa pisteitä on nolla. Välittömästi pisterivin jälkeen tulostetaan kenttä (luku 1.2), jonka yläreunassa on apuluokan (luku 3.2) metodilla arvottu palikka. I-tyyppisen palikan merkit ovat alkuasemassa kentän toisella rivillä, kun taas muun tyyppisten palikoiden merkit ovat toisella ja kolmannella rivillä (luku 1.2). Kentän tulostamisen jälkeen tulostetaan omalle rivilleen ohjerivi "" ja jäädään odottamaan käyttäjän komentoa seuraavalla rivillä. Esimerkki lähtötilanteesta, jossa ohjelma on arponut ensimmäiseksi J-tyyppisen palikan: *************** * T X T R I S * *************** 2.3. Palikan siirtäminen vasemmalle tai oikealle Palikkaa voidaan siirtää askel kerrallaan joko vasemmalle ('<') tai oikealle ('>'). Palikka ei liiku ja käyttäjän vuoro katsotaan ohitetuksi, jos palikka yritetään siirtää reunan tai toisen palikan päälle. Siirretään alkuasemassaan olevaa palikkaa (luku 2.2) yksi paikka vasemmalle: < Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 6 / 15

7 2.4. Palikan kiertäminen Palikkaa voidaan kiertää 90 astetta vastapäivään pienellä r-kirjaimella ('r'), mikäli kierretty palikka ei päädy reunan tai toisen palikan päälle. Kierron epäonnistuessa käyttäjän vuoro katsotaan ohitetuksi: palikan paikat eivät muutu ja vuoro siirtyy ohjelmalle. Kierto tehdään aina apuluokan (luku 3.2) metodilla. Kierretään kerran palikkaa, jota siirrettiin edellisessä luvussa käyttäjän toimesta askel vasemmalle ja ohjelman toimesta askel alas: r 2.5. Palikan tipauttaminen Palikka tipautetaan kentän pohjalle pienellä d-kirjaimella ('d'). Tipautuksessa palikkaa siirretään suoraan alaspäin, kunnes palikan merkkiä tai merkkejä vastaan tulee alareuna tai yksi tai useampi yhteen tai useampaan toiseen palikkaan kuuluva merkki. Ohjelma arpoo pudottamisen jälkeen uuden palikan ja esittää sen kentän yläreunassa. Oletetaan, että edellisessä luvussa kierrettyä palikkaa kierretään uudelleen ja siirretään kahdesti vasemmalle: <.X..XXX. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 7 / 15

8 Kun palikka tipautetaan, se päätyy vasten kentän alareunaa ja kentän yläreunaan ilmestyy uusi I-tyylinen palikka: d. XXXX..X..XXX Pelivuoron ohittaminen Pelaaja voi jättää vuoronsa käyttämättä syöttämällä ohjelmalle merkin, jota ei ole varattu komennoksi. Ohjelma ei siten luokittele mitään merkkiä virheelliseksi syötteeksi. Esimerkeissä vuoro ohitetaan pienellä a-kirjaimella ('a'). Tipautetaan edellisessä luvussa saatu I-palikka ja siirretään seuraavaksi saatua L- palikkaa neljästi oikealle sekä kierretään tätä palikkaa vielä kahdesti: r. X.. XXX..X..XXXXXXX. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 8 / 15

9 Ohitetaan sitten vuoro joitakin kertoja: a. X..X XXX..XXXXXXX. Palikan pitkä sivu saadaan kentän toiseksi viimeiselle riville ohittamalla vuoro vielä kerran: a.x X..XXXXXXXXXX. Huomaa, että riviä ei poisteta vielä, vaikka palikka onkin jo pohjalla, koska käyttäjän viimeinen vuoro on käyttämättä. Rivi poistettaisiin, jos palikka olisi tipautettu, koska tipautetun (luku 2.5) palikan ajatellaan olevan pois käyttäjän käsistä Pelin lopettaminen Peli voidaan lopettaa syöttämällä ohjelmalle pieni q-kirjain ('q'). Tällöin ei enää siirretä palikkaa tai anneta pisteitä. Lopetettaessa tulostetaan uudelleen pisterivi ja kenttä ja aivan lopuksi omalle rivilleen lyhyet jäähyväiset "Bye, see you soon." (Ohjeriviä ei tulosteta, koska komentoja ei enää lueta.) Lopetetaan peli edellisessä luvussa jäätyyn tilanteeseen: Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 9 / 15

10 q.x X..XXXXXXXXXX. Bye, see you soon. Ohjelma toimii yllä kuvatulla tavalla myös, kun kentälle ei enää mahdu uutta palikkaa. Oletetaan, että pelaaja on lopettamisen sijasta ohittanut yllä olevassa tilanteessa yhden vuoron (luku 2.8) ja täyttänyt sitten kenttää palikoita tiputtelemalla: d Points: 100. XXXX..X XX X. Tipautetaan palikka, jolloin kenttä täyttyy ja ohjelma pysähtyy: d Points: 100. XXXX..X XX X. Bye, see you soon. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 10 / 15

11 2.8. Täysien rivien poistaminen Kentälle voi muodostua nollasta neljään täyttä riviä, kun palikka on lopullisella paikallaan. Ohjelma poistaa täydet rivit ja palkitsee niistä ellei käyttäjä ole lopettanut ohjelmaa (luku 2.7). Poistuneiden rivien tilalle siirretään kentälle jääneitä vajaita rivejä. Palataan luvun 2.6 tilanteeseen ja oletetaan, että käyttäjä jatkaa peliä ohittamalla vuoronsa vielä kerran: a Points: 100.X X. jolloin täyttynyt rivi poistetaan, pelaajalle annetaan 100 pistettä, kaksi palikkamerkkiä sisältävä vajaa rivi siirtyy askeleen alaspäin ja seuraava palikka arvotaan ja sijoitetaan kentän yläreunaan. 3. Koodista 3.1. Yleistä Ohjelma kirjoitetaan tuttuun tapaan main-operaation sisältävään luokkaan. Ensimmäisestä harjoitustyöstä poiketen ohjelma jaetaan metodeihin. Metodien lukumäärä riippuu osin ohjelmoijasta ja osin hyvästä ohjelmointitavasta; ohjelmaan ei saa kirjoittaa liian pitkiä metodeja. Ohjelmassa on vältettävä saman koodin kopioimista eri paikkoihin, koska toistuvasta koodista voi kirjoittaa asianomaisista paikoista kutsuttavan metodin. Muista noudattaa hyvää ohjelmointitapaa: sisennä koodia johdonmukaisesti luettavuuden parantamiseksi, kommentoi riittävästi ja oikeissa paikoissa, liitä jokaiseen metodiin yleisluonteinen kommentti, nimeä vakiot, muuttujat ja metodit järkevästi, käytä vakioita, pidä rivit riittävän lyhyinä, käytä välejä lauseissa ja erota loogiset kokonaisuudet toisistaan väliriveillä, pidä metodit järkevän mittaisia metodin tulisi mahtua yhdelle A4-kokoiselle sivulle ja vältä attribuutteja. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 11 / 15

12 Voit palauttaa hyvän ohjelmointitavan mieleen lukemalla luentomateriaalin 13. ja 24. luvut [2, 3]. Tarpeettomien attribuuttien käyttöä tulee välttää. Erityisesti parametrilistojen kautta tapahtuvaa tiedonvälitystä ei saa korvata järjestelmällisesti attribuuteilla, koska tällöin rikotaan karkeasti modulaarisuusperiaatetta. Modulaarisessa ohjelmoinnissa on tavoitteena jakaa koodi helposti ymmärrettäviin ja hallittaviin kokonaisuuksiin, jotka kommunikoivat ympäristönsä kanssa selkeästi määritellyn liittymän (parametrilista ja paluuarvo) kautta. Attribuutit näkyvät kaikkiin metodeihin, jolloin ohjelman tietoja voidaan muuttaa missä tahansa moduulien liittymät ohittaen. Harjoitustyössä saa käyttää korkeintaan yhtä attribuuttia hyvin perustelluista syistä eikä attribuutti saa olla kaksiulotteinen taulukko. Huomaa, että harjoitustyö on ratkaistavissa täysin ilman attribuutteja. final-määreellä esiteltyjä vakioituja attribuutteja (eli luokkavakioita) voi käyttää vapaammin, koska vakioarvoisen attribuutin arvoa ei voida muuttaa metodeissa. Sisennä koodi välilyönnein. Älä käytä sisentämiseen tabulaattoria, jotta koodisi näkyisi samanlaisena myös ohjaajan editorissa. Erityisesti välilyöntejä ja tabulaattorimerkkejä ei saa käyttää sekaisin, koska tällöin on varmaa etteivät sisennykset näy ajatellulla tavalla. Ohjelman nimen tulee olla Txtris, jolloin lähdekoodi on Txtris.java nimisessä tiedostossa Palikoiden tuottaminen, kierto ja täysien rivien poisto Palikat on tuotettava satunnaisessa järjestyksessä, jotta pelissä olisi enemmän haastetta. Toisaalta satunnaisuuden tulisi olla toistettavissa, jotta ratkaisun ja mallivastauksen toimintaa voidaan vertailla. Onneksi myös Java-kieli osaa toistaa satunnaislukujen jonon, kun satunnaislukugeneraattori alustetaan niin sanotulla siemenluvulla. Siemenluku välitetään harjoitustyölle luentomateriaalin 23. luvussa esiteltynä komentoriviparametrina [4]. Interaktiivisesti suoritettavalle ohjelmalle annetaan esimerkiksi siemenluku 900 seuraavasti: java Txtris 900 Uudelleenohjausta käytettäessä komento voi olla esimerkiksi: java Txtris 900 < syote_tehtanto1_900.txt > tulos.txt Harjoitustyössä oletetaan, että käyttäjä osaa antaa aina yhden ja vain yhden komentoriviparametrin, joka on kokonaisluku. Kurssin verkkosivuilta on julkaistu HT2Apu- ja TxtrisTest-luokat. HT2Apu on apuluokka, jossa on neljä julkista metodia (katso luokan 4. kohta). Näistä rakentajaa ja annapalikanpaikat-metodia tarvitaan palikoiden arpomiseen. TxtrisTest-luokka käsittelee komentoriviparametrin ja kutsuu esimerkinomaisesti HT2Apu-luokan metodeja. Luokan main-metodissa muunnetaan komentorivi inttyyppiseksi luvuksi ja käsitellään mahdolliset virhetilanteet. HT2Apu-luokkaa edustava olio luodaan antamalla muunnettu siemenluku annetaan luokan rakentajalle. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 12 / 15

13 Voit käyttää TxtrisTest-luokkaa sellaisenaan oman ohjelmasi lähtökohtana tai kopioida luokasta tarvittavat osat omaan ohjelmaan. Molemmissa tapauksissa kannattaa ehdottomasti jättää main-metodi nykyiseen muotoonsa ja sijoittaa pääsilmukka muualle, jotta main-metodista ei tule liian pitkä. Olion kautta kutsumalla saadaan käyttöön annapalikanpaikat-metodi, joka arpoo uuden palikan. Metodi palauttaa valitsemansa palikan paikkojen rivi- ja sarakeindeksit taulukossa, kun palikka on alkuasemassaan. Kullakin taulukon rivillä on yhden merkin paikkatiedot: rivin ensimmäisessä alkiossa on merkin rivi-indeksi ja toisessa alkiossa on merkin sarakeindeksi. Taulukossa on aina neljä riviä, koska kaikki palikat koostuvat neljästä merkistä. Esimerkiksi siemenluvulla 900 luotu olio valitsee ensimmäisellä annapalikanpaikat-metodin kutsulla J-tyyppisen palikan ja palauttaa paikkataulukon, jonka arvot ovat: { { 1, 4 }, { 1, 5 }, { 1, 6 }, { 2, 6 } } Näin pelin alussa palikan merkkien tulee olla kentän paikoissa (1, 4), (1, 5), (1, 6) ja (2, 6). Kuvassa 1a ja luvussa 2.2 annettu tulosteessa merkit ovat paikoillaan. J- kuvion kolme ensimmäistä merkkiä ovat kentän toisen rivin viidennessä, kuudennessa ja seitsemännessä sarakkeessa ja viimeinen merkki kolmannen rivin seitsemännessä sarakkeessa. Palikoiden paikat ja paikkojen muodostamat kuviot on annettu taulukoissa 1 ja annapalikanpaikat-metodin kommenteissa, joista saa vielä tarkemman käsityksen metodin toiminnasta. Apuluokan kolmas julkinen metodi on kierrapalikanpaikat, joka kiertää parametrinaan saamiaan palikan paikkoja 90 astetta vastapäivään toisen paikan suhteen. Metodia on helpointa kutsua In-luokan metodien tapaan luokan nimen avulla, koska tällöin ei tarvita HT2Apu-luokan oliota. Metodi palauttaa paluuarvonaan paikkataulukon, joka sisältää kierrettyjen paikkojen rivi- ja sarakeindeksit. Huomaa, että metodi ei tarkista ovatko uudet laillisia. Jos yllä annetut J-palikan paikat kierretään, ovat uuden paikkataulukon arvot: { { 2, 5 }, { 1, 5 }, { 0, 5 }, { 0, 6 } } joista paikat (0, 5) ja (0, 6) ovat laittomia, koska palikka ei saa olla reunalla. Myös tämän metodin toiminnasta saa lisätietoja perehtymällä kommentteihin. Älä käytä muita menetelmiä kuin annapalikanpaikat- ja kierrapalikanpaikat-metodit uuden palikan arpomiseen ja palikan paikkojen kiertämiseen, jotta palikat käyttäytyvät varmasti samalla tavoin kuin malliratkaisussa. Luo HT2Apu-luokan olio täsmälleen yhden kerran siemenlukua käyttäen, koska uudelleen luotaessa siemenlukuun liittyvä satunnaislukujen jono alkaa alusta, vaikka luotaessa käytettäisiin samaa siemenlukua. Älä muuta HT2Apu-luokkaa millään tavalla. Älä kopioi luokan metodeja ohjelmaasi. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 13 / 15

14 HT2Apu-luokan neljäs julkinen metodi on poistarivit, joka poistaa parametrinaan saamasta kentästä täydet rivit ja palauttaa paluuarvonaan poistettujen rivien lukumäärän (0 4). Tätä metodia ei ole pakko käyttää. Voit halutessasi kirjoittaa itse paremman metodin rivien poistoon, jos olet täysin varma, että metodisi toimii aina samoin kuin poistarivit-metodi. Harjoitustyöohjelmaa suoritettaessa ja käännettäessä on pidettävä huolta siitä, että Java-kääntäjä ja -tulkki löytävät HT2Apu-luokan. Helpointa on kopioida HT2Apu-luokka (HT2Apu.java-tiedosto) In-luokan tapaan samaan hakemistoon, jossa ohjelmasi on. 4. Dokumentointi Harjoitustyöstä kirjoitetaan dokumentti, jonka tulee sisältää seuraavat asiat: 1. Kansilehdellä tekijän nimi, opiskelijanumero, sähköpostiosoite, yksikkö ja tutkinto-ohjelma. Sivun keskellä tulisi olla suuremmalla fontilla dokumentin nimi. Kurssin kotisivuilla on annettu esimerkinomainen kansilehti. 2. Lyhyt kuvaus ohjelman toiminnasta. Voit kuvailla ohjelman toimintaa joko täysin vapaamuotoisena tekstinä (korkeinaan puoli sivua) tai pseudokoodina (korkeintaan kaksi sivua). Pseudokoodissa olisi hyvä olla operaatioita ja muuttujia. Huomaa, että käytit kumpaa lähestymistapaansa hyvänsä, niin tärkeintä on ohjelman keskeisen logiikan hahmottelu yleisellä tasolla. 3. Omia ajatuksia. Esimerkiksi: Oliko työ helppo, sopiva vai vaikea? Jos helppo tai vaikea, niin miksi? Mitä uutta opittiin? Oliko työstä mitään hyötyä tekijälleen? Montako tuntia työn tekemiseen meni? Dokumentin leipäteksti kirjoitetaan 12 pisteen fontilla ja yhdellä rivinvälillä. Valmiin tekstin lukeminen pariin otteeseen ei ole huonompi idea. Dokumentin kirjoitus tekstinkäsittelyohjelmalla sekä ohjelmasta löytyvän oikolukutoiminnon käyttäminen tekstin tarkistamiseen on myös suotavaa. Dokumentti on palautettava PDF-muodossa. Muut tiedostomuodot eivät kelpaa. Luvussa 6 ja kurssin verkkosivuilla kerrotaan tarkemmin dokumentin ja koodin palauttamisesta. 5. Harjoitustyön ohjaus Harjoitusryhmien vetäjät vastaavat ryhmäläistensä töiden ohjauksesta. Apua saa sekä sähköpostitse että henkilökohtaisesti. Ohjaajat ovat tavattavissa yliopistolla kurssin verkkosivuilla myöhemmin julkaistavina aikoina. Kurssin vastuuopettaja auttaa harjoitustyöongelmissa myös muitakin kuin oman ryhmänsä opiskelijoita. Pyri kuitenkin ottamaan ongelmatilanteissa yhteys ensin oman harjoitusryhmän vetäjään, koska vastuuopettajalla on toisinaan kiire. Muista myös, että tehtävänantoon ja Javan piirteiden käyttöön liittyvissä epävarmoissa tilanteissa kannattaa aina kysyä ohjaajalta. Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 14 / 15

15 6. Harjoitustyön palautus Ohjelma ja dokumentti täytyy palauttaa sähköisesti maanantaihin klo mennessä WETO-järjestelmään. Tarkemmat palautusohjeet julkaistaan myöhemmin kurssin verkkosivuilla. Harjoitustöiden tarkistus perustuu tulosteiden puoliautomaattiseen vertailuun. Tästä syystä edellä annettuja tulostemäärittelyjä on seurattava pilkulleen eikä In-luokan virheilmoituksia saa mennä muuttamaan. Puoliautomaattinen vertailu helpottaa opettajan työtä, jolloin hänelle jää enemmän aikaa mielekkäämpään työhön eli ohjelman rakenteen ja ohjelmointitavan tutkimiseen. Opiskelijat hyötyvät tästä perusteellisempien kommenttien muodossa. Lisäaikaa työn tekoon voi saada muutaman päivän vain hyvästä syystä. Lisäajasta on sovittava harjoitusryhmän vetäjän kanssa ajoissa eli viimeistään päivää tai paria ennen palautuksen takarajaa. Ennen palautusta on syytä varmistaa, että dokumentissa on mukana kaikki edellä mainitut kohdat. Lisäksi kannattaa tarkistaa, että ohjelma toimii varmasti oikein viimeisten muutosten jälkeen. 7. Harjoitustyön arvostelu Harjoitustyö arvostellaan asteikolla hyväksytty/hylätty. Hylkäyksen perusteena voi olla esimerkiksi ohjelman virheellinen toiminta, hyvän ohjelmointitavan noudattamatta jättäminen, huono dokumentti ja/tai plagiointi. Plagiointiin liittyy sanktio, joka koskee molempia opiskelijoita. (Toiselta opiskelijalta tämän tietämättä kopioidun koodin käyttö johtaa kopioijan koko kurssisuorituksen hylkäämiseen.) Hylätty työ on korjattava pääsääntöisesti viikon sisällä hylkäyksestä. Lähteet [1] Wikipedia-yhteisö: Tetris, (Luettu viimeksi ) [2] J. Laurikkala: Lausekelinen ohjelmointi -kurssin luentorunko, luku 13, (Luettu viimeksi ) [3] J. Laurikkala: Lausekelinen ohjelmointi -kurssin luentorunko, luku 24, (Luettu viimeksi ) [4] J. Laurikkala: Lausekelinen ohjelmointi -kurssin luentorunko, luku 23, (Luettu viimeksi ) Lausekielinen ohjelmointi Syksy 2012 Jorma Laurikkala 15 / 15

Harjoitustyö Johdanto

Harjoitustyö Johdanto 1. Johdanto 1.1. Tehtävä Lausekielinen ohjelmointi II -kurssin ensimmäisessä harjoitustyössä on tehtävänä toteuttaa Java-ohjelma tekstirivin sovittamiseen tekstialueelle. Sovittaminen tapahtuu muodostamalla

Lisätiedot

Harjoitustyö Johdanto Tehtävä

Harjoitustyö Johdanto Tehtävä 1. Johdanto 1.1. Tehtävä Lausekielinen ohjelmointi (Laki) -kurssin toisena harjoitustyönä ohjelmoidaan Java-kielellä 2048-pelin [1, 2] tekstipohjainen muunnelma. Pelissä on kenttä, jolla liikutellaan tiiliä

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

Lisätiedot

Harjoitustyö Johdanto Tehtävä

Harjoitustyö Johdanto Tehtävä 1. Johdanto 1.1. Tehtävä Lausekielinen ohjelmointi II -kurssin toisena harjoitustyönä toteutetaan Javaohjelma ASCII-grafiikkana [1] esitettyjen kuvien käsittelyyn. Ohjelma lataa käynnistyessään kuvan tekstitiedostosta

Lisätiedot

2. Merkkijono, osamerkkijono ja osamerkkijonon haku

2. Merkkijono, osamerkkijono ja osamerkkijonon haku . Johdanto Ensimmäisessä harjoitustyössä on tehtävänä toteuttaa Java-ohjelma, joka hakee merkkijonosta osamerkkijonon esiintymiä. Haku voidaan rajoittaa pelkästään merkkijonon alkuun tai sen loppuun. Harjoitustyö

Lisätiedot

Harjoitustyö Johdanto Tehtävä

Harjoitustyö Johdanto Tehtävä 1. Johdanto 1.1. Tehtävä Lausekielinen ohjelmointi II -kurssin toisena harjoitustyönä toteutetaan Java- ohjelma ASCII-grafiikkana [1] esitettyjen kuvien katseluun ja käsittelyyn. Ohjelma lataa käynnistyessään

Lisätiedot

Harjoitustyö 1. 1. Johdanto. 2. Euroseteli

Harjoitustyö 1. 1. Johdanto. 2. Euroseteli Harjoitustyö. Johdanto.. Tehtävä Lausekielinen ohjelmointi (Laki) -kurssin ensimmäisessä harjoitustyössä on tehtävänä toteuttaa Java-kielellä ohjelma, joka tutkii euroseteleiden [, ] sarjanumeroja. Ohjelmalla

Lisätiedot

Harjoitustyö Johdanto

Harjoitustyö Johdanto 1. Johdanto 1.1. Tehtävä Lausekielinen ohjelmointi II -kurssin ensimmäisessä harjoitustyössä on tehtävänä toteuttaa Java-ohjelma, joka laskee merkkijonoa kuvaavia tunnuslukuja. Ohjelma esikäsittelee merkkijonon

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa

Toinen harjoitustyö. ASCII-grafiikkaa Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita

Lisätiedot

13. Hyvä ohjelmointitapa (osa 1) 13.1

13. Hyvä ohjelmointitapa (osa 1) 13.1 13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin

Lisätiedot

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

Lisätiedot

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 48) Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain

Lisätiedot

Harjoitus 4 (viikko 47)

Harjoitus 4 (viikko 47) Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä

Lisätiedot

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä, käytä

Lisätiedot

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Yleistä Tehtävä: Tee Javalla LineBreaker-ohjelma tekstirivin sovittamiseen tekstialueelle riviä katkomalla. Lausekielinen ohjelmointi II -kurssin pakollinen

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5 Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät tekniset ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita. Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) Harjoitus 5 (viikko 4) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

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

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 4 % (2 pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

Kurssiesite Lausekielinen ohjelmointi II Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Kurssiesite Lausekielinen ohjelmointi II Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Kurssiesite Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

Lisätiedot

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

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Yleistä Tehtävä: Tee Javalla StringStats-ohjelma, joka laskee esikäsittelemästään merkkijonosta joitakin tunnuslukuja. Lausekielinen ohjelmointi II

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi lötköjen kansoittamaa alkulimaa simuloiva olioperustainen ohjelma Java-kielellä. Lötköt säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015. Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015. Olio-ohjelmoinnin perusteet (5 op) Tavoitteena Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

Lisätiedot

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

Lisätiedot

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Kurssiesite Lausekielinen ohjelmointi Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Kurssiesite Lausekielinen ohjelmointi Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Kurssiesite Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, lehtori. Luennot, mikroharjoitukset,

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Harjoitus 1 (viikko 44)

Harjoitus 1 (viikko 44) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

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

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

Lisätiedot

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi Syksy 2014. Tavoitteet ja keinot. Lausekielinen ohjelmointi (10 op)

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi Syksy 2014. Tavoitteet ja keinot. Lausekielinen ohjelmointi (10 op) Kurssiesite Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, lehtori. Luennot, mikroharjoitukset,

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Harjoitustyö. 1. Johdanto. 1.1. Tehtävä

Harjoitustyö. 1. Johdanto. 1.1. Tehtävä 1. Johdanto 1.1. Tehtävä Kaukana, monen valovuoden päässä täältä, sijaitsee planeetta, jolla on käynnistynyt alkeellinen elämä. Tehtävänäsi on toteuttaa Java-kielellä ohjelma, joka simuloi planeetan alkulimassa

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tule paikalle viimeistään noin 20 minuuttia ennen tentin alkua, koska tentti pyritään aloittamaan tasalta.

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2016 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen

Lisätiedot

TAULUKON TEKEMINEN. Sisällysluettelo

TAULUKON TEKEMINEN. Sisällysluettelo Excel 2013 Taulukon tekeminen Sisällysluettelo TAULUKON TEKEMINEN TAULUKON TEKEMINEN... 1 Tietotyypit... 1 Tiedon syöttäminen taulukkoon... 1 Kirjoitusvirheiden korjaaminen... 2 Alueen sisällön tyhjentäminen...

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset 815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 7. Kombinatoriikka 7.1 Johdanto Kombinatoriikka tutkii seuraavan kaltaisia kysymyksiä: Kuinka monella tavalla jokin toiminto voidaan suorittaa? Kuinka monta tietynlaista

Lisätiedot

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

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tehdään sähköisesti mikroluokkien Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tehdään sähköisesti mikroluokkien Windows-koneilla. Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. kestää kolme tuntia. Tule paikalle viimeistään noin 15 minuuttia ennen tentin alkua, koska tentti pyritään aloittamaan tasalta. Poistua voi aikaisintaan,

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen package-määrettä käyttäen. Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa importlauseen avulla. Pakkaukset ja näkyvyys.

Lisätiedot

4. Olio-ohjelmoinista lyhyesti 4.1

4. Olio-ohjelmoinista lyhyesti 4.1 4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Kurssiesite Lausekielinen ohjelmointi I Kesä Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Kurssiesite Lausekielinen ohjelmointi I Kesä Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Kurssiesite Lausekielinen ohjelmointi I Kesä 2018 Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Kurssin materiaali

Lisätiedot