Takaisin kurssin pääsivulle

Kurssikoe 9.6.

Tällä sivulla ovat kurssikokeen 9.6. tehtävät ratkaisuineen. Tehtävät voi usein ratkaista monella eri tavalla, jotka saattavat poiketa paljonkin malliratkaisuista.

Tehtävä 1

Tee ohjelma, joka tulostaa kokonaisluvut 1–100. Mutta jos luku on jaollinen 3:lla, ohjelman tulee tulostaa sen tilalla "Fizz", ja jos luku on jaollinen 5:llä, ohjelman tulee tulostaa sen tilalla "Buzz". Jos luku on jaollinen sekä 3:lla että 5:llä, ohjelman tulee tulostaa sen tilalla "FizzBuzz".

Ohjelmasi tulostuksen tulisi alkaa seuraavasti:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
...

Ratkaisu

public class FizzBuzz {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            if (i % 3 != 0 && i % 5 != 0) {
                System.out.print(i);
            }
            if (i % 3 == 0) {
                System.out.print("Fizz");
            }
            if (i % 5 == 0) {
                System.out.print("Buzz");
            }
            System.out.println();
        }
    }
}

Tehtävä 2

Tee ohjelma, joka tulostaa luvuista 0 ja 1 muodostuvan "shakkiruudukon" seuraavien esimerkkien mukaisesti. Ohjelma kysyy ensin käyttäjältä ruudukon koon.

Esimerkki 1

Anna koko: 5
01010
10101
01010
10101
01010

Esimerkki 2

Anna koko: 8
01010101
10101010
01010101
10101010
01010101
10101010
01010101
10101010

Ratkaisu

import java.util.*;

public class Shakkiruudukko {
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
	System.out.print("Anna koko: ");
	int koko = Integer.parseInt(input.nextLine());
        for (int i = 0; i < koko; i++) {
            for (int j = 0; j < koko; j++) {
                System.out.print((i + j) % 2);
            }
            System.out.println();
        }
    }
}

Tehtävä 3

Tee metodi keskiarvo, jolle annetaan taulukko lukuja ja joka palauttaa lukujen keskiarvon. Metodin rungon tulisi olla seuraava:

public static double keskiarvo(int[] luvu) {
    ...
}

Seuraava koodi testaa metodin toimintaa:

int[] data = {3, 2, 8, 8, 1};
System.out.println(keskiarvo(data));

Koodin tulostuksen tulisi olla seuraava:

4.4

Ratkaisu

public static double keskiarvo(int[] luvut) {
    int summa = 0;
    for (int i = 0; i < luvut.length; i++) {
        summa += luvut[i];
    }
    return (double)summa / luvut.length;
}

Tehtävä 4

Tee metodi hassuTulostus, jolle annetaan parametrina positiivinen kokonaisluku n. Sitten metodi tulostaa samalle riville luvut 1, n, 2, n - 1, 3, jne. keskikohtaan asti. Esimerkit selventävät, kuinka metodin on tarkoitus toimia. Metodin rungon tulisi olla seuraava:

public static void hassuTulostus(int luku) {
    ...
}

Seuraava koodi testaa metodin toimintaa:

hassuTulostus(5);
hassuTulostus(8);
hassuTulostus(11);

Koodin tulostuksen tulisi olla seuraava:

1 5 2 4 3
1 8 2 7 3 6 4 5
1 11 2 10 3 9 4 8 5 7 6

Ratkaisu

public static void hassuTulostus(int luku) {
    int ala = 1;
    int yla = luku;
    while (ala < yla) {
        System.out.print(ala + " " + yla + " ");
        ala++;
        yla--;
    }
    if (ala == yla) {
        System.out.print(ala);
    }
    System.out.println();
}

Tehtävä 5

Selosta lyhyesti, kuinka peräkkäishaku ja binäärihaku toimivat. Mainitse molemmista algoritmeista jokin hyvä ja jokin huono puoli.

Ratkaisu

Peräkkäishaku käy taulukon kaikki alkiot läpi alusta loppuun. Jos jossain kohdassa on haettava alkio, algoritmi pysähtyy. Jos algoritmi pääsee taulukon loppuun, haettavaa alkiota ei ole taulukossa.

Binäärihaku olettaa, että taulukko on järjestyksessä. Se tarkistaa ensin taulukon keskellä olevan alkion ja siirtyy vasempaan tai oikeaan osaan sen mukaan, onko keskellä oleva alkio suurempi vai pienempi kuin haettava alkio. Samanlainen hakualueen puolitus jatkuu, kunnes haettava alkio löytyy. Jos hakualue jää tyhjäksi, haettavaa alkiota ei ole taulukossa.

Peräkkäishaun hyviä puolia ovat, että se on helppo toteuttaa ja taulukon alkiot saavat olla missä tahansa järjestyksessä. Peräkkäishaun huono puoli on, että se on hidas, jos taulukko on suuri.

Binäärihaun hyvä puoli on, että se on tehokas suurillakin taulukoilla. Binäärihaun huonoja puolia ovat, että se on vaikea toteuttaa ja taulukon alkioiden on pakko olla järjestyksessä.

Tehtävä 6

Kerro lyhyesti boolean-tyypin käytöstä Javassa. Kirjoita lyhyt ohjelma, jossa on käytössä boolean-tyyppinen muuttuja tai metodi.

Ratkaisu

Javan boolean-tyypillä on kaksi mahdollista arvoa, true ja false. Sitä voi käyttää itsenäisenä muuttujatyyppinä, ja lisäksi if-rakenteessa ja silmukoissa olevat ehdot ovat boolean-tyyppisiä.

Seuraavassa ohjelmassa metodi parillinen palauttaa boolean-arvona, onko luku parillinen.

public class Parillisuus {
    public static Scanner input = new Scanner(System.in);

    public static boolean parillinen(int luku) {
        return luku % 2 == 0;
    }

    public static void main(String[] args) {
        System.out.print("Anna luku: ");
        int luku = Integer.parseInt(input.nextLine());
        if (parillinen(luku)) {
            System.out.println("Luku on parillinen.");
        } else {
            System.out.println("Luku on parilliton.");	
        }
    }
}

Takaisin kurssin pääsivulle