Toinen harjoitustyö ASCII-grafiikkaa.

Slides:



Advertisements
Samankaltaiset esitykset
13. Hyvä ohjelmointitapa (osa 1)
Advertisements

Harjoitustyö 1. Olio-ohjelmoinnin perusteet | Kevät 2015 | Jorma Laurikkala2 Harjoitustyö Tehtävä: ohjelmoi lötköjen kansoittamaa alkulimaa simuloiva.
Tentti. Olio-ohjelmoinnin perusteet | Kevät 2015 | Jorma Laurikkala2 Tentti Torstaina klo 16–20 D10ab (Päätalo). Pääasiassa Java-ohjelmien kirjoittamista.
Tentti. Lausekielinen ohjelmointi | Syksy 2014 | Jorma Laurikkala2 Yleistä Torstaina klo D10ab (Päätalo). WENTTI-ilmoittautuminen sulkeutuu.
Ubuntu - peruskäyttö Seuraavassa läpikäydään Ubuntun peruskäyttöä: Perustoiminnot Sisäänkirjautuminen Työpöytä Uloskirjautuminen Lähteinä on käytettu Ubuntu.
Tietoturvaviikko 2013 Esitys 4/5 Ohje: voit liikkua esityksessä eteen- tai taaksepäin napsauttamalla sivun alareunassa olevaa nuolta Tämän esityksen on.
KEUDA 1 Keudan aikuisopisto Hyvinvointialat Sosiaali- ja terveysalan perustutkinto, lähihoitaja Työpaikalla tapahtuvan oppimisen info.
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö.
Toinen harjoitustyö Sokkelon ratkaiseminen oikean käden säännöllä.
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö.
TERVE Diagrammit LibreOffice-ohjelmistolla
Kuvaruutuvideot Tommi Saksa, 2008, HAMK.
Matematiikkaa 3b © Varga–Neményi ry 2017
MITÄ UUTTA? Tekstiviestihälytysjärjestelmä Toimikunta- ja maakuntarajat pois Hälytysryhmän jokaisen jäsenen tiedot päähälyttäjien lisäksi (väh. nimi,
Harjoitustyö.
VIRTA-julkaisutietopalvelun pilotointi
Toimisto-ohjelmat TVT osana Sädettä.
Jani Kiviharju Helsingin normaalilyseo Syksy 2016
18. Testaus.
Yleistajuisemman artikkelin kirjoittaminen
Tuloksellinen Java-ohjelmointi
Opinnäytetöiden kirjaaminen Wilmaan huhtikuu 2015
13. Pakkaukset.
Tavoitteena poistaa työelämän hukkia (työelämän hukkaa)
8. Näppäimistöltä lukeminen
Rasmus Henrik Annala MYTLPT15A
Tentti.
Aloita täältä, täydennä säännöllisesti!
Foreach-toistolause foreach-rakenteella on kätevä käydä läpi kaikki taulukon alkiot. Erityisen kätevää se on hajautustaulukon tapauksessa, jossa taulukon.
OHJEITA MATEMATIIKAN YLIOPPILASKIRJOITUKSIIN
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö
Maahanmuuttajaoppilaiden arviointi
7. Näytölle tulostaminen
19. Tietovirrat.
8. Näppäimistöltä lukeminen
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
Ohjelman graafinen ilme ja sen soveltaminen
Istuntojen hallinta PHP-sovelluksessa
Otsikon asettelu Alaotsikko.
Palauta 4 tehtävää, Viimeistään klo 23
Opettajan nimi | kurssin numero
Harjoitustyö.
4. Attribuutit.
Kaksi erää Tässä ppt:ssä ohjeet pelin johtajalle Opus-työryhmä 2014
15. Ohjelmoinnin tekniikkaa
7. Hyvä ohjelmointitapa..
Syöpäilmoitus sähköisesti
PDPP-työpaja Mitä tehdään?.
Tentti.
CLT132 Tehtävät (viikko 7).
GDPR:n hyvää syksyn alkua
Vapaaohjelman arvostelulomakkeen täyttäminen
aihe tekstiä SmartArt-kuva, jossa on kuvia punaisella taustalla
[Hankkeen nimi] [Tutkijan nimi]
Lisätietoa Turnitinista Moodlessa
Otsikon asettelu Alaotsikko.
Ohjeistus Etene tässä olevien ohjeiden mukaan.
TIETO JA TIETOKONEOHJELMA
Otsikon asettelu Alaotsikko.
Otsikon asettelu Alaotsikko.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
Tärkeämpää kuin arvaatkaan
Otsikon asettelu Alaotsikko.
Otsikon asettelu Alaotsikko.
Otsikon asettelu Alaotsikko.
Dynamic Reporting (DR) -raporttien teon parhaat käytännöt
Varhaiskasvatusjärjestelmän laajennus Haapavesi ja Siikalatva
HUOMIO! Voit vaihtaa minkä tahansa dian pohjaväriä
Esityksen transkriptio:

Toinen harjoitustyö ASCII-grafiikkaa

Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita voi vaihtaa – koodia ei. Henkilökohtaista ohjausta mikroluokissa. Ohjaajilta voi kysyä sähköpostilla. Palautus WETOon viimeistään torstaina 15.12.2016 klo 12.00. Testaus julkisilla ja salaisilla testeillä. Tarkka tehtävänanto ensi viikolla. Työ esitellään myös maanantain (21.11.) luennoilla. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Kuva ASCII-muodossa Ohjelma käsittelee 16-värin harmaasävykuvia. Värit esitetään merkeillä ja jokaiselle merkille (värille on määritelty) lukukoodi. Musta esitetään ristikkomerkillä (koodi 0). Valkoinen esitetään välilyönnillä (koodi 15). Kuva on tietokoneen keskusmuistissa kaksiulotteisessa taulukossa ja massamuistilaitteella tekstitiedostossa. Taulukoita voi olla yksi (lukukoodit) tai kaksi (merkit ja lukukoodit). # @ & $ % x * o | ! ; : ' , . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Kuva ASCII-muodossa * * # * * #* ### * * ##### o####o * ######## * o######o ########## o########o ############ o##########o ############## o############o ################ ## :::::::::::::::: Paikka (0, 8) on musta. Tämä väri esitetään ristikkomerkillä, jonka lukukoodi on nolla. 6 15 15 15 15 6 15 15 0 15 15 15 15 15 15 6 15 15 15 6 15 15 15 15 0 6 15 15 15 15 15 15 15 15 15 15 15 15 15 0 0 0 15 15 15 6 15 15 15 6 15 15 15 15 0 0 0 0 0 15 15 15 15 15 15 15 15 15 15 7 0 0 0 0 7 15 15 6 15 15 15 15 15 15 0 0 0 0 0 0 0 0 15 15 15 15 15 15 6 15 7 0 0 0 0 0 0 7 15 15 15 15 15 15 15 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 7 0 0 0 0 0 0 0 0 7 15 15 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 7 0 0 0 0 0 0 0 0 0 0 7 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 7 0 0 0 0 0 0 0 0 0 0 0 0 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 15 0 0 15 15 15 15 15 15 15 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Kuva ASCII-muodossa Kuva on tiedostossaan merkkeinä. Ohessa ovat 16  16 -kokoisen tree-kuvan sisältävän file_tree.txt-tiedoston merkit. Tiedostossa ei ole merkkien lisäksi muuta tietoa. Kuvan koko täytyy päätellä ohjelmassa. Kuvan voi olettaa aina olevan kunnossa ja riittävän suuri suodatettavaksi. Huomaa, että kuvan korkeus ja leveys voivat olla erisuuret. * * # * * #* ### * * ##### o####o * ######## * o######o ########## o########o ############ o##########o ############## o############o ################ ## :::::::::::::::: Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Ohjelman toiminnot Ohjelma lataa käynnistyessään merkkimuodossa olevan kuvan tekstitiedostosta. Kuvatiedoston nimi annetaan ohjelmalle komentoikkunassa komentoriviparametrina. Esimerkiksi: java ASCIIArt file_tree.txt Ohjelmaa käytetään antamalla jokin komennoista printa, printi, info, filter, reset ja quit. Ohjelma toimii hieman komentoikkunan tapaan. Oletetaan, että komennot annetaan aina oikein. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Aloitus ja printa-komento Ohjelma tulostaa käynnistyessään nimensä kehystettynä. Otsikon ja jokaisen komennon jälkeen tulostetaan ohjerivi. Komento printa tulostaa kuvan näytölle merkkimuodossa. Kuva on ladattu ohjelman käynnistyessä file_tree.txt-tiedostosta. Tiedoston nimi on annettu ohjelmalle komentoriviparamerina. Rivit tulostetaan täysimittaisina, vaikka lopussa olisi vain välilyöntejä (valkoista väriä). ------------------- | A S C I I A r t | printa/printi/info/filter [n]/reset/quit? printa * * # * * #* ### * * ##### o####o * ######## * o######o ########## o########o ############ o##########o ############## o############o ################ ## :::::::::::::::: Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Printi-komento Komento printi tulostaa kuvan näytölle lukumuodossa. Merkin paikassa on sen lukukoodi. Numerot erotetaan toisistaan välilyönnillä. Yksinumeroisen luvun eteen tulostetaan ylimääräinen välilyönti. Rivien alussa tai lopussa ei ole välilyöntejä. printa/printi/info/filter [n]/reset/quit? printi 6 15 15 15 15 6 15 15 0 15 15 15 15 15 15 6 15 15 15 6 15 15 15 15 0 6 15 15 15 15 15 15 15 15 15 15 15 15 15 0 0 0 15 15 15 6 15 15 15 6 15 15 15 15 0 0 0 0 0 15 15 15 15 15 15 15 15 15 15 7 0 0 0 0 7 15 15 6 15 15 15 15 15 15 0 0 0 0 0 0 0 0 15 15 15 15 15 15 6 15 7 0 0 0 0 0 0 7 15 15 15 15 15 15 15 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 7 0 0 0 0 0 0 0 0 7 15 15 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 7 0 0 0 0 0 0 0 0 0 0 7 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 7 0 0 0 0 0 0 0 0 0 0 0 0 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 15 0 0 15 15 15 15 15 15 15 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Info-komento Komento info tulostaa näytölle kuvan koon ja kunkin merkin lukumäärät. Kuvan koko annetaan ensin ja tämän jälkeen merkkien lukumäärät edellä annetun taulukon järjestyksessä (musta alussa, valkea lopussa). Merkki ja sen lukumäärä erotetaan toisistaan välilyönnillä. printa/printi/info/filter [n]/reset/quit? info 16 x 16 # 112 @ 0 & 0 $ 0 % 0 x 0 * 9 o 10 | 0 ! 0 ; 0 : 16 ' 0 , 0 . 0 109 Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Filter-komento Käsittelee kuvan n  n -kokoisella mediaanisuotimella. N on valinnainen parametri. N on aina pariton ja suurempi tai yhtä suuri kuin kolme ja sellainen, että suodin mahtuu kuvaan. Jos parametria n ei anneta, on suotimen koko 3  3. Ohessa komento voisi kuulua esimerkiksi myös: filter 5, jolloin suodin olisi 5  5 -kokoinen. printa/printi/info/filter [n]/reset/quit? filter printi 6 15 15 15 15 6 15 15 0 15 15 15 15 15 15 6 15 15 15 15 15 15 15 15 0 6 15 15 15 15 15 15 15 15 15 15 15 15 15 0 0 0 15 15 15 15 15 15 15 15 15 15 15 15 0 0 0 0 7 15 15 15 15 15 15 15 15 15 15 0 0 0 0 0 0 15 15 15 15 15 15 15 15 15 7 0 0 0 0 0 0 7 15 15 15 15 15 15 15 7 0 0 0 0 0 0 0 0 15 15 15 15 15 15 15 7 0 0 0 0 0 0 0 0 7 15 15 15 15 15 15 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 7 0 0 0 0 0 0 0 0 0 0 7 15 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 7 0 0 0 0 0 0 0 0 0 0 0 0 7 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 7 0 0 0 0 0 0 0 0 0 0 0 0 7 0 15 11 11 11 11 11 11 0 0 11 11 11 11 11 11 15 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Filter-, reset- ja quit-komennot Suodin poistaa melua, mutta hävittää samalla myös informaatiota. Alkuperäiseen kuvaan voidaan palata reset-komennolla, joka lataa kuvan uudestaan tiedostosta taulukkoon. Ohjelma lopetetaan quit-komennolla. Ennen ohjelman pysähtymistä tulostetaan lyhyet jäähyväiset. printa/printi/info/filter [n]/reset/quit? printa * * # * #* ### ####o ###### o######o o######## o########o ########## o##########o ############ o############o ############## #o############o# ::::::##:::::: :::::::::::::::: Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Filter-, reset- ja quit-komennot printa/printi/info/filter [n]/reset/quit? reset printa * * # * * #* ### * * ##### o####o * ######## * o######o ########## o########o ############ o##########o ############## o############o ################ ## :::::::::::::::: quit Bye, see you soon. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Mediaanisuodin Muodostaa vanhasta kuvasta uuden kuljettamalla suodin-ikkunaa kuvan päällä. Usein edetään rivi kerrallaan. Ikkunan keskikohta asetetaan käsiteltävän luvun päälle. Reunat ongelmallisia, koska osa ikkunasta menee kuvan ulkopuolelle. Tässä työssä suodin sijoitetaan aina siten, että suodin on kuvan sisällä. Tämän seurauksena yhden tai useamman merkin levyinen reuna jää käsittelemättä. Suodin lajittelee alueellaan olevat lukuarvot ja palauttaa keskimmäisen arvon eli mediaanin. Tässä työssä mediaani aina keskimmäisin arvo, koska ikkunan koko on pariton. Mediaaniarvo sijoitetaan uudessa kuvassa samaan paikkaan kuin vanhan kuvan käsiteltävä luku. Tarvitaan aputaulukko, koska kaikki uudet luvut lasketaan vanhoista luvuista. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Mediaanisuodin Mediaanisuodin poistaa yksityiskohtia. Tämä on sovelluksesta riippuen hyödyllistä tai haitallista. Huomaa, että reunalla oleva yksityiskohdat säilyvät, koska suodinta ei voi asettaa reunamerkkien päälle. 15 6 7 Käsitellään tree-kuvan kohdassa (1, 3) oleva arvo (punainen) 3  3 -kokoisella suotimella (sininen tausta). Ikkunan arvot lajiteltuna: 6, 15, 15, 15, 15, 15, 15, 15, 15. Uuden kuvan paikaan (1, 3) sijoitetaan mediaani (viides luku), joka on 15. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Mediaanisuodin Käsitellään seuraavaksi kohdan (1, 8) arvo. Käsitellään tree-kuvan kohdan (1, 7) arvo 3  3 –kokoisella suotimella. Ikkunan arvot lajiteltuna: 0, 0, 0, 0, 15, 15, 15, 15, 15. Uuden kuvan paikaan (1, 7) sijoitetaan mediaani, joka on 15. Käsitellään seuraavaksi kohdan (1, 8) arvo. Ikkunan arvot lajiteltuna: 0, 0, 0, 0, 0, 6, 15, 15, 15. Uuden kuvan paikaan (1, 8) sijoitetaan mediaani, joka on 0. 15 6 7 15 6 7 Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Mediaanisuodin Kolmesta edellisestä esimerkistä nähtiin, että on hyvin mahdollista, että arvo on sama vanhassa ja uudessa kuvassa ja että yksityiskohtien säilyminen on mahdollista erikoistilanteissa. 15 6 7 Käsitellään vielä kohdan (1, 9) arvo. Ikkunan arvot lajiteltuna: 0, 0, 0, 0, 6, 15, 15, 15, 15. Uuden kuvaan paikaan (1, 9) sijoitetaan mediaani, joka on 6. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala

Koodista Syötteet luetaan In-luokalla. Mediaanin laskemisessa tarvittava lajittelu on toteutettava itse. Myöhemmin annetaan valintalajittelu algoritmi, jota voi halutessaan käyttää. Monimutkaisemman algoritmin toteutus on täysin tekijänsä vastuulla. Arrays-luokan palveluiden tapaiset helpommat tekniikat on kielletty, koska tavoitteena on oppia käsittelemään taulukoita. Kysy, jos ole epävarma mitä saa tehdä ja mitä ei. Attribuuttimuuttujia ei saa käyttää, vakiomuotoisten attribuuttien käyttö on sallittua ja jopa toivottavaa. Kirjoita kaikki koodi yhteen tiedostoon, jotta WETO osaa tarkistaa ohjelmasi. Lausekielinen ohjelmointi II | Syksy 2016 | Jorma Laurikkala