Kertaustehtäviä osiin 1-7 liittyen
Tällä sivulla on kertaustehtäviä materiaalin osiin 1-7 liittyen. Kertaustehtävät saa ladattua TMC:stä kun osan 7 tehtävistä on tehty 75%. Tehtävät eivät missään nimessä kata kaikkea osien 1-7 sisällöstä, vaan ne toimivat lisäkertauksena kurssin aihepiiriin.
Kertaustehtävissä ei ole automaattisia testejä mukana, eli palauta niitä sitä mukaa kun saat tehtävän toimimaan toivotusti. Mieti myös minkälaisilla syötteillä tehtävän toimintaa kannattaa testata.
Kertaustehtävät eivät ole "pakollisia" -- ne toimivat ensisijaisesti kertaustehtävinä koetta varten. Kertaustehtävillä voi paikata tekemättä jääneitä ohjelmoinnin perusteiden tehtäviä. Kukin kertaustehtävä lasketaan yhdeksi pisteeksi; mikäli sinulta on jäänyt joltain viikolta esimerkiksi kaksi pistettä vajaaksi 75%:sta, saat paikattua tuon tekemällä kaksi kertaustehtävää.
Toisto- ja ehtolauseet
Toteuta ohjelma, joka kysyy käyttäjältä lukua, ja tulostaa sen kerrottuna yhdellä, kahdella jne seuraavasti.
Luku: 2 1 * 2 = 2 2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10 6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18 10 * 2 = 20
Luku: 7 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63 10 * 7 = 70
Tee ohjelma, joka lukee käyttäjältä lukuja, ja tulostaa sen jälkeen kolmella jaollisten syötteiden summan. Ohjelman lopettaa lukemisen kun käyttäjä syöttää tyhjän merkkijonon.
Luku: 3 Luku: 5 Luku: 27 Luku: 3301 Luku: 3 Luku: Kolmella jaollisten lukujen summa: 33
Luku: 1 Luku: 2 Luku: 5 Luku: Ei kolmella jaollisia lukuja
Tee ohjelma, joka lukee käyttäjältä luvun, ja pyöristää pyöristää sen ylöspäin lähimpään viidellä jaolliseen lukuun.
Luku: 3 Pyöristys: 5
Luku: 5 Pyöristys: 5
Luku: 27 Pyöristys: 30
Kirjoita ohjelma, joka kysyy käyttäjältä vuosilukua, ja tulostaa sen jälkeen vuosilukua seuraavat 5 karkausvuotta. Karkausvuoden laskemiseen löytyy ohjeita Wikipediasta.
Syötä vuosiluku: 1999 Karkausvuodet: 2000, 2004, 2008, 2012, 2016
Syötä vuosiluku: 2016 Karkausvuodet: 2016, 2020, 2024, 2028, 2032
Syötä vuosiluku: 2084 Karkausvuodet: 2084, 2088, 2092, 2096, 2104
Fibonaccin luvut ovat lukuja, jotka ovat aina kahden edeltävän luvun summa. Ensimmäiset kaksi lukua ovat 1 ja 1, jota seuraa luvut 2, 3, 5, 8 jne. Toteuta ohjelma, joka tulostaa halutun määrän Fibonaccin lukuja.
Montako lukua tulostetaan: 5 1, 1, 2, 3, 5
Montako lukua tulostetaan: 11 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
McDonaldsissa voi ostaa nugetteja neljän, kuuden, yhdeksän ja kahdenkymmenen nugetin pakkauksissa. Kirjoita ohjelma, jolle annetaan luku, ja joka kertoo käyttäjälle onko annettua määrää mahdollista ostaa.
Nugetteja: 3 Ostaminen ei ole mahdollista
Nugetteja: 8 Ostaminen on mahdollista
Nugetteja: 9 Ostaminen on mahdollista
Nugetteja: 11 Ostaminen ei ole mahdollista
Nugetteja: 24 Ostaminen on mahdollista
Kirjoita ohjelma, joka kysyy käyttäjältä suorakulmion leveyttä ja korkeutta, ja tulostaa x-merkeistä muodostuvan suorakulmion.
Leveys: 4 Korkeus: 2 xxxx xxxx
Leveys: 4 Korkeus: 3 xxxx xxxx xxxx
Kirjoita ohjelma, joka kysyy käyttäjältä maton leveyttä ja korkeutta, ja tulostaa x-merkeistä koostuvan maton, jonka joka toisella rivillä joka toinen merkki on o.
Leveys: 4 Korkeus: 2 xxxx xoxo
Leveys: 5 Korkeus: 5 xxxxx xoxox xxxxx xoxox xxxxx
Kirjoita ohjelma, joka kysyy käyttäjältä maton leveyttä ja korkeutta, ja tulostaa maton seuraavia sääntöjä noudattaen. Säännöt ovat tärkeysjärjestyksessä, ja tärkeintä sääntöä tulee noudattaa aina ensin:
- joka toisella rivillä joka toinen merkki on o
- joka kolmannella rivillä joka kolmas merkki on z
- joka viidennellä rivillä joka viides merkki on s
- kaikki muut merkit ovat x-muotoisia
Leveys: 5 Korkeus: 3 xxxxx xoxox xxzxx
Leveys: 7 Korkeus: 7 xxxxxxx xoxoxox xxzxxzx xoxoxox xxxxsxx xozoxox xxxxxxx
Tee ohjelma, joka kysyy salmiakin korkeutta, jonka jälkeen se tulostaa "salmiakin".
Korkeus: 1 *
Korkeus: 5 * * * * * * * *
Korkeus: 6 * * * * * * * * * *
Korkeus: 7 * * * * * * * * * * * *
Metodeja ja listoja
Tee metodi public static boolean esiintyykoListallaKerran(ArrayList<Integer> luvut, int luku)
, joka palauttaa arvon true
jos luku esiintyy listalla kerran, muuten arvon false
.
Tee metodi public static boolean esiintyykoListallaKolmesti(ArrayList<Integer> luvut, int luku)
, joka palauttaa arvon true
jos luku esiintyy listalla tasan kolme kertaa, muuten arvon false
.
Tee metodi public static boolean loytyykoLuvutValilta(ArrayList<Integer> luvut, int alku, int loppu)
, joka palauttaa arvon true
jos listalla löytyy kaikki luvut lukujen alku ja loppu väliltä, muuten metodi palauttaa arvon false
.
Merkkijonojen käsittelyä
Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonoa, ja tulostaa sen jälkeen merkkijonon jokaisen merkin erikseen.
Merkkijono: hello world! h e l l o w o r l d !
Kirjoita ohjelma, joka kysyy käyttäjältä syötettä ja kertoo sen jälkeen onko syöte palindromi.
Syöte: saippuakauppias Syöte on palindromi
Syöte: nakkikauppias Syöte ei ole palindromi
Parittoman pituisissa palindromeissa on jakajamerkki. Toteuta ohjelma, joka selvittää palindromin jakajamerkin.
Syöte: saippuakauppias Palindromin jakajamerkki on k
Syöte: saippuakivikauppias Palindromin jakajamerkki on v
Syöte: aa Ei jakajamerkkiä
Syöte: nauris Ei palindromi
Oliot
Toteuta luokka Piste
, jolla on oliomuuttujat double x
ja double y
, sopiva konstruktori, sekä metodit public double getX()
ja public double getY()
. Toteuta tämän jälkeen luokalle metodi public double etaisyys(Piste toinen)
, joka laskee pisteen etäisyyden toisesta pisteestä. Kahden pisteen etäisyyden laskemiseen löytyy esimerkiksi apua Wikipediasta.
Toteuta luokka Ympyra
, jolla on oliomuuttujat double x
, double y
sekä double sade
. Muuttuja x kuvaa ympyrän keskipisteen x-koordinaattia, muuttuja y ympyrän keskipisteen y-koordinaattia sekä sade ympyrän sädettä. Toteuta tämän jälkeen metodi public boolean osuuko(Ympyra toinen)
, joka palauttaa true jos ympyrä osuu toiseen ympyrään. Edellisestä tehtävästä on tässä hyötyä.
Olioita listalla
Ohjelmoi luokka Tehtava
. Tehtavalla tulee olla tieto tehtävästä (merkkijono) sekä tieto siitä, onko tehtävä tehty. Luokan tulee toimia seuraavasti.
Tehtava t = new Tehtava("Korjaa kokeet");
System.out.println(t);
t.asetaTehdyksi();
System.out.println(t);
t.asetaTekemattomaksi();
System.out.println(t);
Korjaa kokeet (ei tehty) Korjaa kokeet (tehty) Korjaa kokeet (ei tehty)
Toteuta tämän jälkeen luokka Tehtavalista
, joka toimii seuraavasti.
Tehtavalista tl = new Tehtavalista();
tl.lisaa("Käy kaupassa");
System.out.println(tl);
tl.asetaTehdyksi("Käy kaupassa");
System.out.println(tl);
Tehtava t = tl.annaTehtava("Käy kaupassa");
t.asetaTekemattomaksi();
tl.lisaa("Imuroi");
System.out.println(tl);
Tehtävät * Käy kaupassa (ei tehty) Tehtävät * Käy kaupassa (tehty) Tehtävät * Käy kaupassa (ei tehty) * Imuroi (ei tehty)
Toteuta luokka Palaute
, joka saa konstruktorin parametrina tekstikuvauksen sekä välillä 1-5 olevan arvosanan. Luokan tulee toimia esimerkiksi seuraavasti.
Palaute p = new Palaute("Kiitti letuista", 2);
System.out.println(p)
(2/5) Kiitti letuista
Kirjoita tämän jälkeen luokka Palauteanalyytikko
, jolle voidaan lisätä palautteita. Palauteanalyytikon tulee tarjota seuraavat metodit:
-
public void add(Palaute p)
-- lisää palautteen analysoitavaksi -
public double palautteidenKeskiarvo()
-- laskee palautteiden keskiarvon ja palauttaa sen. Mikäli palautteita ei ole, palauta arvo -1 -
public ArrayList<Palaute> palautteetValilta(int alku, int loppu)
-- palauttaa kaikki palautteet, joiden arvosana on annetulla välillä -
public String toString()
-- tulostaa kaikki palautteet
Palauteanalyytikko pa = new Palauteanalyytikko();
pa.add(new Palaute("Kiitti letuista", 2));
pa.add(new Palaute(“Kiitti letuista ja hillosta”, 4));
System.out.println(pa.palautteidenKeskiarvo());
System.out.println();
System.out.println(pa.palautteetValilta(3, 5));
System.out.println();
System.out.println(pa);
3.0 [(4/5) Kiitti letuista ja hilloista] Palautteet: * (2/5) Kiitti letuista * (4/5) Kiitti letuista ja hillosta
Hajautustaulu
Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonoa, ja tulostaa sen jälkeen merkkijonon morsekoodina. Morseaakkoset löytyvät wikipediasta: https://fi.wikipedia.org/wiki/S%C3%A4hk%C3%B6tys
Sana: hei .... . ..
Sana: hah .... .- ....
Toteuta ensin luokka Suorakulmio
, joka saa konstruktorin parametrina x-koordinaatin, y-koordinaatin, leveyden ja korkeuden. Tee tämän jälkeen luokka Ruudukko
, johon suorakulmioita voi lisätä, ja joka piirtää kaikki suorakulmiot ruudukossa. Ohjelman tulee toimia seuraavasti:
Ruudukko r = new Ruudukko();
r.lisaa(new Suorakulmio(0, 0, 2, 3));
System.out.println(r);
xx xx xx
Ruudukko r = new Ruudukko();
r.lisaa(new Suorakulmio(0, 0, 2, 3));
r.lisaa(new Suorakulmio(3, 2, 4, 2));
System.out.println(r);
xx xx xx xxxx xxxx
Ruudukko r = new Ruudukko();
r.lisaa(new Suorakulmio(0, 0, 2, 3));
r.lisaa(new Suorakulmio(3, 2, 4, 2));
r.lisaa(new Suorakulmio(5, 0, 1, 1));
System.out.println(r);
xx x xx xx xxxx xxxx