Harjoitus 2 (viikko 45)

Samankaltaiset tiedostot
Harjoitus 1 (viikko 44)

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41)

Harjoitus 4 (viikko 47)

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

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

Harjoitus 6 (viikko 42)

Harjoitus 3 (viikko 39)

Harjoitus 6 (viikko 42)

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

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

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

Toinen harjoitustyö. ASCII-grafiikkaa

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

1. Omat operaatiot 1.1

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

7. Näytölle tulostaminen 7.1

5. HelloWorld-ohjelma 5.1

Java-kielen perusteet

Java-kielen perusteita

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

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

5. HelloWorld-ohjelma 5.1

14. Hyvä ohjelmointitapa 14.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin peruskurssi Y1

Harjoitustyö Johdanto

Ohjelmoinnin peruskurssi Y1

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

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

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

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

2. Merkkijono, osamerkkijono ja osamerkkijonon haku

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

Ohjelmointi 1 C#, kevät 2013, 2. tentti

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

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Ohjelmoinnin perusteet Y Python

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

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

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

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

13. Loogiset operaatiot 13.1

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

17. Javan omat luokat 17.1

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

19. Olio-ohjelmointia Javalla 19.1

Harjoitustyö: virtuaalikone

Harjoitustyö Johdanto

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitustyö Johdanto Tehtävä

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

16. Javan omat luokat 16.1

17. Javan omat luokat 17.1

Ohjelmoinnin perusteet Y Python

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

ITKP102 Ohjelmointi 1 (6 op)

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

Ohjelmoinnin perusteet Y Python

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

Ohjelmointi 1 Taulukot ja merkkijonot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

20. Javan omat luokat 20.1

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

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

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

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Ohjelmoinnin perusteet Y Python

3. Muuttujat ja operaatiot 3.1

Ohjelmoinnin perusteet Y Python

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

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

Ohjelmoinnin jatkokurssi, kurssikoe

Java-kielen perusteita

15. Ohjelmoinnin tekniikkaa 15.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Java-kielen perusteet

Harjoitustyö Johdanto. 2. Euroseteli

Transkriptio:

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. WETOon (https://wetodev.sis.uta.fi/weto5/) palautetaan vain ratkaisun lähdekoodi eli java-päätteinen tiedosto. In-luokkaa (katso alla) ei tarvitse eikä tule palauttaa. Lisätietoja ratkaisujen palautuksesta ja tarkistuksesta on annettu kurssisivujen Harjoitukset -kohdassa. Ensi viikolla pidettävissä mikroharjoituksissa saa apua ongelmakohtiin. Keskiviikon klo 12 14 - ryhmässä avustetaan hieman enemmän kuin muissa ryhmissä. Palauta vastauksesi WETO-järjestelmään viimeistään ensi viikon torstaina 9.11. klo 12.00 (keskipäivä). Syötteiden lukemiseen tarvittava In-luokka löytyy kurssin kotisivuilta Koodit-kohdasta. Java-kääntäjä ja -tulkki löytyvät yliopiston mikroluokkien koneilta. Nämä ohjelmat voi asentaa myös omalle koneelle. Lisätietoja osoitteesta: http://www.uta.fi/sis/tie/laki1/ohjelmointivalineita/java_jdk.html. Ota yhteyttä kurssin vastuuopettajaan, jos Java ei suostu asentumaan koneellesi. 1. Osoitteessa http://www.sis.uta.fi/~laki2/harjoitukset/harjoitus02/ on annettu Diceohjelma. Ohjelman yrittää heittää kuusisivuista noppaa tasan yhden kerran. Ohjelma kuitenkin innostuu pelistä ja heittelee noppaa, kunnes resurssit loppuvat. Kerro kommenteissa miksi. Älä muuta main-operaatiota millään tavalla, koska ongelma piilee muualla. Palauta WETOon toimivaksi korjattu Dice-ohjelma. Esimerkki ohjelman oikeellisesta toiminnasta: Hello! I roll a dice once. Rolled: 2. Toinen esimerkki ohjelman oikeellisesta toiminnasta: Hello! I roll a dice once. Rolled: 5. 2. Kirjoita Javalla String-tyyppinen operaatio, joka palauttaa kymmenestä miinusmerkistä koostuvan merkkijonon. Kutsu kirjoittamaasi operaatiota main-operaatiosta. Tulosta main-operaatiossa näytölle tervehdys ja operaation paluuarvo alla annetun esimerkin mukaisesti. Merkkijonon palauttavassa ohjelmassa ei tulosteta näytölle mitään. Ainoa ohjelman toiminnasta: Hello! I print a separating line. ---------- 3. Muokkaa 1. harjoituksen 4. tehtävässä tehtyä operaatiota siten, että operaatio palauttaa String-tyyppisenä paluuarvona kuukauden järjestyslukua vastaavan kuukauden nimen. Lue järjestysnumero käyttäjältä main-operaatiossa ja kutsu operaatiotasi antaen käyttäjän syöte operaation parametrin arvoksi. Sijoita operaation palauttama arvo muuttujaan ja tulosta muuttujan arvo näytölle kuten esimerkeissä. Huomaa, että oma operaatiosi ei lue tai tulosta mitään, vaan kaikki vuorovaikutus tapahtuu main-operaatiossa. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 1 / 5

Anna ohjelman nimeksi Month. Hello! I verbalise your input. Please, enter a number: 1 It is January. Hello! I verbalise your input. Please, enter a number: 3 It is March. 4. Muokkaa 1. harjoituksen 6. tehtävässä tehtyä operaatiota siten, että operaatio palauttaa int-tyyppisen arvon, joka ilmaisee merkkijonojen keskinäisten pituuksien suhteen. Paluuarvo on -1, kun ensimmäinen merkkijono on toista lyhempi, 0, kun merkkijonot ovat samanmittaiset ja 1, kun ensimmäinen jono on toista pitempi. Lue syötteet käyttäjältä main-operaatiossa ja kutsu operaatiotasi antaen käyttäjän syötteet operaation parametrien arvoiksi. Sijoita operaation palauttama arvo muuttujaan ja esitä tulos näytöllä muuttujan arvon mukaisesti. Varmista, että oma operaatiosi ei lue tai tulosta mitään, vaan kaikki vuorovaikutus tapahtuu main-operaatiossa. Anna ohjelman nimeksi StringLengthComparator. Esimerkki ohjelman toiminnasta, kun syötteet ovat "summer" ja "you think": summer you think "summer" is shorter than "you think". Esimerkki ohjelman toiminnasta, kun syötteet ovat "pain" ja "life": pain life "pain" is as long as "life". Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 2 / 5

Esimerkki ohjelman toiminnasta, kun syötteet ovat "metre" ja "yard": metre yard "metre" is longer than "yard". 5. Oheisessa taulukossa on annettu XNOR-operaattorin (poissulkeva ei-tai) totuustaulu. Tee Javalla boolean-tyyppinen operaatio, joka saa parametrinaan kaksi boolean-tyyppistä arvoa ja palauttaa totuustaulun mukaisen tuloksen. A B A B true true true true true true Lue totuusarvot käyttäjältä main-operaatiossa ja kutsu operaatiotasi antaen käyttäjän syötteet operaation parametrien arvoksi. Sijoita operaation palauttama arvo muuttujaan ja tulosta muuttujan arvo esimerkkien mukaisesti näytölle. Oma operaatiosi ei lue tai tulosta mitään, vaan kaikki vuorovaikutus tapahtuu main-operaatiossa. Voit muuntaa merkkijonona luetun totuusarvon ("true" tai "") totuusarvoksi Booleanluokan parseboolean-operaatiolla. Esimerkki: boolean totuus1 = Boolean.parseBoolean(syote1); Esimerkki ohjelman toiminnasta, kun syötteet ovat "" ja "": Hello! I am XNOR. Please, enter the first truth value: Please, enter the second truth value: The result is true. Esimerkki ohjelman toiminnasta, kun syötteet ovat "" ja "true": Hello! I am XNOR. Please, enter the first truth value: Please, enter the second truth value: true The result is. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 3 / 5

6. Tee Javalla boolean-tyyppinen operaatio, joka tarkistaa kellonajan, jossa tunnit ovat välillä 0 23, minuutit välillä 0 ja sekunnit välillä 0. Operaatiolla on kolme parametria: tunnit, minuutit ja sekunnit välitetään operaatiolle int-tyyppisinä parametreina. Paluuarvo on true, jos kellonaika on laillinen. Lue tunnit, minuutit ja sekunnit käyttäjältä main-operaatiossa. Kutsu operaatiota mainoperaatiosta ja anna syötteet operaatiosi parametrien arvoiksi kutsussa. Sijoita operaation palauttama arvo muuttujaan. Tulosta päättelyn tulos näytölle muuttujan arvon avulla main-operaatiossa. Oma operaatiosi ei lue tai tulosta mitään, vaan kaikki vuorovaikutus tapahtuu main-operaatiossa. Ohjelman nimi on TimeInspector. Hello! I inspect a 24-hour time. Please, enter hours: 23 Please, enter minutes: Please, enter seconds: 60 Time is invalid. Toinen esimerkki ohjelman toiminnasta: Hello! I inspect a 24-hour time. Please, enter hours: 23 Please, enter minutes: Please, enter seconds: Time is valid. 7. Kirjoita Javalla String-tyyppinen operaatio, joka muodostaa parametrinaan samastaan merkkijonosta (String) uuden merkkijonon, jossa alkuperäinen merkkijono toistuu siten, että toistot on erotettu toisistaan pilkulla ja yhdellä välilyönnillä. Myös toistojen lukumäärä (int) välitetään operaatiolle parametrina. Operaatio palauttaa tyhjän merkkijonon "", jos toistojen lukumäärä on kahta pienempi. Lue toistettava merkkijono ja toistojen lukumäärä käyttäjältä main-operaatiossa. Kutsu operaatiota main-operaatiosta ja anna syötteet operaatiosi parametrien arvoiksi kutsussa. Sijoita operaation palauttama arvo muuttujaan. Tulosta main-operaatiossa näytölle muuttujan arvon mukaan avulla joko muuttujan arvo tai virheilmoitus. Huomaa, että oma operaatiosi ei lue tai tulosta mitään, vaan kaikki vuorovaikutus tapahtuu main-operaatiossa. Ohjelman nimi on Replicator. Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 4 / 5

Tämä tehtävä tarkistetaan automaattisesti toiminnallisuuden osalta ja lisäksi opettajan toimesta hyvän ohjelmointitavan osalta. Näin esimerkiksi huono sisennys tai puutteellinen kommentointi voi tuottaa nollan, vaikka ohjelma läpäisee WETOn testit. 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. Varmista, että ohjelmasi toimii esimerkkien mukaisesti. Huomaa, että rivien alkuun tai loppuun ei tulosteta välilyöntejä ja että kaikki tulostettavat rivit viimeinen rivi mukaan lukien päätetään rivinvaihtoon. Esimerkki ohjelman toiminnasta, kun syötteet ovat "na" ja 6: Hello! I replicate strings. Please, enter a string: na Please, enter the number of replications: 6 na, na, na, na, na, na Esimerkki ohjelman toiminnasta, kun syötteet ovat "" ja "true": Hello! I replicate strings. Please, enter a string: ni Please, enter the number of replications: 1 Error! Lausekielinen ohjelmointi II Syksy 2017 Jorma Laurikkala 5 / 5