{"id":529,"date":"2020-12-14T23:11:04","date_gmt":"2020-12-14T21:11:04","guid":{"rendered":"https:\/\/coursepages.uta.fi\/tiep5-1\/?page_id=529"},"modified":"2021-03-08T14:19:59","modified_gmt":"2021-03-08T12:19:59","slug":"harjoitustyo","status":"publish","type":"page","link":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/syksy-2020\/harjoitustyo\/","title":{"rendered":"Harjoitusty\u00f6"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">Teht\u00e4v\u00e4nanto ja muuta materiaalia<\/h2>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Harjoitusty\u00f6n <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/info\/\" data-type=\"URL\" data-id=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/info\/\">infokalvot<\/a>.<\/li>\r\n<li>Tarkka <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/laki2_2020_harjoitustyo.pdf\" data-type=\"URL\" data-id=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/laki2_2020_harjoitustyo.pdf\">teht\u00e4v\u00e4nanto<\/a> pdf-muodossa.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Esimerkkiajot<\/h2>\r\n\r\n\r\n\r\n<p>Esimerkit ovat saatavilla kahdessa muodossa:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Windows-muotoiset rivinvaihdot. N\u00e4m\u00e4 tiedostot ovat saatavilla <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/esimerkit\/\">yksitt\u00e4in<\/a> tai <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/laki2_2020_harjoitustyo_esimerkit.zip\">zip-paketissa<\/a>.<\/li>\r\n<li>Linux\/Mac-muotoiset rivinvaihdot. Saatavilla <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/esimerkit_lf\/\">yksitt\u00e4in<\/a> tai <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/laki2_2020_harjoitustyo_esimerkit_lf.zip\">zip-paketissa<\/a>.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>Esimerkeist\u00e4 ei ole versioita eri merkist\u00f6ille, koska tiedostoissa on vain 7-bittisen ASCII-merkist\u00f6n &#8221;n\u00e4kyvi\u00e4&#8221; merkkej\u00e4, joiden esitystapa on sama niin Latin 1 (ISO 8859-1) kuin UTF-8-koodatussa Unicode-merkist\u00f6iss\u00e4.<\/p>\r\n\r\n\r\n\r\n<p>Oman ohjelman tulosteita kannattaa vertailla esimerkkitiedostoihin ennen WETO-palautuksia.<\/p>\r\n\r\n\r\n\r\n<p><em>Brain_check1<\/em>-, <em>brain_check2<\/em>-, <em>dilate_rectangle<\/em>-, <em>erode_rectangle<\/em>-, <em>spot<\/em>-, <em>spots<\/em>&#8211;<em>, cat- <\/em>ja <em>errors<\/em>-esimerkkeihin liittyy nelj\u00e4 tiedostoa. Ohjelmalle komentoriviparametrina annettava kuvatiedosto on <em>image<\/em>-alkuisessa tiedostossa. <em>Input<\/em>-alkuisessa tiedostossa ovat ohjelmalle annettavat komennot ja vastaavassa <em>output<\/em>-alkuisessa tiedostossa ovat komentoja vastaavat n\u00e4ytt\u00f6tulosteet. Sy\u00f6tteet ja niit\u00e4 vastaavat tulosteet on yhdistetty <em>combination<\/em>-alkuiseen tiedostoon ajamalla malliohjelma <em>echo<\/em>-komentoriviparametrilla.<\/p>\r\n\r\n\r\n\r\n<p>Virheellisiin komentoriviparametreihin liittyvien <em>args1<\/em>-, <em>args2<\/em>&#8211; ja <em>args3<\/em>-testien sek\u00e4 puuttuvaan tiedostoon liittyv\u00e4\u00e4n <em>x-file<\/em>-testin ja virheellisiin tiedostoihin liittyvien <em>image_too_colourful<\/em>-, <em>image_too_short<\/em>-, <em>image_too_tall<\/em>-, <em>image_too_thin<\/em>-, <em>image_too_wide<\/em>&#8211; ja <em>image_too_twisted<\/em>-esimerkkien osalta ei ole annettu <em>input<\/em>&#8211; ja <em>combination<\/em>-tiedostoja, koska ohjelmalle ei p\u00e4\u00e4st\u00e4 antamaan komentoja ennen ohjelman pys\u00e4htymist\u00e4.<\/p>\r\n\r\n\r\n\r\n<p>Alla olevassa taulukossa on annettu komennot, joilla ohjelma on k\u00e4ynnistetty tai yritetty k\u00e4ynnist\u00e4\u00e4 kussakin testiss\u00e4. Komennosta selvi\u00e4\u00e4 testiss\u00e4 k\u00e4ytetyn kuvatiedoston nimi, jos sellainen on m\u00e4\u00e4ritelty.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\">\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>Testi<\/td>\r\n<td>Kuva<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>brain_check1<\/td>\r\n<td>java BimEdit image_x.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>brain_check2<\/td>\r\n<td>java BimEdit image_plus.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>dilate_rectangle<\/td>\r\n<td>java BimEdit image_small_rectangle.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>erode_rectangle<\/td>\r\n<td>java BimEdit image_large_rectangle.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>spot<\/td>\r\n<td>java BimEdit image_spot.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>spots<\/td>\r\n<td>java BimEdit image_spots.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>cat<\/td>\r\n<td>java BimEdit image_cat.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>errors<\/td>\r\n<td>java BimEdit image_spot.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>args1<\/td>\r\n<td>java BimEdit<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>args2<\/td>\r\n<td>java BimEdit spot.txt b c<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>args3<\/td>\r\n<td>java BimEdit spot.txt abc<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>x-file<\/td>\r\n<td>java BimEdit x-file.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>too_colourful<\/td>\r\n<td>java BimEdit image_too_colourful.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>too_short<\/td>\r\n<td>java BimEdit image_too_short.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>too_tall<\/td>\r\n<td>java BimEdit image_too_tall.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>too_thin<\/td>\r\n<td>java BimEdit image_too_thin.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>too_wide<\/td>\r\n<td>java BimEdit image_too_wide.txt<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>too_twisted<\/td>\r\n<td>java BimEdit image_too_twisted.txt<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>Omaa ohjelmaa voi testata omatoimisesti WETO:n tapaan uudelleenohjausta k\u00e4ytt\u00e4m\u00e4ll\u00e4. Uudelleenohjauksesta on kerrottu luentorungon luvussa 4.2.<\/p>\r\n\r\n\r\n\r\n<p>Esimerkiksi <em>brain_check1<\/em>-testin voi ajaa seuraavasti:<\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit image_x.txt &lt; input_brain_check1.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p>jolloin ohjelma lukee sy\u00f6tteet <em>input<\/em>_<em>brain_check1.txt<\/em>-tiedostosta ilman, ett\u00e4 tiedoston sy\u00f6tteit\u00e4 tarvitsee antaa ohjelmalle k\u00e4sin. Ohjelma tulostaa normaaliin tapaan n\u00e4yt\u00f6lle. Edell\u00e4 oletetaan, ett\u00e4 sy\u00f6tetiedosto on samassa hakemistossa kuin harjoitusty\u00f6ohjelma.<\/p>\r\n\r\n\r\n\r\n<p><em>Echo<\/em>-komentoriviparametria k\u00e4ytt\u00e4m\u00e4ll\u00e4:<\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit image_x.txt echo &lt; input_brain_check1.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p>n\u00e4yt\u00f6lle tulostuvat limitt\u00e4in komennot ja ohjelman tulosteet, jolloin ohjelman toimintaa on helpompi seurata.<\/p>\r\n\r\n\r\n\r\n<p>Uudelleenohjausta voi hy\u00f6dynt\u00e4\u00e4 laajemmin n\u00e4in:<\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit image_x.txt &lt; input_brain_check1.txt &gt; out.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p>Yll\u00e4 testin sy\u00f6tteet ohjataan sy\u00f6tetiedostosta ohjelmalle ja ohjelman tuloste kaapataan <em>out<\/em>.<em>txt<\/em>-tiedostoon uudelleenohjauksen avulla.<\/p>\r\n\r\n\r\n\r\n<p><em>Out.txt<\/em>-tiedoston sis\u00e4lt\u00f6\u00e4 voi vertailla <em>output_brain_check1.txt<\/em>-tiedostossa oleviin malliohjelman tulosteisiin joko silm\u00e4m\u00e4\u00e4r\u00e4isesti tai tiedostoja vertailevalla k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4n komennolla. Windowsissa t\u00e4llainen komento on <em>fc<\/em> ja Mac- ja Linux-j\u00e4rjestelmiss\u00e4 monimutkaisempi <em>diff<\/em>.<\/p>\r\n\r\n\r\n\r\n<p>Edellisen esimerkin tulosteita voisi vertailla Windowsissa n\u00e4in:<\/p>\r\n\r\n\r\n\r\n<p><code>fc output_brain_check1.txt out.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p>kun my\u00f6s testin tulostiedosto on harjoitusty\u00f6ohjelman hakemistossa.<\/p>\r\n\r\n\r\n\r\n<p><em>Input_brain_check1<\/em>-testi kaksisuuntaisella uudelleenohjauksella ja komentojen kaiutuksella:<\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit image_x.txt echo &lt; input_brain_check1.txt &gt; out.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p><em>Out.txt<\/em>-tiedoston sis\u00e4lt\u00f6\u00e4 on t\u00e4ss\u00e4 tapauksessa verrattava <em>combination_brain_check1.txt<\/em>-tiedostoon.<\/p>\r\n\r\n\r\n\r\n<p>L\u00e4hdekoodin ja testitiedostot voi pit\u00e4\u00e4 erill\u00e4\u00e4n tallentamalla tiedostot omaan hakemistoonsa. Oletetaan, ett\u00e4 testitiedostot ovat Windows-j\u00e4rjestelm\u00e4ss\u00e4 l\u00e4hdekoodihakemiston <em>esimerkit<\/em>-alihakemistossa. T\u00e4ll\u00f6in edell\u00e4 annetut komennot olisivat:<\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit esimerkit\\image_x.txt &lt; esimerkit\\input_brain_check1.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit esimerkit\\image_x.txt echo &lt; esimerkit\\input_brain_check1.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit esimerkit\\image_x.txt &lt; esimerkit\\input_brain_check1.txt &gt; out.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p><code>fc esimerkit\\output_brain_check1.txt out.txt<\/code><\/p>\r\n\r\n\r\n\r\n<p><code>java BimEdit esimerkit\\image_x.txt echo &lt; esimerkit\\input_brain_check1.txt &gt; out.txt<\/code><\/p>\r\n\r\n<h2><a id=\"salaiset\">Salaiset testit<\/a><\/h2>\r\n<p>Salaiset testit ovat julkisessa testauksessa k\u00e4ytettyjen esimerkkien tapaan saatavilla kahdessa muodossa:<\/p>\r\n<ul>\r\n<li>Windows-muotoiset rivinvaihdot. N\u00e4m\u00e4 tiedostot ovat saatavilla <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/salaiset\/\">yksitt\u00e4in<\/a> tai <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/laki2_2020_harjoitustyo_salaiset.zip\">zip-paketissa<\/a>.<\/li>\r\n<\/ul>\r\n<ul>\r\n<li>Linux\/Mac-muotoiset rivinvaihdot. Saatavilla <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/salaiset_lf\/\">yksitt\u00e4in<\/a> tai <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/laki2\/syksy-2020\/harjoitustyo\/laki2_2020_harjoitustyo_salaiset_lf.zip\">zip-paketissa<\/a>.<\/li>\r\n<\/ul>\r\n<p>Alla olevassa taulukossa on annettu komennot, joilla ohjelma on k\u00e4ynnistetty salaisissa testiss\u00e4. Komennosta selvi\u00e4\u00e4 testiss\u00e4 k\u00e4ytetyn kuvatiedoston nimi.<\/p>\r\n<table border=\"0\" rules=\"rows\" cellpadding=\"4\">\r\n<tbody>\r\n<tr align=\"left\" valign=\"middle\">\r\n<td>Testi<\/td>\r\n<td>Kuva<\/td>\r\n<\/tr>\r\n<tr align=\"left\" valign=\"middle\">\r\n<td style=\"vertical-align: middle\">secret1<\/td>\r\n<td style=\"vertical-align: middle\">\r\n<pre>java BimEdit image_homer.txt<\/pre>\r\n<\/td>\r\n<\/tr>\r\n<tr align=\"left\" valign=\"middle\">\r\n<td style=\"vertical-align: middle\">secret2<\/td>\r\n<td style=\"vertical-align: middle\">\r\n<pre>java BimEdit image_footprint.txt<\/pre>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Teht\u00e4v\u00e4nanto ja muuta materiaalia Harjoitusty\u00f6n infokalvot. Tarkka teht\u00e4v\u00e4nanto pdf-muodossa. Esimerkkiajot Esimerkit ovat saatavilla kahdessa muodossa: Windows-muotoiset rivinvaihdot. N\u00e4m\u00e4 tiedostot ovat saatavilla yksitt\u00e4in tai zip-paketissa. Linux\/Mac-muotoiset rivinvaihdot. Saatavilla yksitt\u00e4in tai zip-paketissa. Esimerkeist\u00e4 ei ole versioita eri merkist\u00f6ille, koska tiedostoissa on vain 7-bittisen ASCII-merkist\u00f6n &#8221;n\u00e4kyvi\u00e4&#8221; merkkej\u00e4, joiden esitystapa on sama niin Latin 1 (ISO 8859-1) kuin UTF-8-koodatussa &hellip; <a href=\"https:\/\/coursepages2.tuni.fi\/tiep5-1\/syksy-2020\/harjoitustyo\/\" class=\"more-link\">Jatka artikkeliin <span class=\"screen-reader-text\">Harjoitusty\u00f6<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"parent":408,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-529","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/comments?post=529"}],"version-history":[{"count":15,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/529\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/529\/revisions\/583"}],"up":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/pages\/408"}],"wp:attachment":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5-1\/wp-json\/wp\/v2\/media?parent=529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}