Harjoitus 4 (viikko 47)

Samankaltaiset tiedostot
Harjoitus 5 (viikko 48)

Harjoitus 2 (viikko 45)

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42)

Harjoitus 1 (viikko 44)

Harjoitus 3 (viikko 39)

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

Harjoitus 5 (viikko 41)

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

Harjoitus 5 (viikko 41)

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

Toinen harjoitustyö. ASCII-grafiikkaa

// 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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

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

7. Näytölle tulostaminen 7.1

14. Hyvä ohjelmointitapa 14.1

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

1. Omat operaatiot 1.1

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

ITKP102 Ohjelmointi 1 (6 op)

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

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

ITKP102 Ohjelmointi 1 (6 op)

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

Java-kielen perusteet

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

14. Poikkeukset 14.1

5. HelloWorld-ohjelma 5.1

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

Java-kielen perusteet

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

Java-kielen perusteita

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Harjoitustyö Johdanto

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

2. Merkkijono, osamerkkijono ja osamerkkijonon haku

Harjoitustyö Johdanto Tehtävä

5. HelloWorld-ohjelma 5.1

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

17. Javan omat luokat 17.1

Taulukot. Jukka Harju, Jukka Juslin

ITKP102 Ohjelmointi 1 (6 op)

Metodien tekeminen Javalla

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

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

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

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

17. Javan omat luokat 17.1

ITKP102 Ohjelmointi 1 (6 op)

15. Ohjelmoinnin tekniikkaa 15.1

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

12. Javan toistorakenteet 12.1

Harjoitustyö Johdanto Tehtävä

Harjoitustyö Johdanto

Harjoitustyö: virtuaalikone

Ohjelmointi 1 Taulukot ja merkkijonot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

19. Olio-ohjelmointia Javalla 19.1

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

Java-kielen perusteet

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Lyhyt kertaus osoittimista

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin peruskurssi Y1

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Ohjelmoinnin jatkokurssi, kurssikoe

811120P Diskreetit rakenteet

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Ohjelmoinnin perusteet Y Python

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Harjoitustyö Johdanto. 2. Euroseteli

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

Ohjelmointiharjoituksia Arduino-ympäristössä

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Taulukoiden käsittely Javalla

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Transkriptio:

Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän ohjelmointitavan perusteita (Lausekielinen ohjelmointi I -kurssin luentomateriaalin 14. luku) ja uusia hyviä tapoja, joihin kuuluu operaation otsikkoon liittyvä yleisluonteinen kommentti operaation tarkoituksesta sekä operaation mahdollisesti saamista ja palauttamista tiedoista. Ratkaisut palautetaan WETO-järjestelmään, joka tarkistaa lähdekoodia automaattisesti. In-luokkaa (katso alla) ei tarvitse eikä tule palauttaa. Lisätietoja tarkistuksesta julkaistaan kurssisivujen Opetus Harjoitukset Ratkaisujen tarkistus -kohdassa. Ensi viikolla pidettävissä mikroharjoituksissa saa apua ongelmakohtiin. Keskiviikon klo 12 14 - ryhmässä (ML1) avustetaan hieman enemmän kuin muissa ryhmissä. Palauta vastauksesi WETO-järjestelmään viimeistään ensi viikon torstaina 24.11. klo 12.00. Mallivastaukset esitellään luentosaliharjoituksissa ensi viikon torstaina 24.11. klo 14 16 (B1083). Syötteiden lukemiseen tarvittava In-luokka löytyy kurssin kotisivuilta Koodit-kohdasta. 1. Kirjoita Javalla Underliner-ohjelma, joka tulostaa ensimmäisenä komentoriviparametrina saamansa merkkijonon toisena komentoriviparametrina saamallaan merkillä alustettuna. Ohjelma tulostaa alleviivatun tekstin vain, jos komentoriviparametreja on kaksi. Muissa tapauksissa tulostetaan virheilmoitus. Voit kirjoittaa kaiken koodisi main-operaatioon. Esimerkki ohjelman toiminnasta, kun komentoriviparametrit ovat "The secret to getting ahead is getting started." ja "-": The secret to getting ahead is getting started. ----------------------------------------------- Esimerkki ohjelman toiminnasta, kun komentoriviparametrit ovat "See", "you" ja "later". Error! Komentoikkunassa testattaessa välilyöntejä sisältävä merkkijono tulee sulkea lainausmerkkeihin, jotta merkkijonon osia ei pidettäisi erillisinä parametreina. Esimerkki: java Underliner "The secret to getting ahead is getting started." - 2. Kirjoita Javalla void-tyyppinen operaatio, joka tulostaa kaksiulotteisen char-alkioiden taulukon näytölle siten, että jokaisen rivin merkit tulostetaan peräkkäin ilman erottimia. Myös viimeinen rivi päätetään rivinvaihtoon. Taulukko on operaatio ainoa parametri. Varaudu operaatiossa null-arvoiseen parametriin if-lauseella. Kutsu operaatiotasi mainoperaatiossa, jossa käsiteltävä taulukko myös luodaan. Käyttäjältä ei tarvitse lukea syötteitä. Esimerkki ohjelman toiminnasta, kun taulukon alkiot ovat { { 'a', 'b', 'c' }, { 'd', 'e', 'f' } }: abc def Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 1 /

3. Alla olevassa taulukossa on annettu 16 merkkiä lukuvastineineen. Taulukon viimeinen merkki on välilyönti. Kirjoita Javalla char-tyyppinen operaatio, joka palauttaa lukua vastaavan merkin. Luku välitetään operaatiolle parametrina. Sijoita merkit yksiulotteiseen taulukkoon ja valitse palautettava merkki taulukosta parametrin arvon avulla. Tarkista ennen taulukosta lukemista, että parametri on oikeellinen. Paluuarvo on negatiivinen jokin muu kuin alla olevassa taulukossa määritelty merkki, jos luku ei ole välillä 0 1. Virhekoodina voi käyttää myös Character-luokan vakioita. Esimerkiksi Character.MAX_VALUE kävisi virhearvoksi. # @ & $ % x * o! ; : ',. 0 1 2 3 4 6 7 8 9 10 11 12 13 14 1 Kutsu operaatiotasi Judge-ohjelman main-operaatiosta antamalla käyttäjän syöte operaatiosi parametriksi. Sijoita operaation palauttama arvo muuttujaan ja muodosta tuloste muuttujan avulla. Tämä tehtävä tarkistetaan automaattisesti toiminnallisuuden osalta ja lisäksi opettajan toimesta hyvän ohjelmointitavan osalta. Näin esimerkiksi huono sisennys voi tuottaa nollan, vaikka ohjelma läpäisee WETO-testit. Varmista, että ohjelmasi toimii esimerkkien mukaisesti. Huomaa, että rivien alkuun tai loppuun ei tulosteta välilyöntejä ja että kaikki Muista noudattaa hyvän ohjelmointitavan perusteita (Lausekielinen ohjelmointi I -kurssin luentomateriaalin 14. luku) ja uusia hyviä tapoja, joihin kuuluu operaation otsikkoon liittyvä yleisluonteinen kommentti operaation tarkoituksesta sekä operaation mahdollisesti saamista ja palauttamista tiedoista. Hello! I am a judge of character. Please, enter an integer: I judge as 'x'. Hello! I am a judge of character. Please, enter an integer: 16 I cannot judge 16. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 2 /

4. Tee Javalla ShortestPart-ohjelma, jolla on int-tyypinen operaatio, joka päättelee parametrina saamansa merkkijonon lyhimmän osan pituuden. Merkkijonon osat on aina erotettu toisistaan yhdellä välilyönnillä. Voit lisäksi olettaa, että merkkijono on aina vähintään yhden merkin mittainen merkkijono ja että merkkijono ei ala välilyönnillä tai lopu välilyöntiin. Jos syöte on esimerkiksi "I can reboot you, but I won t lie: It s going to hurt.", niin tulos on yksi, koska merkkijonon lyhin osa on "I". Pilko merkkijono ensin osiin String-luokan split-operaatiolla, joka sijoittaa osat yksiulotteiseen String-tyyppisten alkioiden taulukkoon. Päättele sitten taulukkoa tutkimalla mikä osista on lyhin. Lue merkkijono käyttäjältä main-operaatiossa ja kutsu operaatiotasi antamalla käyttäjän syöte operaatiosi parametriksi. Sijoita operaation palauttama arvo muuttujaan ja käytä muuttujaa, kun tulostat tuloksen näytölle. Esimerkki split-operaation käytöstä: // Merkkijonon osia erottava merkki on annettava hakasulkeissa, // koska split-operaation parametri on säännöllinen ilmaus. String[] osat = rivi.split("[ ]"); Vinkki: Lausekielinen ohjelmointi I -kurssin 6. harjoituksen 8. tehtävä. I can reboot you, but I won t lie: It s going to hurt. The length is 1. Open the pod bay doors, HAL. The length is 3. foobar The length is 6. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 3 /

. Kirjoita Javalla boolean-tyyppinen operaatio, joka lajittelee parametrinaan saamansa yksiulotteisen int-tyyppisten alkioiden taulukon arvot nousevaan järjestykseen. Operaatio palauttaa arvon true, jos taulukolle on varattu muistia. Paluuarvo on muuten false. Jos taulukon arvot ovat esimerkiksi { 1, 0, 2, }, niin operaation kutsun jälkeen taulukon arvot ovat { 0, 1, 2, }. Lajittele alkiot valintalajittelulla (selection sort), joka on yksinkertainen ja hidas algoritmi. Algoritmi pseudokoodina: Algoritmi Valintalajittelu { // Ensimmäisen lajittelemattoman alkion indeksiarvo. i 0; // Lajitellaan kunnes kaikki alkiot on käsitelty. Kunkin // kierroksen jälkeen välin [0, i - 1] alkiot on lajiteltu // ja välin [i, n - 1] alkiot ovat lajittelematta. while (i < n - 1) { // Haetaan pienin alkio väliltä [i, n - 1] // ja asetetaan tämän alkion indeksiarvo muuttujaan j. j valitse(i); // Vaihdetaan ensimmäinen lajittelematon alkio // ja pienin alkio keskenään. vaihda(i, j); // Pienin alkio on nyt oikeassa paikassa. Suljetaan se pois // lajittelusta laskuria kasvattamalla. i i + 1; } } Anna ohjelman nimeksi SelectionSorter. Lue main-operaatiossa käyttäjältä taulukon koko ja luo yksiulotteinen int-tyyppisten alkioiden taulukko. Tiedustele taulukon alkioiden arvot käyttäjältä joko main-operaatiossa tai omassa operaatiossa (3. harjoituksen 6. tehtävän operaatio muokattuna). Kutsu lajittelevaa operaatiota antamalla parametriarvoksi käyttäjän täyttämä taulukko. Tulosta taulukon sisältö näytölle operaation kutsun jälkeen. Taulukon tulostus tehdään operaatiolla, jonka voi muokata esimerkiksi luentomateriaalin sivulla 2.23 annetusta operaatiosta tai kopioida 3. harjoituksen 4. tehtävän mallivastauksesta. Tämä tehtävä tarkistetaan automaattisesti toiminnallisuuden osalta ja lisäksi opettajan toimesta hyvän ohjelmointitavan osalta. Näin esimerkiksi huono sisennys voi tuottaa nollan, vaikka ohjelma läpäisee WETO-testit. Varmista, että ohjelmasi toimii esimerkkien mukaisesti. Huomaa, että rivien alkuun tai loppuun ei tulosteta välilyöntejä ja että kaikki Muista noudattaa hyvän ohjelmointitavan perusteita (Lausekielinen ohjelmointi I -kurssin luentomateriaalin 14. luku) ja uusia hyviä tapoja, joihin kuuluu operaation otsikkoon liittyvä yleisluonteinen kommentti operaation tarkoituksesta sekä operaation mahdollisesti saamista ja palauttamista tiedoista Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 4 /

Hello! I sort an array. Please, enter the size of array: 4 1 0 2 { 0, 1, 2, } 6. Mediaani on järjestetyn joukon keskimmäinen alkio. Esimerkiksi joukon { 0, 0, 0, 0, 6, 1, 1, 1, 1 } mediaani on 6. Mediaani on kahden keskimmäisimmän alkion keskiarvo, jos joukossa on parillinen määrä alkioita. Esimerkiksi joukon { 0, 1, 2, } mediaani on (1 + 2) / 2 = 1,. Kirjoita Javalla double-tyyppinen operaatio, joka saa parametrinaan yksiulotteisen inttyyppisten alkioiden taulukon ja palauttaa paluuarvonaan taulukon alkioiden mediaanin. Paluuarvo on Javan oma vakio Double.NaN, jos taulukolle ei ole varattu muistia. Lajittele taulukko. tehtävässä tekemälläsi metodilla. Anna ohjelman nimeksi Median. Lue main-operaatiossa käyttäjältä taulukon koko ja luo yksiulotteinen int-tyyppisten alkioiden taulukko. Tiedustele taulukon alkioiden arvot käyttäjältä joko main-operaatiossa tai omassa operaatiossa (3. harjoituksen 6. tehtävän operaatio muokattuna). Kutsu lajittelevaa operaatiota antamalla parametriarvoksi käyttäjän täyttämä taulukko ja sijoita paluuarvo muuttujaan. Tulosta muuttujan arvo näytölle printf-operaatiolla seuraavasti: // Alla md paluuarvon sisältävä double-tyyppinen muuttuja. System.out.printf("Median is %.1f.%n", md); Hello! I determine median. Please, enter the size of array: 4 1 0 2 Median is 1.. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala /