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 osalta WETOon (https://wetodev.sis.uta.fi/weto5/) palautetaan vain ratkaisun lähdekoodi eli java-päätteinen tiedosto. In-luokkaa (katso alla) ei tarvitse eikä tule palauttaa. Ensi viikolla pidettävissä mikroharjoituksissa saa apua ongelmakohtiin. Keskiviikon klo 2 - ryhmässä avustetaan hieman enemmän kuin muissa ryhmissä. Palauta vastauksesi WETO-järjestelmään viimeistään ensi viikon torstaina 28.9. klo 2. (keskipäivä). WETO tarkistaa lähdekoodia automaattisesti. Lisätietoja: https://coursepages.uta.fi/tiep/syksy- 27/harjoitukset/ratkaisujen-tarkistus/#automaattinen_tarkistus. Syötteiden lukemiseen tarvittava In-luokka löytyy kurssin kotisivuilta Koodit-kohdasta. Java-kääntäjä ja -tulkki löytyvät yliopiston mikroluokkien koneilta. Nämä ohjelmat voi asentaa myös omalle koneelle. Lisätietoja: https://coursepages.uta.fi/tiep/syksy-27/ohjelmointivalineita/java-jdk/. Ota yhteyttä kurssin vastuuopettajaan, jos Java ei suostu asentumaan koneellesi.. Kirjoita Java-ohjelma, jossa testaat aritmeettiset operaatiot +, -, *, / ja %. Esittele inttyyppiset muuttujat ekaluku ja tokaluku ja lue muuttujille kokonaislukuarvot käyttäjältä. Sijoita kunkin operaation tulos omaan tulosmuuttujaansa, jotka ovat jako-operaation tulosmuuttujaa lukuun ottamatta int-tyyppisiä. Osamäärä sijoitetaan double-tyyppiseen muuttujaan. Tulosta lopuksi tulosmuuttujien arvot näytölle. Kun syötteet ovat 7 ja, niin ohjelma voisi toimia seuraavasti. Moi! Testaan aritmeettisia operaatioita. Anna. luku: 7 Anna 2. luku: 7 + = 7 - = 3 7 * = 28 7 / =.75 7 % = 3 Huomaa, että tarvitset tyyppimuunnoksen, jotta Java ei hävitä desimaaleja jakolausekkeessa ekaluku / tokaluku. 2. Tee Javalla Glass-niminen ohjelma, joka tiedustelee onko käyttäjä optimisti vai pessimisti ja tulostaa vastauksen mukaan if-else-lausetta käyttäen joko "The glass half full." tai "The glass half empty." Voit olettaa, että käyttäjän syöte on aina joko pieni o- tai p-kirjain. Esimerkki ohjelman toiminnasta, kun syöte on 'o': Hello! I tell about glasses. Are you an (o)ptimist or a (p)essimist? o The glass half full. Esimerkki ohjelman toiminnasta, kun syöte on 'p': Hello! I tell about glasses. Are you an (o)ptimist or a (p)essimist? p The glass half empty. Lausekielinen ohjelmointi I Syksy 27 Jorma Laurikkala / 5
3. Liuoksen happamuutta mitataan ph-arvolla. Jos ph on alle 7, sanotaan liuoksen olevan hapan. Jos ph on yli 7, on liuos emäksinen. Liuosta, jonka ph on 7, sanotaan neutraaliksi. Kirjoita Javalla PHScale-niminen ohjelma, joka tulostaa lukee käyttäjältä ph-arvon liukulukuna ja tulostaa saamansa arvon mukaan joko "Solution is acid.", "Solution is neutral." tai "Solution is alkaline." Esimerkki ohjelman toiminnasta, kun syöte on 6.5: Hello! I classify solutions using the ph scale. Enter a ph value: 6.5 Solution is acid.. Tee Javalla Seasons-niminen ohjelma, joka tiedustelee käyttäjältä tämän suosikkivuodenajan ja tulostaa if-else-lauseiden avulla alla annettujen esimerkkien mukaisesti. Esimerkki ohjelman toiminnasta, kun syöte on : Your favourite season of the year is winter. Esimerkki ohjelman toiminnasta, kun syöte on 2: 2 Your favourite season of the year is spring. Esimerkki ohjelman toiminnasta, kun syöte on 3: 3 Your favourite season of the year is summer. Esimerkki ohjelman toiminnasta, kun syöte on : Your favourite season of the year is autumn. Lausekielinen ohjelmointi I Syksy 27 Jorma Laurikkala 2 / 5
Esimerkki ohjelman toiminnasta, kun syöte on virheellinen eli välille kuulumaton kokonaisluku: Your favourite season of the year is unknown. 5. Ratkaise. tehtävä switch-case-lauseen avulla. 6. Tee Javalla Divisibility-niminen ohjelma, joka lukee käyttäjältä kaksi int-tyyppistä kokonaislukua x ja y ja päättelee onko ensimmäinen luku jaollinen toisella luvulla. Ohjelma tulostaa viestin "x is divisible by y.", jos jako menee tasan. Tuloste on "x is not divisible by y.", jos jako ei mene tasan. Jos esimerkiksi x = 2 ja y = 3, ohjelma tulostaa "2 is divisible by 3." Nollaan liittyy erikoistapauksia. Jakolaskun tulos on määrittelemätön, kun y =. Ohjelma ilmaisee tämän tulostamalla virheilmoituksen "Error!". Jako ei mene tasan, kun x =. Ohjelma tulostaa siksi " is not divisible by y." nollaa jaettaessa. Tuloste on "Error!", jos x = ja y =. Modulo-operaattorista (%) on hyötyä ongelman ratkaisussa. Esimerkki ohjelman toiminnasta, kun syötteet ovat 2 ja 3: 2 3 2 is divisible by 3. Esimerkki ohjelman toiminnasta, kun syötteet ovat 7 ja : 7 7 is not divisible by. Esimerkki ohjelman toiminnasta, kun syötteet ovat ja : Error! Lausekielinen ohjelmointi I Syksy 27 Jorma Laurikkala 3 / 5
Esimerkki ohjelman toiminnasta, kun syötteet ovat ja : is not divisible by. 7. Toteuta liitteessä vuokaaviona esitetty algoritmi Java-kielellä. 8. Kirjoita Javalla ohjelma, joka tulostaa ASCII-kalan ">}}}`>" ja kalan perään kuplia, joiden lukumäärä luetaan käyttäjältä In-luokan avulla. Kuplat tulostetaan valitsemalla kunkin kuplan kohdalla satunnaisesti tulostusmerkiksi joko pieni o-kirjain, suuri o-kirjain tai nolla. Jos kuplia halutaan esimerkiksi kappaletta, niin näytölle voisi tulostua merkkijono "oooooooo>}}}`>". Ohjelma tulostaa pelkän kalan ">}}}`>", kun käyttäjä antaa kuplien määräksi nollan tai sitä pienemmän arvon. Kuplien lukumäärän ylärajaa ei ole rajoitettu. Voit arpoa kokonaisluvun väliltä [, YLARAJA] esimerkiksi näin: // Math.random-operaatio tuottaa satunnaisen liukuluvun väliltä [, [. // Satunnainen kokonaisluku saadaan aikaiseksi kertomalla arvottu // liukuluku sopivasti ja poistamalla desimaalit tyyppimuunnoksella. int arvottu = (int)((ylaraja + ) * Math.random()); Lausekielinen ohjelmointi I Syksy 27 Jorma Laurikkala / 5
Liite : Vuokaaviona esitetty algoritmi kertotaulun tulostamiseen. Oletetaan syötteeksi kokonaisluku. Alku tulosta("moi! Tulostan kertotaulun.") tulosta("anna luku:") luku lue() kerroin tulo kerroin luku tulosta(kerroin + " x " + luku + " = " + tulo) kerroin kerroin + kerroin kyllä ei Loppu Lausekielinen ohjelmointi I Syksy 27 Jorma Laurikkala 5 / 5