Kesän 2011 Ohjelmoinnin perusteet -kurssi muodostuu kolmesta tehtäväsarjasta, joissa jokaisessa on 33 tehtävää:
Perustehtävät (20 kpl) ovat suoraviivaisia tehtäviä kurssin tärkeimmistä asioista. Perustehtävät kannattaa tehdä aina kokonaan.
Lisätehtävät (12 kpl) ovat soveltavia tehtäviä, jotka syventävät asioiden ymmärtämistä. Lisätehtäviä kannattaa tehdä niin monta kuin ehtii.
Pähkinä (1 kpl) on haastava tehtävä, joka on kuitenkin ratkaistavissa siihen mennessä opitun perusteella.
Tehtävät palautetaan esittelemällä niitä ohjaajalle ohjelmointipajassa. Osan 2 tehtävien viimeinen palautuspäivä on keskiviikko 25.5., mutta tehtäviä voi mielellään palauttaa aiemminkin.
Kertaustehtäviä:
Tee ohjelma, joka kysyy käyttäjältä kielen ja tulostaa vastaavan tervehdyksen. Voit valita itse, mitkä kielet ohjelmasi tuntee.
Ohjelmasi tulisi toimia esimerkiksi seuraavasti:
Anna kieli: suomi Tervetuloa!
Anna kieli: englanti Welcome!
Anna kieli: syrjääni En tunne kieltä!
Tee ohjelma, joka kysyy käyttäjältä kaksi lukua ja tulostaa niistä lähempänä nollaa olevan.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku 1: 3 Anna luku 2: -5 Lähempänä nollaa: 3
Anna luku 1: 8 Anna luku 2: 1 Lähempänä nollaa: 1
Jos luvut ovat yhtä lähellä nollaa, ohjelmasi voi tulostaa kumman tahansa.
Tee ohjelma, joka kysyy käyttäjältä ylärajan ja tulostaa luvut 1:stä ylärajaan siististi. Esimerkit selventävät, mitä "siististi" tarkoittaa.
Ohjelmasi tulisi toimia seuraavasti:
Anna yläraja: 5 1, 2, 3, 4 ja 5
Anna yläraja: 8 1, 2, 3, 4, 5, 6, 7 ja 8
Luvun neliö saadaan korottamalla luku toiseen potenssiin. Esimerkiksi luvun 5 neliö on 25, koska 52 = 25.
Tee ohjelma, joka kysyy käyttäjältä ylärajan ja tulostaa lukujen neliöt 1:stä ylärajaan asti.
Ohjelmasi tulisi toimia seuraavasti:
Anna yläraja: 5 Neliöt: 1 4 9 16 25
Tee ohjelma, joka kysyy käyttäjältä suorakulmion korkeuden ja leveyden. Sitten ohjelma tulostaa vastaavan suorakulmion tähdistä.
Ohjelmasi tulisi toimia seuraavasti:
Anna korkeus: 4 Anna leveys: 12 ************ ************ ************ ************
Tee ohjelma, joka kysyy käyttäjältä luvun ja tulostaa kaikki eri tavat, joilla kyseinen luku saadaan kahden positiivisen kokonaisluvun summana.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 5 1 + 4 = 5 2 + 3 = 5 3 + 2 = 5 4 + 1 = 5
Anna luku: 6 1 + 5 = 6 2 + 4 = 6 3 + 3 = 6 4 + 2 = 6 5 + 1 = 6
Lue materiaalista luku 6 ja tee sitten seuraavat tehtävät:
Tee ohjelma, joka kysyy käyttäjältä syntymävuoden. Ohjelma jatkaa kysymistä, kunnes käyttäjä antaa vuoden välillä 1900–2010.
Ohjelmasi tulisi toimia seuraavasti:
Anna syntymävuosi: 1865 Ei kelpaa! Anna syntymävuosi: 2012 Ei kelpaa! Anna syntymävuosi: 1989 Kiitos!
Tee ohjelma, joka kysyy käyttäjältä sanasanan. Toimivat salasanat ovat "selleri" ja "nauris". Ohjelma jatkaa kysymistä, kunnes käyttäjä antaa jommankumman näistä.
Ohjelmasi tulisi toimia seuraavasti:
Anna salasana: kissa Väärin! Anna salasana: lanttu Väärin! Anna salasana: nauris Tervetuloa!
Tee ohjelma, joka kysyy käyttäjältä positiivisen luvun. Ohjelma jatkaa kysymistä, kunnes käyttäjä antaa positiivisen luvun.
Ohjelmasi tulisi toimia seuraavasti:
Anna positiivinen luku: -3 Ei kelpaa! Anna positiivinen luku: 0 Ei kelpaa! Anna positiivinen luku: -5 Ei kelpaa! Anna positiivinen luku: 2 Kiitos!
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma ilmoittaa lukujen summan.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 3 Anna luku: 9 Anna luku: 1 Anna luku: 0 Summa: 17
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma ilmoittaa lukujen määrän ja keskiarvon.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 3 Anna luku: 9 Anna luku: 1 Anna luku: 0 Määrä: 4 Keskiarvo: 4.25
Lukua 0 ei siis lasketa määrään eikä keskiarvoon.
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma tulostaa positiivisten ja negatiivisten lukujen määrän.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 3 Anna luku: -1 Anna luku: 8 Anna luku: 7 Anna luku: -5 Anna luku: 0 Positiivisia: 3 Negatiivisia: 2
Tee ohjelma, joka tuntee seuraavat komennot:
Ohjelmasi tulisi toimia seuraavasti:
Anna komento: 1 Morjens! Anna komento: 2 Hei vain! Anna komento: 1 Morjens! Anna komento: 1 Morjens! Anna komento: 2 Hei vain! Anna komento: 3
Lue materiaalista luku 7 ja tee sitten seuraavat tehtävät:
Ohjelman käytössä on seuraava lista:
ArrayList<String> paivat = new ArrayList<String>(); paivat.add("maanantai"); paivat.add("tiistai"); paivat.add("keskiviikko"); paivat.add("torstai"); paivat.add("perjantai"); paivat.add("lauantai"); paivat.add("sunnuntai");
Täydennä ohjelmaa niin, että se kysyy käyttäjältä viikonpäivän numeron ja tulostaa vastaavan viikonpäivän listalta.
Ohjelmasi tulisi toimia seuraavasti:
Anna numero: 3 Viikonpäivä: keskiviikko
Anna numero: 7 Viikonpäivä: sunnuntai
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma tulostaa kaikki luvut uudestaan samassa järjestyksessä.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 3 Anna luku: 9 Anna luku: 1 Anna luku: 0 Uudestaan: 4 3 9 1
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma tulostaa kaikki luvut uudestaan käänteisessä järjestyksessä.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 3 Anna luku: 9 Anna luku: 1 Anna luku: 0 Väärinpäin: 1 9 3 4
Tee ohjelma, joka kysyy käyttäjältä nimiä, kunnes käyttäjä antaa tyhjän merkkijonon. Sitten ohjelma tulostaa nimet aakkosjärjestyksessä.
Ohjelmasi tulisi toimia seuraavasti:
Anna nimi: Maija Anna nimi: Aapeli Anna nimi: Sirkka Anna nimi: Uolevi Anna nimi: Nimet järjestyksessä: Aapeli Maija Sirkka Uolevi
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma tulostaa luvuista tilaston esimerkin mukaisesti.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 3 Anna luku: 9 Anna luku: 5 Anna luku: 0 Tilasto: **** 4 *** 3 ********* 9 ***** 5
Tee ohjelma, joka kysyy käyttäjältä oikean lottorivin ja käyttäjän lottorivin. Sitten ohjelma kertoo, montako numeroa meni oikein. Käyttäjä antaa molempien rivien numerot pienimmästä suurimpaan.
Ohjelmasi tulisi toimia seuraavasti:
Anna oikea rivi: 3 8 9 11 25 33 36 Anna oma rivisi: 6 9 17 18 25 37 38 Sait 2 oikein.
Tässä tapauksessa käyttäjän rivissä olivat oikein numerot 9 ja 25.
Tee ohjelma, joka kysyy käyttäjältä kappaleiden nimiä, kunnes käyttäjä antaa tyhjän merkkijonon. Sitten ohjelma tulostaa soittolistan, joka sisältää kappaleet satunnaisessa järjestyksessä.
Ohjelmasi tulisi toimia seuraavasti:
Anna kappale: Säkkijärven polkka Anna kappale: Finlandia Anna kappale: Reppu ja reissumies Anna kappale: Tankeros Love Anna kappale: Soittolista: Finlandia Tankeros Love Reppu ja reissumies Säkkijärven polkka
Tee ohjelma, joka tulostaa kaikki kakkosen potenssit käyttäjän antamaan ylärajaan asti.
Ohjelmasi tulisi toimia seuraavasti:
Anna yläraja: 20 1 2 4 8 16
Anna yläraja: 150 1 2 4 8 16 32 64 128
Tee ohjelma, joka tulostaa lukuja 1:stä alkaen, kunnes lukujen summa ylittää käyttäjän antaman ylärajan.
Ohjelmasi tulisi toimia seuraavasti:
Anna yläraja: 20 1 2 3 4 5 6 Summa: 21
Anna yläraja: 30 1 2 3 4 5 6 7 8 Summa: 36
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma ilmoittaa suurimman käyttäjän antaman luvun.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 3 Anna luku: 9 Anna luku: 1 Anna luku: 0 Suurin luku: 9
Anna luku: -2 Anna luku: 0 Suurin luku: -2
Voit olettaa, että käyttäjä antaa ainakin yhden luvun. Lukua 0 ei oteta huomioon suurimman luvun valinnassa.
Tee ohjelma, joka kysyy käyttäjältä lukuja, kunnes käyttäjä antaa luvun 0. Sitten ohjelma tulostaa uudestaan kaikki käyttäjän antamat eri luvut pienimmästä suurimpaan.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 4 Anna luku: 2 Anna luku: 5 Anna luku: 5 Anna luku: 2 Anna luku: 6 Anna luku: 2 Anna luku: 0 Eri luvut: 2 4 5 6
Kokonaisluvun n kertoma n! tarkoittaa tuloa 1 · 2 · 3 · ... · n, eli esimerkiksi 5! = 1 · 2 · 3 · 4 · 5 = 120. Lisäksi on sovittu, että 0! = 1.
Tee ohjelma, joka laskee käyttäjän antaman luvun kertoman.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 5 Kertoma: 120
Tee ohjelma, joka kysyy käyttäjältä ylärajan, ja tulostaa sitten luvut 1:n ja ylärajan väliltä seuraavien esimerkkien mukaisesti.
Ohjelmasi tulisi toimia seuraavasti:
Anna yläraja: 5 1 5 2 4 3
Anna yläraja: 8 1 8 2 7 3 6 4 5
Fibonaccin lukusarja alkaa seuraavasti:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55...
Ideana on siis, että seuraava luku on kahden edellisen luvun summa.
Tee ohjelma, joka tulostaa halutun määrän ensimmäisiä Fibonaccin lukuja.
Ohjelmasi tulisi toimia seuraavasti:
Montako? 5 0 1 1 2 3
Montako? 8 0 1 1 2 3 5 8 13
Tee ohjelma, joka tulostaa luvut 1:stä käyttäjän antamaan ylärajaan asti. Ohjelman tulee tulostaa joka riville 10 lukua ja jokaisen luvun neljän merkin kokoisen kenttään.
Ohjelmasi tulisi toimia seuraavasti:
Anna yläraja: 57 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
Tee ohjelma, joka tulostaa kaikki korttipakan kortit.
Korttipakan maat ovat pata, ruutu, risti ja hertta, ja korttien numerot ovat väliltä 1–13.
Ohjelmasi tulostuksen tulisi olla seuraava:
pata-1 pata-2 pata-3 (paljon rivejä välissä) hertta-11 hertta-12 hertta-13
Tee ohjelma, joka arpoo viisi korttia korttipakasta.
Ohjelmasi tulisi toimia esimerkiksi seuraavasti:
pata-2 ruutu-13 risti-4 risti-6 ruutu-9
Huom! Sama kortti ei saa esiintyä monta kertaa pokerikädessä.
Tee ohjelma, joka kysyy käyttäjältä nimiä, kunnes käyttäjä antaa tyhjän merkkijonon. Sitten ohjelma listaa kaikki parit, jotka nimistä voidaan muodostaa.
Ohjelmasi tulisi toimia seuraavasti:
Anna nimi: Aapeli Anna nimi: Maija Anna nimi: Uolevi Anna nimi: Sirkka Anna nimi: Parit: Aapeli ja Maija Aapeli ja Uolevi Aapeli ja Sirkka Maija ja Uolevi Maija ja Sirkka Uolevi ja Sirkka
Tee ohjelma, joka kysyy käyttäjältä nimiä, kunnes käyttäjä antaa tyhjän merkkijonon. Sitten ohjelma listaa kaikki kolmikot, jotka nimistä voidaan muodostaa.
Ohjelmasi tulisi toimia seuraavasti:
Anna nimi: Aapeli Anna nimi: Maija Anna nimi: Uolevi Anna nimi: Sirkka Anna nimi: Elli Anna nimi: Kolmikot: Aapeli, Maija ja Uolevi Aapeli, Maija ja Sirkka Aapeli, Maija ja Elli Aapeli, Uolevi ja Sirkka Aapeli, Uolevi ja Elli Aapeli, Sirkka ja Elli Maija, Uolevi ja Sirkka Maija, Uolevi ja Elli Maija, Sirkka ja Elli Uolevi, Sirkka ja Elli
Tee ohjelma, joka tulostaa halutun kokoisen lukuspiraalin seuraavien esimerkkien mukaisesti.
Ohjelmasi tulisi toimia seuraavasti:
Anna koko: 3 1 2 9 4 3 8 5 6 7
Anna koko: 4 1 2 9 10 4 3 8 11 5 6 7 12 16 15 14 13
Anna koko: 5 1 2 9 10 25 4 3 8 11 24 5 6 7 12 23 16 15 14 13 22 17 18 19 20 21