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!
- Ö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!)
- public Oljyvarasto(double käyttötankki, double varmuustankki)
luo öljyvaraston, jonka tankkien vetoisuus annetaan parametreina.
Tankit ovat aluksi tyhjiä. Käyttölupaa varmuustankille ei ole.
- public double käyttötankissaOn() palauttaa käyttötankin öljymäärän.
- public double varmuustankissaOn() palauttaa varmuustankin öljymäärän.
- public boolean onKäyttölupa() palauttaa true, jos
varmuustankista saa ottaa öljyä.
Metodi palauttaa arvon false, jos ei saa.
- public void asetaKäyttölupa(boolean lupaKäyttää) antaa oikeuden
ottaa öljyä myös varmuustankista, kun parametrina annetaan on true.
Metodi kieltää
öljyn ottamisen varmuustankista, jos parametri on false.
- public double lisääÖljyä(double määrä)
lisää öljyä varastoon. Ensin täytetään varmuustankkia, jos
varmuustankissa on tilaa. Jos varmuustankki on täynnä tai se täyttyy,
ryhdytään täyttämään käyttötankkia. Metodi palauttaa arvonaan
öljymäärän, joka ei mahtunut varastoon.
(Palautetaan siis nolla, jos kaikki lisättävä öljy mahtui.)
- public double otaÖljyä(double määrä)
ottaa öljyä varastosta. Öljyä otetaan ensisijaisesti käyttötankista. Jos
käyttötankin öljymäärä ei riittänyt ja varmuustankille on käyttölupa,
loput pyydetystä määrästä yritetään ottaa varmuustankista. Metodi
palauttaa arvonaan saadun öljyn määrän.
- public String toString() palauttaa arvonaan selkeän
merkkijonoesityksen öljyvaraston tilasta
(16 pistettä)
-
"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ä)
-
- Selitä lyhyesti, täsmällisesti ja esimerkkejä antaen
taulukkomuuttuja,
taulukko-olio ja
indeksointi.
(9 pistettä)
-
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ä)