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)

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)

1. Mitä tehdään ensiksi?

ITKP102 Ohjelmointi 1 (6 op)

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

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

Ohjelmoinnin perusteet Y Python

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

Java-kielen perusteet

17. Javan omat luokat 17.1

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

Ohjelmointi 1 C#, kevät 2014, tentti

Java-kielen perusteet

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

20. Javan omat luokat 20.1

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

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

17. Javan omat luokat 17.1

Ohjelmointi 1 C#, kevät 2013,

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

13. Loogiset operaatiot 13.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Olio-ohjelmointi Syntaksikokoelma

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Java-kielen perusteet

Metodien tekeminen Javalla

Listarakenne (ArrayList-luokka)

Ohjelmoinnin perusteet Y Python

Merkkijonon tutkiminen matches-metodilla

Ohjelmoinnin peruskurssi Y1

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmointi 1 Taulukot ja merkkijonot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Ehto- ja toistolauseet

Ohjelmointi 2, välikoe

Algoritmit 1. Demot Timo Männikkö

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

11. Javan toistorakenteet 11.1

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

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

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Ohjelmoinnin perusteet Y Python

Luento 5. Timo Savola. 28. huhtikuuta 2006

13. Loogiset operaatiot 13.1

7. Oliot ja viitteet 7.1

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

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

12. Javan toistorakenteet 12.1

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet

Tutoriaaliläsnäoloista

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

12. Javan toistorakenteet 12.1

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Taulukoiden käsittely Javalla

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Tentti erilaiset kysymystyypit

Ohjelmoinnin perusteet Y Python

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Ohjelmoinnin perusteet Y Python

Olio-ohjelmointi Javalla

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Tentti erilaiset kysymystyypit

3. Muuttujat ja operaatiot 3.1

Ohjelmoinnin peruskurssi Y1

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

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

Java-kielen perusteita

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

ITKP102 Ohjelmointi 1 Tentti

Ohjelmointiharjoituksia Arduino-ympäristössä

Java-kielen perusteita

Jakso 4 Aliohjelmien toteutus

13. Hyvä ohjelmointitapa (osa 1) 13.1

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

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

Ohjelmoinnin perusteet Y Python

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

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

Python-ohjelmointi Harjoitus 5

Transkriptio:

ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 17. toukokuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (14,6) perusteella hieman tavanomaista helpompi. Omasta tehtäväpaperista saa kopion Antti-Jussilta, huone Ag C414.2. Laita sähköpostia tai soita 4 8 3276 etukäteen. Viimeisen uusinnan ajankohdan löydät kurssin Korppi-sivulta. Tehtävä Teki Keskiarvo Keskihajonta Tarkastaja T1 4,2 1,2 Mikko Röyskö T2 3,76 1,22 Mikko Röyskö T3 3,68 1,4 Mikko Röyskö T4 4 3,2 1,87 Mikko Röyskö Yht 14,6,39 Arvosteluasteikko Arvolause Pistemäärä (alaraja) 24 4 21 3 18 2 1 1 12 1 http://users.jyu.fi/~anlakane/ohjelmointi1/tentit/219--17-tentti2.pdf 1

Tehtävä 1 (Tarkastaja: Mikko Röyskö) Yleiset huomiot Tehtävä osattiin pistekeskiarvon (4,2) pohjalta melko hyvin. Oikeasta vastauksesta tuli 1 piste, väärästä tai tyhjästä pistettä. 1 1 2 3 4 6 1B, 2A, 3D, 4D, D, 6B. Kohta 1: Oikea vastaus oli B. Lähes kaikki saivat tämän oikein (n=4, 9%). Kohta 2: Oikea vastaus oli A, jonka valitsi 3 tenttijää (6%). D-vaihtoehtoa veikattiin seuraavaksi eniten (n=13). Huutomerkkioperaattori on näistä ainut joka ei muuta käsiteltävänä olevan muuttujan arvoa. Kohta 3: Oikea vastaus oli D, jonka valitsi 37 tenttijää (74%). B- ja C-vaihtoehdot molemmat saivat 6 vastausta. Parametrien nimillä ei ole toiminnan kannalta merkitystä. Kohta 4: Oikea vastaus oli D, jonka valitsi 29 tenttijää (8%). Seuraavaksi suosituin vastaus oli A (n=14). Tässä piti huomata, että tulostettava luku on aina luvun i toinen potenssi, mutta tätä arvoa ei kuitenkaan tallenneta i-muuttujaan, jolloin i saa arvot 1, 2, 4 ja 8, mutta näiden lukujen toiset potenssit tulostetaan. Kohta : Oikea vastaus oli D, jonka valitsi 27 tenttijää (4%). Tyypillisesti forsilmukan toistoehto on epäyhtälö, mutta todellisuudessa siihen voi laittaa minkä tahansa totuuarvon tuottavan lausekkeen, myös funktiokutsun, tai jopa jättää kokonaan pois. Kohta 6: Oikea vastaus oli B, jonka valitsi 33 tenttijää (66%). 2

Tehtävä 2 (Tarkastaja: Mikko Röyskö) Yleiset huomiot Oikeasta vastauksesta tuli 1 piste, väärästä tai tyhjästä pistettä. 1 1 2 3 4 6 1D, 2C, 3D, 4C, C, 6B. Kohta 1: Oikea vastaus oli D, jonka vastasi 3 tenttijää (6%). C#-kielessä +- operaattorille voi antaa int-luvun ja string-merkkijonon, ja tuloksena on uusi string-merkkijono, jossa nämä luku ja merkkijono on yhdistetty. Seuraavaksi suosituin vastaus oli C (n=). Huomaa myös, että joissain ohjelmointikielissä pitää paikkansa että =false ja 1=true, mutta ei kuitenkaan C#:ssa. Kohta 2: Oikea vastaus oli C, jonka vastasi 44 tenttijää (88%). Kohta 3: Oikea vastaus oli D, jonka valitsi 3 opiskelijaa (6%). Lähtötilanne: a=true ja b=false. Käydään D vaihtoehtoa läpi:!a (a &&!b). Sijoitetaan arvot:!true (true &&!false). Lasketaan auki!-operaattorit: false (true && true) Sievennetään oikea puoli: false true -operaattori palauttaa true jos vähintään toinen arvoista on true. Kohta 4: Oikea vastaus oli C, jonka valitsi 31 opiskelijaa (62%). Esittelyrivin pohjalta mikään ei estä muokkaamasta argumenttina annettua listaa. Huomaa kuitenkin, että tämä ei kuitekaan ole välttämättä suositeltavaa. Jos aliohjelmalle annetaan lista joka sisältää arvot {int.minvalue, int.minvalue}, mitä palautetaan? Kohta : Oikea vastaus oli C, jonka vastasi 37 opiskelijaa (74%). 3

Kohta 6: Oikea vastaus oli B, jonka vastasi 16 opiskelijaa (32%). Tässä oli oleellista huomata että silmukan toistoehdossa oli luvut.length, jonka seurauksena tyhjän taulukon antaminen aliohjelmalle tarkoittaa että silmukkaa ei suoriteta kertaakaan. Täten muuttujan montako arvo on, ja ohjelma palauttaa argumenttina annetun muuttujan raja arvon. Tehtävä 3 (Tarkastaja: Mikko Röyskö) 1 1 2 3 4 6 1A, 2B, 3D, 4A, A, 6C. Kohta 1: Oikea vastaus oli A, jonka valitsi 3 vastaajaa (7%). Aliohjelmakutsun argumenttina voi olla pelkkiä aliohjelmakutsuja, esimerkiksi Itseisarvo(Keskiarvo(taulukko));. Kohta 2: Oikea vastaus oli B. Tämä osattiin hyvin, 44 oikeaa vastausta (88%). Kohta 3: Suosituin vaihtoehto oli B, mutta oikea vastaus oli D, jonka valitsi 17 vastaajaa (34%). Tässä luodaan tyhjä taulukko (vertaa T2.6), jonka pituus on nolla. B-kohdan vastanneet: muistakaa että indeksointi lähtee nollasta, jolloin indeksit menevät... Length-1. Kohta 4: Oikea vastaus oli A, jonka vastasi 29 vastaajaa (8%). Esittelyrivillä tulee olla aliohjelman vastaan ottamien parametrien tyypit (ja nimet). Aliohjelman sisällä voi toki luoda uusia (paikallisia) muuttujia ilman niiden kirjoittamista esittelyriville. Kohta : Oikea vastaus oli A, jonka vastasi 36 vastaajaa (72%). Seuraavaksi suosituin oli C (n=8). Aliohjelman paluuarvon voi aina tulostaa, mutta oliotyypeillä järkevä tulostus tarvitsee (monesti) jonkin funktiokutsun avuksi. Kohta 6: Oikea vastaus oli C, jonka vastasi 23 vastaajaa (46%). foreach-silmukan voi todellakin keskeyttää break-lauseella. Seuraavaksi suosituin vastaus oli D jonka vastasi 12 vastaajaa. 4

Pisteytys ja virheet Oikeasta vastauksesta tuli 1 piste, väärästä tai tyhjästä tai usean vaihtoehdon valitsemisesta pistettä. Tehtävä 4 (Tarkastaja: Mikko Röyskö) Yleisiä huomioita Dokumentaatio osattiin melko hyvin, yleisin virhe oli <param>- tai <returns>kohdan puuttuminen. Kukaan ei muistanut tarkistaa oliko annettu muuttuja null, jonka seurauksena yksikään vastaaja ei saanut täysiä pisteitä (ks. harjoitus debug-koe). Vain muutama ohjelma olisi toiminut suoraan tietokoneelle kopioituna, pienistä syntaksi- ja tyyppivirheistä ei kuitenkaan rangaistu (esim. taulukko1 == taulukko2- vertailu ei toimi suoraan halutulla tavalla). Unohdettiin muuttujaan sijoitus, esim. oli sana.toupper(); eikä sana = sana.toupper();.. 1 1. 2 2. 3 3. 4 4.. 6 Tehtävänannossa viheellisesti puhuttiin anagrammista, mutta selitettiin palindromista jota todellisuudessa pyyydettiin tekemään. Anagrammi on sana, jonka kirjaimet on järjestetty uudelleen (esim. talouspolitiikka tulo pois kaikilta ). Palindromi on taas sellainen sana joka on sama väärinpäin luettuna ( saippuakauppias ). Tehtävänannossa ei määritelty otetaanko kirjainkoko huomioon tai mitä aliohjelman tulee palauttaa, joten monentyyliset vastaukset olivat täysin oikeita. /// <summary> /// Kertoo onko annettu merkkijono palindromi. /// Kirjainkoko otetaan huomioon. /// </summary> /// <param name="mjono">merkkijono jota tutkitaan</param> /// <returns>oliko annettu merkkijono palindromi</returns> public static bool Palindromi(string mjono)

{ if (mjono == null mjono.length <= 1) return false; StringBuilder onojm = new StringBuilder(""); for(int i = ; i < mjono.length; i++) { onojm.insert(, mjono[i]); } } if (mjono.equals(onojm.tostring())) return true; else return false; Yleisimpiä vaikeuksia Silmukkarakennetta käytettiin väärin tai ei ollenkaan. Luotiin uusi taulukko johon käytiin lisäämään merkkejä väärinpäin, taulukon koon määritys unohtui, oli väärin tai merkkien lisääminen tehtiin jotenkin väärin. Takaperin käännetyn ja alkuperäisen merkkijonon vertailussa oli jokin virhe. Vain ilmiselvistä virheistä rokotettiin. Tyhjän/nullin merkkijonon käsittely unohtui. Pisteytys kohdittain Keskiarvo/maksimipisteet d:,77/1, p. Kurssin käytännön mukainen XML-dokumentaatio. f:,84/1, p. Funktion esittelyrivi (näkyvyys, paluuarvo, nimi, parametri) n:,27/1, p. Tarkistus tyhjän/nullin merkkijonon varalta s:,68/1, p. Toimiva silmukka e:,9/1, p. Järkevä ehtolause palindromin tarkastuksessa t:,6/1, p. Toimii v: -,18/-1, p. Vähennykset Samasta virheestä ei rangaistu "kahdesti", eli yksi virhe ym. kategorioissa ei vaikuttanut muihin kategorioihin. Esimerkiksi Toimii-kategoriasta pisteen sai mikäli ohjelma useimmiten toimii logiikan puolesta. Pistevähennyksiä sai kategorioiden ulkopuolella tehdyistä virheistä (esim. taulukon käyttö väärin) korkeintaan 1 pistettä. Merkkijonoa yritettiin kääntää takaperin monella eri tavalla. Taulukkoon lisättiin merkki kerrallaa, toiseen string-muuttujaan, tai oikeaoppisesti StringBuilderiin. Ylimääräisten turhien muuttujien käytöstä ei rangaistu. 6

Monet käyttivät for- tai while-silmukoita, myös muutama foreach näkyi. Muutamalla oli sisäkkäisiä tai perättäisiä silmukoita, nämä ratkaisut kuitenkin useimmiten olivat virheellisiä. Tehtävässä ei pyydetty kirjoittamaan luokkaa, pääohjelmaa tai testejä, eikä niiden tai minkään ylimääräisen sisällyttämisestä myönnetty tai vähennetty pisteitä. 7