Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 581258-1 Johdatus ohjelmointiin
Copyright © 1999 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

581258-1 Johdatus ohjelmointiin: 2. välikoe 3.5.1999/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, syntymäaikasi ja allekirjoituksesi.

Ohjelmointitehtävien ratkaisuissa saa käyttää Lue-luokan tarjoamia välineitä.



  1. Selitä lyhyesti ja täsmällisesti mitä tarkoittavat luokan lataaminen ja olion luonti.
                                                                  (6 pistettä)
    
    
    

  2. Laadi metodi int muutaIntiksi(String jono), jonka arvo on parametrina annettu merkkijono muutettuna kokonaisluvuksi. On virhe, jos merkkijonossa on mitä tahansa muita merkkejä kuin numeroita. Tuolloin metodi palauttaa arvon -1.

    Javassa on valmiitakin välineitä merkkijonon muuntamiseen lukuarvoksi, mutta tämä tehtävä on ratkaistava "omin käsin": siirrä merkkijono ensin char[]-taulukkoon, tutki siellä jonon kelvollisuus ja laske kelvollisen jonon numeroarvo.

    Vihjeitä:

                                                                  (6 pistettä)
    
    
    

  3. Eräs Johdatus ohjelmointiin -kurssia käyvä ystäväsi ei ole ihan täydellisesti ymmärtänyt, mitä tarkoitetaan metodin kuormittamisella (overloading), korvaamisella (overriding) ja perimisellä (inheritance), eikä edes sitä, miksi niiden ymmärtäminen voisi olla tärkeää. Auta ystävääsi ja laadi hänelle asiasta kirjallinen selitys. Muista että esimerkit auttavat oppimisessa. Vastauksen arvioinnissa otetaan huomioon selostuksen ajateltu lukija. Älä siis kirjoita tarkastajalle, joka jo osaa asian, kirjoita tuolle kuvitteelliselle ystävälle!
                                                                  (6 pistettä)
    
    
    

  4. Käytössäsi on tekstitiedostojen lukemiseen luokka Syottotiedosto. Luokalla on konstruktori Syottotiedosto(String nimi). Parametrina annetaan tiedoston nimi.

    Rivejä luetaan metodilla

      public String lueRivi()
    
    Tiedoston loppuminen ilmaistaan null-arvolla.

    Poikkeuksiin on varauduttu tässä luokassa: Virheen sattuessa saadaan ilmoitus ja ohjelman suoritus keskeytyy

    Laadi ohjelma OvatkoSamat kahden tiedoston vertailemiseen. Tiedostojen nimet annetaan komentoriviparametreina. Ohjelma vertailee tiedostoja riveittäin ja tulostaa kuvaruudulle kaikki rivit, jotka poikkeavat toisistaan. Tulostusasu on seuraava:

    1>kissa kävelee<
    2>katti kävelee<
    1>1235123<
    2>1234123<
    1>abc<
    2>abc  <
    2>  olipa<
    2>toinen  <
    2>pidempi!<
    
    Toisistaan eroavat rivit siis tulostetaan joko merkkien "1>" ja "<" tai "2>" ja "<" väliin riippuen siitä, onko rivi kotoisin ensimmäisestä vai toisesta tiedostosta. Jos jompi kumpi tiedosto loppuu ennen toista, pidemmän loput rivit tulostetaan. Ohjelma ei tulosta mitään muuta.

    Esimerkissä tiedostot poikkesivat kolmen rivin kohdalla ja toinen tiedosto näkyy olleen kolme riviä pidempi kuin ensimmäinen.

    Ohjelman ei siis tarvitse itse käsitellä poikkeuksia, tiedostonkäsittelyluokka pitää niistä huolen.

                                                                  (7 pistettä)
    










Aurinkoista kesää!