Ohjelmointi 1 / 2010

Demo 8 / 8.11

Tehtävät

V1.

Tee Ville-tehtävät: 5.7, 5.9, 5.10, 5.12, 5.13.

T1.

Katso Wikistä OhjOpetuksenTyopaja kohdasta ComTest kuinka ComTestiä käytetään. Kirjoita testit ja aja ne tehtäviin 3-5.

1.

M: 15. Toistorakenteet, 14. Taulukot: Tee reaalilukuja kyselevä aliohjelma kysyLuvut(kysymys, otsikko ,n,alku), joka toimii esimerkiksi seuraavasti:
double[] luvut = kysyLuvut("Anna kolme lukua","luku",3,1);

kyselisi käyttäjältä tyyliin:

Anna kolme lukua
1. luku>3.2[ret]
2. luku>2.1[ret]
3. luku>5.9[ret]
Viimeinen parametri säätää sen, mikä on ensimmäisenä kysyttävän luvun järjestysnumero.

2.

M: 14. Taulukot: Tee edellisen tehtävän aliohjelmaa käyttäen ohjelma, joka kysyy käyttäjältä kuuden kuukauden keskilämmöt (kuut 1-6) ja piirtää niistä kuvan niin, että alle nollan olevat kuut piirretään vihreällä ympyrällä ja yli 10 asteen kuut piirretään punaisella ympyrällä. Kuusi kuukautta siksi, että kukaan ei jaksa testata syöttämällä 12 kuukauden tulokset. Ohjelma pitää kuitenkin olla helposti muutettavissa 12 kuukauden versioksi.

3-4.

M: 13. Ehtolauseet, 13.7 switch-rakenne, 15. Toistorakenteet, 14. Taulukot: Kirjoita 3 erilaista funktiota vuodenaika(int kuukausi), joka palauttaa merkkijonona sen vuodenajan, joka parametrina vietynä kuukautena on. Yksi käyttää käyttää if-lausetta, toinen switch-lausetta ja kolmas taulukkoa.

5.

M: 13. Ehtolauseet: Tee totuusarvoinen funktio karkausvuosi(vuosi), joka palauttaa tosi jos vuosi on karkausvuosi. Karkausvuosia ovat neljällä jaolliset vuodet paitsi neljällä jaottomat vuosisadat (esim. 1900 ei ollut karkausvuosi). Mieti aluksi kunnon testiohjelma (esim. ComTestillä).

6.

M: 21. Esimerkki: Hirsipuupeli: Muuta Hirsipuu.java:n koodia niin, että saman kirjaimen uudelleen antaminen ei aiheuta mitään toimenpiteitä. Muuta vielä ohjelmaa sillä tavalla, että se suunnitelman mukaisesti kysyy, että halutaanko uusi peli vai ei. Saat halutessasi tehdä muutokset myös graafiseen versioon: HirsiFrame.java tai HirsiFrame2.java (tarvitset tällöin myös HirsiPanel.java).

7.

Tee ohjelma, joka kysyy käyttäjältä oikean käden nuotit ja sen jälkeen laittaa ne soitettavaksi BufferedMidiPlayer2 -soittimelle. Ennen soittamista nuoteista otetaan kopio, lisätään nuotit toiseen trackiin ja muutetaan kopio soitettavaksi otaavia alempaa selvästi eri soittimella. Muunnos tehdään samalla tavalla kuin Demo 7:n vastaavassa tehtävässä. Ks. http://users.jyu.fi/~vesal/kurssit/ohj1/music/ dokumentaatio ja sieltä erityisesti BufferedMidiPlayeringetTrack ja getCopyOfNotes sekä NoteTrack-luokan add -metodit.

B1-2.

M: 15. Toistorakenteet, 13. Ehtolauseet: Katso kuvaa jakajat.png. Siinä on kuvattu lukujen jaollisuutta niin, että kunkin x-pisteen (kokonaisluku) kohdalle on piirretty ympyrä jos luku on jaollinen vastaavalla y-arvolla (kokonaisluku). Mikäli luku on alkuluku (jaollinen vain itsellään ja 1:llä), on sen kohdalle piirretty vihreä viiva. Tee ohjelma joka piirtää vastaavan kuvan. Vinkki: piirrä ensin itse käsin vastaavaa kuvaa ja mieti mitä teet.

GURU-tehtävät

G1-2.

Tee Hirsipuu -pelistä versio, joka tulostaa hirsipuun vaiheita tekstinä komentoriville tyyliin:
Naru alkaa häämöttämään...
...
Kohta roikut...
Koita päästä mahdollisimman hyvään muokattavuuteen.

G3-4.

Tee graafisesti hirsipuupelistä (ks. tehtävä 6) versio, jossa on pieninä nappuloita jokainen mahdollinen arvattava kirjain ja sitä mukaa kun niitä painetaan, ne muuttuvat harmaiksi. Nappulat kannattaa laittaa paneliin, jossa on GridLayout.