ITKP102 Ohjelmointi 1 (6 op)

Samankaltaiset tiedostot
ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

1. Mitä tehdään ensiksi?

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

Olio-ohjelmointi Syntaksikokoelma

1. Omat operaatiot 1.1

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Java-kielen perusteet

Ohjelmoinnin jatkokurssi, kurssikoe

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Ohjelmointi 1 C#, kevät 2013,

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Metodien tekeminen Javalla

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

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

1. Miten tehdään peliin toinen maila?

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Jypelin käyttöohjeet» Ruutukentän luominen

Ohjelmoinnin perusteet Y Python

Apuja ohjelmointiin» Yleisiä virheitä

17. Javan omat luokat 17.1

Olio-ohjelmointi Javalla

58131 Tietorakenteet ja algoritmit (syksy 2015)

Ohjelmoinnin perusteet Y Python

4. Luokan testaus ja käyttö olion kautta 4.1

Pisteytys: Eri kommentointitavat tiedetty: 0,5 pistettä, jos puuttuu niin ei voinut saada täysiä pisteitä.

Ohjelmointi 1 C#, kevät 2014, tentti

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

Ohjelmointi 2, välikoe

17. Javan omat luokat 17.1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?

12 Mallit (Templates)

19. Olio-ohjelmointia Javalla 19.1

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmointi 1 C#, kevät 2014, 1. uusintatentti NIMI:

C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\PP1\TokaPisin.cs 1 using System; 2 using System.Collections.Generic; 3 using System.

12. Monimuotoisuus 12.1

7. Oliot ja viitteet 7.1

Ohjelmoinnin perusteet Y Python

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Java-kielen perusteet

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

Ohjelmoinnin perusteet, 1. välikoe

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Javan perusteita. Janne Käki

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Harjoitus 2 (viikko 45)

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

13. Loogiset operaatiot 13.1

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

20. Javan omat luokat 20.1

Ohjelmointiharjoituksia Arduino-ympäristössä

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

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 )

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

Taulukoiden käsittely Javalla

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

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

Ohjelmoinnin perusteet Y Python

Listarakenne (ArrayList-luokka)

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohjelmointi 2 / 2010 Välikoe / 26.3

Loppukurssin järjestelyt C:n edistyneet piirteet

7. Näytölle tulostaminen 7.1

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Ohjelmoinnin peruskurssi Y1

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Sisällys. 15. Lohkot. Lohkot. Lohkot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Harjoitus 5 (viikko 41)

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

811120P Diskreetit rakenteet

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

5. HelloWorld-ohjelma 5.1

1 Tehtävän kuvaus ja analysointi

Transkriptio:

ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu on sallittu tässä tentissä. Jos tämä tentti on sinulle syksyn 2017 kurssi-instanssin uusintatentti, niin laita jokaisen vastauspaperin yläreunaan erillinen huomautus: Syksyn 2017 uusinta. In English If you want the questions in English, please ask the invigilator. 1

Tehtävä 1 (6 p.) Järjestä seuraavat C#-ohjelman osat oikeaan järjestykseen niin, että tuloksesta muodostuu toimiva ohjelma. Käytä kutakin osaa täsmälleen kerran. Anna jokaisesta osasta todellinen koodiesimerkki. Kirjoita vastauspaperiin riveittäin luku (1 11) ja koodiesimerkki. Esimerkkien tulee muodostaa toimiva, kääntyvä kokonaisuus. Myös sisennykset, nimeäminen ja kirjoitusasu otetaan arvostelussa huomioon. Dokumentaatiokommentteja ei tarvitse kirjoittaa. 1. Main-pääohjelman esittelyrivi. 2. Järjestelmäkirjaston using-lause. 3. Muuttujan x määrittely. Muuttujaan tulee voida tallentaa kokonaislukuarvo. 4. x-muuttujan tulostuslause. 5. Luokan esittelyrivi. 6. Satunnaisen, välillä 1 6 olevan luvun sijoittaminen muuttujaan x. 7. Random-olion määrittely ja alustus. 8. Luokan aloittava aaltosulku. 9. Luokan lopettava aaltosulku. 10. Pääohjelman aloittava aaltosulku. 11. Pääohjelman lopettava aaltosulku. Tehtävä 2 (6 p.) (a) Alla on rekursiivinen aliohjelma Neliot, jota kutsutaan Begin-aliohjelmassa. Minkä oheisista kuvioista (a d) ohjelma piirtää? Oletetaan, että käytössä on Jypeli-kirjasto, ja että luokka, Main-pääohjelma jne. on hyvin määritelty ja ohjelma kääntyy. (3 p.) 2

public override void Begin() { Neliot(0, 0, 200); } public void Neliot(double x, double y, double w) { if (w < 20) return; GameObject nelio = new GameObject(w, w); nelio.position = new Vector(x, y); Add(nelio); } Neliot(x - w, y + w, w / 2); Neliot(x + w, y - w, w / 2); (a) (b) (c) (d) 3

(b) Tee funktio Kertoma, joka laskee luvun n kertoman (rekursiivisesti tai iteratiivisesti, voit itse valita). Oletetaan, että n > 0. Kertoman määritelmä: Kertoma(0) = 1 Kertoma(n) = n * Kertoma(n-1) Dokumentaatiokommentit on kirjoitettava XML-tageilla kurssin käytännön mukaisesti. (3 p.) Tehtävä 3 (6 p.) Valitse jokaisesta kohdasta (1 6) täsmälleen yksi vaihtoehdoista (a d). Kukin kohta on yhden pisteen arvoinen. Perusteluita ei tarvitse eikä pidä kirjoittaa. Kirjoita vastauksesi vastauspaperille, ei tähän paperiin. 1. Olkoon meillä oheinen funktion esittelyrivi. Mikä seuraavista väitteistä pitää paikkansa esittelyrivin perusteella? public static bool Anagrammi(string merkkijono) (a) Funktion kutsuminen tyhjällä merkkijonolla (string-olio, jossa ei ole yhtään merkkiä) aiheuttaa ajonaikaisen virheen. (b) Mikäli merkkijono-muuttujan sisältö on saippuakauppias, funktio palauttaa merkkijonon saippuakauppias. (c) Funktiota voi kutsua ilman, että paluuarvoa sijoitetaan boolmuuttujaan kutsuvassa aliohjelmassa. (d) Funktio voi palauttaa arvon 0 tai 1. 2. Mikä seuraavista väittämistä pitää paikkansa C#:ssa? (a) Operaattoria = käytetään if-lauseen ehto-osassa kahden totuusarvon vertailuun. (b) Operaattoreilla < ja > voidaan muuttaa muuttujan arvoa. (c) Muuttujan voi määritellä ennen arvon sijoittamista kyseiselle muuttujalle. (d) Sijoitusoperaattori vaatii aina aalto- tai kaarisulkeet ympärilleen. 3. Mikä seuraavista väittämistä pitää paikkansa C#:ssa? (a) Taulukon pituutta voi muuttaa taulukon luomisen jälkeen. 4

(b) Taulukon elementit sijaitsevat indekseissä 0... Length. (c) Taulukko voi olla enintään 2-ulotteinen. (d) Taulukon a pituus (a.length) voidaan päätellä seuraavan lauseen perusteella: int[] a = new int[] { }; 4. for-silmukan yleinen muoto on for (alustus ; toistoehto ; päivityslauseet) { runko } Mikä seuraavista väittämistä pitää paikkansa C#:ssa? (a) Toistoehdoksi käy mikä tahansa kokonaislukuarvoinen lauseke. (b) for-silmukalla ei ole mahdollista tehdä ikuista silmukkaa. (c) Mikä tahansa for-silmukan osista (alustus, toistoehto, päivityslauseet, runko) voidaan jättää tyhjäksi. (d) Alustus-kohdassa on määriteltävä ainakin yksi int-tyyppinen muuttuja. 5. Olkoon meillä seuraava koodi: string jono = "1"; int maara = MerkkienMaara(jono + 23); Oletetaan lisäksi, että on olemassa MerkkienMaara-funktio ja sille esittelyrivi: public static int MerkkienMaara(string s) Mikä seuraavista väittämistä pitää paikkansa? (a) Ohjelma ei käänny. (b) MerkkienMaara-funktiolle annetaan kutsussa yksi parametri, "123". (c) MerkkienMaara-funktiolle annetaan kutsussa yksi parametri, "24". (d) MerkkienMaara-funktiolle annetaan kutsussa kaksi eri parametria, "1" ja "23". 6. Mikä seuraavista väittämistä pitää paikkansa C#:ssa? (a) Ei-void-funktiossa (ts. funktion paluuarvon tyyppi on jotain muuta kuin void) täytyy olla vähintään yksi return-lause. (b) Olkoon sijoituslause int d = F(1.1);. Funktion F paluuarvon tyyppi voi olla double. 5

(c) void-tyyppisessä funktiossa return-lause aiheuttaa käännösvirheen. (d) return-lauseen voi korvata tarvittaessa break-lauseella. Tehtävä 4 (6 p.) Tee funktio, joka laskee pankissa olevan talletuksen arvon N vuoden jälkeen käyttäen kaavaa P (1 + R) N missä P on alkupääoma, R on vuosittainen korko ja N on talletuksen pituus vuosina. Oletetaan, että talletuksen kesto on kokonaisia vuosia. Potenssiin korotusta ei saa tehdä valmiilla funktiolla, kuten Math.Pow:lla. Esimerkiksi alkupääomalla 100, korolla 0.03 (siis 3%) ja viiden vuoden talletusajalla talletuksen arvo olisi noin 115.93. Tällöin funktiota voisi kutsua esimerkiksi seuraavasti: double arvo = Talletus(100.0, 0.03, 5); Console.WriteLine(arvo) // 115.9274... Dokumentaatiokommentit on kirjoitettava XML-tageilla kurssin käytännön mukaisesti. 6