Ohjelmoinnin perusteet, kurssikoe

Samankaltaiset tiedostot
Ohjelmoinnin jatkokurssi, kurssikoe

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Listarakenne (ArrayList-luokka)

Olio-ohjelmointi Javalla

Rajapinta (interface)

Metodien tekeminen Javalla

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Java kahdessa tunnissa. Jyry Suvilehto

Luokan sisällä on lista

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Java-kielen perusteita

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

ITKP102 Ohjelmointi 1 (6 op)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

public static void main (String [] args)

Mikä yhteyssuhde on?

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

Java-kielen perusteita

Java-kielen perusteet

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Javan GUI Scratchaajalle

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointi 2 / 2010 Välikoe / 26.3

7. Näytölle tulostaminen 7.1

8. Näppäimistöltä lukeminen 8.1

Tietorakenteet, laskuharjoitus 7,

YHTEYSSUHDE (assosiation)

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Periytyminen (inheritance)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Java-kielen perusteet

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

1 Tehtävän kuvaus ja analysointi

1. Omat operaatiot 1.1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2 / 2011 Välikoe / 25.3

ITKP102 Ohjelmointi 1 (6 op)

8. Näppäimistöltä lukeminen 8.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmointi 2, välikoe

11. Javan toistorakenteet 11.1

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

12. Näppäimistöltä lukeminen 12.1

Java-kielen perusteita

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

14. Poikkeukset 14.1

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Lista luokan sisällä

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

9. Periytyminen Javassa 9.1

12. Javan toistorakenteet 12.1

Javan perusteita. Janne Käki

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Ohjelmointityö 3. Mikko Laamanen

Ohjelmistotekniikan menetelmät, koe

Java-kielen perusteet

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

9. Periytyminen Javassa 9.1

Ohjelmoinnin perusteet Y Python

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

ITKP102 Ohjelmointi 1 (6 op)

Tietorakenteet (syksy 2013)

Taulukoiden käsittely Javalla

Interaktiivinen tarinankerronta

12. Javan toistorakenteet 12.1

Sisältö. 22. Taulukot. Yleistä. Yleistä

17. Javan omat luokat 17.1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

13. Loogiset operaatiot 13.1

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Mitä poikkeuskäsittely tarkoittaa?

Javan GUI Scratchaajalle

58131 Tietorakenteet ja algoritmit (syksy 2015)

Luokan muodostimet (Constructors)

Tietokannat II -kurssin harjoitustyö

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Sisältö. 2. Taulukot. Yleistä. Yleistä

Ohjelmoinnin perusteet Y Python

Ehto- ja toistolauseet

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Transkriptio:

Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin pinoihin. 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ä, että ohjelman runko on seuraava: import java.util.scanner; public class Ohjelma { Scanner lukija = new Scanner(System.in); // int luku = Integer.parseInt( lukija.nextline() ); // String rivi = lukija.nextline(); 1. Käsitteistö ja koodin luku (9p) (a) (6p) Vastaa jokaiseen kohtaan lyhyesti ja ytimekkäästi. Anna myös jokaisessa kohdassa konkreettinen esimerkki. Koko tehtävän vastauksen pituudeksi riittää noin kaksi sivua. i. Mikä on muuttuja? Mitä tarkoitetaan muuttujan tyypillä? Miten alkeis- ja viittaustyyppiset muuttujat eroavat toisistaan? Anna muutama esimerkki alkeis- ja viittaustyyppisistä muuttujista. (2p) ii. Mikä on metodi? Miten ja mihin metodeja käytetään? (2p) iii. Mitä ovat olio ja luokka? Mikä on olion ja luokan välinen suhde? (2p) (b) (3p) Käytössäsi on seuraava lähdekoodi. public class Auto { private int bensaa; private String merkki; public Auto(String merkki) { this.bensaa = 0; this.merkki = merkki; public Auto(String merkki, int bensaa){ this.bensaa = bensaa; this.merkki = merkki; public int tankkaa(int litraa){ this.bensaa += litraa; public void aja() { if (this.bensaa > 0) { this.bensaa--; System.out.println( this.merkki + "..."); else { System.out.println( this.merkki + " ei bensaa..."); 1

Selitä mitä allaolevassa autosimulaattorikoodissa tapahtuu kun se suoritetaan. Kerro rivi riviltä mikä muuttuu, miten, missä, milloin, ja miksi. Voit myös piirtää kuvia havainnollistamaan ohjelman suoritusta. Huom: saadaksesi tehtävästä pisteitä, tulee sinun käyttää ohjelmointikäsitteistä niiden "oikeita nimiä": luokka, olio, oliouuttuja, muuttuja, metodi, parametri, paluuarvo, staattinen metodi. Sopiva pituus tehtävän vastaukselle on noin 1 sivu. public class Autosimulaattori { public static void main(string[] argh) { Auto auto1 = new Auto("bmw"); Auto auto2 = new Auto("lada"); vierailehuoltsikalla(auto1); auto1.aja(); auto1.aja(); auto2.aja(); Auto auto3 = new Auto("mersu", 1000); auto3.aja(); public static void vierailehuoltsikalla(auto auto) { auto.tankkaa(10); 2. Ohjelmoinnin perusasiat (6p) (a) (3p) Tee ohjelma, joka tulostaa toistolausetta (esim. while tai for) käyttäen kaikki 8:lla jaolliset kokonaisluvut aloittaen luvusta 999 ja päätyen lukuun 1. Tulostuksen tulee tapahtua siten, että jokaiselle riville tulostetetaan 4 lukua, tämän jälkeen tulostus alkaa seuraavalta riviltä. Luvut tulee tulostaa sarakkeittain siten, että kunkin sarakkeen lukujen viimeisen numeron tulee sijaita luvun koosta siippumatta samalla kohtaa. Ohjelman tulostuksen tulee näyttää täsmälleen seuraavalta: 992 984 976 968 960 952 944 936 928 920 912 904 896 888 880 872 (paljon rivejä välissä) 64 56 48 40 32 24 16 8 (b) (3p) Tee ohjelma, joka lukee käyttäjän syöttämiä kokonaislukuja kunnes käyttäjä syöttää luvun 0. Luettuaan luvut, ohjelma ilmoittaa suurimman syötetyn luvun ja suurimman peräkkäisten lukujen erotuksen. Esimerkki: Syötä lukuja, 0 lopettaa: 5 3 7-4 4 0 2

suurin luku: 7 suurin erotus: 11 Esimerkissä luku 7 on suurin luku, ja suurin peräkkäisten lukujen erotus on lukujen 7 ja -4 välillä (7 4 = 11). Huomioi, että ohjelman tulee jättää huomioimatta luku 0. Esimerkki: Syötä lukuja, 0 lopettaa: -5-7 -2-9 0 suurin luku: -2 suurin erotus: 7 Esimerkissä luku -2 on suurin luku, suurin peräkkäisten lukujen erotus 7 on lukujen -2 ja -9 välillä ( 2 9 = 7). 3. Metodeja (5 p) (a) (3p) Tee metodi public static void tulostavali(int raja1, int raja2) joka tulostaa luvuista lukuväliltä 1-99 nousevassa järjestyksessa ne, jotka eivät ole parametrien määrittelemällä välillä. Voit olettaa, että ensimmäinen parametri on aina pienempi tai yhtäsuuri kuin toinen parametri. Eli esim. jos kutsutaan tulostavali(3, 98) tulostuu 1 2 99 ja jos kutsutaan tulostavali(5, 90) tulostuu 1 2 3 4 91 92 93 94 95 96 97 98 99 (b) (2p) Tee metodi public static int parillistensumma(int[] luvut) joka palauttaa parametrina annetun taulukon parillisten lukujen summan. Esim. Kun metodi saa parametrina taulukon [1,2,3,4,5], se palauttaa arvon 6. Tee myös pääohjelma, joka demonstroi metodin käyttöä. Huom: jos et osaa käyttää taulukkoja, voit tehdä metodista version public static int parillistensumma(arraylist<integer> luvut) jossa metodi saa parametrina luvut sisältävän ArrayList:in. 3

4. (10p) Tehtävässä tehdään bissejen ja kapakoiden tietoja käsittelevä sovellus. (a) (4p) Tee ensin luokka Bisse. Bissellä tulee olla oliomuuttujat jotka tallentavat bissen nimen, hinnan ja tilavuuden sekä tiedon siitä onko bisse valikoimassa. Luokan tulee toimia seuraavasti: Bisse bisse = new Bisse("Karhu", 3.0, 0.47); System.out.println(bisse); bisse.poistavalikoimasta(); System.out.println(bisse); Tulostuu: Karhu, 0.47L, valikoimassa: on, 3.00 euroa Karhu, 0.47L, valikoimassa: ei, 3.00 euroa Tee siis luokalle konstruktori, jolla asetetaan bissen nimi, hinta ja tilavuus. Jokaista bisseä on luontihetkellä varastossa. metodi tostring(), joka palauttaa bissen tekstiesityksen (yo. esimerkin tapaan muotoiltuna) metodi poistavalikoimastsa(), jonka kutsumisen jälkeen bisseä ei ole enää valikoimassa. Edellisten lisäksi oluella tulee olla metodit onvalikoimassa(), joka palautta true jos bisseä valikoimassa ja muuten false gethinta(), joka palauttaa bissen hinnan getnimi(), joka palauttaa bissen tilavuuden (b) (6p) Ohjelmoi luokka Kapakka. Kapakalla on nimi ja perustamisvuosi, jotka asetetaan kapakan konstruktorissa. Kapakkaan liittyy myös joukko Bisse-olioita, jotka kapakka tallettaa ArrayList-tyyppiseen oliomuuttujaan. Tee luokalle seuraavat metodit: public void uusibisse(string nimi, double hinta, double tilavuus), lisää kapakalle parametrien tiedot omaavan bissen valikoimaan. public void tiedot() tulostaa kapakan tiedot allaolevan esimerkin mukaisesti muotoiltuna. All-in-one -hinta sisältää yhden jokaista valikoimassa olevaa bisseä. public void poistavalikoimasta(string bissennimi), poistaa parametrina määritellyn nimisen bissen valikoimasta. Seuraava pääohjelma havainnollistaa panimon käyttöä: Kapakka kapakka = new Kapakka("Matin Majatalo", 1939); kapakka.uusibisse("american Dream", 4.5, 1.0); kapakka.uusibisse("dark Horizon", 3.9, 0.77); kapakka.uusibisse("tjekket Pils", 6.0, 0.6); kapakka.tiedot(); kapakka.uusibisse("santa s Little Helper", 12.0, 1.5); kapakka.poistavalikoimasta("dark Horizon"); System.out.println(""); kapakka.tiedot(); 4

Ohjelman tulostus oikein toteutetuilla luokilla on: Matin Majatalo (1939) Bissejä yhteensä 3, joista valikoimassa 3 All-in-one hinta: 14.40 euroa Bisset: American Dream, 1.0L, valikoimassa: on, 4.50 euroa Dark Horizon, 0.77L, valikoimassa: on, 3.90 euroa Tjekket Pils, 0.6L, valikoimassa: on, 6.00 euroa Matin Majatalo (1939) Bissejä yhteensä 4, joista valikoimassa 3 All-in-one hinta: 22.50 euroa Bisset: American Dream, 1.0L, valikoimassa: on, 4.50 euroa Dark Horizon, 0.77L, valikoimassa: ei, 3.90 euroa Tjekket Pils, 0.6L, valikoimassa: on, 6.00 euroa Santa s Little Helper, 1.5L, valikoimassa: on, 12.00 euroa ArrayListin 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. 5