Tenttiwiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
ohjelmoinnin_perusteet_mooc_5_op [2015/02/11 12:27]
128.214.99.12 p
ohjelmoinnin_perusteet_mooc_5_op [2019/06/12 22:35] (current)
Line 1: Line 1:
 +====== Ohjelmoinnin perusteet (MOOC, 5 op) ======
 +==== 23.1.2015 ====
 +
 +Voit lyhentää komennon System.out.println kirjoittamalla sout ja käyttää muitakin lyhenteitä,​ mikäli selität lyhenteen jokaisessa paperissa, jossa sitä käytät. Voit olettaa kaikissa tehtävissä ohjelman rungon olevan sama, kuin tehtävässä 2.
 +
 +   * Tehtävä 1. (6 p) Teoriaa. Vastaa jokaiseen kohtaan lyhyesti ja ytimekkäästi,​ ja anna jokaisesta kohdasta myös konkreettinen esimerkki. Koko tehtävän vastauksen pituudeksi riittää noin kaksi sivua.
 +    * Mitä ovat olio ja luokka? Miten oliot liittyvät luokkiin ja miten luokat liittyvät olioihin?
 +    * Mikä on staattinen metodi?
 +    * Mitä tarkoitetaan metodin ja konstruktorin kuormittamisella?​
 +
 +   * Tehtävä 2. (12 p) Ohjelmoinnin perusasiat
 +Tämän ja seuraavan tehtävän kohdissa voit olettaa, että ohjelman runko on seuraava:
 +
 +  import java.util.Scanner;​
 +  public class Ohjelma {
 +      public static void main(String[] args) {
 +          Scanner lukija = new Scanner(System.in);​
 +        ​
 +          // int luku = Integer.parseInt( lukija.nextLine() );
 +          // String rivi = lukija.nextLine();​
 +      }
 +  }
 +
 +     * Tee ohjelma joka lukee käyttäjältä positiivisen kokonaisluvun ja pyöristää sen seuraavaan kymmenellä jaolliseen lukuun. Esimerkkejä:​
 +
 +  Anna numero: 7
 +  Pyöristetty:​ 10
 +  ​
 +  Anna numero: 41
 +  Pyöristetty:​ 50
 +  ​
 +  Anna numero: 20
 +  Pyöristetty:​ 20
 +
 +     * Tee ohjelma, joka lukee positiivisen kokonaisluvun käyttäjältä ja tulostaa luvut yhdestä annettuun lukuun portaikkona. Viimeinen rivi voi tulostua vain osittain. Esimerkkejä:​
 +
 +  Anna luku: 10
 +  1
 +  2 3
 +  4 5 6
 +  7 8 9 10
 +  ​
 +  Anna luku: 23
 +  1
 +  2 3
 +  4 5 6
 +  7 8 9 10
 +  11 12 13 14 15
 +  16 17 18 19 20 21
 +  22 23
 +
 +     * Tee ohjelma joka lukee annetun määrän verran lukuja käyttäjältä. Voit olettaa, että vain yksi luku esiintyy vain kerran ja muut toistuvat. Tehtävänäsi on tunnnistaa vain kerran annettu luku. Esimerkkejä:​
 +
 +  Kuinka monta? 5
 +  Anna lukuja:
 +  2
 +  3
 +  2
 +  2
 +  2
 +  Tulos: 3
 +  ​
 +  Kuinka monta? 8
 +  Anna lukuja:
 +  7
 +  3
 +  9
 +  3
 +  3
 +  8
 +  7
 +  9
 +  Tulos: 8
 +
 +   * Tehtävä 3. (12 p) Tehtävässä tehdään oluiden ja panimoiden tietoja käsittelevä sovellus.
 +    * (5 p) Ohjelmoi ensin luokka Olut. Oluella tulee olla oliomuuttujat jotka tallentavat oluen nimen, tyylin ja lakoholiprosentin,​ sekä tiedon siitä onko olut tuatnnossa vai ei. Luokan tulee toimia seuraavasti:​
 +
 +  public class Olut {
 +      public static void main (String[] args) {
 +          Olut olut = new Olut("​Karhu",​ "​Lager",​ 4.7);
 +          System.out.println(olut);​
 +          olut.poistaTuotannosta();​
 +          System.out.println(olut);​
 +      }
 +  }
 +    ​
 +Tulostuu:
 +
 +  Karhu (Lager) 4.7% tuotannossa:​ on
 +  Karhu (Lager) 4.7% tuotannossa:​ ei
 +  ​
 +Tee siis luokalle
 +    * Konstruktori,​ jolla asetetaan oluen nimi, tyyli ja alkoholiprosentti. Jokainen olut on luontihetkellä tuotannossa.
 +    * Metodi toString(), joka palauttaa oluen tekstiesityksen (yo. esimerkin tapaan muotoiltuna)  ​
 +    * Metodi poistaTuotannosta(),​ jonka kutsumisen jälkeen olut ei ole enää tuotannossa.
 +Edellisten lisäksi oluella tulee olla metodit ​
 +    * onTuotannossa(),​ joka palauttaa true jos olut on tuotannossa ja muuten false
 +    * getTyyli(), joka palauttaa oluen tyylin
 +    * getNimi(), joka palauttaa olen nimen
 +
 +   * (7 p) Ohjelmoi luokka Panimo.
 +Panimolla on nimi (joka asetetaan konstruktorissa) ja panimoon liittyy joukko Olut-olioita,​ jotka panimo tallettaa ArrayList-tyyppiseen oliomuuttujaan. Ohjelmoi luokalle seuraavat metodit:
 +    * public void uusiOlut(String nimi, String tyyli, double prosentti), luo panimolle parametrien tiedot omaavan oluen.
 +    * public void tiedot() tulostaa panimon tiedot allaolevan esimerkin mukaisesti muotoiltuna.
 +    * public void poistaTuotannosta(String oluenNimi), poistaa parametrina määritellyn nimisen oluen tuotannosta.
 +Seuraava pääohjelma havainnollistaa panimon käyttöä:
 +
 +  public static void main(String[] args){
 +      Panimo panimo = new Panimo("​Mikkeller"​);​
 +      panimo.uusiOlut("​American Dream",​ "​Pils",​ 4.2);
 +      panimo.uusiOlut("​Dark Horizon",​ "​Stout",​ 15);
 +      panimo.uusiOlut("​Tjekket Pils", "​Pils",​ 4.7;
 +      ​
 +      panimo.tiedot();​
 +      ​
 +      panimo.uusiOlut("​Santa'​s Little Helper",​ "​Porter",​ 9);
 +      panimo.poistaTuotannosta("​Dark Horizon"​);​
 +      ​
 +      System.out.println(""​);​
 +      panimo.tiedot();​
 +  }
 +
 +Ohjelman tulostus oikein toteutetuilla luokilla on:
 +
 +  Mikkeller
 +  Oluita yhteensä 3, joista tuotannossa 3
 +  Valmistetut tyylit: Pils Stout
 +  Oluet:
 +   ​American Dream (Pils) 4.2% tuotannossa:​ on
 +   Dark Horizon (Stout) 15.0% tuotannossa:​ on
 +   ​Tjekket Pils (Pils) 4.7% tuotannossa:​ on
 +  ​
 +  Mikkeller
 +  Oluita yhteensä 4, joista tuotannossa 3
 +  Valmistetut tyylit: Pils Stout Porter
 +  Oluet:
 +   ​American Dream (Pils) 4.2% tuotannossa:​ on
 +   Dark Horizon (Stout) 15.0% tuotannossa:​ ei
 +   ​Tjekket Pils (Pils) 4.7% tuotannossa:​ on
 +   ​Santa'​s Little Helper (Porter) 9.0% tuotannossa:​ on
 +
 +ArrayList:n käyttöohje:​
 +    * Konstruktori public ArrayList<​T>​() luo uuden ArrayList-olion,​ jossa listan alkiot ovat tyyppiä T.
 +    * public boolean add(T x) lisää listan loppuun olion x.
 +    * public int get(int i) palauttaa listan alkion kohdasta i.
 +    * import-rivi on import java.util.ArrayList
 +
 +järjestettyjen listan osien välissä ei saa olla rivivaihtoja. jos sisään tekee toisen listan, pitää se sisentää, eli jokaisen rivin eteen lyödään kaksi välilyöntiä,​ niinkuin yllä.