Helsingin yliopisto
/
Tietojenkäsittelytieteen
laitos
/
581258-1 Johdatus ohjelmointiin
Copyright © 1997
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 18.12.1997/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ä.
-
Vertaile tiiviin täsmällisesti:
alkeistyyppi (primitive type) - viittaustyyppi (reference type)
käännösyksikkö (compilation unit) - pakkaus (package)
olion luonti - luokan lataaminen
(6 pistettä)
-
- a) Ohjelmoi metodi jarjesta, joka saa parametrina
kokonaislukutaulukon ja järjestää sen nousevaan
suuruusjärjestykseen.
- b) Toteuta metodi binHae, joka hakee parametrina annetusta
taulukosta parametrina annettua kokonaislukua. Jos haettava
löytyy, metodi palauttaa löydetyn luvun indeksin, muuten
metodi palauttaa arvon -1.
- c) Laadi a)- ja b)-kohtien metodeita käyttäen ohjelma, joka
ensin pyytää käyttäjältä joukon kokonaislukuja, järjestää
luvut ja sitten tarjoaa käyttäjälle mahdollisuuden hakea lukuja
taulukosta. Suunnittele, miten ohjelman käyttö lopetetaan. Ohjelman
pitää kertoa käyttäjälle selkeät toimintaohjeet.
(5 pistettä)
- Luokka Esim on määritelty:
public class Esim {
public int[] iT;
static private double d;
public Esim() {
iT = new int[10]; d = 3.14;
}
void metA() {
System.out.println(iT.length);
}
public int metB(int par) {
return iT.length+par;
}
static String metC(char c) {
return ""+d+c;
}
}
Tee luokalle Esim jokin aliluokka Ali, joka peittää (hides) kentän d,
korvaa (overrides) metodin metC, perii (inherits) metodin metB
ja kuormittaa (overloads) metodin metA. Miten peitettyjä, korvattuja,
perittyjä ja kuormitettuja pääsee mahdollisimman helposti käyttämään
luokassa Ali? Vai pääseekö niitä käyttämään?
(5 pistettä)
- Selitä täsmällisen tarkasti Javan ns. näkyvyyssäännöt (scope rules).
Millaisia näkyvyysalueita kielessä on ja miten nimien näkyvyyttä
säädellään? Jos metodissa käytetään nimeä "Nimi", niin mistä ja missä
järjestyksessä tuolle nimelle etsitään merkitystä?
(5 pistettä)
- Käytössäsi on luokka SyoTdsto syöttötiedoston lukemiseen. Luokalla
on konstruktori:
- SyoTdsto(String nimi), joka luo syöttötiedosto-olion,
jolla voi lukea parametrina annetun nimistä tekstitiedostoa. Jos
tiedostoa ei löydy, lukemismetodi palauttaa alusta alkaen
null-arvoja. Tyhjä ja puuttuva tiedosto näyttävät siis luokan
käyttäjälle samanlaisilta! Luokan käyttäjän ei tarvitse
varautua poikkeuksiin.
Luokassa on metodi rivin lukemiseen:
- String lue(), joka palauttaa arvonaan
syöttötiedoston seuraavan rivin. Kun tiedosto on loppu (tai sitä
ei ollut lainkaan!), metodi palauttaa arvon null.
Laadi luokkaa SyoTdsto käyttäen ohjelma, joka pyytää käyttäjältä
syöttötiedoston nimen sekä korvattavan merkin (vanhaMerkki) ja korvaavan
merkin (uusiMerkki). Ohjelma tulostaa kuvaruudulle syöttötiedoston
sellaisena, jossa jokainen vanhaMerkki on korvattu merkillä
uusiMerkki.
(5 pistettä)