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 3 tehtävien viimeinen palautuspäivä on tiistai 31.5., mutta tehtäviä voi mielellään palauttaa aiemminkin.
Lue materiaalista luku 8 ja tee sitten seuraavat tehtävät:
Tee ohjelma, joka kysyy käyttäjän etunimen ja sukunimen. Sitten ohjelma tulostaa käyttäjän nimen alkukirjaimet.
Ohjelmasi tulisi toimia seuraavasti:
Anna etunimi: Aapeli Anna sukunimi: Koodinen Nimikirjaimet: AK
Tee ohjelma, joka kysyy käyttäjän nimen ja tulostaa sitten nimen viimeisen kirjaimen.
Ohjelmasi tulisi toimia seuraavasti:
Anna nimi: Aapeli Viimeinen kirjain: i
Tee ohjelma, joka kysyy käyttäjältä kaksi sanaa. Sitten ohjelma tulostaa uudestaan niistä pidemmän.
Ohjelmasi tulisi toimia seuraavasti:
Anna sana 1: lanttu Anna sana 2: selleri Pidempi: selleri
Tee ohjelma, joka kysyy käyttäjän nimen ja tulostaa sitten nimen väärinpäin.
Ohjelmasi tulisi toimia seuraavasti:
Anna nimi: Aapeli Väärinpäin: ilepaA
Tee ohjelma, joka kysyy käyttäjältä sanan ja alkuosan pituuden. Sitten ohjelma tulostaa sanasta halutun alkuosan.
Ohjelmasi tulisi toimia seuraavasti:
Anna sana: esimerkki Alkuosan pituus: 3 Alkuosa: esi
Anna sana: esimerkki Alkuosan pituus: 5 Alkuosa: esime
Tee ohjelma, joka kysyy käyttäjältä sanan ja loppuosan pituuden. Sitten ohjelma tulostaa sanasta halutun loppuosan.
Ohjelmasi tulisi toimia seuraavasti:
Anna sana: esimerkki Loppuosan pituus: 3 Loppuosa: kki
Anna sana: esimerkki Loppuosan pituus: 5 Loppuosa: erkki
Tee ohjelma, joka kysyy käyttäjältä lauseen ja sanan. Sitten ohjelma ilmoittaa, esiintyykö sana jossain kohtaa lausetta.
Ohjelmasi tulisi toimia seuraavasti:
Anna lause: Tässä lauseessa on viisi sanaa. Anna sana: viisi Sana esiintyy lauseessa.
Anna lause: Tässä lauseessa on viisi sanaa. Anna sana: selleri Sana ei esiinny lauseessa.
Lue materiaalista luku 9 ja tee sitten seuraavat tehtävät:
Tee ohjelma, joka kysyy käyttäjältä luvun ja ilmoittaa, onko luku jaollinen 7:llä.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 56 Luku on jaollinen 7:llä.
Anna luku: 57 Luku ei ole jaollinen 7:llä.
Tee ohjelma, joka heittää noppaa ja ilmoittaa tuloksen (1–6).
Ohjelmasi tulostuksen tulisi olla esimerkiksi seuraava:
Nopan heitto: 3
Nopan heitto: 5
Tee ohjelma, joka heittää kolikkoa ja ilmoittaa tuloksen (kruuna tai klaava).
Ohjelmasi tulostuksen tulisi olla jompikumpi seuraavista:
Kolikon heitto: kruuna
Kolikon heitto: klaava
Lue materiaalista luku 10 ja tee sitten seuraavat tehtävät:
Tee metodi tulostaTahtia
, joka tulostaa halutun määrän
tähtiä.
Metodia voisi kutsua koodissa seuraavasti:
tulostaTahtia(5); tulostaTahtia(8);
Nyt tulostuksen tulisi olla seuraava:
***** ********
Tee metodi tulostaMerkkeja
, joka tulostaa halutun määrän
haluttua merkkiä.
Metodia voisi kutsua koodissa seuraavasti:
tulostaMerkkeja(5, 'F'); tulostaMerkkeja(8, '#');
Nyt tulostuksen tulisi olla seuraava:
FFFFF ########
Tee metodi alleviivaa
, joka tulostaa tekstin alleviivattuna.
Tämä tarkoittaa, että tekstin alapuolelle tulee yhtä monta kertaa merkki
=
kuin tekstissä on merkkejä.
Metodia voisi kutsua koodissa seuraavasti:
alleviivaa("Tervetuloa!"); alleviivaa("Kappas kippis!"); alleviivaa("Hei hei!");
Nyt tulostuksen tulisi olla seuraava:
Tervetuloa! =========== Kappas kippis! ============== Hei hei! ========
Tee metodi kehysta
, joka tulostaa tekstin kehystettynä. Tämä
tarkoittaa, että tekstin ympärille tulee kehys merkeistä *
seuraavan esimerkin mukaisesti.
Metodia voisi kutsua koodissa seuraavasti:
kehysta("Tervetuloa!"); kehysta("Kappas kippis!"); kehysta("Hei hei!");
Nyt tulostuksen tulisi olla seuraava:
*************** * Tervetuloa! * *************** ****************** * Kappas kippis! * ****************** ************ * Hei hei! * ************
Tee metodi vastaluku
, joka laskee luvun vastaluvun. Tämä
tarkoittaa, että positiivinen luku muuttuu negatiiviseksi ja päinvastoin.
Metodia voisi kutsua koodissa seuraavasti:
System.out.print("Anna luku: "); int luku = Integer.parseInt(input.nextLine()); System.out.println("Vastaluku: " + vastaluku(luku));
Nyt ohjelman toiminnan tulisi olla seuraava:
Anna luku: 5 Vastaluku: -5
Anna luku: -2 Vastaluku: 2
Tee metodi keskiarvo
, joka laskee kahden luvun keskiarvon.
Metodia voisi kutsua koodissa seuraavasti:
System.out.print("Anna luku 1: "); int luku1 = Integer.parseInt(input.nextLine()); System.out.print("Anna luku 2: "); int luku2 = Integer.parseInt(input.nextLine()); System.out.println("Keskiarvo: " + keskiarvo(luku1, luku2));
Nyt ohjelman toiminnan tulisi olla seuraava:
Anna luku 1: 5 Anna luku 2: 8 Keskiarvo: 6.5
Tee metodi listanSumma
, joka laskee
listalla olevien lukujen summan.
Metodia voisi kutsua koodissa seuraavasti:
ArrayList<Integer> luvut = new ArrayList<Integer>(); luvut.add(3); luvut.add(8); luvut.add(1); System.out.println("Summa: " + listanSumma(luvut));
Nyt tulostuksen tulisi olla seuraava:
Summa: 12
Tee metodi listanKeskiarvo
, joka laskee
listalla olevien lukujen keskiarvon.
Metodia voisi kutsua koodissa seuraavasti:
ArrayList<Integer> luvut = new ArrayList<Integer>(); luvut.add(3); luvut.add(8); luvut.add(1); luvut.add(2); System.out.println("Keskiarvo: " + listanKeskiarvo(luvut));
Nyt tulostuksen tulisi olla seuraava:
Keskiarvo: 3.5
Tee metodi listanSuurin
, joka palauttaa listan suurimman
luvun.
Metodia voisi kutsua koodissa seuraavasti:
ArrayList<Integer> luvut = new ArrayList<Integer>(); luvut.add(3); luvut.add(8); luvut.add(1); System.out.println("Suurin: " + listanSuurin(luvut));
Nyt tulostuksen tulisi olla seuraava:
Suurin: 8
Tee metodi onPariton
, joka tarkistaa, onko listalla paritonta
lukua.
Metodia voisi kutsua koodissa seuraavasti:
ArrayList<Integer> luvut = new ArrayList<Integer>(); luvut.add(3); luvut.add(8); luvut.add(1); if (onPariton(luvut)) { System.out.println("Listalla on pariton luku."); } else { System.out.println("Listalla ei ole paritonta lukua."); }
Nyt tulostuksen tulisi olla seuraava:
Listalla on pariton luku.
Tee ohjelma, joka kysyy käyttäjältä sanan ja etsii kirjaimen, joka esiintyy monta kertaa, tai ilmoittaa, että sellaista ei ole. Ohjelman riittää ilmoittaa yksi kirjain, joka esiintyy monta kertaa.
Ohjelmasi tulisi toimia seuraavasti:
Anna sana: testi Kirjain t esiintyy monta kertaa.
Anna sana: arvoitus Mikään kirjain ei esiinny monta kertaa.
Tee ohjelma, joka kysyy käyttäjältä sanan ja osajonon pituuden. Sitten ohjelma tulostaa kaikki tällaiset osajonot.
Ohjelmasi tulisi toimia seuraavasti:
Anna sana: esimerkki Osajonon pituus: 4 Osajonot: esim sime imer merk erkk rkki
Anna sana: esimerkki Osajonon pituus: 7 Osajonot: esimerk simerkk imerkki
Tee ohjelma, joka kysyy käyttäjältä sanan ja laskee sen vokaalien ja konsonanttien määrän.
Ohjelmasi tulisi toimia seuraavasti:
Anna sana: esimerkki Vokaalit: 4 Konsonantit: 5
Tee ohjelma, joka heittää kolikkoa miljoona kertaa. Sitten ohjelma kertoo, kuinka monta kertaa tuli kruuna ja klaava.
Ohjelmasi tulostuksen tulisi olla esimerkiksi seuraava:
Kruuna: 500274 kpl Klaava: 499726 kpl
Tee ohjelma, joka muodostaa satunnaisen salasanan. Salasanan tulee muodostua kirjaimista a–z ja siinä tulee olla kahdeksan kirjainta.
Ohjelmasi tulostuksen tulisi olla esimerkiksi seuraava:
Salasana: zihoesov
Salasana: nypottsr
Tee ohjelma, joka arpoo koiralle nimen. Mahdollisia koiran nimiä kannattaa säilyttää listassa.
Ohjelmasi tulostuksen tulisi olla esimerkiksi seuraava:
Koiran nimi: Musti
Koiran nimi: Peni
Tee ohjelma, joka kysyy käyttäjältä luvun ja laskee sen numeroiden summan.
Esimerkiksi jos luku on 182, sen numeroiden summa on 1 + 8 + 2 = 11.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 182 Numeroiden summa: 11
Anna luku: 7263 Numeroiden summa: 18
Palindromiluku on luku, jonka numerot ovat samat alusta loppuun ja lopusta alkuun luettuna. Esimerkiksi luvut 1771 ja 82528 ovat palindromilukuja.
Tee ohjelma, joka tulostaa kaikki palindromiluvut välillä 1–1000000.
Ohjelmasi tulostuksen tulisi olla seuraava:
1 2 3 (paljon rivejä välissä) 997799 998899 999999
Alkuluku on kokonaisluku (yli 1), joka on jaollinen vain 1:llä ja itsellään. Esimerkiksi luvut 7 ja 19 ovat alkulukuja. Luku 15 ei ole alkuluku, koska 15 = 3 · 5.
Tee ohjelma, joka kysyy käyttäjältä luvun ja ilmoittaa, onko se alkuluku.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 19 Luku on alkuluku.
Anna luku: 15 Luku ei ole alkuluku.
Tee ohjelma, joka tulostaa kaikki alkuluvut välillä 1–1000000.
Ohjelmasi tulostuksen tulisi olla seuraava:
2 3 5 (paljon rivejä välissä) 999961 999979 999983
Toteuta merkkijonon kääntävä metodi kaanna
rekursiivisesti.
Metodia voisi kutsua koodissa seuraavasti:
System.out.println(kaanna("esimerkki"));
Nyt tulostuksen tulisi olla seuraava:
ikkremise
Tee ohjelma, joka kysyy käyttäjältä merkkijonon pituuden ja kirjainten määrän. Sitten ohjelma tulostaa kaikki tällaiset merkkijonot. Merkkijonot muodostuvat suuraakkosista esimerkkien mukaisesti.
Ohjelmasi tulisi toimia seuraavasti:
Pituus: 3 Kirjaimia: 2 AAA AAB ABA ABB BAA BAB BBA BBB
Pituus: 4 Kirjaimia: 5 AAAA AAAB AAAC (paljon rivejä välissä) EEEC EEED EEEE
Tee ohjelma, joka kysyy käyttäjältä luvun ja tulostaa sen suomeksi. Voit olettaa, että käyttäjän antama luku on välillä 0–999999999.
Ohjelmasi tulisi toimia seuraavasti:
Anna luku: 17 Suomeksi: seitsemäntoista
Anna luku: 2305 Suomeksi: kaksituhattakolmesataaviisi
Anna luku: 81014003 Suomeksi: kahdeksankymmentäyksimiljoonaaneljätoistatuhattakolme