Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Ohjelmoinnin perusteet
Copyright © 2008 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 7.-10.10.2008

Aiheita: taulukoita, etsintää, järjestämistä, String-olioita taulukon alkioina

    1. 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
      1. asettaa taulukon jokaisen alkion arvoksi indeksin kerrottuna kahdella; alkioiden arvoiksi tulee tulee siis 0, 2, 4, 6, ...
      2. tulostaa taulukon jokaisen alkion, jonka arvo on pariton
      3. 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?)
      4. siirtää taulukon viimeisen alkion ensimmäiseksi, ensimmäisen toiseksi, toisen kolmanneksi, jne.; taulukkoa siis "pyöräytetään ympäri" yhden alkion verran.
    2. Laadi yksityisiä luokkametodeja ("pääohjelman pikku apulaisia"), jotka saavat parametrina kokonaislukumatriisin, jonka tyyppi on int[][]. Varaudu myös 0:n alkion kokoisiin taulukoihin. Metodi
      1. asettaa matriisin jokaisen alkion arvoksi indeksien tulon (esimerkiksi alkio, jonka indeksit ovat [2][4] saa arvokseen 8)
      2. etsii matriisin alkoista pienimmän ja palauttaa sen arvonaan; jos matriisi sisältää nolla alkiota, metodi palauttaa arvon nolla
      3. selvittää, löytyykö parametrina annettu luku matriisista; jos löytyy, metodi palauttaa arvon true, muuten false

  1. 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ä!

  2. 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;
    

  3. Tee sovellus, joka tulostaa komentoriviparametrit String-vertailujen antamassa "aakkosjärjestyksessä".

  4. 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?

  5. 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ä!


Takaisin harjoitussivulle.