ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Samankaltaiset tiedostot
ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

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

1. Mitä tehdään ensiksi?

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Ohjelmointi 1 C#, kevät 2013,

Ohjelmoinnin jatkokurssi, kurssikoe

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

Ohjelmointi 2, välikoe

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 2 / 2010 Välikoe / 26.3

Java-kielen perusteet

Ohjelmoinnin perusteet, kurssikoe

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 )

1. Omat operaatiot 1.1

Ohjelmoinnin perusteet Y Python

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

Ohjelmointi 1 C#, kevät 2014, tentti

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

12 Mallit (Templates)

Metodien tekeminen Javalla

Java-kielen perusteet

ITKP102 Ohjelmointi 1 Tentti

Javan perusteita. Janne Käki

Ohjelmoinnin peruskurssi Y1

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

13. Loogiset operaatiot 13.1

Olio-ohjelmointi Javalla

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

13. Loogiset operaatiot 13.1

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

Listarakenne (ArrayList-luokka)

Operaattorin ylikuormitus ja käyttäjän muunnokset

7. Näytölle tulostaminen 7.1

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

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

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

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

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

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

Ohjelmoinnin peruskurssi Y1

Java-kielen perusteita

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmistotekniikan menetelmät, koe

1 Tehtävän kuvaus ja analysointi

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

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

58131 Tietorakenteet ja algoritmit (syksy 2015)

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

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

11. Javan toistorakenteet 11.1

Rajapinta (interface)

Ohjelmoinnin peruskurssi Y1

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

Ohjelmoinnin perusteet Y Python

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

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

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

1. Miten tehdään peliin toinen maila?

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Ohjelmoinnin perusteet Y Python

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

Harjoitus 3 (viikko 39)

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

12. Javan toistorakenteet 12.1

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

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

12. Javan toistorakenteet 12.1

Monipuolinen esimerkki

Java-kielen perusteita

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Transkriptio:

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 18. toukokuuta 2018 Yleistä Tentti 1 oli pistekeskiarvon (12.7) perusteella vaikeudeltaan kohtuullinen. Omasta tehtäväpaperista saa kopion Antti-Jussilta, huone C414.2. Jos en ole paikalla, laita sähköpostia tai soita 040 805 3276. Uusintojen ajankohdat löydät kurssin Korppi-sivulta. Tehtävä Teki Keskiarvo Keskihajonta Tarkastaja T1 50 3.01 1.98 Oscar Calderón T2 51 2.84 2.15 Mikko Häyrynen T3 50 3.55 1.70 Mikko Häyrynen T4 50 3.25 2.21 Oscar Calderón Yht 12.7 6.4 Arvosteluasteikko Arvolause Pistemäärä (alaraja) 5 24 4 21 3 18 2 15 1 12 1 http://users.jyu.fi/~anlakane/ohjelmointi1/tentit/2018-05-18-tentti2.pdf 1

Tehtävä 1 (6 p.) Ensimmäisessä tehtävässä laskettiin kolmion pinta-ala. Pinta-alan laskemisen piti tapahtua omassa funktiossa, joka ei saanut tulostaa mitään. Kolmion pinta-ala piti laskea käyttäjän syötteillä ja vinkeiksi oli annettu Console.Readline()- ja double.parse()- metodit. Yleisimpiä virheitä olivat seuraavat: KolmionAla-funktiota kutsuttiin (muualla kuin WriteLinen sisällä), mutta sen arvoa ei tallennettu muuttujaan. KolmionAla-funktiossa tulostettiin tulos. KolmionAla-funktiossa ei ollut return-lausetta. Parse()- ja ReadLine() -metodeja ei osattu käyttää oikein. Mallivastaus using System; /// Ohjelma laskee kolmion alan public class KolmionAla /// Pyydetään käyttäjältä syötteet. Tehdään tulostukset. public static void Main() Console.Write("Anna kolmion kanta >"); string kantateksti = Console.ReadLine(); double kanta = double.parse(kantateksti); Console.Write("Anna kolmion korkeus >"); string korkeusteksti = Console.ReadLine(); double korkeus = double.parse(korkeusteksti); double ala = KolmionAla(kanta, korkeus); Console.WriteLine("Kolmion pinta-ala on " + ala); /// Laskee kolmion pinta-alan /// <param name="kanta">kolmion kanta</param> /// <param name="korkeus">kolmion korkeus</param> /// <returns>kolmion pinta-ala</returns> 2

public static double KolmionAla(double kanta, double korkeus) return kanta * korkeus / 2.0; Pisteytys Käyttäjän syöte luettiin oikein 1 p Parsittiin syötteet oikein 1 p KolmionAla-funktio toimi oikein 1 p Ohjelman rakenne oli oikeanlainen 1 p. Dokumentointi oli kurssikäytänteiden mukainen 1 p. KolmionAla-funktiota käytettiin oikein ja sen tulos tulostettiin pääohjelmassa 1 p. Tehtävä 2 (6 p.) Toisessa tehtävässä tuli kirjoittaa yksi pääohjelma, jonka sisällä on kaksi erillistä silmukkarakennetta. Kummassakin tulostetaan kakkosen potenssit väliltä 1 128. Tulostuksen muodolla ei ollut merkitystä. Yleisin ratkaisu oli käyttää for- ja while-silmukoita, mutta myös do-while oli käytössä muutamassa vastauksessa. Jos tulosteen luvut oli kovakoodattu ilman silmukkaa, pisteitä vähennettiin. Kommentointia ei tehtävässä poikkeuksellisesti vaadittu. System-nimiavaruuden sai olettaa olevan käytössä. Tehtävä osattiin melko heikosti, ja keskihajonta oli korkea. Suuressa osassa vastauksia oli käytetty tarpeettoman paljon apumuuttujia, jotka monimutkaistavat ohjelmaa. Ylimääräisten muuttujien käytöstä ei kuitenkaan pääosin vähennetty pisteitä. Yleisimpiä virheitä olivat seuraavat: Silmukkamuuttujan arvoa oli kasvatettu, mutta muutettua arvoa ei oltu sijoitettu takaisin muuttujaan. Vertaa i * 2 ja i *= 2. Tulostettiin kaikki luvut väliltä 1 128. Eri silmukoissa oli käytetty saman nimisiä muuttujia. Muuttujat ovat samalla näkyvyysalueella, joten tämä ei ole mahdollista C#:ssa. Mallivastaus public static void Main() for (int i = 1; i <= 128; i *= 2) 3

Console.WriteLine(i); int j = 1; while (j <= 128) Console.WriteLine(j); j *= 2; Pisteytys Pääohjelman yleinen rakenne oikein 1 p. Osattu käyttää kahta erilaista silmukkaa, joiden rakenne on pääosin järkevä 1p. Ensimmäinen silmukka toimii oikein 2 p. Toinen silmukka toimii oikein 2 p. Syntaksivirheistä ja huonosta yleisestä ilmeestä (nimeämiskäytäntö, sulkuvirheet, kirjainkoko avainsanoissa jne.) vähennettiin enintään 2 p. Tehtävässä ei pyydetty kirjoittamaan luokkaa tai testejä, eikä niiden sisällyttämisestä myönnetty tai vähennetty pisteitä. Tehtävä 3 (6 p.) Kolmas tehtävä koostui kolmesta osatehtävästä, joihin oli tarkoitus vastata lyhyesti ja kattavasti. Kommentointi ja operaattorien erot osattiin hyvin, mutta kuormittaminen oli monelle vieras asia. Osatehtävien pistekeskiarvot Osatehtävä Keskiarvo Keskihajonta T3.1 0.63 0.84 T3.2 1.38 0.73 T3.3 1.55 0.69 Yht 3.55 1.70 4

Ratkaisut ja pisteytys 1. Aliohjelman kuormittamisella tarkoitetaan sitä, että saman niminen aliohjelma määritellään useaan kertaan siten, että parametrien määrä tai parametrien tyypit ovat erilaiset. Osapisteitä myönnettiin, jos vastauksessa mainittiin, että aliohjelmaa voidaan kutsua eri määrällä tai eri tyyppisillä parametreilla. Idean selittämisestä sai yhden pisteen ja esimerkistä toisen. Kokonaisia ohjelmia tai aliohjelmia täysiin pisteisiin ei tarvinnut kirjoittaa. Esimerkkikoodin pienistä virheistä ei vähennetty pisteitä, jos idea oli oikein. public override void Begin() LuoPallo(); LuoPallo(100, 100); public static void LuoPallo()... public static void LuoPallo(double x, double y)... 2. Kaksiparametrisen funktion dokumentaatiokommentista tuli löytyä summary-osio, kaksi param-osiota ja returns-osio. Osapisteitä myönnettiin jokaisesta oikein kirjoitetusta osiosta. Alla esimerkkidokumentaatio kuvitteelliselle Summa-funktiolle. /// Aliohjelma laskee kahden kokonaisluvun summan. /// <param name="ekaluku">ensimmäinen kokonaisluku.</param> /// <param name="tokaluku">toinen kokonaisluku.</param> /// <returns>kokonaislukujen summa.</returns> public static int Summa(int ekaluku, int tokaluku) summary-osiossa kerrotaan yleisesti, mitä funktio tekee, param-osioilla dokumentoidaan parametrit ja return-osiolla funktion paluuarvo. 3. = on sijoitusoperaattori, joka sijoittaa oikeanpuoleisen arvon vasemmanpuoleiseen muuttujaan. Esimerkki: int i = 0; == on vertailuoperaattori, joka vertaa operandejaan toisiinsa ja palauttaa totuusarvon. Esimerkki: if (i == 0) break; Pisteitä myönnettiin yksi kummastakin oikein selitetystä operaattorista. Tehtävä 4 (6 p.) Neljännessä tehtävässä tulostettiin luvut 1-100, joihin liitettiin välillä lisäsanoja. Dokumentteja ei poikkeuksellisesti tarvinut kirjoittaa. Tehtävän suhteellisen helppouden takia käytännössä kaikkiin virheisiin tartuttiin ja niistä sakotettiin. Tehtävän keskiarvo oli 3,25. Yleisimpiä virheitä olivat seuraavat: 5

i <= 100 kirjoitettiin matemaattisen notaation mukaisesti paperille Aloitettiin tulostus nollasta. Lopetettiin tulostus 99:än tai 101:en. Hip tai Hei tulostuivat seuraavalle riville Edellisen virheen myötä seuraava luku tulostettiin Hip tai Hei kanssa samalle riville. Mallivastaus using System; class HipHei private static void Main() for (int i = 1; i <= 100; i++) Console.Write(i + " "); if (i % 3 == 0) Console.Write("Hip"); if (i % 5 == 0) Console.Write("Hei"); Console.WriteLine(); Pisteytys Tehtävän maksimipisteisiin tehtiin vähennyksiä seuraavasti. Lukua ei koskaan tulostettu -3 p. (Tulostettiin siis vain Hippiä ja Heitä) Hip tai Hei tuli lukua seuraavalle riville -1 p. Seuraava luku tuli sanan Hip tai Hei kanssa samalle riville -1 p. Viidellätoista jaollisella rivillä tulostettiin myös kolmella ja viidellä jaolliset tulokset. Esimerkiksi 15 Hip 15 Hei 15 HipHei. -1 p. Syntaksivirheistä vähennettiin enintään 2 p. Tehtävän minipistemäärä oli tietenkin nolla. 6