Ohjelmoinnin perusteet, kurssikoe 18.10.2011 Tehtävän 1 malliratkaisu ja arvosteluperusteet Antti Laaksonen a. Taulukon alkio on yksi taulukossa oleva arvo. Taulukon indeksi on kokonaisluku, joka viittaa taulukossa olevaan alkioon. Jos taulukossa on n alkiota, ensimmäisen indeksi on 0 ja viimeisen indeksi on n-1. Seuraavassa taulukossa on neljä alkiota: int taulu[] = {5, 2, 8, 1}; Esimerkiksi taulukon indeksissä 1 on alkio 2. b. Metodin määrittelyssä kerrotaan metodin nimi, sen saamat parametrit, palautusarvon tyyppi sekä metodiin kuuluva koodi. Metodin kutsussa metodin parametrit saavat halutut arvot, metodin koodi suoritetaan ja mahdollinen palautusarvo palautuu metodin kutsukohtaan. Seuraavassa on metodin summa määrittely. Sille annetaan kaksi int-parametria, joiden summan metodi palauttaa. int summa(int a, int b) { return a + b; } Metodia voisi kutsua seuraavasti: int tulos = summa(1, 2); Nyt muuttujaan tulos ilmestyy summa 1 + 2 = 3. c. Muodollinen parametri on metodin määrittelyssä esiintyvä parametri. Todellinen parametri on metodin kutsussa annettava parametri. Esimerkiksi kohdassa b. metodin summa määrittelyssä parametrit a ja b ovat muodollisia parametreja. Metodin kutsussa parametrit 1 ja 2 taas ovat todellisia parametreja. d. Konstruktori on metodi, joka suoritetaan, kun luokasta luodaan olio. Tyypillisesti konstruktori antaa luokan sisäisille muuttujille sopivat lähtöarvot. Aksessori on metodi, jonka avulla voi tutkia ja muuttaa luokan sisäisiä muuttujia. Seuraavassa luokassa on konstruktori ja kolme aksessoria: public class Henkilo { String nimi; int ika; // konstuktori public Henkilo(String nimi) { this.nimi = nimi; this.ika = 0; } // aksessori (getteri) public String haeNimi() { return nimi; } // aksessori (getteri) public int haeIka() { return ika; } // aksessori (setteri) public void vanhene() { ika++; } } e. Javan alkeistyyppejä ovat esimerkiksi char, int ja double. Niissä muuttujan arvona on suoraan merkki tai lukuarvo. Javan viittaustyyppejä ovat kaikki luokkia vastaavat tyypit kuten taulukot ja String-luokka. Niissä muuttujassa on viittaus olioon. Alkeistyyppien ja viittaustyyppien eroa esittelee seuraava koodi: int a = 5; int b = a; b++; System.out.println(a); int[] x = {1, 2, 3}; int[] y = x; y[0] = 10; System.out.println(x[0]); Koodin tulostus on seuraava: 5 10 Muuttujat a ja b ovat alkeistyyppisiä, joten b:n muuttaminen ei muuta a:ta. Muuttujat x ja y ovat viittaustyyppisiä, joten x ja y viittaavat samaan taulukkoon, jolloin y:n muuttaminen muuttaa myös x:ää. Arvostelusta: Jokaisesta kohdasta sai 0-2 pistettä. 2 pistettä sai, jos vastauksesta tuli ilmi oleellinen asia eikä siinä ollut mainittavia virheitä. 1 pisteen sai, jos vastauksessa oli oikeita aineksia mutta puutteita tai virheitä.