Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Ohjelmoinnin perusteet / Copyright © 2007 Arto Wikla.

581325-0 Ohjelmoinnin perusteet, kurssikoe 17.10.2007/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Jokainen vastaus (1, 2, 3) kirjoitetaan omalle arkilleen!


  1. Biodiesel-asemalla on kaksi dieselöljysäiliötä. Vain pääsäiliöön voidaan suoraan lisätä öljyä ja vain pääsäiliöstä asiakas voi tankata öljyä. Toinen säiliö on varastosäiliö, jota käytetään automaattisesti hyväksi, kun ensimmäisen säiliön kapasiteetti ei riitä. Laadi luokka BiodieselAsema biodiesel-aseman toteutukseksi.

    Havainnollista BiodieselAsema-luokan käyttöä pienellä pääohjelmalla. Tämän ohjelman ei tarvitse eikä ole syytä lukea mitään.

                                                                          (16 pistettä)
    
    

  2. Mitä ohjelmoinnissa tarkoitetaan kapseloinnilla (encapsulation)? Mitä hyötyä siitä on eli miksi halutaan kapseloida? Miten kapselointi toteutetaan Java-kielellä. Anna konkreettisia ohjelmaesimerkkejä. Vastauksen enimmäispituus on yksi konseptiarkki, so. neljä sivua.
                                                                         (18 pistettä)
    
    

  3. Toteuta seuraava arvauspeli vuorovaikutteisena ohjelmana: Ennen pelin alkua pelinjohtaja syöttää ohjelmalle sata kokonaislukua satunnaisessa järjestyksessä. Luvut saavat olla mitä tahansa kokonaislukuja. Sama luku saa esiintyä useammankin kerran.

    Tämän jälkeen pelaaja alkaa käyttää ohjelmaa. Pelaaja yrittää arvata pelinjohtajan koneeseen syöttämiä lukuja. Peli päättyy, kun pelaaja onnistuu arvaamaan jonkin pelinjohtajan syöttämän luvun. Pelin tulos on tarvittujen arvausten määrä, jonka ohjelma lopuksi tulostaa.

    Saat olettaa, että kaikki syötetyt luvut ovat kelvollisia kokonaislukuja.

    Arvattavien lukujen hakeminen on tehokkuussyistä ohjelmoitava binäärihakua käyttäen.

                                                                         (16 pistettä)