wiki:ohj2k11vk1
Last modified 5 years ago Last modified on 2013-01-04 10:55:10

Ohjelmointi 2, välikoe kevät 2011

Tehtävä 1

Tehtävän päätarkoituksena oli testata koodin lukemista, sekä varmistua siitä, että opiskelija todella ymmärtää mitä koodissa tapahtuu. Ennenkaikkea keskityttiin viitteiden ymmärtämiseen.

Tarkastuksen lähtökohta karkeasti:

Viitteet oikein = 2
Muuttujien elinikä = 1
Arvon ja viitteen eron ymmärtäminen = 2
Roskat oikein = 1

Tämä ei kuitenkaan ole suoraviivaista, koska huolimattomuuden ja selvän virheen raja oli joissain tilanteissa hyvin häilyvä. Mutta tällä periaatteella pisteitä kuitenki jaeltiin.

Tarkastuksen aikana tehdyt arvosteluperiaatteet:

  • Pienestä huolimattomuusvirheestä ei sakoteta, ellei näitä ole kertynyt enemmänkin
  • Monella oli unohtunut tähti -merkillä merkkaaminen niihin muuttujiin, jotka ovat viitemuuttujia. Tämä tulkittiin yhtenä pienenä huolimattomuusvirheenä, jos viitteet olivat muuten merkattu oikein. Tästä ei siis suoraan rokotettu pisteitä.

Tarkastuksen toteuttaminen:

Tarkastuksen alussa on oletettu, että tehtävästä on täydet pisteet ja sitä mukaa kuin virheitä tulee on lähdetty tiputtamaan pisteitä.

Arvosanajakauma:
Hylättyjä: 4
1: 5 kpl
2: 5 kpl
3: 8 kpl
4: 16 kpl
5: 15 kpl
6: 17 kpl

YHT. 70 vastausta
KA: 4

Tehtävä 2

Tehtävässä kaksi mitattiin tenttajaan kykyä laatia testejä, sekä ymmärrystä siitä, miten testien pohjalta voitaisiin tuottaa ohjelmakoodia. a-kohdassa laadittiin testien pohjalta b- ja c-kohdissa käytetty vaihda-algoritmi, jonka kuvaus annettiin testeissä. b-kohdassa mitattiin kykyä laatia yksinkertainen testi käännä-aliohjelmalle, joka käänsi taulukon. c-kohdassa mitattiin testauskyvyn lisäksi kykyä hahmottaa, missä järjestyksessä taulukko lajitellaan (pienuus vs. suuruusjärjestys).

Arviointiperusteet a-kohdassa

  1. Algoritmin toimintaperiaate ymmärretty, eli testi luettu oikein - 0.5p
  2. Algoritmin toteutus oikein, eli tulos on oikea. - 1.5p

Arviointiperusteet b-kohdassa

  1. Testi testaa jokaista alkiota, eli Arrays.toString (tai vastaavaa) käytetty - 1p
  2. Testien toimintaperiaate on oikea, eli testataan käännettyjä taulukoita ja testi toimiii - 1p

Arviointiperusteet c-kohdassa

  1. Kuten b-kohta, 1.5p
  2. Alkioiden järjestys oikea (kasvava) 0.5p

Tehtävä 3

Tehtävässä testattiin opiskelijan taitoja ohjelmakoodin tuottamisessa. Erityisesti tehtävä keskittyi tiedostojen lukemiseen sekä erilaisiin merkkijono-operaatioihin.

Pisteytys:
Tehtävän pisteytys tapahtui kutakuinkin niin, että tiedoston lukeminen, tiedoston syntaksin tarkistus ja tiedoston sisältämien kohteiden listaus olivat kaikki kahden (2) pisteen arvoisia.

Huomioita:

  • Tiedoston lukeminen osattu hyvin
  • M3U-tiedoston otsakkeen (#EXTM3U) löytäminen oli suurella osalla ok, #EXTINF -määrittelyjen kanssa enemmän ongelmia
  • Käytetty charAt- ja substring-metodeja tyhjille merkkijonoille ilman poikkeustenhallintaa
  • Tulostettu tiedostoon vaikka konsoliin tulostus olisi riittänyt

Tehtävä 4

Tehtävässä piti täydentää kommentteja ja koodeja. Kustakin tehtävästä tarkemmin sen kohdalla. Tehtävä ei ollut kovin vaikea, ja keskiarvokin tässä taisi mennä välillä 4-5. Pisteet pyöristettiin lähimpään kokonaislukuun, eli 5,5 riitti kuuteen pisteeseen.

Mallivastaus

Yleisiä huomioita:

  • Tehtävässä ei tarvinnut kirjoittaa testejä. Tästä ei tietenkään otettu pisteitä pois.
  • Syntaksivirheitä ei katsottua kovin tarkkaan. Myöskään pienet loogiset virheet eivät välttämättä tiputtaneet pisteitä, jos nämä eivät romuttaneet koko tehtävää.

a) Virheet

  • Ei huomioitu kommenteissa ohjelman toimintaa virhetilanteissa
  • Taulukko on täytetty tavaroilla
  • Turhia muuttujia
  • Taulukko väärää tyyppiä

Pisteytys:

  • Luotu taulukko, joka viittaa luokan sisalto-taulukkoon 0,3
  • Kommentoitu 0,2

Nämä sulkevat toisensa pois:

  • Negatiivisyys huomattu, ja kommentoitu 0,5
  • Negatiivisyys huomioitu jotenkin 0,3
  • Negatiivisyys huomattu, ja kommentoitu, mutta korjaus ei toimi 0,3
  • Negatiivisyys huomattu, mutta korjaus ei toimi 0,2

b) Virheet

  • Ei kerrottu, miten toimitaan tilanteessa, jossa paketti on täysi

Pisteytys

  • Kerrottu, että lisätään pakettiin 0,5
  • Kerrottu, että jos täysi, ei lisätä 0,5

c) Virheet

  • Ei huomioida, että tulee indeksivirhe, jos mennään taulukon yli, tai ali

Pisteytys

  • Palautettu oikea tavara 0,5
  • Indeksi tarkistettu oikein 0,5
  • Indeksin tarkistettu, mutta tarkistus ei toimi oikein 0,8 (i>lkm tai käpelöidään taulukkoa ennen kuin tarkistetaan indeksi...)

d) Virheet

  • Ei huomattu, että taulukon lopussa voi olla null-arvoja

Pisteytys

  • Jos silmukka on kunnossa 0,3
  • Jos length==0 ei kaada 0,2
  • Tarkistetaan null 0,2
  • Vertailu 0,3

e) Virheet

  • Ei tarkisteta nullia
  • Heitetään virhe, mutta ei mainita kommenteissa
  • Tulostetaan, mutta ei mainita kommenteissa

Pisteytys

  • Oikea asetus 0,5
  • Tarkistaa nullin/viallisen arvon 0,5

Tehtävä 5

Tehtävän tarkoituksena oli piirtää tehtävä nelosessa kuvatun koodin rakenne, lisätä rakenteeseen dynaaminen taulukko ja lisätä muodostuneeseen teitorakenteeseen annetut paketit. Malliratkaisu

Esimerkkejä mahdollisista virheistä:

  • tietorakenne muistutti harjoitustyön tietorakennetta, joten koodia ja

tehtävänantoaa ei oltu osattu tarpeeksi tulkita

  • "postipakettettien säilöminen itse tehtyyn dynaamiseen taulukkoon"

tarkoitti käytännössä oman luokan luomista. Luokan nimeämisen suhteen katsottiin aika paljon sormien läpi, joten jos se unohtui tai oli muuten kehno, niin esim 6 pst. saattoi saada, vaikkei tätä tajunnutkaan

  • nuolilla ei ollut suuntaa tai se ei ollut oikea
  • tehtävänantoa ei oltu luettu huolellisesti, eikä paketteja oltu

lisätty kuvaan, tai ne olivat vääriä

  • luokkien nimet eivät tulleet ilmi kuvasta
  • tavaroiden viitetaulukko puuttui, tai siitä puuttuivat esim tyhjät alkiot
  • tavara-olioita alsutettiin ennenaikaisesti käyttäen sen

konstruktorin "Default"-arvoja

  • oliolaatikoissa luki attribuuttien nimiä, tätä en laskenut isoksi

miinukseksi, kunhan idea tuli selville

Tehtävät arvosteltiin periaatteella:
4-6 pst. tehtävänanto ymmärretty ja mallikuvan kaltainen, virheistä sai miinuspisteitä
0-3 pst. piirretty kuva ei vastannut tehtävänantoa, mutta kaikki oikeansuuntainen katsottiin plussaksi

Sekalaisia huomioita (ei virheitä)
-Tehtävän keskiarvo oli ~3.8
-Jotkut piirtäneet kaikki Stringitkin omiin laatikoihinsa, mikä tietysti on oikein koska kyseessä ovat oliot. Mallivastauksessa ollaan kuitenkin pyritty lähinnä tietorakenteen selventämiseen, jota Stringien piirtäminen erilleen vain sekoittaa turhaan. Kumpikin tapa katsottiin siis oikeaksi.

-Tehtävänannossa ei myöskään ollut tarkoitus vaatia mitään ennen ja pakettien lisäyksen jälkeen kuvia, vaan pelkästään jälkimmäinen riitti. Ilmeisesti tehtävä oli sen verran epäselvä, että tällaisia vastauksia tuli kuitenkin monia

Attachments