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 vain ratkaisun lähdekoodi (java-päätteinen tiedosto) kurssin kotisivuilta Koodit-kohdasta löytyvää In-luokkaa ei tarvitse eikä tule palauttaa. Ensi viikolla pidettävissä mikroharjoituksissa saa apua ongelmakohtiin. Keskiviikon klo 2 4 - ryhmässä avustetaan hieman enemmän kuin muissa ryhmissä. Palauta vastauksesi WETO-järjestelmään (https://wetodev.sis.uta.fi/) viimeistään ensi viikon lauantaina 29.9. klo 2.00 (keskipäivä). WETO tarkistaa lähdekoodia automaattisesti. Lisätietoja tarkistuksesta: https://coursepages.uta.fi/tiep/ syksy-208/harjoitukset/ratkaisujen-tarkistus/automaattinen/. Ota yhteyttä harjoitusryhmäsi vetäjään, jos et keksi järjellisessä ajassa miksi WETO hylkää palautuksesi. 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-208/ohjelmointivalineita/java-jdk/. Ota yhteyttä kurssin vastuuopettajaan, jos Java ei suostu asentumaan koneellesi.. Kirjoita Javalla Arithmetic-niminen ohjelma, jossa testaat aritmeettiset operaatiot +, -, *, / ja %. Esittele int-tyyppiset 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. Huomaa, että tarvitset tyyppimuunnoksen, jotta Java ei hävitä desimaaleja jakolausekkeessa ekaluku / tokaluku. Tulosta lopuksi tulosmuuttujien arvot näytölle. Tulosta osamäärä kahden desimaalin tarkkuudella System.out.printf-operaatiota käyttäen esimerkiksi näin: System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara); Esimerkki ohjelman toiminnasta, kun syötteet ovat 7 ja 4: Hello! I do some basic arithmetic. Please, enter the first integer: 7 Please, enter the second integer: 4 7 + 4 = 7-4 = 3 7 * 4 = 28 7 / 4 =.75 7 % 4 = 3 Esimerkki ohjelman toiminnasta, kun syötteet ovat 2 ja : Hello! I do some basic arithmetic. Please, enter the first integer: 2 Please, enter the second integer: 2 + = 3 2 - = 2 * = 2 2 / = 2.00 2 % = 0 Lausekielinen ohjelmointi I Syksy 208 Jorma Laurikkala / 6
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 is half full." tai "The glass is 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 is 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 is half empty. 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. Esimerkki ohjelman toiminnasta, kun syöte on 7: Hello! I classify solutions using the ph scale. Enter a ph value: 7 Solution is neutral. Esimerkki ohjelman toiminnasta, kun syöte on 7.: Hello! I classify solutions using the ph scale. Enter a ph value: 7. Solution is alkaline. Lausekielinen ohjelmointi I Syksy 208 Jorma Laurikkala 2 / 6
4. 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 : Which do you like most: ) winter, 2) spring, 3) summer, 4) autumn? Your favourite season of the year is winter. Esimerkki ohjelman toiminnasta, kun syöte on 2: Which do you like most: ) winter, 2) spring, 3) summer, 4) autumn? 2 Your favourite season of the year is spring. Esimerkki ohjelman toiminnasta, kun syöte on 3: Which do you like most: ) winter, 2) spring, 3) summer, 4) autumn? 3 Your favourite season of the year is summer. Esimerkki ohjelman toiminnasta, kun syöte on 4: Which do you like most: ) winter, 2) spring, 3) summer, 4) autumn? 4 Your favourite season of the year is autumn. Esimerkki ohjelman toiminnasta, kun syöte on virheellinen eli välille 4 kuulumaton kokonaisluku: Which do you like most: ) winter, 2) spring, 3) summer, 4) autumn? 0 Your favourite season of the year is unknown. 5. Ratkaise 4. tehtävä switch-case-lauseen avulla. Anna ohjelman nimeksi Seasons2. Lausekielinen ohjelmointi I Syksy 208 Jorma Laurikkala 3 / 6
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 = 0. Ohjelma ilmaisee tämän tulostamalla virheilmoituksen "Error!". Jako menee tasan, kun x = 0 ja y 0. Tuloste on "Error!", jos x = 0 ja y = 0. 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 4: 7 4 7 is not divisible by 4. Esimerkki ohjelman toiminnasta, kun syötteet ovat ja 0: 0 Error! Esimerkki ohjelman toiminnasta, kun syötteet ovat 0 ja : 0 0 is divisible by. Lausekielinen ohjelmointi I Syksy 208 Jorma Laurikkala 4 / 6
7. Toteuta liitteessä vuokaaviona esitetty algoritmi Java-kielellä. Anna ohjelman nimeksi MultiplicationTable. Esimerkki ohjelman toiminnasta, kun syöte on 5: Hello! I print a multiplication table. Please, enter an integer: 5 x 5 = 5 2 x 5 = 0 3 x 5 = 5 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45 0 x 5 = 50 8. Kirjoita Javalla ASCIIFish-niminen ohjelma, joka tulostaa ASCII-merkeistä koostuvan 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 0 kappaletta, niin näytölle voisi tulostua merkkijono "0ooOo0ooOo>}}}`>". 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ä [0, YLARAJA] esimerkiksi näin: // Math.random-operaatio tuottaa satunnaisen liukuluvun väliltä [0, [. // Satunnainen kokonaisluku saadaan aikaiseksi kertomalla arvottu // liukuluku sopivasti ja poistamalla desimaalit tyyppimuunnoksella. int arvottu = (int)((ylaraja + ) * Math.random()); Lausekielinen ohjelmointi I Syksy 208 Jorma Laurikkala 5 / 6
Liite : Vuokaaviona esitetty algoritmi kertotaulun tulostamiseen. Oletetaan syötteeksi kokonaisluku. Alku tulosta("hello! I print a multiplication table.") tulosta("please, enter an integer:") luku lue() kerroin tulo kerroin luku tulosta(kerroin + " x " + luku + " = " + tulo) kerroin kerroin + kerroin 0 kyllä ei Loppu Lausekielinen ohjelmointi I Syksy 208 Jorma Laurikkala 6 / 6