Arto Wikla 2011. Materiaalia saa vapaasti käyttää itseopiskeluun. Muu käyttö vaatii luvan.

Ohpe-harjoitukset s2011: 1/6 (5.-9.9.)

(Muutettu viimeksi 7.9.2011, sivu perustettu 23.8.2011.)

Ensimmäisen viikon harjoitukset liittyvät oppimateriaalin lukuihin 1 Algoritmeja: 1-17.

Kaikki harjoitustehtävät on syytä tehdä. Jotkin tehtävät on jatkossa merkitty keltaisella värillä. Ne ovat ehkä hieman muita haastavampia. Ilman niitäkin harjoituksista voi saada maksimipisteet, mutta ne lasketaan silti mukaan harjoituspisteitä määrättäessä – ne voivat siis korvata joitakin haasteettomampia tehtäviä tms. Mutta ennen kaikkea noista keltaisista tehtävistä sitä vasta oppiikin!

Huomautuksia ja ohjeita:

Ohjelman kirjoitus ja suoritus - vakiotulostuksia

Tässä harjoitellaan pääasiassa oppimateriaalin kohtaa 1 Algoritmeja: aliluvut 1-4.

Nimeni.java

Tee ohjelma, joka kirjoittaa nimesi näytölle tyyliin:

Olli Opiskelija

Käytä metodia System.out.println.

Monitervehdys.java

Käytä tämän tehtävän toimittamiseen palautusautomaattia! Ohje sivun alussa.

Tee ohjelma, joka kirjoittaa näytölle seuraavan tekstin:

Hoi Maailma!
Hello World!
Ciao il Mondo!
Hejssan Världen!

Tee erikseen versio, jossa on neljä System.out.println-metodin kutsua ja sellainen, jossa on vain yksi System.out.println.

Ohpe.java

Tee ohjelma, joka kirjoittaa näytölle seuraavan tekstin:

####	#  #	####	####
#  #	#  #	#   #	#
#  #	####	####	###
#  #	#  #	#       #
####	#  #	#       ####

Tee erikseen versio, jossa on viisi System.out.println-metodin kutsua ja sellainen, jossa on vain yksi System.out.println.

Kuusi.java

Tee ohjelma, joka kirjoittaa näytölle seuraavat merkit:

    *
   ***
  *****
 *******
*********
    *

Tee erikseen versio, jossa on kuusi System.out.println-metodin kutsua ja sellainen, jossa on vain yksi System.out.println.

HUOM: kirjoitit todennäköisesti aika monta kertaa System.out.println("..."). Kokeile kirjoittaa NetBeans:iin (main-metodiin) tyhjälle riville sout ja paina tabulaatoria (näppäin q:n vasemmalla puolella). Mitä tapahtuu? Tämä pieni apuväline säästänee jatkossa runsaasti aikaasi.

Muistithan kirjoittaa tehtävien alkuun oman nimesi ja tehtävänumeron tyyliin:

// 1. harjoitukset, tehtävä 1.4, Oili Opiskelija

Laskentaa muuttujien arvoilla

Tässä harjoitellaan pääasiassa oppimateriaalin kohtaa 1 Algoritmeja: aliluvut 5-7.

Huom:Tämän sarjan tehtävissä sijoita arvoja muuttujiin ja käytä muuttujia laskemisessa. Älä siis vain tulosta vakiotekstiä edellisten tehtävien tapaan. Toisaalta älä kuitenkaan vielä pyydä syötteitä ohjelman käyttäjältä.

Summa.java

Tee ohjelma, jonka avulla voidaan laskea kahden luvun summa. Ohjelman alussa määritellään kaksi muuttujaa, jotka sisältävät yhteenlaskettavat luvut. Voit tarvittaessa käyttää myös muita muuttujia.

Esimerkiksi jos muuttujissa on luvut 3 ja 7, ohjelman tulostus on seuraava:

3 plus 7 on 10

Jos muuttujissa on luvut 42 ja 3, ohjelman tulostus on seuraava:

42 plus 3 on 45

Kerto.java

Tee edellisen tehtävän tapaan kertolaskuohjelma:

Jos muuttujissa on 7 ja 6, ohjelma tulostaa:

7 kertaa 6 on 42

Jos muuttujissa on 11111 ja 11111, ohjelma tulostaa:

11111 kertaa 11111 on 123454321

Kokeile ohjelmaa suurilla kerrottavilla. Mitä tapahtuu, kun luvut ovat hyvin suuria?

Jako.java

Tee edellisen tehtävän tapaan jakolaskuohjelma. Muuttujat ovat nytkin kokonaislukutyyppisiä, mutta tulos halutaan liukulukuna.

Jos muuttujissa on 128 ja 8, ohjelma tulostaa:

128 jaettuna 8:lla on 16.0

Jos muuttujissa on 5 ja 3, ohjelma tulostaa:

5 jaettuna 3 on 1.66666666666667

Mistä on kysymys jälkimmäisen esimerkin pitkässä kuutosjonossa?

Miten käy, jos asetat jakajan nollaksi? Rohkeasti vain! Ei sinulle itsellesi huonosti käy. Eikä edes ohjaaja moiti.

VuodenSekunnit.java

Tee ohjelma, joka laskee, kuinka monta sekuntia on vuodessa. Voit olettaa, että vuodessa on 365 päivää (eli kyseessä ei ole karkausvuosi).

Ohjelman tulostus on seuraava:

Vuodessa on X sekuntia.

X:n kohdalle tulee ohjelmasi laskema sekuntimäärä.

Syötteen lukemista ja laskentoa

Tässä harjoitellaan pääasiassa oppimateriaalin kohtaa 1 Algoritmeja: aliluvut 8-13.

Huomaa että ponnahdusikkunakirjasto löytyy valmiina: Pop.java. Saadaksesi ponnahdusikkunatyökalut käyttöösi riittää sijoittaa tuo lähdekielinen Java-luokka samaan hakemistoon kuin luokka, jossa välineitä haluat käyttää. Kääntäjä osaa kääntääkin tuon työkaluluokan tarvittaessa automaattisesti. Muitakin – tyylikkäämpiä? – tapoja ottaa nämä välineet käyttöön on toki olemassa. NetBeansin käyttäjät saavat harjoitusten ohjaajilta neuvot, miten asia tuossa ympäristössä hoidellaan. Lisätietoja löytyy kurssimateriaalin kohdasta 1 Algoritmeja: 13 Keskusteleva ohjelma: ponnahdusikkunoita.

Summaaja.java

Käytä tämän tehtävän toimittamiseen palautusautomaattia! Ohje sivun alussa.

Ohjelma pyytää kaksi kokonaislukua ja ilmoittaa niiden summan:

kuva kuva kuva

Jakaja.java

Ohjelma pyytää kaksi kokonaislukua ja jakaa ensimmäisen toisella. Varmista, että 3 / 2 = 1.5.

kuva kuva kuva

Kokeile mitä tapahtuu, kun jaetaan nollalla!

SekTun.java

Käytä tämän tehtävän toimittamiseen palautusautomaattia! Ohje sivun alussa.

Tee ohjelma, joka laskee ja ilmoittaa, kuinka monta kokonaista tuntia on käyttäjän syöttämässä sekuntien määrässä. Lue syöte ponnahdusikkunalla ja tulosta vastaus standardisyöttövirtaan operaatioilla System.out.println ja System.out.print.

kuva

Kokonaisia tunteja 123456 sekuntiin mahtuu 34

SekTunMin.java

Kirjoita ohjelma jolle annetaan sekunnit syötteenä. Ohjelma laskee ja tulostaa tunnit, minuutit ja sekunnit. Lue syöte ponnahdusikkunalla ja tulosta vastaus standardisyöttövirtaan operaatioilla System.out.println ja System.out.print.

Vihje: Muista jäännösjako %.

kuva

123456 sekuntia on 34 tuntia, 17 minuuttia ja 36 sekuntia.

Ikatervehdys.java

Tee ohjelma, joka kysyy käyttäjältä nimen iän. Sitten ohjelma tervehtii käyttäjää ja kertoo samalla tämän iän.

kuva kuva kuva

IkienSumma.java

Ohjelma kysyy kahden henkiön nimen ja iän ja tulostaa ikien summan:

kuva kuva kuva kuva kuva

Viisilaskin.java

Ohjelma laskee peruslaskutoimitukset kahdelle syöttöluvulle:

kuva kuva kuva

KolmenKarvo.java

Ohjelma pyytää kolme lukua ja laskee niiden keskiarvon:

kuva kuva kuva kuva

Valintaa

Tässä harjoitellaan pääasiassa oppimateriaalin kohtaa 1 Algoritmeja: aliluvut 14-17.

Käytä tämän tehtäväsarjan 4 kaikkien ohjelmien toimittamiseen palautusautomaattia! Ohje sivun alussa.

KumpiSuurempi.java

Ohjelman tehtävä on ilmoittaa, kumpi kahdesta syöttöluvusta on suurempi.

kuva kuva kuva

Entä jos luvut ovat yhtä suuret? Miten ohjelman tulisi tässä tilanteessa toimia? Ehkä tämänkin tilanteen voisi selkeästi ilmoittaa?

ParitonVaiParillinen.java

Ohjelman tehtävä on selvittää, onko syöttöluku parillinen.

Vihje: parillisen luvun jakojäännös on 0, kun jaetaan luvulla 2.

kuva kuva

Toinen tilanne:

kuva kuva

MatkaSadasta.java

Ohjelma laskee annetun luvun ja luvun 100 etäisyyden.

Huomaa, että lukujen tulostusjärjestyksen halutaan riippuvan lukujen suuruudesta: suurempi ensin.

kuva kuva

Toinen tilanne:

kuva kuva

IkaNyt.java

Tee ohjelma, joka kysyy käyttäjältä syntymävuoden. Jos vuosi on välillä 1900-2010, ohjelma kertoo, montako vuotta käyttäjä täyttää tänä vuonna (2011). Muuten ohjelma tulostaa tekstin "Taidat narrata!"

kuva kuva

Esimerkki narraamisyrityksestä:

kuva kuva

PisteistaArvosanaan.java

Tee ohjelma, joka laskee ja ilmoittaa kurssista saatavan arvosanan. Arvosanarajat ovat:

pistemääräarvosana
0–29hylätty
30–341
35–392
40–443
45–494
50–605

kuva kuva

Myös "hylätty"-teksti on syytä muistaa ilmoittaa. Hylätyiksi tulkitaan myös kaikki välin 0-60 ulkopuoliset arvot.

KolmeOjoon.java

Ohjelma lukee kolme lukua ja tulostaa ne suuruusjärjestyksessä:

kuva kuva kuva kuva

Karkaustarkistus.java

Gregoriaanisessa kalenterissa vuosi on karkausvuosi, jos se on jaollinen nejällä Kuitenkaan 100:lla jaollinen vuosi ei ole karkausvuosi, paitsi jos se on jaollinen nyös 400:lla.

Tee ohjelma, jolta voi kysyä, onko vuosi karkausvuosi:

kuva kuva