{"id":369,"date":"2020-04-23T19:45:48","date_gmt":"2020-04-23T16:45:48","guid":{"rendered":"https:\/\/coursepages.uta.fi\/tiea2-1b\/?page_id=369"},"modified":"2021-09-21T16:09:12","modified_gmt":"2021-09-21T13:09:12","slug":"esimerkit","status":"publish","type":"page","link":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/kevat-2020\/harjoitustyo\/esimerkit\/","title":{"rendered":"Esimerkit"},"content":{"rendered":"<p>Esimerkkitiedostot ovat saatavilla kahdessa muodossa:<\/p>\n<ul>\n<li>Windows-muotoiset rivinvaihdot. N\u00e4m\u00e4 tiedostot ovat saatavilla <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/oope2\/kevat-2020\/harjoitustyo\/esimerkit\/\">yksitt\u00e4in<\/a> tai <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/oope2\/kevat-2020\/harjoitustyo\/oope2_2020_harjoitustyo_esimerkit.zip\">zip-paketissa<\/a>.<\/li>\n<\/ul>\n<ul>\n<li>Linux\/Mac-muotoiset rivinvaihdot. Saatavilla <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/oope2\/kevat-2020\/harjoitustyo\/esimerkit_lf\/\">yksitt\u00e4in<\/a> tai <a href=\"https:\/\/homepages.tuni.fi\/jorma.laurikkala\/oope2\/kevat-2020\/harjoitustyo\/oope2_2020_harjoitustyo_esimerkit_lf.zip\">zip-paketissa<\/a>.<\/li>\n<\/ul>\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>\n<p>Oman ohjelman tulosteita kannattaa vertailla esimerkkitiedostoihin ennen WETO-palautuksia.<\/p>\n<p>Esimerkkeihin liittyy nelj\u00e4 tiedostoa pois lukien testit, joissa ohjelman k\u00e4ytt\u00f6liittym\u00e4\u00e4 ei p\u00e4\u00e4st\u00e4 k\u00e4ynnist\u00e4m\u00e4\u00e4n virheellisten komentoriviparametrien vuoksi. Testiss\u00e4 ohjelmalle annettavat komennot ovat <em>input<\/em>-alkuisessa tiedostossa. Komentoja vastaavat n\u00e4ytt\u00f6tulosteet ovat vastaavassa <em>output<\/em>-alkuisessa tiedostossa. Testit ajetaan aina siten, ett\u00e4 sy\u00f6tetiedoston ensimm\u00e4inen komento on <em>echo<\/em>, jolloin sy\u00f6tteet <strong>limittyv\u00e4t<\/strong> tulosten v\u00e4liin ja tulos on sama kuin testi\u00e4 komentoikkunassa ajettaessa. T\u00e4ss\u00e4 ty\u00f6ss\u00e4 ei ole siksi saatavilla erikseen pelk\u00e4st\u00e4\u00e4n tulosteet sis\u00e4lt\u00e4vi\u00e4 tiedostoja.<\/p>\n<p>Ohjelmalle komentoriviparametrina annettavat kokoelma ja sulkusanalista ovat omissa tiedostoissaan. N\u00e4et kussakin testiss\u00e4 k\u00e4ytetyt kokoelma- ja sulkusanatiedostot alla olevasta taulukosta, jossa on annettu komentoparametrien arvot, joilla ohjelma on k\u00e4ynnistetty tai yritetty k\u00e4ynnist\u00e4\u00e4 kussakin testiss\u00e4. Taulukossa on kerrottu my\u00f6s, jos testi on tarkoitettu vain ty\u00f6n laajalle versiolle.<\/p>\n<p>Ohjelmalle annetaan <em>args1<\/em>-, <em>args2<\/em>&#8211; ja <em>args3<\/em>-testeiss\u00e4 v\u00e4\u00e4r\u00e4 m\u00e4\u00e4r\u00e4 komentoriviparametreja, kun taas x<em>_file1<\/em>-, <em>x<\/em>_<em>file2<\/em>&#8211; ja <em>x<\/em>_<em>file3<\/em>-testeiss\u00e4 jompikumpi tai molemmat tiedostot ovat hukassa. N\u00e4ihin testeihin ei liity <em>input<\/em>-tiedostoja.<\/p>\n<table border=\"0\" rules=\"rows\" cellpadding=\"4\">\n<tbody>\n<tr align=\"left\" valign=\"middle\">\n<td>Testi<\/td>\n<td>Komentoriviparametrit<\/td>\n<td>Vain laajan\u00a0ty\u00f6n testi<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>brain_check<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>print1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>print2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>args1<\/td>\n<td><\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>args2<\/td>\n<td>jokes_oldies.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>args3<\/td>\n<td>jokes_oldies.txt stop_words.txt news_reuters.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>x_file1<\/td>\n<td>x_file1.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>x_file2<\/td>\n<td>jokes_oldies.txt x_file2.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>x_file3<\/td>\n<td>x_file1.txt x_file2.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>assignment1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>assignment2<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>add1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>add2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>find1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>find2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>remove1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>remove2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>reset1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>reset2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>polish1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>polish2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>use_case1<\/td>\n<td>jokes_bad.txt stop_words_mysql.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>use_case2<\/td>\n<td>news_bbc.txt stop_words_insight.txt<\/td>\n<td>ei<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>freqs1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>freqs2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>sort1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>sort2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>pprint1<\/td>\n<td>jokes_oldies.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>pprint2<\/td>\n<td>news_reuters.txt stop_words.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>use_case3<\/td>\n<td>jokes_bad.txt stop_words_mysql.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"middle\">\n<td>use_case4<\/td>\n<td>news_bbc.txt stop_words_insight.txt<\/td>\n<td>kyll\u00e4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Omaa ohjelmaa voi testata omatoimisesti komentoikkunassa WETO:n tapaan uudelleenohjausta k\u00e4ytt\u00e4m\u00e4ll\u00e4.<\/p>\n<p>Esimerkiksi <em>brain_check<\/em>-testin voi ajaa seuraavasti:<\/p>\n<p><code>java Oope2HT jokes_oldies.txt stop_words.txt &lt; input_brain_check.txt<\/code><\/p>\n<p>jolloin ohjelma lukee sy\u00f6tteet <em>input<\/em>_<em>brain_check.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>\n<p>Uudelleenohjausta voi hy\u00f6dynt\u00e4\u00e4 laajemmin n\u00e4in:<\/p>\n<p><code>java Oope2HT jokes_oldies.txt stop_words.txt &lt; input_brain_check.txt &gt; out.txt<\/code><\/p>\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>\n<p><em>Out.txt<\/em>-tiedoston sis\u00e4lt\u00f6\u00e4 voi vertailla <em>output_brain_check.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>\n<p>Edellisen esimerkin tulosteita voisi vertailla Windowsissa n\u00e4in:<\/p>\n<p><code>fc output_brain_check.txt out.txt<\/code><\/p>\n<p>kun my\u00f6s testin tulostiedosto on harjoitusty\u00f6ohjelman hakemistossa.<\/p>\n<p>T\u00e4m\u00e4n ty\u00f6n <strong>testitiedostot kannattaa pit\u00e4\u00e4 pois versionhallinnan piirist\u00e4<\/strong>, jotta oma l\u00e4hdekoodi ja opettajan luomat testitiedostot olisivat selvemmin erill\u00e4\u00e4n. Oletetaan, ett\u00e4 testitiedostot ovat Windows-j\u00e4rjestelm\u00e4ss\u00e4 ty\u00f6hakemiston ylihakemiston <em>esimerkit<\/em>-nimisess\u00e4 alihakemistossa. T\u00e4ll\u00f6in edell\u00e4 annetut komennot olisivat:<\/p>\n<p><code>java Oope2HT ..\\esimerkit\\jokes_oldies.txt ..\\esimerkit\\stop_words.txt &lt; ..\\esimerkit\\input_brain_check.txt<\/code><\/p>\n<p><code>java Oope2HT ..\\esimerkit\\jokes_oldies.txt ..\\esimerkit\\stop_words.txt &lt; ..\\esimerkit\\input_brain_check.txt<\/code><code>&gt; ..\\out.txt<\/code><\/p>\n<p><code>fc ..\\esimerkit\\output_brain_check.txt ..\\out.txt<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esimerkkitiedostot 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 Unicode-merkist\u00f6iss\u00e4. Oman ohjelman tulosteita kannattaa vertailla esimerkkitiedostoihin ennen WETO-palautuksia. Esimerkkeihin &hellip; <a href=\"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/kevat-2020\/harjoitustyo\/esimerkit\/\" class=\"more-link\">Jatka artikkeliin <span class=\"screen-reader-text\">Esimerkit<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"parent":278,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-369","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/pages\/369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/comments?post=369"}],"version-history":[{"count":42,"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/pages\/369\/revisions"}],"predecessor-version":[{"id":459,"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/pages\/369\/revisions\/459"}],"up":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/pages\/278"}],"wp:attachment":[{"href":"https:\/\/coursepages2.tuni.fi\/tiea2-1b\/wp-json\/wp\/v2\/media?parent=369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}