Helsingin yliopisto
/
Tietojenkäsittelytieteen
laitos
/
Ohjelmoinnin perusteet
/
Copyright © 2001
Arto Wikla.
581325-0 Ohjelmoinnin perusteet, kurssikoe 12.11.2001/AW
Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen
päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi.
Jokainen vastaus kirjoitetaan omalle arkilleen!
Kaikkien tehtävien maksimipistemäärä on kymmenen.
- Selitä siis lyhyesti ja täsmällisesti seuraavat käsitteet:
lauseke, lause, konstruktori, aksessori, indeksi.
- Laivalla on suunta 0...359 astetta ja nopeus -5.0...30.0 solmua.
Negatiivinen nopeus tarkoittaa peruuttamista.
Suunnittele laivan toteutukseksi luokka Laiva jota käytetään
välinein:
- public Laiva() luo laivaolion, jonka suunta on 0 ja nopeus 0.0
- public void käännaRuoria(int astetta) kääntää laivaa parametrin
ilmoittalla astemäärällä, positiivinen parametri kääntää
oikealle, negatiivinen vasemmalle; laivan peruuttaessa suunnat
ovat päinvastoin, laivan ollessa paikoillaan ruorin kääntely
ei muuta laivan suuntaa
(huomaa että kun suunta on
esimerkiksi 359 ja käännetään oikealle, seuraavat asteluvut
ovat 0, 1, 2, ....)
- public void asetaNopeus(double nopeus) asettaa uudeksi nopeudeksi
parametrina annetun luvun
- public String toString() esittää laivan tilan merkkijonona
Luokan Laiva tietorakenteet piilotetaan luokan käyttäjältä.
- Laadi edellisen tehtävän luokkaa käyttäen sovellus Laivuri,
jolla voi "ohjata laivaa". Laivaa ohjataan näppäimistöltä
seuraavasti:
- luku 1: käännetään vasemmalle, ohjelma kysyy astemäärän
- luku 2: käännetään oikealle, ohjelma kysyy astemäärän
- luku 3: säädetään nopeutta, ohjelma kysyy uuden nopeuden
- muut luvut lopettavat purjehduksen
Ohjelma tulostaa joka operaation jälkeen laivan tilan.
- "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!
- Toteuta seuraava palvelu vuorovaikutteisena ohjelmana:
Aamuisin ohjelmalle syötetään merkkijonoja (String-arvoja)
missä järjestyksessä milloinkin.
Merkkijonojen loppuminen ilmaistaan syöttämällä
loppumerkiksi "loppu".
Merkkijonoja ei ole koskaan tuhatta enempää.
Päivän mittaan usein kysellään oliko jokin
merkkijono (String-arvo) aamulla syötettyjen
merkkijonojen joukossa. Illalla ohjelma suljetaan
syöttämällä loppumerkiksi merkkijono "yötä".
Tehokkuussyistä merkkijonojen hakeminen on ohjelmoitava
binäärihaulla.