Harjoitustyö Johdanto Tehtävä

Koko: px
Aloita esitys sivulta:

Download "Harjoitustyö Johdanto Tehtävä"

Transkriptio

1 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ä tavoitteena yhdistää samanarvoisia tiiliä siten, että lopulta saadaan tuotettua 2048 pisteen arvoinen tiili. Peliä voi jatkaa vielä tämän tiilen jälkeen. Tiilet yhdistetään siirtämällä kaikki kentän tiilet annettuun suuntaan, jolloin tiilet kerääntyvät kentän vastakkaiseen reunaan. Kenttää siis tavallaan kallistetaan, jolloin tiilet liukuvat alempana olevaan reunaan. Siirron yhteydessä tiilien väliset tyhjät paikat katoavat. Jos siirtosuuntaa vastaan tarkastellen löydetään peräkkäisten samanarvoisten tiilien muodostamia pareja, nämä parit yhdistetään uusiksi, arvokkaammiksi tiiliksi. Yhdistämisestä saadaan pisteitä parin arvojen summan verran. Siirron seurauksena mahdollisesti saatuja uusia tiilipareja ei yhdistetä samalla siirrolla. Nämä tiilet yhdistetään vasta, kun käyttäjä kohdistaa niihin uuden yhdistämisen aiheuttavan siirron. Tiiliä voidaan siirtää vaakasuunnassa (vasemmalle ja oikealle) ja pystysuunnassa (ylös tai alas.) Ohjelma sijoittaa kentän satunnaisesti valittuun vapaaseen paikkaan uuden tiilen, jos kenttään kohdistettu siirto muutti vähintään yhden tiilen paikkaa tai vähintään yksi tiilipari yhdistyi. Lähtötilanteessa kentälle sijoitetaan kaksi tiiltä. Näin kentälle saadut uudet tiilet ovat kahden pisteen arvoisina aina vähiten arvokkaita. Pelin idean saa helposti selville kokeilemalla Gabriele Cirullin alkuperäistä peliä [1]. Huomaa, että harjoitustyössä tehtävä peliversio ei vastaa kaikin osin alkuperäistä peliä. Muun muassa pelimerkit esitetään eri tavoin: pieni ja iso a- kirjain vastaavat kahden pisteen tiiltä, iso b-kirjain vastaa neljän pisteen tiiltä, iso c-kirjan vastaa kahdeksan pisteen tiiltä ja niin edelleen. Iso k-kirjain on 2084 pisteen arvoinen ja suurin arvo on isolla z-kirjaimella. Peli loppuu, kun pelaaja päättää lopettaa pelin tai siirto ei muuta kentän tilannetta. Jälkimmäisessä tapauksessa loppu tulee viimeistään, kun kentällä on Z-tiiliä, koska näitä ei enää yhdistetä suuremmiksi tiiliksi Pelikenttä Peliä pelataan n n -kokoisella kentällä (n 4), joka esitetään ohjelmassa vastaavan kokoisena kaksiulotteisena taulukkona, jonka 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 (n - 1, n - 1) on puolestaan kentän oikeassa alakulmassa. Luontevin valinta alkion tyypiksi char, koska harjoitustyössä paikkojen sisältö esitetään merkeillä. Pelikentällä on pisteellä ('.') piirretty yhden merkin levyinen reuna. Sisäpaikoissa on tiiliä vastaavia pelimerkkejä ja kentän taustaa. Tiilet esitetään englanninkielisen suuraakkoston kirjaimilla (A Z) lukuun ottamatta kentälle arvottuja uusia tiiliä, jotka esitetään aina pienellä a-kirjaimella. Tämä kirjain muuttuu suureksi Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 1 / 12

2 kirjaimeksi, kun merkkejä siirretään. Tausta esitetään välilyönnillä (' '). Tiili- tai taustamerkki ei saa olla reunalla eikä uutta tiilimerkkiä saa sijoittaa tiilimerkin päälle. Kuvassa 1a on esitelty eräs pelin lähtötilanne 6 6 -kokoisella pelikentällä. Ohjelma on sijoittanut kaksi pienellä a-kirjaimella esitettyjä aloitustiiltä kentälle (kuva 1a). Pelaaja aloittaa siirtämällä tiilet vasemmalle ja ohjelma sijoittaa kentälle uuden tiilen (kuva 1b). Siirron seurauksena aloitustiilten merkit vaihtuvat isoiksi a-kirjaimiksi. Pelaaja siirtää seuraavaksi alas, jolloin a-tiili kasvaa A- tiileksi, toisessa sarakkeessa olevat A-tiilet päätyvät peräkkäin ja yhdistyvät samanarvoisina B-tiileksi ja ohjelma sijoittaa kentälle uuden tiilen (kuva 1c). Pelaaja jatkaa siirtämällä alas ja ylös (kuvat 1d ja 1e). Oikealle siirrettäessä yhdistettävät tiilet valitaan oikeasta reunasta aloittaen. Näin paikkojen (1, 4) ja (1, 3) A-tiilistä muodostuu B-tiili (kuva 1f). Paikan (1, 2) A- tiiltä ei huomioida yhdistämisessä, koska yhdistettävät parit ovat erillisiä. Jotta tämä tiili voitaisiin yhdistää, sillä tulisi olla parina välittömästi vasemmalla puolella oleva A-kirjain. Kun käyttäjä siirtää yhdistämisen jälkeen kahdesti oikealle (kuvat 1g ja 1h), kenttä muuttuu jälkimmäisen siirron seurauksena ainoastaan siten, että kentälle arvotun tiilen merkki vaihtuu suureksi. Tästä syystä kuvassa 1h esitetylle kentälle ei sijoiteta uutta tiiltä. Pelaaja peruuttaa jälkimmäisen turhan siirron, jolloin kuvassa 1i palataan kuvan 1g tilanteeseen. Pelaaja siirtää vielä tiilet alas, jolloin toiseksi viimeisen sarakkeen A-tiilistä muodostuu B-tiili (kuva 1j). Yhdistämisprosessia ei jatketa, vaikka uudesta B-tiilestä ja yhdistettyjä merkkejä seuraavasta B-tiilestä saataisiin C-tiili. Yhdistämällä muodostettuja uusia tiiliä voi yhdistää toisin tiiliin, vasta yhdistämistä seuraavalla siirrolla. Pelaaja ei kuitenkaan jaksa pitemmälle ja päättää pelin. (a) (b).a a..a. (c).b A. (d).b AA. (e).baaa. (f). BAB. (g).abab. (h).abab. (j). B..ABAB. Kuva 1: a) kenttä lähtötilanteessa, b) pelaaja on siirtänyt vasemmalle, c) pelaaja on siirtänyt alas, jolloin A-tiilet (lihavoitu b-kuvassa) ovat yhdistynet, d) pelaaja on siirtänyt alas, e) pelaaja on siirtänyt ylös, f) siirto oikealle tuottaa uuden B-tiilen, g) pelaaja on siirtänyt oikealle, h) pelaaja on siirtänyt turhaan oikealle, i) pelaaja on peruuttanut edellisen siirron, j) pelaaja on yhdistänyt A-kirjaimet siirtämällä alas ja lopettaa pelin. (i).abab. Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 2 / 12

3 1.3. Siirto on merkkijono-ongelma Yksittäisen rivin tai sarakkeen siirto ja merkkien yhdistäminen on hankala tehdä suoraan taulukkoa käsittelemällä. On kenties helpompaa palauttaa siirto ja yhdistäminen merkkijono-ongelmasi siten, että rivin tai sarakkeen sisäpaikkojen merkeistä muodostetaan merkkijono, jota hyödyntäen laskenta on helpompaa. Uusi merkkijono sijoitetaan takaisin rivin tai sarakkeen merkeiksi. Esimerkiksi kuvan 1b sarakkeen { '.', 'A', ' ', 'A', ' ', '.' } sisäpaikkojen merkit voidaan kerätä merkkijonoksi "A A " ja muokata muotoon " B", joka puolestaan on helppo sijoittaa takaisin sarakkeen merkeiksi. Merkkijonojen käytöllä voidaan vähentää myös koodin monistamiseen vaaraa, koska siirrossa ja yhdistämisessä tarvitaan lopulta merkkijonon lisäksi vain tieto siitä, onko siirron suunta jonon lopun vai alun suuntaan. Ohjelmassa ei saa olla metodeja jokaiselle neljästä siirtosuunnasta, koska tällöin on hyvin todennäköistä, että koodia toistetaan pienin muutoksin. Erilliset vaaka- ja pystysuuntaiseen siirtoon liittyvät metodit ovat mahdollisia. Suotavinta olisi tehdä siirto yhdellä metodilla. Yksi 13. harjoituskerran tehtävistä avaa taulukon rivin ja sarakkeen ja merkkijonon välistä ideaa. Tehtävän mallivastauksessa esitetään kuinka rivi- ja sarakesuuntaisen toiminnallisuuden voi toteuttaa tässä yhteydessä yhdellä metodilla. Suositellusta poikkeavat lähestymistavat ovat mahdollisia ja sallittuja. Jos ongelman ratkaisee toisin, on tekijän itse oltava täysin varma, että vaihtoehtoinen lähestymistapa toimii varmasti. Kurssin opettajilla ei valitettavasti ole aikaa opastaa kuinka vaihtoehtoisen ratkaisu korjataan toimivaksi, jos jo ratkaisuideassa on perustavanlaatuinen valuvika. Erityisesti ohjelmoinnin tällä kurssilla aloittaneet opiskelijat saavat todennäköisesti työn helpoiten valmiiksi merkkijonojen avulla. Huomaa, että ohjelmassa ei saa käyttää muita tietorakenteita kuin taulukkoja. Esimerkiksi listaa ei saa käyttää oli kyseessä Javan API:n valmis luokka (esimerkiksi ArrayList) tai itse toteutettu koodi Valmiin koodin käytöstä Kurssin verkkosivuilla on apuluokka, jota käytetään uusien a-arvoisten tiilien sijoittamiseen pelikentälle (luku 3.2). Näitä tiiliä ei saa tuottaa muilla tavoin, jotta oma ohjelman a-tiilet saadaan kentälle samassa järjestyksessä kuin malliratkaisussa. 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. Javan API:n tietorakenneluokkia ei saa käyttää; ainoa sallittu tietorakenne on taulukko. Javan API:n taulukkojen käsittelyyn liittyvät metodit on myös kielletty. Esimerkiksi Arrays-luokan palvelut ovat kieltolistalla. 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. Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 3 / 12

4 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 on plagiointia 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ä, jos kurssi jäänyt kesken esimerkiksi ase- tai siviilipalveluksen tapaisesta pakottavasta syystä. Kurssin kotisivuilla on annettu tarkempia tietoja osasuorituksista. C) Edellisten kohtien tapaisella painavalla syyllä. Kohdan A perusteella on annettu kaikki opintokoordinaattorin (Heli Rikala) kurssin vastuuopettajalle (Jorma Laurikkala) esittämät korvaavuudet. 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 automaattinen tarkistus (luku 6) onnistuisi paremmin. Ohjelmassa on komennot tiilien siirtoon kentän vasempaan, oikeaan, ylä- tai alareunaan (luku 2.4), siirron peruuttamiseen (luku 2.5) ja ohjelma lopettamiseen (luku 2.6). Virheelliset komennot ohitetaan (luku 2.3). Tehtävän helpottamiseksi oletetaan, että ohjelmalle annetaan aina syöte sitä luettaessa ja että syöte on aina oikean tyyppinen (char) Ohjelman käynnistys Ohjelma käynnistetään kahdella kokonaislukuarvoisella komentoriviparametrilla [3], jotka ovat järjestyksessä vasemmalta oikealle satunnaislukugeneraattorin siemenluku ja kentän sivun pituus, johon lasketaan myös kentän reunat. Siemenluku tarvitaan, jotta harjoitustyön apuluokka (luku 3) osaa valita a- arvoisten tiilien paikat tietyssä satunnaisessa järjestyksessä. Ilman siemenlukua Javan satunnaislukugeneraattori tuottaisi jokaisella ohjelman ajokerralla täysin satunnaisen jonon lukuja, jolloin ratkaisun ja mallivastauksen toimintaa ei voitaisi Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 4 / 12

5 vertailla. Apuluokka arpoo uusia a-arvoisia tiiliä kentälle kaikissa ohjelmissa samalla tavalla, kun satunnaislukugeneraattori alustetaan tietyllä siemenluvulla. Ohjelmalle annetaan esimerkiksi siemenluku 5 ja ohjelmaa käsketään luomaan 6 6 -kokoinen kenttä seuraavasti: java M Uudelleenohjausta käytettäessä komento voi olla esimerkiksi: java M < syote_tehtanto_5_6.txt > tulos.txt Ohjelman tulostaa tervehdyksen (luku 2.2) jälkeen virheilmoituksen "Invalid command-line argument!" ja jäähyväiset (luku 2.5), jos komentoriviparametreissa on virhe tai kentän sivun pituus on virheellinen. Komentoriviparametrit voivat olla väärän tyyppisiä tai niitä voi olla väärä määrä. Sivun pituuden tulee olla vähintään neljä merkkiä. Jos ohjelmalle annetaan esimerkiksi väärän tyyppinen komentoriviparametri (x): java M x ohjelma tulostaa: Invalid command-line argument! Bye, see you soon Tervehdystekstin tulostaminen Käynnistyessään ohjelma tulostaa näytölle miinusmerkeillä (ꞌ - ꞌ ) ja kahdella putkimerkillä (ꞌ ꞌ ) kehystetyn viestin: Tämä teksti tulostetaan vain kerran Komennon lukeminen Heti tervehdysrivien jälkeen tulostetaan pisterivi "Points: x.", missä x on tiilten yhdistämisistä toistaiseksi saatu pistemäärä. Pelin pisteitä on nolla. Välittömästi pisterivin jälkeen tulostetaan kenttä (luku 1.2). Lähtötilanteessa kentän kahdessa sisäpaikassa on pienellä a-kirjaimella esitetty tiilimerkki, jotka sijoitetaan kentälle apuluokan metodilla (luku 3.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, kun siemenluvuksi on annettu viisi ja kentän sivun pituudeksi kuusi: Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 5 / 12

6 Points: 0. Virheelliset komennot jätetään huomiotta. Kentälle ei sijoiteta uutta a-tiiltä, jos komento virheellinen. Ohjelma reagoi tuntemattomaan komentoon tulostamalla uudelleen pisterivin, kentän ja ohjerivin: U Points: Tiilien siirtäminen Tiiliä voidaan siirtää neljään suuntaan: vasemmalle ('l'), oikealle ('r'), ylös ('u') tai alas ('d'). Siirretään ohjelman lähtökentälle arpomat a-tiilet vasempaan reunaan: l Points: 0..A a..a. Tiilet muuttuvat siirron seurauksena A-tiiliksi. Ohjelma sijoittaa kentälle siirron jälkeen yhden a-tiilen. Tämän tiili saadaan kentälle aloitustiilien tapaan apuluokkaa käyttäen (luku 3.2). Siirretään seuraavaksi alas: d Points: 4..B A. Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 6 / 12

7 Toisen sarakkeen A-tiilet yhdistyvät B-tiileksi ja käyttäjä saa = 4 pistettä. Toinen uusi merkki saadaan ohjelmalta: kentälle ilmaantuu taas a-tiili. Siirretään uudestaan alas: d Points: 4..B AA. ja sitten ylös: u Points: 4..BAAA. Yhdistetään toisen rivin kaksi oikean puoleisinta A-tiiltä siirtymällä oikealle: r Points: 8.. BAB. Pisteet kasvavat kahdeksaan pisteeseen ( = 8) ja oikeaan reunaan ilmestyy uusi B-tiili. Seuraavaksi siirrytään oikealle: r Points: 8..aBAB. ja uudelleen oikealle: Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 7 / 12

8 r Points: 8..ABAB. Koska tiilet eivät liikkuneet tai yhdistyneet, ohjelma ei sijoita kentälle uutta a- tiiltä. Pelkästään viimeisimmän a-tiilen muutos A-tiileksi ei ole riittävä syy sijoittaa uutta a-tiiltä kentälle Siirron peruminen Perutaan viimeisin siirto selvänä vikatikkinä pienellä z-kirjaimella (ꞌzꞌ), jolloin palataan ennen virhesiirtoa valinneeseen tilanteeseen. Peruutus palauttaa myös vanhat pisteet. Pisteet eivät kuitenkaan nyt muutu, koska turhalla siirrolla ei saavutettu mitään. Peruutus palauttaa vain edellisen tilanteen: peruutuskomentoa välittömästi seuraava uusi peruutuskomento jätetään virheellisen komennon tapaan huomiotta (luku 2.3). z Points: 8..aBAB Pelin lopettaminen Pelaaja yhdistää vielä toiseksi viimeisen sarakkeen A-tiilet liikkumalla alas. Palkkioksi saadaan taas neljä (2 + 2) pistettä ja kokonaispisteet kasvavat 12 pisteeseen. d Points: 12.. B..ABAB. Tässä vaiheessa pelaaja päättää tehdä muuta ja lopettaa pelin antamalla komennoksi pienen q-kirjaimen ('q'). Peli tulostaa ennen pysähtymistä omalle rivilleen lyhyet jäähyväiset "Bye, see you soon." (Ohjeriviä ei tulosteta, koska komentoja ei enää lueta.) Lopetetaan peli edellisessä kuvassa jäätyyn tilanteeseen: Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 8 / 12

9 q Bye, see you soon. Ohjelma toimii yllä kuvatulla myös, kun tiiliä täynnä olevaan kenttään kohdistettu siirtokomento ei siirrä yhtäkään tiiltä tai yksikään tiilipari ei yhdisty. Alla annetussa tilanteessa tiilien siirto ylös ei muuttaisi kenttää muuten kuin a-tiilen osalta, joka muuttuisi A-tiileksi. Tästä syystä ohjelma pysäyttää itsensä: d Points: 92..BaAA..CBBC..BCCA..ABBB. u Bye, see you soon. 3. Koodista 3.1. Yleistä Ohjelma kirjoitetaan tuttuun tapaan main-operaation sisältävään luokkaan. Ensimmäisestä harjoitustyöstä poiketen ohjelma on kuitenkin jaettava metodeihin. Metodien lukumäärä riippuu ohjelmoijasta, mutta ohjelmaan ei saa kirjoittaa liian pitkiä metodeja. Ohjelmassa on vältettävä saman koodin kopioimista eri paikkoihin, koska koodista voi kirjoittaa asianomaisista paikoista kutsuttavan metodin. Erityisesti on vältettävä tiilien liikutteluun liittyvää toistuvaa koodia. Kullekin suunnalle ei saisi olla omia metodeja, jotka ovat pieniä eroja lukuun ottamatta samaa koodia. Oikeaan ja vasempaan tapahtuvan liikuttelun voi yhdistää vaakasuunnasta vastaavaan metodiin. Samoin ylös ja alas liikuttelu voisi olla pystysuunnasta vastaavassa metodissa. Merkkijonojen avulla tapahtuvan liikuttelun ja merkkien yhdistämisen (luku 1.3) voi toteuttaa yhdellä metodilla suuremmin koodia toistamatta. 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ä lauseiden sisällä 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 2014 Jorma Laurikkala 9 / 12

10 Voit palauttaa hyvän ohjelmointitavan mieleen lukemalla luentomateriaalin 13. ja 24. luvut [4, 5]. 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ää yhtä normaalia attribuuttia, joka ei kuitenkaan saa olla taulukko. Final-määreellä esiteltyjä vakioituja attribuutteja (eli luokkavakioita) sen sijaan saa käyttää vapaasti, 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 M2048, jolloin lähdekoodi on M2048.java nimisessä tiedostossa. Ohjelman saa jakaa luokkiin, jos kaikki luokat ovat M2048.javatiedostossa Tiilien tuottaminen apuluokalla Kurssin verkkosivuilta on annettu Automaatti-luokka, joka on tarkoitettu a-tiilien tuottamiseen. Luokalla on kaksi julkista metodia (luokan 4. kohta): kaynnista-metodi on tarkoitettu satunnaislukugeneraattorin alustamiseen. Anna String-tyyppisestä komentoriviparametrista kokonaisluvuksi muunnettu siemenluku metodin parametriksi. Metodia voi kutsua missä tahansa metodissa, jossa siemenluku on saatavilla. Tärkeintä on, että metodia kutsutaan ennen sijoita-metodia ja että metodia kutsutaan vain kerran. Uudelleenkutsu tuottaa ohjelman pysäyttävän poikkeuksen. Metodiin on rakennettu miina, koska uudelleen alustettaessa siemenlukuun liittyvä satunnaislukujen jono alkaa alusta, vaikka käytettäisiin samaa siemenlukua. sijoita-metodi sijoittaa parametrinaan saamaansa pelikenttään pyydetyn lukumäärän verran a-tiilen merkkejä, jos kentässä riittävästi vapaita taustapaikkoja. Metodin kutsu tuottaa poikkeuksen, jos satunnaislukugeneraattoria ei ole alustettu alusta-metodia kutsumalla. Kaikkien vanhojen tiilimerkkien tulee olla kentällä metodia kutsuttaessa, jotta uutta tiiltä ei sijoiteta vahingossa jonkin vanhan tiilen paikkaan. Metodeihin on syytä tutustua tarkemmin lukemalla metodien otsikot ja metodien yleiset kommentit. Molemmat metodit ovat static-määreellä esiteltyjä luokkametodeja, joita kutsutaan In- ja Math-luokkien metodien tapaan luokan nimen kautta. Esimerkiksi käynnistä metodin kutsu voisi olla: Automaatti.kaynnista(siemenluku); Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 10 / 12

11 Yllä siemenluku on siemenluvun sisältävä muuttuja. 13. harjoituksissa on tehtävä, jossa apuluokan metodeja kutsutaan esimerkinomaisesti. Älä käytä muita menetelmiä a-tiilien tuottamisen, jotta ohjelmasi toimii varmasti samalla tavoin kuin malliratkaisu. Älä muuta Automaatti-luokkaa millään tavalla. Älä kopioi luokan metodeja ohjelmaasi. Harjoitustyöohjelmaa suoritettaessa ja käännettäessä on pidettävä huolta siitä, että Java-kääntäjä ja -tulkki löytävät apuluokan. Helpointa on kopioida Automaattiluokka (Automaatti.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 julkaistaan 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 pääsääntöisesti ryhmäläistensä töiden ohjauksesta ja tarkistuksesta. (Tuntiopettajat tarkistavat kurssin vastuuopettajan ryhmäläisten harjoitustyöt.) 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 2014 Jorma Laurikkala 11 / 12

12 6. Harjoitustyön palautus Ohjelma ja dokumentti täytyy palauttaa viimeistään tiistaina klo WETO-järjestelmään. Tarkemmat palautusohjeet julkaistaan myöhemmin kurssin verkkosivuilla. Harjoitustöiden toiminnallisuuden tarkistamiseen käytetään WETO-järjestelmää, joka vertailee automaattisesti mallivastauksen ja opiskelijoiden ratkaisujen tulosteita. Tästä syystä edellä annettuja tulostemäärittelyjä on seurattava merkilleen. Automaattinen vertailu vähentää rutiininomaista testaustyötä, jolloin opettajille jää enemmän aikaa mielekkäämpään työhön eli ohjelman rakenteen ja tyylin 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, ohjelman rakenne (erityisesti koodin monistaminen ja liian pitkät metodit), 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] G. Cirulli: 2048, (Luettu viimeksi ) [2] Wikipedia-yhteisö: (Luettu viimeksi ) [3] J. Laurikkala: Lausekelinen ohjelmointi -kurssin luentorunko, luku 23, (Luettu viimeksi ) [4] J. Laurikkala: Lausekelinen ohjelmointi -kurssin luentorunko, luku 13, (Luettu viimeksi ) [5] J. Laurikkala: Lausekelinen ohjelmointi -kurssin luentorunko, luku 24, (Luettu viimeksi ) Lausekielinen ohjelmointi Syksy 2014 Jorma Laurikkala 12 / 12

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

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

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

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

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

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

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

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

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

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

XX (1, 4) (1, 5) (2, 4) (2, 5) 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (TIEA2.1)

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (TIEA2.1) Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2017 Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

Lisätiedot

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2017 Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

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

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

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

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

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. 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

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

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

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

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

Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018

Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018 Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018 Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori.

Lisätiedot

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät Olio-ohjelmoinnin perusteet (eli Oope) Laajuus

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät Olio-ohjelmoinnin perusteet (eli Oope) Laajuus Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018 Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori.

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

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

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

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

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

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

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

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

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

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

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

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

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

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

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

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

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

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua A Lista Sinulle on annettu lista, joka sisältää kokonaisluvut 1, 2,, n jossakin järjestyksessä. Tehtäväsi on järjestää luvut pienimmästä suurimpaan käyttäen seuraavia operaatioita: S: siirtää listan ensimmäisen

Lisätiedot

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy 2015. Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy 2015. Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op) Kurssiesite Lausekielinen ohjelmointi I Syksy 2015 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

Lisätiedot

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

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

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

Harjoitustyö. 1. Johdanto Tehtävä

Harjoitustyö. 1. Johdanto Tehtävä 1. Johdanto 1.1. Tehtävä Muinaiset muukalaiset ovat jättäneet jälkeensä sokkelon, jossa on salaperäisiä esineitä ja vaarallisia robotteja. Toteuta Java-kielellä peli, jossa mönkijää ohjaavan pelaajan tehtävänä

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

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op) Kurssiesite Lausekielinen ohjelmointi I Syksy 2016 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot