Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 581258-1 Johdatus ohjelmointiin
Copyright © 1998 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 17.12.1998/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:
       
       alkeistyyppi (primitive type)
       viittaustyyppi (reference type)
       kuormittaminen (overloading)
       korvaaminen (overriding)
       käännösyksikkö (compilation unit)
                                                                  (5 pistettä)
    
    
    

  2. Eräässä pelissä jokaisella pelaajalla on nimi, roolihahmon sanallinen kuvailu, hahmon myönteisyys kokonaislukuna -10...10 ja hahmon voimakkuus desimaalilukuna 0.0...1.0. Pelaajan painoarvo "hyvän puolustamisessa" saadaan kaavalla myönteisyys * voimakkuus

    a) Mallinna pelaaja luokkana Pelaaja.

    b) Laadi public static void järjestä -kirjastometodi, joka saa parametrina talukollisen kilpailijoita ja järjestää ne yllämainitun painoarvon mukaan laskevaan järjestykseen.

    c) Laadi parametriton public static Pelaaja luePelaaja -kirjastometodi, joka pyytää käyttäjältä pelaajan tiedot ja palauttaa Pelaaja-olion arvonaan.

    d) Ohjelmoi sovellus, joka näillä välineillä lukee pelaajien tiedot ja tulostaa pelaajien tiedot b-kohdan järjestyksessä. Kirjastoluokka toteutetaan erikseen, so. b- ja c- kohdan metodeita ei sijoiteta pääohjelmaluokkaan. Päätä itse, miten ohjelma tietää pelaajien lukumäärän.

                                                                    (8 pistettä)
    
    

  3. Eräs Johdatus ohjelmointiin -kurssia käyvä ystäväsi ei ole ihan täydellisesti ymmärtänyt, mitä tarkoitetaan luokan lataamisella ja olion luomisella 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!
                                                                  (5 pistettä)
    
    

  4. Käytössäsi on tekstitiedostojen lukemisen ja kirjoittamisen luokat Syottotiedosto ja Tulostiedosto. Luokilla on konstruktorit Syottotiedosto(String nimi) ja Tulostiedosto(String nimi). Parametrina annetaan tiedoston nimi.

    Rivejä luetaan ja kirjoitetaan metodeilla

      public String lueRivi()
      public void kirjoitaRivi(String rivi)
    
    Syöttötiedoston loppuminen ilmaistaan null-arvolla.

    Poikkeuksiin on varauduttu näissä luokissa: Virheen sattuessa ne antavat ilmoituksen ja keskeyttävät ohjelman suorituksen.

    Laadi ohjelma Muokkaa, joka pyytää käyttäjältä syöttötiedoston nimen, tulostiedoston nimen, korvattavan merkin (char) ja korvaavan merkkijonon (String). Ohjelma muokkaa syöttötiedostosta tulostiedoston siten, että jokainen korvattava merkki korvataan korvaavalla merkkijonolla. Lopuksi ohjelma kertoo käyttäjälle, monestiko korvattiin.

    Ohjelman ei tarvitse itse käsitellä poikkeuksia, tiedostonkäsittelyluokat pitävät niistä huolen.

                                                                  (8 pistettä)
    










Hyvää Joulua!