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 Kesä 2018 Avoin 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 Kesä 2018 Avoin 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 "", 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 Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 3 / 5
4. Tee Javalla Palindrome-ohjelma, joka tutkii onko sille annettu merkkijono palindromi. Palindromit ovat merkkijonoja, jotka ovat samoja sekä eteen- että taaksepäin luettuina. Esimerkiksi merkkijonot eve, tavuttuvat ja saippuakauppias ovat palindromeja. Syötettä luetaan, kunnes käyttäjältä saadaan laillinen syöte eli ainakin kahden merkin mittainen merkkijono. Ohjelma tulostaa päätöksensä näytölle alla annettujen esimerkkien mukaisesti. Taulukoiden käyttö on kiellettyä. API-luokista vain String ja System-luokat ovat sallittuja. String-luokasta saa käyttää charat, length- ja equals-operaatioita ja System-luokan sallitut operaatiot ovat print ja println. eve "eve" is a palindrome. x y xx "xx" is a palindrome. redrum "redrum" is not a palindrome. radar "radar" is a palindrome. Lausekielinen ohjelmointi I Kesä 2018 Avoin 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 Kesä 2018 Avoin yliopisto 5 / 5