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 (https://wetodev.sis.uta.fi/weto5/). 1. Kaupungin X joukkoliikenteen kertalipun maksaa ilman alennusta aamulla ja päivällä (klo 6 17) 2,7, illalla (klo 18 22) 3,5 ja yöllä (klo 23 ja 0 5) 4. Lippu ei maksa mitään, jos matkustaja on 0 2 vuotta vanha. Hinta on euron alempi (1,7, 2,5 ja 3 ), jos matkustajan ikä on 3 15 vuotta tai vähintään 65 vuotta. Kirjoita Javalla Fares-ohjelma, joka kysyy ajan ja matkustajan iän ja tulostaa näytölle lipun hinnan. Tunti on kokonaisluku, joka symboloi kyseisellä luvulla alkavaa tuntia. Esimerkiksi klo 5 tarkoittaa ajanjakoa 5.00 5.59. Matkustajan ikä on kokonaisluku. Syötteitä ei tarvitse tarkistaa voit olettaa, että aika ja ikä ovat aina järkeviä. Tulosta lipun hinta yhden desimaalin tarkkuudella printf-operaatiolla: // Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.%n", hinta); Esimerkki ohjelman toiminnasta, kun syötteet ovat 21 ja 46: 21 46 3.5 euros. Esimerkki ohjelman toiminnasta, kun syötteet ovat 10 ja 6: 10 6 1.7 euros. Esimerkki ohjelman toiminnasta, kun syötteet ovat 19 ja 1: 19 1 0.0 euros. Lausekielinen ohjelmointi I Syksy 2018 Tampereen yliopisto 1 / 5
2. Ilmatieteen laitos luokittelee tuulen voimakkuuden sen nopeuden 10 minuutin keskiarvona seuraavasti alla olevassa taulukossa annetulla tavalla. Tee Javalla Wind-ohjelma, joka lukee käyttäjältä tuulen nopeuksia kokonaislukuina ja tulostaa vastaavia voimakkuuden englanninkielisiä kuvauksia kunnes käyttäjä antaa negatiivisen arvon (< 0). Tuulen nopeus (m/s) Tuulen voimakkuus Ohjelman tulostama merkkijono 0 tyyntä "Calm." 1 3 heikkoa tuulta "Light breeze." 4 7 kohtalaista tuulta "Strong breeze." 8 13 navakkaa tuulta "Gale." 14 20 kovaa tuulta "Strong gale." 21 32 myrskyä "Storm." > 32 hirmumyrskyä "Violent storm." Hello! I am a wind classifier. 10 Gale. 32 Storm. 0 Calm. -1 Hello! I am a wind classifier. -1 Lausekielinen ohjelmointi I Syksy 2018 Tampereen yliopisto 2 / 5
3. Tee Javalla alla olevien esimerkkien mukaisen kuvion tulostava Figure-ohjelma. Piirtomerkki (char) ja riville piirrettävien merkkien lukumäärä (int) luetaan käyttäjältä. Merkkejä on oltava pariton määrä ja vähintään kolme. Ohjelma tulostaa merkkijonon "Error!", jos merkkien lukumäärä havaitaan virheelliseksi. mukaisesti. Rivien alkuun tulostetaan poikkeuksellisesti välilyöntejä. Alla olevissa esimerkeissä tulostetut välilyönnit on korostettu keltaisella. Rivien loppuun ei tulosteta välilyöntejä: jokainen rivi loppuu viimeiseen näkyvään merkkiin. Kaikki tulostettavat rivit viimeinen rivi mukaan lukien päätetään rivinvaihtoon. * 3 *** _*** *** o 5 ooooo _ooooo ooooo ooooo ooooo x 4 Error! Lausekielinen ohjelmointi I Syksy 2018 Tampereen yliopisto 3 / 5
4. Tee Javalla SecondWord-ohjelma, joka palauttaa lauseen toisen sanan. Voit olettaa, että lauseen sanat on erotettu toisistaan yhdellä välilyönnillä ja että lauseen alussa tai lopussa ei ole välilyöntejä. Lause luetaan käyttäjältä. Ohjelma tulostaa lauseen toisen sanan lainausmerkkien välissä tai virheilmoituksen "Error!", jos lauseessa on vain yksi sana. Voit tulostaa lainausmerkit sanan ympärille esimerkiksi näin: // Alla toinen on String-tyyppinen muuttuja. System.out.println("The second word is \"" + toinen + "\"."); Taulukoiden käyttö on kiellettyä. API-luokista vain String, System ja Scanner-luokat ovat sallittuja. String-luokasta saa käyttää charat, length- ja equals-operaatioita ja Systemluokan sallitut operaatiot ovat print ja println. Scanner-luokasta saa käyttää vain nextline-operaatiota. Scanner-olio on rakennettava oletusrakentajalla Scanner(). this is a test The second word is "is". hold your horses The second word is "your". word up The second word is "up". word Error! Lausekielinen ohjelmointi I Syksy 2018 Tampereen yliopisto 4 / 5
Liite: Esimerkkiohjelma public class OhjelmaEsimerkki { public static void main(string[] args) { // In-luokka helpottaa syötteiden lukua käyttäjältä. System.out.println("Anna kokonaisluku:"); int kokoluku = In.readInt(); System.out.println("Anna liukuluku:"); double liukuluku = In.readDouble(); System.out.println("Anna merkki:"); char merkki = In.readChar(); System.out.println("Anna merkkijono:"); String merkkijono = In.readString(); // Merkkijonoon voidaan yhdistää arvoja. System.out.print("Luku " + kokoluku + " on "); if (kokoluku >= 0) { System.out.println("positiivinen."); else { System.out.println("negatiivinen."); Lausekielinen ohjelmointi I Syksy 2018 Tampereen yliopisto 5 / 5