{"id":447,"date":"2018-10-29T00:29:08","date_gmt":"2018-10-28T22:29:08","guid":{"rendered":"https:\/\/coursepages.uta.fi\/tiep5\/?page_id=447"},"modified":"2019-01-17T22:52:00","modified_gmt":"2019-01-17T20:52:00","slug":"palaute","status":"publish","type":"page","link":"https:\/\/coursepages2.tuni.fi\/tiep5\/syksy-2018\/harjoitukset\/ratkaisujen-tarkistus\/palaute\/","title":{"rendered":"Palaute"},"content":{"rendered":"<p><strong>Harjoitus 1<\/strong><\/p>\n<p>5) lukujen merkit, Kari. Nollat olivat teht\u00e4v\u00e4ss\u00e4 erikoistapaus, joka j\u00e4i osin huomioimatta. Muutamassa ratkaisussa ei huomioitu tilannetta, jossa molemmat luvut ovat nollia ja osassa ratkaisuja t\u00e4llaisessa tilanteessa kerrottiin etumerkkien olevan erisuuret. N\u00e4ist\u00e4 ei rankaistu, koska ensimm\u00e4isiss\u00e4 harjoituksissa tarkistajat ottivat hieman rennommin. Operaatioiden nimien tulisi olla informaatiivisia. Esimerkiksi &#8221;operaatio&#8221;-nimi ei kerro mit\u00e4\u00e4n operaation tarkoituksesta. Yleisi\u00e4 kommentteja puuttui viel\u00e4 sek\u00e4 operaatiolta ett\u00e4 ohjelmalta<\/p>\n<p>6) merkkijonojen pituuksien vertailu, Kimmo. Muuttujien nimiss\u00e4 oli viel\u00e4 jonkin verran lyhyit\u00e4 tunnuksia, kuten a ja b. Kommentteja oli my\u00f6s osassa ratkaisuja v\u00e4h\u00e4nlaisesti.<\/p>\n<p>7) teht\u00e4v\u00e4, merkkien haku, Antti. Tarkistajan terveiset:<\/p>\n<ul>\n<li>Kiinnitt\u00e4k\u00e4\u00e4 huomiota muuttujien nime\u00e4miseen\u00a0\u2013 kuvaavia ja loogisia nimi\u00e4. Liian pitk\u00e4 muuttujan nimi on ep\u00e4todenn\u00e4k\u00f6isempi ongelma kuin ep\u00e4selv\u00e4 muuttujan nimi.<\/li>\n<li>V\u00e4ltt\u00e4k\u00e4\u00e4 for-silmukan p\u00e4\u00e4tt\u00e4mist\u00e4 break-lauseella. My\u00f6s for-silmukalle voi antaa useita p\u00e4\u00e4t\u00f6stehtoja. Esimerkiksi:<br \/>\nfor (int indeksi = 0; indeksi &lt; pituus &amp;&amp; jatketaan; indeksi++).<\/li>\n<\/ul>\n<p><strong>Harjoitus 2<\/strong><\/p>\n<p>4) merkkijonojen pituuksien vertailu, Antti. L\u00e4hes kaikki nollat tulivat siit\u00e4, ett\u00e4 main-operaatiossa ei ollut vertailuoperaation paluuarvon sijoitusta muuttujaan. Paluuarvon sijoittaminen vaadittiin, koska se on ohjelmoinnissa tarvittava taito ja erityisesti t\u00e4ss\u00e4 teht\u00e4v\u00e4ss\u00e4 tarpeen, jotta vertailuoperaatiota ei kutsuttaisi ylim\u00e4\u00e4r\u00e4is\u00e4 kertoja. Jokainen turha operaatiokutsu hidastaa ohjelmaa,\u00a0eik\u00e4 edist\u00e4 ongelman ratkaisemista. Switch-case-lause ei ole aina paras valinta vertailuihin etenkin, jos erittelee ensin kolme vaihtoehtoa, jotka sulkevat pois kaikki muut vaihtoehdot, jolloin j\u00e4\u00e4 auki auki mit\u00e4 default-kohdassa pit\u00e4isi tehd\u00e4.<\/p>\n<p>6) ajan tarkistus, Kari. T\u00e4m\u00e4n teht\u00e4v\u00e4n tarkistuksessa oltiin rennompia paluuarvon sijoittamisen suhteen. Nollia annettiin vain, jos operaatiossa itsess\u00e4\u00e4n oli tulostuksia. Joissakin ratkaisuissa oli ensin turha operaatiokutsu, jonka j\u00e4lkeen uusi kutsu miss\u00e4 sijoitettiin paluuarvo. Turhista operaatiokutsuista on vain haittaa my\u00f6s siin\u00e4 mieless\u00e4, ett\u00e4 kokeneempi ohjelman lukija j\u00e4\u00e4 turhaan pohtimaan kutsun syyt\u00e4 ennen kuin huomaa, ett\u00e4 kutsu on t\u00e4ysin tarpeeton. Tyyliseikkana nousivat esiin vaillinaiset kommetit.<\/p>\n<p>7) merkkijonon toisto, Kimmo.T\u00e4m\u00e4 teht\u00e4v\u00e4 tarkistettiin my\u00f6s hyv\u00e4n ohjelmointitavan osalta. Ratkaisussa tuli olla operaation yleinen kommentti, jotta pisteen voi saada. Kaikista hyl\u00e4tyiss\u00e4 ratkaisuissa oli puutteita operaation kommentoinnissa. Sisennyksiss\u00e4 oli jonkin verran korjattavaa, mutta ei siin\u00e4 m\u00e4\u00e4rin, ett\u00e4 nollia olisi tullut.<\/p>\n<p><strong>Harjoitus 3<\/strong><\/p>\n<p>N\u00e4iss\u00e4 harjoituksissa aloitettiin hyv\u00e4n ohjelmointitavan arviointi kaikkien teht\u00e4vien osalta. Erityinen huomio kohdistui kommentointiin. Operaation yleinen kommentti oli pakollinen ehto pisteelle. T\u00e4m\u00e4 n\u00e4kyi aikaisempaa suurempana hyl\u00e4ttyjen ratkaisujen m\u00e4\u00e4r\u00e4n\u00e4.<\/p>\n<p>3) kuukauden nimen lausuminen, Kimmo. Pisteeseen tarvittiin operaatiossa oleva taulukko ja sellainen l\u00f6ytyikin kaikista tarkistetuista teht\u00e4vist\u00e4. Oman operaation yleinen kommentti puuttui edelleen hyvin usein tai se oli hyvin lyhyt.<\/p>\n<p>5) merkin hakeminen merkkijonosta, Antti. Tarkistus oli t\u00e4ss\u00e4 teht\u00e4v\u00e4ss\u00e4 tiukin: main-operaatiossa oli oltava paluuarvon sijoitus, jotta pisteen voi saada. T\u00e4h\u00e4nkin asiaan on kiinnitett\u00e4v\u00e4 huomiota, koska paluuarvon sijoittaminen on perusohjelmointitekniikka, joka pit\u00e4isi olla kurssin j\u00e4lkeen hyvin hallussa. Antti totesi seuraavaa: Kiinnitt\u00e4k\u00e4\u00e4 huomiota kommentointiin. Kommentin ei tarvitse olla kovin pitk\u00e4. Edelleen kutsutaan metodia turhaan kaksi kertaa ja vasta j\u00e4lkimm\u00e4isell\u00e4 kerralla otetaan paluuarvo vastaan. Useilla puuttuu edelleen paluuarvon sijoittaminen.<\/p>\n<p>6) merkin hakeminen taulukosta, Kari. Nollat tulivat siit\u00e4, ett\u00e4 operaation yleinen kommentti oli j\u00e4\u00e4nyt kirjoittamatta. Kari antoi muuta palautetta n\u00e4in:<\/p>\n<ul>\n<li>Muutamassa palautuksessa operaation yleinen kommentti oli kopio aiemmasta teht\u00e4v\u00e4st\u00e4. Kommentissa kerrottiin operaation hakevan merkki\u00e4 merkkijonosta, kun t\u00e4ss\u00e4 teht\u00e4v\u00e4ss\u00e4 sit\u00e4 haettiin taulukosta.<\/li>\n<li>Muutamassa palautuksessa luettiin rivi Scannerilla ja ensimm\u00e4inen merkin poimittiin charAt-operaatiolla ilman, ett\u00e4 sy\u00f6tteen pituutta tutkittiin tarkemmin. N\u00e4in toimien ohjelmalle voisi antaa my\u00f6s vaikkapa merkkijonon &#8221;auto&#8221;, vaikka sy\u00f6tteen tulisi olla yksi merkki. Muistakaa, ett\u00e4 In-luokassa l\u00f6ytyy valmiina readChar-operaatio, jolloin ei ole erikseen tarvetta k\u00e4ytt\u00e4\u00e4 readString-operaatiota ja poimia merkki\u00e4 samaan tapaan kuin Scanner-luokkaa k\u00e4ytett\u00e4ess\u00e4.<\/li>\n<\/ul>\n<p><strong>Harjoitus 4<\/strong><\/p>\n<p>My\u00f6s n\u00e4iss\u00e4 harjoituksissa kiinnitettiin erityist\u00e4 huomiota kommentointiin. Pisteeseen vaadittiin operaation otsikkoon liittyv\u00e4 yleinen kommentti.<\/p>\n<p>2) merkiksi muunnos taulukolla, Kari. Kaikista tarkistetuista ratkaisuista l\u00f6ytyi taulukko, kuten pitikin. Nollat tulivat l\u00e4hinn\u00e4 puuttuvista kommenteista. Muutama nolla lis\u00e4ksi siit\u00e4, ett\u00e4 main-operaatiossa ei ollut paluuarvon sijoitusta muuttujaan. Jokunen ratkaisu oli toisteinen: k\u00e4ytt\u00e4j\u00e4n sy\u00f6tteen oikeellisuus tarkistettiin sek\u00e4 main-operaatiossa ett\u00e4 merkin palauttavassa operaatiossa. Koodin toistamisesta ei sakotettu, mutta yleens\u00e4 ottaen saman toiminnallisuuden toteuttamiseen kahdesti ei ole tarvetta varsinkin, kun sy\u00f6tteen oikeellisuus voidaan p\u00e4\u00e4tell\u00e4 suoraan operaation paluuarvon avulla.<\/p>\n<p>5) merkin haku taulukosta API-operaatioilla, Kimmo. Javan API-kutsut olivat hyvin hallussa. Kommentteja oli paremmin kuin aikaisemmin. Jonkin verran n\u00e4kyi viel\u00e4 huonosti nimettyj\u00e4 muuttujia ja sisennyksiss\u00e4 oli hieman heittoa.<\/p>\n<p>7) kaksiulotteisen taulukon tulostaminen, Antti. Nollat tulivat puutteellisen kommentoinnin vuoksi.T\u00e4st\u00e4 teht\u00e4v\u00e4st\u00e4 ei muuta erityisemp\u00e4\u00e4 sanottavaa.<\/p>\n<p><strong>Harjoitus 5<\/strong><\/p>\n<p>Pisteeseen vaadittiin operaation otsikkoon liittyv\u00e4 yleinen kommentti.<\/p>\n<p>1) attribuuttien poisto, Antti. Korjattavaksi annetun ohjelman perusrakenne oli s\u00e4ilynyt hyvin attribuutteja poistettaessa. Muutama ratkaisu hyl\u00e4ttiin skandinaavisten kirjainten (\u00e5, \u00e4 ja \u00f6) vaillinaiseen k\u00e4sittelyyn liittyen. K\u00e4ytt\u00f6j\u00e4rjestelmien erilaiset merkist\u00f6t ja niiden aiheuttamat ongelmat ovat tulleet pikkuhiljaa tutuiksi syyslukukauden aikana, mutta edelleen on muistettava valita omalle k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4lle sopivassa merkist\u00f6ss\u00e4 oleva tiedosto, kun vaihtoehtoja on tarjolla ja tallentaa l\u00e4hdekoodi oman koneen k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4n merkist\u00f6koodausta k\u00e4ytt\u00e4en, jos tarjolla on vain vieraassa merkist\u00f6ss\u00e4 oleva tiedosto. J\u00e4lkimm\u00e4inen koskee erityisesti Mac- ja Linux-k\u00e4ytt\u00e4ji\u00e4, koska osa kurssilla julkaistusta l\u00e4hdekoodista on ollut tarjolla vain Windows 1252 -merkist\u00f6ss\u00e4.<\/p>\n<p>3) taulukon t\u00e4ytt\u00f6 merkeill\u00e4, Kari. Hyl\u00e4ttyjen t\u00f6iden yhteinen nimitt\u00e4j\u00e4 oli operaatiosta puuttuva yleinen kommentti, joka pit\u00e4isi kirjoittaa, jotta operaation k\u00e4ytt\u00e4j\u00e4 n\u00e4kee nopeasti koodia lukematta mit\u00e4 operaatio tekee ja miten sit\u00e4 kutsutaan. Operaation kommentti on nopeasti tehty hyv\u00e4 teko.<\/p>\n<p>6) tiedoston rivien laskeminen, Kimmo. Teht\u00e4v\u00e4 tehty kokonaisuutena hyvin ja ja koodi oli siisti\u00e4. Kommentteja l\u00f6ytyi hyvin, mutta niiden laatu vaihteli. Nollat tulivat Karin tarkistaman teht\u00e4v\u00e4n tapaan operaation otsikkoon liittyv\u00e4n yleisen kommentin unohtumisista.<\/p>\n<p><strong>Harjoitus 6<\/strong><\/p>\n<p>Pisteeseen vaadittiin operaation otsikkoon liittyv\u00e4 yleinen kommentti.<\/p>\n<p>3) taulukon muunnos toiseksi, Kimmo. Ratkaisuissa oli logiikka p\u00e4\u00e4osin kohdallaan. Joukossa oli muutama turhan monimutkainen (ylim\u00e4\u00e4r\u00e4isi\u00e4 silmukoita) sis\u00e4lt\u00e4v\u00e4 ratkaisu. Kommentteja oli jo hyvin. Muutamalla opiskelijalla oli viel\u00e4 hieman ongelmaa sisennyksiss\u00e4. Ei opettajan toimesta hyl\u00e4ttyj\u00e4 ratkaisuja.<\/p>\n<p>4) taulukon sis\u00e4ll\u00f6n tallentaminen, Antti. Koodi oli p\u00e4\u00e4osin kunnossa. Monella palauttajalla oli sis\u00e4kk\u00e4isten tarkistusten seurauksena tarpeettoman monta sisennystasoa ja sis\u00e4ll\u00f6lt\u00e4\u00e4n samaa else-lohkoa virheilmoitukselle. Kannattaa kiinnitt\u00e4\u00e4 huomiota siihen, ett\u00e4 teht\u00e4v\u00e4ss\u00e4 on vain yksi negatiivinen lopputulema, johon voidaan saapua monen tarkistuksen kautta. Sis\u00e4kk\u00e4isi\u00e4 valintarakenteita ja sisennystasoja voidaan poistaa yhdist\u00e4m\u00e4ll\u00e4 tarkistettavia ehtoja. Joskus jo pelk\u00e4st\u00e4\u00e4n if-lauseen ehdon vertailu true-arvon (if (ehto == true)&#8230;, lyhemmin if (ehto)&#8230;) asemasta false-arvoon (if (ehto == false)&#8230;, lyhemmin if (!ehto)&#8230;) saattaa auttaa poistamaan yhden sisennyskerroksen. Ei opettajan toimesta hyl\u00e4ttyj\u00e4 ratkaisuja.<\/p>\n<p>5) rekursiivinen potenssi, Kari. Muutaman ohjelman rakenteessa oli tarpeetonta monimutkaisuutta jakolaskun muodossa. Rakenteen vuoksi hyl\u00e4ttiin ratkaisut, joissa oli k\u00e4ytetty Math.pow-operaatiota, mihin ei ole tarvetta jo l\u00e4ht\u00f6kohtaisesti, kun ohjelman rakenteen tulee olla rekursiivinen. Silmukkaa k\u00e4ytt\u00e4vi\u00e4 ratkaisuja ei l\u00f6ytynyt, kuten pitikin. Tyylin vuoksi hyl\u00e4tyille ratkaisuille oli yhteist\u00e4 operaation yleisen kommentin unohtuminen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Harjoitus 1 5) lukujen merkit, Kari. Nollat olivat teht\u00e4v\u00e4ss\u00e4 erikoistapaus, joka j\u00e4i osin huomioimatta. Muutamassa ratkaisussa ei huomioitu tilannetta, jossa molemmat luvut ovat nollia ja osassa ratkaisuja t\u00e4llaisessa tilanteessa kerrottiin etumerkkien olevan erisuuret. N\u00e4ist\u00e4 ei rankaistu, koska ensimm\u00e4isiss\u00e4 harjoituksissa tarkistajat ottivat hieman rennommin. Operaatioiden nimien tulisi olla informaatiivisia. Esimerkiksi &#8221;operaatio&#8221;-nimi ei kerro mit\u00e4\u00e4n operaation tarkoituksesta. &hellip; <a href=\"https:\/\/coursepages2.tuni.fi\/tiep5\/syksy-2018\/harjoitukset\/ratkaisujen-tarkistus\/palaute\/\" class=\"more-link\">Jatka artikkeliin <span class=\"screen-reader-text\">Palaute<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"parent":442,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-447","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/comments?post=447"}],"version-history":[{"count":42,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/447\/revisions"}],"predecessor-version":[{"id":698,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/447\/revisions\/698"}],"up":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/442"}],"wp:attachment":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/media?parent=447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}