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

581325-0 Ohjelmoinnin perusteet, kurssikoe 12.11.2004/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. Öljyvarasto muodostuu kahdesta tankista, käyttötankista ja varmuustankista. Öljyä lisätään aina ensisijaisesti varmuustankkiin. Käyttötankkiin öljyä lisätään vain, jos varmuustankki on täynnä. Öljyä otetaan ensisijaisesti käyttötankista. Öljyä otetaan varmuustankista vain jos varmuustankin käyttöön on erityinen lupa.

    Laadi luokka Oljyvarasto öljyvaraston toteutukseksi. (Konstruktori ja aksessorit tulkitsevat negatiiviset parametrien arvot nollaksi. Öljyvaraston tankkeja ei toteuteta PikkuVarasto-olioina!)

                                                               (16 pistettä)
    
  2. "Mitä ihmettä nuo metodit oikein ovat?", parahtaa ystäväsi kuunnellessaan tarinoitasi Ohjelmoinnin perusteet -kurssilta. Ystäväsi on ohjelmoinut sen verran, että hän tuntee yksinkertaiset muuttujat, lausekkeet ja lauseet. "Mitä peijakkaan 'parametreja', kuka 'kutsuu' ja ketä, miksi?, hän jatkaa toivottomana. Auta ystävääsi ymmärtämään, mistä oikein on kysymys. Laadi siis asiasta kirjallinen selitys (enimmäispituus 1 konseptiarkki). Muista että esimerkit auttavat oppimisessa. Vastauksen arvioinnissa otetaan huomioon selostuksen ajateltu lukija. Älä siis kirjoita tarkastajalle, joka jo tuntee asian, kirjoita tuolle ystävälle!
                                                               (16 pistettä)
    
    1. Selitä lyhyesti, täsmällisesti ja esimerkkejä antaen taulukkomuuttuja, taulukko-olio ja indeksointi.
                                                                 (9 pistettä)
      
    2. Toteuta seuraava arvauspeli vuorovaikutteisena ohjelmana: Ennen pelin alkua tietokone arpoo 10000 kokonaislukua taulukkoon. Lukujen arvot ovat välillä 0-9999. Sama luku saa esiintyä useampaankin kertaan.
      Vihje: Yhden tuollaisen luvun saa arvottua lausekkeella (int)(Math.random()*10000)

      Tämän jälkeen on pelaajan vuoro: Pelaaja yrittää arvata taulukossa olevia lukuja. Peli päättyy, kun pelaaja on onnistunut arvaamaan kolme lukua. Kerran oikein arvattua lukua ei tietenkään saa käyttää uudelleen. Pelin tulos - jonka ohjelma lopuksi ilmoittaa - on tarvittujen arvausten määrä, vähintään siis kolme. Arvattavien lukujen hakeminen on tehokkuussyistä ohjelmoitava binäärihakua käyttäen.

                                                                 (9 pistettä)