Toinen harjoitustyö. ASCII-grafiikkaa 2017

Samankaltaiset tiedostot
Toinen harjoitustyö. ASCII-grafiikkaa

Harjoitustyö Johdanto Tehtävä

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Harjoitus 5 (viikko 48)

Harjoitustyö Johdanto Tehtävä

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Hakemistojen sisällöt säilötään linkitetyille listalle.

Harjoitus 2 (viikko 45)

Harjoitus 5 (viikko 41)

Harjoitus 4 (viikko 47)

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Harjoitus 6 (viikko 42)

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Harjoitus 3 (viikko 39)

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Harjoitus 5 (viikko 41)

Harjoitus 6 (viikko 42)

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

4. Luokan testaus ja käyttö olion kautta 4.1

5. HelloWorld-ohjelma 5.1

Harjoitus 1 (viikko 44)

14. Hyvä ohjelmointitapa 14.1

2. Merkkijono, osamerkkijono ja osamerkkijonon haku

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

13. Hyvä ohjelmointitapa (osa 1) 13.1

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

ITKP102 Ohjelmointi 1 (6 op)

Sisältö. 2. Taulukot. Yleistä. Yleistä

Harjoitustyö Johdanto Tehtävä

5. HelloWorld-ohjelma 5.1

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Python-ohjelmointi Harjoitus 5

Harjoitustyö Johdanto

Harjoitustyö Johdanto

ITKP102 Ohjelmointi 1 (6 op)

Sisältö. 22. Taulukot. Yleistä. Yleistä

Kurssiesite Lausekielinen ohjelmointi II Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

TAMPEREEN TEKNILLINEN YLIOPISTO

Muistitikun liittäminen tietokoneeseen

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

1. Omat operaatiot 1.1

4. Lausekielinen ohjelmointi 4.1

Datatähti 2000: alkukilpailun ohjelmointitehtävä

Taulukot. Jukka Harju, Jukka Juslin

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Testitapaukset - Siirtoprotokolla

7. Näytölle tulostaminen 7.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Jypelin käyttöohjeet» Ruutukentän luominen

8. Näppäimistöltä lukeminen 8.1

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

4. Lausekielinen ohjelmointi 4.1

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Ohjelmoinnin perusteet Y Python

12. Näppäimistöltä lukeminen 12.1

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tehdään sähköisesti mikroluokkien Windows-koneilla.

TAMPEREEN TEKNILLINEN YLIOPISTO

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia.

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

8. Näppäimistöltä lukeminen 8.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Harjoitustyön testaus. Juha Taina

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

ASENNUS- JA KÄYTTÖOHJE

Ohjelmointi 1 Taulukot ja merkkijonot

12. Javan toistorakenteet 12.1

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät Olio-ohjelmoinnin perusteet (eli Oope) Laajuus

Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

11. Javan toistorakenteet 11.1

7.4 Sormenjälkitekniikka

Kurssiesite Lausekielinen ohjelmointi I Kesä Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Ohjelmoinnin perusteet, syksy 2006

15. Ohjelmoinnin tekniikkaa 15.1

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

XX (1, 4) (1, 5) (2, 4) (2, 5)

Muuttujien määrittely

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (TIEA2.1)

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Ohjelmoinnin jatkokurssi, kurssikoe

Tietokone työvälineenä

Transkriptio:

Toinen harjoitustyö ASCII-grafiikkaa 2017

Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-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 21.12.2017 klo 12.00. Testaus julkisilla ja salaisilla testeillä. Tarkka tehtävänanto julkaistaan viikonloppuna. Työ esitellään myös maanantain (27.11.) luennoilla. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 2

Kuva ASCII-muodossa Ohjelma käsittelee 16-värin harmaasävykuvia. Värit esitetään merkeillä ja jokaiselle merkille on määritelty lukukoodi. Musta esitetään ristikkomerkillä (koodi 0). Valkoinen esitetään välilyönnillä (koodi 15). # @ & $ % * o! ; : ',. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Kuva on tietokoneen keskusmuistissa kaksiulotteisessa taulukossa ja massamuistilaitteella tekstitiedostossa. Taulukon alkioiden tyypiksi kannattaa valita char. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 3

Kuva ASCII-muodossa Kuva on tiedostossaan merkkeinä. Ohessa on annettu 5 4 -kokoisen L- kuvan ja 16 16 -kokoisen treekuvan merkit, jotka on tallennettu file_l.tt- ja file_tree.tt-tiedostoihin. Tiedostojen rivit ovat aina samanmittaisia. Rivi päättyy viimeiseen näkyvään merkkiin vain, jos merkki on rivin viimeinen merkki. Tiedostossa ei ole muuta tietoa. Kuvan koko täytyy päätellä ohjelmassa. Kuvan voi olettaa olevan kunnossa. Kuvassa ei ole esimerkiksi virheellisiä merkkejä. * * # * * #* ### * * ##### o####o * ######## * o######o ########## o########o ############ o##########o ############## o############o ################ ## :::::::::::::::: Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 4

Ohjelman toiminnot Ohjelma lataa käynnistyessään merkkimuodossa olevan kuvan tekstitiedostosta. Kuvatiedoston nimi annetaan ohjelmalle komentoikkunassa komentoriviparametrina. Esimerkiksi: java ASCIIArt17 file_tree.tt Ohjelmaa käytetään antamalla komentoja, info, rotater, rotatel, recolour, reset tai quit. Ohjelma toimii hieman komentoikkunan tapaan. Oletetaan, että komennot annetaan aina oikein. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 5

Aloitus ja -komento Ohjelma tulostaa käynnistyessään nimensä kehystettynä. Otsikon ja jokaisen komennon jälkeen tulostetaan ohjerivi. Komento tulostaa kuvan näytölle merkkimuodossa. Oheisessa esimerkissä kuva on ladattu ohjelman käynnistyessä file_l.tt-tiedostosta. Tiedoston nimi on annettu ohjelmalle komentoriviparamerina. Rivit tulostetaan täysimittaisina, vaikka lopussa olisi vain välilyöntejä (valkoista väriä). Näytölle tulostetut välilyönnit on korostettu ohessa. ----------------------- A S C I I A r t 1 7 ----------------------- Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 6

Info-komento Komento info tulostaa näytölle kuvan koon ja kunkin merkin esiintymien lukumäärän kuvassa. 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ä. info 5 4 # 0 @ 0 & 0 $ 0 % 0 8 * 0 o 0 0! 0 ; 0 : 0 ' 0, 0. 0 12 Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 7

Rotater-komento Komento rotater kääntää kuvaan 90 astetta myötäpäivään (oikealle). Kuva on neljän käännöksen jälkeen sisällöltään sama kuin ennen käännöksiä. rotater rotater rotater rotater Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 8

Rotatel-komento Komento rotatel kääntää kuvaan 90 astetta vastapäivään (vasemmalle). Kuva on neljän käännöksen jälkeen sisällöltään sama kuin ennen käännöksiä. rotatel rotatel rotatel rotatel Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 9

Recolour-komento Komento recolour muuttaa valitun värin toiseksi. Muutettavan värin ja sen korvaavan värin merkit annetaan komennolle parametreina. Myös tämä komento oletetaan aina oikein annetuksi. Paramereja on aina kaksi, paramerit on erotettu toisistaan ja komennosta yhdellä välilyönnillä ja paramerit ovat yksittäisiä merkkejä. Huomaa, että välilyönti itsessään voi olla parametri, jolloin on oltava tarkkana, jos komento ositetaan String-luokan splitoperaatiota käyttäen. recolour o o o o o oooo recolour. oooo Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 10

Reset- ja quit-komennot Alkuperäiseen kuvaan voidaan palata reset-komennolla, joka lataa kuvan uudestaan tiedostosta taulukkoon. Ohjelma lopetetaan quitkomennolla. Ennen ohjelman pysähtymistä tulostetaan lyhyet jäähyväiset. oooo reset quit Bye, see you soon. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 11

Kuvan käännös Kuvan käännöksen tulos kannattaa sijoittaa uuteen taulukkoon. Vanhan kuvataulukon voi korvata käännöksen jälkeen joko uudella taulukolla tai uuden taulukon sisällön voi kopioida vanhaan taulukkoon. Myötäpäivään tapahtuvan käännön voi ajatella toimivan esimerkiksi siten, että vanhan taulukon ensimmäisen rivin sisältö kopioidaan uuden taulukon viimeisen sarakkeen sisällöksi, toisen rivin sisältö kopioidaan toiseksi viimeisen sarakkeen sisällöksi jne. '' ' ' ' ' ' ' '' ' ' ' ' ' ' '' ' ' ' ' ' ' '' ' ' ' ' ' ' '' '' '' '' '' '' '' '' '' '' ' ' ' ' ' ' ' ' '' ' ' ' ' ' ' ' ' '' ' ' ' ' ' ' ' ' Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 12

Kuvan käännös Vastapäivään tapahtuvan käännön voi ajatella toimivan esimerkiksi siten, että vanhan taulukon ensimmäisen sarakkeen sisältö kopioidaan uuden taulukon viimeisen rivin sisällöksi, toisen sarakkeen sisältö kopioidaan toiseksi viimeisen rivin sisällöksi jne., kunnes vanhan taulukon viimeisen sarakkeen sisältö on kopioitu uuden taulukon ensimmäisen rivin sisällöksi. '' ' ' ' ' ' ' '' ' ' ' ' ' ' '' ' ' ' ' ' ' '' ' ' ' ' ' ' '' '' '' '' ' ' ' ' ' ' ' ' '' ' ' ' ' ' ' ' ' '' ' ' ' ' ' ' ' ' '' '' '' '' '' '' Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 13

Koodista Kahdella viimeisellä harjoituskerralla tehdään joitakin harjoitustyöhön liittyviä tehtäviä. Työsi edistyy nopeammin, jos ratkaiset viidennen ja kuudennen harjoituksen tehtäviä ahkerasti. Syötteet luetaan In-luokalla. Arrays-luokan palveluiden tapaiset helpommat taulukkotekniikat on kielletty, koska tavoitteena on oppia käsittelemään taulukoita pohjamutia myöten. String-luokan kaikkia operaatioita saa käyttää. 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 2017 Jorma Laurikkala 14