Helsingin yliopisto
/
Tietojenkäsittelytieteen
laitos
/
581325-0 Ohjelmoinnin perusteet
Copyright © 2007 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.
6. harjoitukset 8.-12.10.2007
Aiheita:
taulukoita, etsintää, järjestämistä,
String-olioita taulukon alkioina
-
-
Laadi yksityisiä luokkametodeja ("pääohjelman pikku apulaisia"),
jotka saavat parametrina taulukko-olion, jonka tyyppi on int[].
Varaudu myös 0:n alkion mittaisiin taulukoihin.
Metodi
- asettaa taulukon jokaisen alkion arvoksi
indeksin kerrottuna kahdella; alkioiden arvoiksi tulee
tulee siis 0, 2, 4, 6, ...
- tulostaa taulukon jokaisen alkion, jonka arvo on pariton
- etsii järjestämättömän taulukon alkioista suurimman ja palauttaa sen indeksin
arvonaan
(suurin ei ole
välttämättä yksikäsitteinen, miten etsittäisiin ensimmäinen
suurin, entä viimeinen?)
- siirtää taulukon viimeisen alkion ensimmäiseksi,
ensimmäisen toiseksi, toisen kolmanneksi, jne.; taulukkoa siis
"pyöräytetään ympäri" yhden alkion verran.
- Laadi yksityisiä luokkametodeja ("pääohjelman pikku apulaisia"),
jotka saavat parametrina kokonaislukumatriisin, jonka tyyppi
on int[][].
Varaudu myös 0:n alkion kokoisiin taulukoihin.
Metodi
- asettaa matriisin jokaisen alkion arvoksi indeksien tulon
(esimerkiksi alkio, jonka indeksit ovat [2][4] saa arvokseen 8)
- etsii matriisin alkoista pienimmän ja palauttaa sen
arvonaan; jos matriisi sisältää nolla alkiota, metodi
palauttaa arvon nolla
- selvittää, löytyykö parametrina annettu luku matriisista;
jos löytyy, metodi palauttaa arvon true, muuten false
- Tee ohjelma, joka ensin kysyy syötettävien kokonaislukujen lukumäärän, sitten lukee
tuon määrän lukuja taulukkoon ja lopuksi tarjoaa seuraavan
palvelun: Ohjelmalle annetaan lukuja yksi kerrallaan ja ohjelma
selvittää, löytyykö luku taulukosta. Etsimiseen on käytettävä
binäärihakua. Muista mitä binäärihaku edellyttää taulukon
järjestykseltä!
- Lotto on numeroveikkaus, jossa arvotaan 7 numeroa ja 3 lisänumeroa 39
numerosta. Loton voittoluokat ovat 7 oikein, 6 ja lisänumero oikein,
6 oikein, 5 oikein ja 4 oikein.
Tee ohjelma joka ensin arpoo oikean lottorivin.
Sitten ohjelmalta voi kysellä, onko jokin lottorivi oikein. Kyselyitä
voi olla useampia. Suunnittele itse, miten ohjelman toiminta
päättyy.
Satunnaisluvun väliltä 1-39 saat arvottua vaikkapa seuraavasti:
int arvottu = (int)(39*Math.random()) + 1;
- Tee sovellus, joka tulostaa komentoriviparametrit
String-vertailujen antamassa "aakkosjärjestyksessä".
- Vertaile peräkkäishakua ja binäärihakua järjestetystä
taulukosta. Kuinka monta alkiota joudutaan tutkimaan
helpoimmassa ja vaikeimmassa tapauksessa kun taulukon
koko on 10, 100, 1000, 10000, 100000 alkiota?
Löydätkö yleistä kaavaa vaikeimmalle tapaukselle?
Osaatko arvioida, montako alkiota keskimäärin
joudutaan tutkimaan?
-
- Vastaa kurssikyselyyn osoitteessa
http://ilmo.cs.helsinki.fi/kurssit/servlet/Valinta.
Muista myös lähettää lomake! Lähetysnäppäin on lomakkeen lopussa.
Tähän kysymykseen vastataan yksilönä ja anonyymisti.
Tehtävä myös rastitetaan opiskelijoittain, ei opintopiireittäin.
Ja rastin saa kirjoittaa, jos on todella vastannut kyselyyn!
Opiskelijaan luotetaan tässä-(kin) asiassa!
Koetta koskeviin kysymyksiin ei tietenkään voi vastata, mutta
kysely tehdään kuitenkin jo nyt, jotta saadaan varmistettua
hyvä vastausprosentti. Vastauksilla ihan oikeasti on merkitystä
laitoksen opetusta kehitettäessä!
- [Opintopiireille] Laatikaa 1-2 sivun mittainen
selvitys opintopiiritoiminnan onnistumisesta ja hyödyllisyydestä.
Vastauksen laadintaohje on sivulla
http://www.cs.helsinki.fi/u/wikla/Ohjelmointi/OpintopiirinItsearvio.html.
Vastaukset jätetään kirjallisina harjoitusten ohjaajalle.
- [Opintopiireihin kuulumattomille] Laadi 1-2 sivun mittainen
essee Ohjelmoinnin perusteet -kurssilla opiskelusta.
Mitä olet oppinut? Millä tavoin oppiminen tapahtui?
Mikä auttoi oppimisessa? Mikä haittasi oppimista?
Miten kurssia voisi kehittää? Essee jätetään kirjallisena
harjoitusten ohjaajalle.
Takaisin harjoitussivulle.