{"id":997,"date":"2018-09-17T13:59:00","date_gmt":"2018-09-17T10:59:00","guid":{"rendered":"https:\/\/coursepages.uta.fi\/tiep1\/?page_id=997"},"modified":"2018-10-25T20:17:35","modified_gmt":"2018-10-25T17:17:35","slug":"palaute","status":"publish","type":"page","link":"https:\/\/coursepages2.tuni.fi\/tiep1\/syksy-2018\/harjoitukset\/ratkaisujen-tarkistus\/palaute\/","title":{"rendered":"Palaute"},"content":{"rendered":"<p><strong>Harjoitus 1<\/strong><\/p>\n<p>3) <strong>Oma vuokaavio<\/strong>, Jorma. Omien algoritmien lukeminen oli taas kerran virkist\u00e4v\u00e4\u00e4. T\u00e4h\u00e4n teht\u00e4v\u00e4\u00e4n ei annettu nollia. Yleisin mallinnettu teema oli ruoan tai juoman valmistaminen ja nauttiminen. Monessa palautuksessa oli silmukka, mist\u00e4 kehut. Kaavioissa oli jonkin verran suuntaamattomia nuolia. Kaavion mallintaman algorimin tarkoitus on hyv\u00e4 lausua sanallisesti, esimerkiksi &#8221;Algoritmi oluen j\u00e4\u00e4dytt\u00e4miseen&#8221;, vaikka monesti kaavio on my\u00f6s tarkoituksensa itse selitt\u00e4v\u00e4.<\/p>\n<p>6) <strong>Nopeuden laskeminen<\/strong>, Kimmo. Teht\u00e4v\u00e4 arvioitiin rennosti. Piste tuli hyv\u00e4st\u00e4 yrityksest\u00e4. Piste nollaantui l\u00e4hinn\u00e4 vain, jos laskennasta puuttui enemm\u00e4n v\u00e4livaiheita.<\/p>\n<p>7) <strong>Kertolaskun harjoittelu<\/strong>, Kari. T\u00e4m\u00e4nkin teht\u00e4v\u00e4n arvioinnissa otettiin rento linja, koska ohjelmointi on uusi asia. Jos esimerkiksi lukujen tulostus oli unohtunut tai symboleissa oli pienehk\u00f6\u00e4 vikaa, niin ratkaisu p\u00e4\u00e4stettiin l\u00e4pi. Mallivastauksiin on syyt\u00e4 tutustua, koska pikkuvikoja oli paljon. Nollat tulivat hyvin puutteellisista tai selv\u00e4sti v\u00e4\u00e4rin toimivista kaavioista.<\/p>\n<p><strong>Harjoitus 2<br \/>\n<\/strong><\/p>\n<p>4) <strong>Toinen buginen ohjelma<\/strong>, Kari. Nollia tuli vain WETOn hylk\u00e4\u00e4mille ratkaisuille. Tulostelauseessa valmiina ollut pintaAla-muuttuja aiheutti hieman h\u00e4mmennyst\u00e4 ja v\u00e4\u00e4rinymm\u00e4rryksi\u00e4, joista ei rangaistu.<\/p>\n<p>5) <strong>Kolme muuttujaa<\/strong>, Kimmo. Ratkaisut olivat p\u00e4\u00e4asiassa siisti\u00e4 j\u00e4lke\u00e4.\u00a0Sisennyksiss\u00e4 oli osalla pient\u00e4 heittoa. Muutamassa ratkaisussa ohjelmaan oli lis\u00e4tty arvojen lukeminen. Ylim\u00e4\u00e4r\u00e4isest\u00e4 ty\u00f6st\u00e4 ei rankaistu.<\/p>\n<p>7) <strong>Ajatelman lukeminen ja tulostaminen<\/strong>, Jorma. Tarkistaja korjasi pienien tulostusongelmien vuoksi testeiss\u00e4 hyl\u00e4tyt ty\u00f6t kuntoon, koska kyseess\u00e4 oli ensimm\u00e4inen automaattitarkistettu teht\u00e4v\u00e4. Suuremmat ongelmat, kuten k\u00e4\u00e4nn\u00f6svirheet, johtivat nollattuun pisteeseen. Ohjelmien tyyliss\u00e4 oli odotetusti jonkin verran ongelmia. Monessa ohjelmassa oli vain WETOn pakottama kommentti ja main-metodin sisennys puuttui toisinaan. Sisennys oli kuitenkin kokonaisuutena hyvin tehty. On huomattava, ett\u00e4 luokan otsikon sis\u00e4lt\u00e4v\u00e4 rivi tulee aloittaa editorin ikkunan vasemmasta reunasta, vaikka editori ehdottaisi muuta. Main-metodin kootun lauseen sulkeva sulje tulee kirjoittaa samaan sarakkeeseen, josta kootun lauseen avaavan sulkeen sis\u00e4lt\u00e4v\u00e4 rivi alkaa. Tyhji\u00e4 &#8221;v\u00e4lirivej\u00e4&#8221; oli jonkin verran v\u00e4\u00e4riss\u00e4 paikoissa. V\u00e4lirivi on tarkoitettu erottamaan ohjelman &#8221;teemoja&#8221; toistaan. V\u00e4lirivej\u00e4 ei tule tehd\u00e4 jokaisen lauseen tai kommentin j\u00e4lkeen eik\u00e4 silloin, kun per\u00e4kk\u00e4isill\u00e4 riveill\u00e4 on kootun lauseen sulkevia aaltosulkeita.<\/p>\n<p><strong>Harjoitus 3<br \/>\n<\/strong><\/p>\n<p>5) <strong>Vuodenajat switch-case-lauseella<\/strong>, Kimmo. Teht\u00e4v\u00e4 oli sen verran yksiselitteinen ettei siin\u00e4 ollut erityist\u00e4 esille nostettavaa. Osassa ratkaisuja tulostettiin switch-case-rakenteessa, osassa ratkaisuissa tulos otettiin rakenteessa yl\u00f6s ja tulostettiin lopussa. P\u00e4\u00e4asiassa siisti\u00e4 koodia, mutta\u00a0muutama ratkaisu pisti silm\u00e4\u00e4n, koska niiss\u00e4 ei ollut laisinkaan sisennyst\u00e4.<\/p>\n<p>7) <strong>Kertotaulu<\/strong>, Kari.Teht\u00e4v\u00e4ss\u00e4 haettiin j\u00e4lkiehtoista silmukkaa (do-while), koska vuokaaviossa p\u00e4\u00e4t\u00f6s on silmukan lopussa, mutta yll\u00e4tt\u00e4v\u00e4n moni oli valinnut esiehtoisen silmukan (while tai for). Scanner-luokkaa oli k\u00e4ytetty poikkeuksellisen paljon. T\u00e4ss\u00e4 on uhka, jos k\u00e4ytet\u00e4\u00e4n esimerkiksi rivin lukemista ja parseInt-metodia ilman tarkistuksia. Toki teht\u00e4v\u00e4ss\u00e4 sai olettaa, ett\u00e4 sy\u00f6te on numero.<\/p>\n<p>8) <strong>ASCII-kala<\/strong>, Jorma. Ohjelmat olivat pitk\u00e4lti toimivia, vaikka muotoon pakottavaa tarkistusautomaattia ei ollut. Yleisin tyyliongelma oli kommenttien puute. Kevyesti kommentoiduissa ohjelmissa oli usein alussa hyv\u00e4 lohkokomentti, jossa on teht\u00e4v\u00e4n ja tekij\u00e4n tiedot, mutta ohjelman rungossa ei ollut kommentteja. Sisennysten kanssa oli isompaa ongelmaa noin nelj\u00e4sosassa palautuksia. Muutamassa palautuksessa oli koodin toistoa siten, ett\u00e4 kuplia tulostavassa silmukassa laskuria p\u00e4ivitettiin kunkin valinnan sis\u00e4ll\u00e4. Laskurin p\u00e4ivitys on parasta tehd\u00e4 selkeyden vuoksi ja virhemahdollisuuksien v\u00e4hent\u00e4miseksi yhdell\u00e4 lauseella, mik\u00e4li vain mahdollista.<\/p>\n<p><strong>Harjoitus 4<br \/>\n<\/strong><\/p>\n<p>3) <strong>Sahalaidan tulostus for-silmukalla<\/strong>, Kari.Kaikki hyl\u00e4tyt ty\u00f6t olivat Weton hylk\u00e4\u00e4mi\u00e4. Tarkistajan iloksi kaikissa tarkistetuissa oli k\u00e4ytetty pyydetysti for-silmukkaa. Parissa palautuksessa oli if-else-rakenne jossa tutkittiin parillinen ja pariton lukum\u00e4\u00e4r\u00e4 omissa for-silmukoissaan, jolloin ohjelmassa on tarpeettoman paljon sis\u00e4lt\u00f6\u00e4 (koodin toistoa), koska silmukat ovat l\u00e4hes samoja.<\/p>\n<p>5) <strong>Sulkeiden parit loogisia operaatioita k\u00e4ytt\u00e4en<\/strong>, Kimmo. Ratkaisut oli tehty hyvin pyydetyll\u00e4 tavalla ehtolausekkeita loogisilla operaattoreilla yhdist\u00e4en.<\/p>\n<p>7) <strong>BizzBuzz-peli<\/strong>, Jorma. Pelisimulaattoria oli tehty melko ahkerasti. Ratkaisuissa oli odotetusti aloitteleville ohjelmoijille tyypillisi\u00e4 pieni\u00e4 ja suurempia rakenneongelmia. Rakenteellisesti selvin parantamisen paikka l\u00f6ytyi jonon viimeisen luvun lausumisesta, jossa oli usein p\u00e4\u00e4dytty silmukoimaan n &#8211; 1 kertaa ja kopioimaan silmukan sis\u00e4inen p\u00e4\u00e4t\u00f6srakenne silmukan j\u00e4lkeen, jotta viimeinen luku voitiin tulostaa pisteen kanssa. N\u00e4in koodia &#8221;monistaen&#8221; ohjelmasta tulee selv\u00e4sti pitempi kuin on tarpeen ja samalla sen luettavuus ja yll\u00e4pidett\u00e4vyys k\u00e4rsiv\u00e4t. Koodia oli monistettu my\u00f6s siten, ett\u00e4 kaikkien nelj\u00e4\u00e4n tulostusvalinnan sis\u00e4\u00e4n oli tehty if-else-lause, jolla p\u00e4\u00e4tettiin tulostetaanko erottimen vai pisteen kanssa, jolloin if- ja else-osien sis\u00e4ll\u00f6t olivat l\u00e4hes samat.<\/p>\n<p>Ohjelma napakoituu selke\u00e4sti, jos erottimen ja pisteen v\u00e4lill\u00e4 valitaan silmukan sis\u00e4ll\u00e4 (katso mallivastaus) tai jos luku 1 tulostetaan ennen silmukkaa, piste silmukan j\u00e4lkeen ja silmukan sis\u00e4ss\u00e4 tulostetaan ensin erotin ja sitten luvun jaollisuuden m\u00e4\u00e4r\u00e4m\u00e4 tuloste. Pienemm\u00e4ss\u00e4 m\u00e4\u00e4rin turhaa koodia oli ehtolausekkeissa, joita tarvittiin paljon varsinkin, jos ongelma oli ratkaistu per\u00e4kk\u00e4isill\u00e4 if-lauseilla. Sis\u00e4kk\u00e4isill\u00e4 if-else-lauseilla luvun lausumisen sellaisenaan voi j\u00e4tt\u00e4\u00e4 viimeisen else-osan huoleksi, kun tunnistaa ensin j\u00e4rjestyksess\u00e4 onko luku jaollinen kolmella ja viidell\u00e4 (ensimm\u00e4inen if), kolmella (toinen if) tai viidell\u00e4 (kolmas if). \u00c4l\u00e4 masennu, jos omassa ratkaisussasi oli liikaa koodia, koska tiivistetympi\u00e4 ohjelmia harjautuu tekem\u00e4\u00e4n lopulta vasta kokokemuksen kautta.<\/p>\n<p>Ohjelmat olivat hyvin sisennettyj\u00e4. Toisaalta kommenteissa oli s\u00e4\u00e4stelty. Monessa ratkaisussa oli vain yleinen lohkokommentti. Main-operaation sis\u00e4ll\u00e4 olevissa kommenteissa oli kerrottu harvoin ohjelman vaikeimmista kohdista, joita kommenteilla pit\u00e4isi erityisesti avata. Kommenteista pit\u00e4isi k\u00e4yd\u00e4 ilmi mill\u00e4 periaatteella p\u00e4\u00e4tell\u00e4\u00e4n miss\u00e4 muodossa luku tulostetaan ja kuinka valitaan erottimen ja lopettimen v\u00e4lill\u00e4.<\/p>\n<p><strong>Harjoitus 5<br \/>\n<\/strong><\/p>\n<p>1) <strong>Sisennys<\/strong>, Kimmo. Teht\u00e4v\u00e4 meni kokonaisuutena hyvin;\u00a0useassa ratkaisussa ei sisennysvirheit\u00e4 n\u00e4kynyt laisinkaan. Yksi tai kaksi pienemp\u00e4\u00e4 virhett\u00e4 annettiin anteeksi.<\/p>\n<p>2) <strong>Parittomien laskeminen<\/strong>, Kari. Ohjelman korjaaminen osoittautui vaikeaksi. WETO hylk\u00e4si suurimman osan palautettaessa edelleen rikki olleista ohjelmista. Tarkistuksessa tultiin vastaan siten, ett\u00e4 vaillinaista kommenteista tai tarpeettomista muutoksista ei annettu nollaa. Parissa ohjelmassa do-while ehtoa oli muokattu siten, ett\u00e4 jatkettiin kun inputOK == true. T\u00e4m\u00e4 johtaa lukijaa harhaan, koska sy\u00f6tett\u00e4 tulisi kysy\u00e4 uudelleen, kun se ei ole kunnossa (inputOK == false). Parissa ratkaisussa oli lis\u00e4tty tarpeeton if ennen for-silmukkaa:<\/p>\n<pre>\/\/ Valinta tarpeeton, koska esiehto est\u00e4\u00e4 silmukan suorittamisen,\r\n\/\/ kun numOfInts &lt;= 0.\r\n<strong>if<\/strong> (numOfInts &gt; 0)\r\n\u00a0\u00a0 <strong>for<\/strong> (int i = 0; i &lt; numOfInts; i++) {<\/pre>\n<p>3) <strong>Arvosanan laskeminen<\/strong>, Jorma. Valtaosa (noin 75 %) ohjelmista oli tehty tyylikk\u00e4\u00e4sti. Yleisin hylk\u00e4yksen syy oli sisennys, joka puuttui toisinaan main-operaatiosta ja toisinaan, kun if- tai else-kohtaan liittyi yksi lause. Esimerkki j\u00e4lkimm\u00e4isest\u00e4 ongelmasta:<\/p>\n<pre>...\r\nelse {\r\n   if (...) {\r\n   \/\/ Alla olevasta lauseesta puuttuu sisennys.\r\n   System.out.println(...);\r\n   }\r\n   ...\r\n<\/pre>\n<p>Jonkin verran l\u00f6ytyi ohjelmia, joissa ei ollut lainkaan komentteja main-operaation sis\u00e4ll\u00e4. Hyv\u00e4ksymisen ja hylk\u00e4\u00e4misen rajatapauksissa oli pient\u00e4 horjuvuutta sisennyksiss\u00e4, kevyehk\u00f6\u00e4 kommentointia ja tarpeettomia v\u00e4lirivej\u00e4 erityisesti ennen main-operaation kootun lauseen sulkevaa aaltosuljetta.<\/p>\n<p><strong>Harjoitus 6<br \/>\n<\/strong><\/p>\n<p>1) <strong>Sisennys<\/strong>, Kari. Teht\u00e4v\u00e4 oli osattu hyvin. Yksitt\u00e4isi\u00e4 pieni\u00e4 virheit\u00e4 l\u00f6ytyi monestakin, mutta n\u00e4ist\u00e4 ei pisteit\u00e4 nollattu.<\/p>\n<p>3) <strong>Ensimm\u00e4isen tai viimeisen merkin poisto<\/strong>, Kimmo. T\u00e4m\u00e4kin teht\u00e4v\u00e4 oli hyvin tehty. Nollia tuli vain kiellettyjen menetelmien \u2013 l\u00e4hinn\u00e4 substring-operaation\u00a0\u2013 k\u00e4yt\u00f6st\u00e4. Teht\u00e4v\u00e4n koodia voi k\u00e4ytt\u00e4\u00e4 vapaasti Lausekielinen ohjelmointi II -kurssin ensimm\u00e4isess\u00e4 harjoitusty\u00f6ss\u00e4, jossa voi olla helpompaa ensin poistaa asteriski osamerkkijonosta kuin huomioida se my\u00f6hemmin haussa.<\/p>\n<p>6) <strong>Tinkaaja<\/strong>, Jorma. Teht\u00e4v\u00e4 t\u00e4ytti hyvin tarkoituksensa. Tyylitarkistusvaroitus oli huomioitu ottamalla sisennys ja kommentointi haltuun erinomaisesti. Main-operaation rungossa oli kommentteja v\u00e4lill\u00e4 melkein liikaakin. Sisennys oli paria pient\u00e4 virhett\u00e4 lukuun ottamatta juuri niin kuin piti. N\u00e4htyjen ratkaisujen perusteella teht\u00e4v\u00e4n tarkistaja uskoo, ett\u00e4 teht\u00e4v\u00e4n koodin voi kierr\u00e4tt\u00e4\u00e4 hieman muokattuna Lausekielinen ohjelmointi II -kurssin ensimm\u00e4iseen harjoitusty\u00f6h\u00f6n ilman, ett\u00e4 tyyliseikoista tulee my\u00f6hemmin sanomista.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Harjoitus 1 3) Oma vuokaavio, Jorma. Omien algoritmien lukeminen oli taas kerran virkist\u00e4v\u00e4\u00e4. T\u00e4h\u00e4n teht\u00e4v\u00e4\u00e4n ei annettu nollia. Yleisin mallinnettu teema oli ruoan tai juoman valmistaminen ja nauttiminen. Monessa palautuksessa oli silmukka, mist\u00e4 kehut. Kaavioissa oli jonkin verran suuntaamattomia nuolia. Kaavion mallintaman algorimin tarkoitus on hyv\u00e4 lausua sanallisesti, esimerkiksi &#8221;Algoritmi oluen j\u00e4\u00e4dytt\u00e4miseen&#8221;, vaikka monesti kaavio &hellip; <a href=\"https:\/\/coursepages2.tuni.fi\/tiep1\/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":984,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-997","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/pages\/997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/comments?post=997"}],"version-history":[{"count":35,"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/pages\/997\/revisions"}],"predecessor-version":[{"id":1182,"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/pages\/997\/revisions\/1182"}],"up":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/pages\/984"}],"wp:attachment":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep1\/wp-json\/wp\/v2\/media?parent=997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}