Tehtävät tehdään pääsääntöisesti "ohjelmointipajassa" eli ohjatusti harjoitussaleissa.
Pakolliset tehtävät on merkitty harmalla taustavärillä. Pakollisuus tarkoittaa oikeastaan hyvin voimakasta suositusta tehtävän tekemiseen. Jos pakollisia jää tekemättä, on suuri riski, että seuraavalla viikolla esitellään asioita jotka oletetetaan jo osatuiksi ja pakollisten tehtävien kautta harjoitelluiksi.
Yksi projekteista kerrallaan on aktiivisena. Aktiivinen projekti on vasemmalla projects-kohdassa tummennettuna kirjoitettu. Ylhäältä vihreästä napista painettaessa suoritetaan aina nimenomaan aktiivisen projektin ohjelmakoodi. Aktiivista projektia voi vaihtaa menemällä vasemmalle projects-kohtaan aktivoitavan projektin kohdalle ja klikkaamalla oikeasta napista ja valitsemalla "set as main project".
Jos ohjelmassasi on käytössä esim. muuttuja String sukunimi;
, ei koko muuttujan nimeä tarvitse välttämättä joka kerta kirjoittaa kokonaan. Kokeile mitä tapahtuu kun kirjoitat s
ja sen jälkeen painat yhtäaikaa ctrl ja välilyönti. Vastaavalla tavalla NetBeans osaa täydentää muitakin nimiä, esim. komennon while
aikaansaamiseksi riittää kirjoitta w ja painaa ctrl+välilyönti...
Tee seuraavat tehtävät while-silmukan avulla:
Tee ohjelma, joka tulostaa kokonaisluvut väliltä 1–100.
Ohjelman tulostus on seuraava:
1 2 3 (välissä paljon rivejä) 98 99 100
Tee ohjelma, joka tulostaa kokonaisluvut väliltä 100–1.
Ohjelman tulostus on seuraava:
100 99 98 (välissä paljon rivejä) 3 2 1
Tee ohjelma, joka tulostaa parilliset kokonaisluvut väliltä 2–100.
2 4 6 (välissä paljon rivejä) 96 98 100
Kirjoita ohjelma, joka tulostaa kokonaisluvut 1:stä käyttäjän antamaan lukuun asti.
Mihin asti? 3 1 2 3
Mihin asti? 5 1 2 3 4 5
Kirjoita ohjelma, joka kysyy käyttäjältä ensimmäisen ja viimeisen luvun ja tulostaa niiden välissä olevat luvut. Käyttäjä voi antaa ensin pienemmän luvun ja sitten suuremman luvun tai päinvastoin.
Ensimmäinen: 5 Viimeinen: 8 5 6 7 8
Ensimmäinen: 16 Viimeinen: 12 16 15 14 13 12
Tee ohjelma, joka laskee summan 1+2+3+...+n, missä n on käyttäjän syöttämä luku.
Ohjelman voi tehdä käyttäen while-silmukkaa. Voit myös tehdä tehtävän laajentamalla 1.4:n toiminnallisuutta summan laskemisella.
Esimerkkitulostuksia:
Mihin asti? 3 Summa 1+2+...+3 on 6
Mihin asti? 7 Summa 1+2+...+7 on 28
Huom: tulostuksen tarkka muoto ei ole tässä eikä seuraavassa tehtävässä kovin oleellinen, tärkeintä on summan laskeminen ja sen tulostaminen.
Muuta edellistä tehtävää siten, että käyttäjä määrää myös summan laskemisen aloituskohdan. Voit olettaa, että käyttäjä antaa ensin pienemmän luvun ja sitten suuremman luvun.
Esimerkkitulostuksia:
Ensimmäinen: 3 Viimeinen: 5 Summa 3+...+5 on 12
Ensimmäinen: 2 Viimeinen: 8 Summa 2+...+8 on 35
Tee ohjelma, joka laskee luvun n kertoman. Kertoma n! lasketaan kaavalla 1*2*3*...*n. Esimerkiksi 4! = 1*2*3*4 = 24. Lisäksi on määritelty, että 0! = 1.
Esimerkkitulostuksia:
Anna luku: 3 Luvun 3 kertoma on 6
Anna luku: 10 Luvun 10 kertoma on 3628800
Tee ohjelma, joka laskee summan 2^0+2^1+2^2+...+2^n,
missä n on käyttäjän syöttämä luku.
Merkintä 2^i tarkoittaa luvun 2 korottamista potenssiin i,
esimerkiksi 2^4 = 2*2*2*2 = 16.
Javassa merkintä a^b ei ole käytössä,
mutta potenssin voi laskea metodilla
Math.pow(a, b)
.
Esimerkkitulostuksia:
Anna luku: 3 2^0+2^1+...+2^3 = 15
Anna luku: 7 2^0+2^1+...+2^7 = 255
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun -1. Kun käyttäjä syöttää luvun -1, ohjelma tulostaa "Kiitos ja näkemiin!" ja päättyy.
Anna lukuja: 5 2 4 -1 Kiitos ja näkemiin!
Laajenna edellistä ohjelmaa siten, että ohjelma ilmoittaa käyttäjän syöttämien lukujen summan. (Lukua -1 ei lasketa mukaan.)
Anna lukuja: 5 2 4 -1 Summa: 11
Laajenna edellistä ohjelmaa siten, että ohjelma ilmoittaa myös käyttäjien antamien lukujen lukumäärän. (Lukua -1 ei lasketa mukaan.)
Anna lukuja: 5 2 4 -1 Summa: 11 Lukuja: 3
Muuta edellistä ohjelmaa siten, ohjelma ilmoittaa lukujen keskiarvon. (Lukua -1 ei lasketa mukaan.)
Anna lukuja: 5 2 4 -1 Summa: 11 Lukuja: 3 Keskiarvo: 3.666666666666
Laajenna edellistä ohjelmaa siten, että ohjelma ilmoittaa parillisten ja parittomien lukujen määrän. (Lukua -1 ei lasketa mukaan.)
Anna lukuja: 5 2 4 -1 Summa: 11 Lukuja: 3 Keskiarvo: 3.666666666666 Parillisia: 2 Parittomia: 1
Tehtävissä 3.1-3.5 tehtiin oikeastaan ainoastaan yksi ohjelma, mutta ohjelman rakentaminen tapahtui hyvin pienissä paloissa. Tämä on ehdottoman suositeltava tapa AINA kun ohjelmoit.
Eli kun teet ohjelmaa, oli se sitten laskaritehtävä tai joku oma projektisi, kannattaa edetä hyvin pienissä paloissa. Älä koskaan yritä ratkaista koko ongelmaa kerralla. Aloita jollain helpolla asialla jonka tiedät varmasti osaavasi, esim. 3.1:ssä keskityttiin aluksi pelkästään siihen, että osataan pysäyttää ohjelma käyttäjän syöttäessä luvun -1. Kun yksi ohjelman osa on saatu toimimaan, voidaan siirtyä ratkaisemaan jotain seuraavaa varsinaisen ongelman osaongelmaa.
Osa kurssin tehtäviä on 3.1-5:n tapaan valmiiksi osiin pilkottuja. Usein jokainen osa kuitenkin pitää vielä pilkkoa ohjelmoinnin kannalta vieläkin pienempiin paloihin. Kannattaa jopa tehdä siten, että lähes jokaisen koodirivin jälkeen suoritetaan ohjelma ja varmistetaan, että ratkaisu on etenemässä haluttuun suuntaan.
Tee ohjelma (tai laajenna edellistä), joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun -1. Sitten ohjelma ilmoittaa pienimmän ja suurimman luvun. (Lukua -1 ei lasketa mukaan.)
Anna lukuja: 9 5 2 -1 Pienin: 2 Suurin: 9
Anna lukuja: 5 3 7 8 -1 Pienin: 3 Suurin: 8
Anna lukuja: 4 -1 Pienin: 4 Suurin: 4
Tee seuraavat tehtävät for-silmukan avulla:
Tee ohjelma, joka tulostaa kokonaisluvut väliltä 1–100.
Ohjelman tulostus on seuraava:
1 2 3 (välissä paljon rivejä) 98 99 100
Tee ohjelma, joka tulostaa kokonaisluvut väliltä 100–1.
Ohjelman tulostus on seuraava:
100 99 98 (välissä paljon rivejä) 3 2 1
Tee ohjelma, joka tulostaa parilliset kokonaisluvut väliltä 2–100.
2 4 6 (välissä paljon rivejä) 96 98 100
Tee ohjelma, joka tulostaa käyttäjän antaman määrän tähtiä.
Kuinka monta tähteä? 5 *****
Kuinka monta tähteä? 8 ********
Tee ohjelma, joka tulostaa suorakulmion, jonka leveyden ja korkeuden käyttäjä antaa.
Vihje: Tee kaksi sisäkkäistä silmukkaa.
Anna leveys: 4 Anna korkeus: 3 **** **** ****
Anna leveys: 10 Anna korkeus: 5 ********** ********** ********** ********** **********
Tee ohjelma, joka tulostaa portaikon, jonka kerrosten määrän käyttäjä antaa.
Kuinka monta kerrosta? 3 * ** ***
Kuinka monta kerrosta? 5 * ** *** **** *****
Tee ohjelma, joka tulostaa kuusen, jonka korkeuden käyttäjä antaa.
Anna korkeus: 3 * *** ***** *
Anna korkeus: 5 * *** ***** ******* ********* *
PIN-koodissa on neljä numeroa väliltä 1–9. Tee ohjelma, joka tulostaa järjestyksessä kaikki PIN-koodit.
Vihje: Tee neljä sisäkkäistä silmukkaa!
1111 1112 1113 (välissä paljon rivejä) 5629 5631 5632 (välissä paljon rivejä) 9997 9998 9999
Tee ohjelma, joka tulostaa taulukossa olevat luvut alusta loppuun.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {5, 1, 3, 4, 2};
Ohjelman tulostus on seuraava:
5 1 3 4 2
Jos taulukon määrittely muuttuu, myös ohjelman toiminnan tulee muuttua.
Eli kirjoita silmukkasi siten, että ne toimivat kaikenlaisille taulukoille.
Taulukon alkioiden määrän kertoo taulukko.length
.
Toinen ratkaisu on käyttää for-each-silmukkaa.
int [] taulukko = {2, 7, 3};
2 7 3
Tee ohjelma, joka tulostaa taulukossa olevat luvut lopusta alkuun.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {5, 1, 3, 4, 2};
Ohjelman tulostus on seuraava:
2 4 3 1 5
Tee ohjelma, joka tulostaa taulukon lukuja vastaavat määrät tähtiä.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {5, 1, 3, 4, 2};
Ohjelman tulostus on seuraava:
***** * *** **** **
Tee ohjelma, joka tulostaa taulukon lukujen summan.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {5, 1, 3, 4, 2};
Ohjelman tulostus on seuraava:
15
Tee ohjelma, joka tulostaa taulukossa olevat luvut tyylikkäästi. Lukujen väliin tulee pilkku ja välilyönti. Viimeisen luvun jälkeen ei kuitenkaan tule pilkkua.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {5, 1, 3, 4, 2};
Ohjelman tulostus on seuraava:
5, 1, 3, 4, 2
Tee ohjelma, joka antaa käyttäjälle mahdollisuuden vaihtaa kahden luvun paikkaa taulukossa.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {5, 1, 3, 4, 2};
Esimerkkisyötteitä:
Taulukon sisältö: 5, 1, 3, 4, 2 1. kohta: 0 2. kohta: 1 Taulukon sisältö: 1, 5, 3, 4, 2
Taulukon sisältö: 5, 1, 3, 4, 2 1. kohta: 1 2. kohta: 3 Taulukon sisältö: 5, 4, 3, 1, 2
Mitä ohjelmasi tekee, jos käyttäjä antaa virheellisen syötteen?
Tee ohjelma, joka kertoo, onko käyttäjän antama luku taulukossa.
Taulukko määritellään koodin alussa seuraavasti:
int [] taulukko = {7, 2, 4, 8};
Esimerkkitulostuksia:
Anna luku: 4 Luku on taulukossa.
Anna luku: 3 Lukua ei ole taulukossa.
Tee ohjelma, joka kertoo, onko käyttäjän antama sana taulukossa.
Taulukko määritellään koodin alussa seuraavasti:
String [] taulukko = {"apina", "banaani", "cembalo"};
Esimerkkitulostuksia:
Anna sana: apina Sana on taulukossa.
Anna sana: siili Sanaa ei ole taulukossa.
Muista, mitä erityistä on merkkijonojen vertailussa!
Tee ohjelma, joka kysyy käyttäjältä lukujen määrän ja joukon lukuja. Sitten ohjelma tulostaa luvut käänteisessä järjestyksessä.
Kuinka monta lukua? 4 Anna luvut: 4 2 8 1 Käänteinen järjestys: 1 8 2 4
Javassa on valmiina paljon kaikenlaista hyödyllistä.
Viime viikolla käytettiin vakiota Math.PI
,
joka sisältää piin arvon,
sekä metodia Math.max(luku1, luku2)
,
joka palauttaa kahdesta luvusta suuremman.
Javassa on myös valmis metodi taulukon järjestämiseen. Myöhemmin kurssilla opimme, kuinka taulukon voi järjestää ilman valmista metodia.
Seuraava komento järjestää taulukon, jonka nimi on luvut
:
Arrays.sort(luvut);
Huom: Komennon käyttäminen vaatii, että ohjelmatiedoston yläosassa lukee seuraava määrittely:
import java.util.Arrays;
Jos unohdat import
-rivin, NetBeans tarjoaa apua sen kirjoittamiseen.
Kokeile klikata punaisella alleviivatun koodirivin vasempaan
laitaan ilmestyvää lampun kuvaa...
Tee ohjelma, joka kysyy käyttäjältä lukujen määrän ja joukon lukuja. Tämän jälkeen ohjelma tulostaa luvut järjestyksessä.
Kuinka monta lukua? 4 Anna luvut: 5 2 8 1 Luvut järjestyksessä: 1 2 5 8
Tee ohjelma, joka kysyy käyttäjältä sanoja, kunnes käyttäjä antaa saman sanan uudestaan. Voit olettaa, että käyttäjä antaa korkeintaan 1000 sanaa.
Anna sana: porkkana Anna sana: selleri Anna sana: nauris Anna sana: lanttu Anna sana: selleri Annoit saman sanan uudestaan!
Tee ohjelma, joka kysyy käyttäjältä sanoja taulukkoon. Tämän jälkeen käyttäjä voi tarkistaa, onko tietty sana taulukossa. Ohjelma päättyy, kun käyttäjä kysyy sanaa "pois".
Kuinka monta sanaa? 3 Anna sana: apina Anna sana: banaani Anna sana: cembalo Nyt voit kysyä sanoja. Anna sana: banaani Sana on taulukossa. Anna sana: kurpitsa Sana ei ole taulukossa. Anna sana: cembalo Sana on taulukossa. Anna sana: pois Hei hei!