Harjoitus 5 (viikko 41)

Samankaltaiset tiedostot
Harjoitus 5 (viikko 41)

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

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42)

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

Harjoitus 2 (viikko 45)

Harjoitus 5 (viikko 48)

Harjoitus 1 (viikko 44)

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

Harjoitus 3 (viikko 39)

Harjoitus 4 (viikko 47)

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Harjoitus 5 (viikko 40)

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

14. Hyvä ohjelmointitapa 14.1

13. Hyvä ohjelmointitapa (osa 1) 13.1

5. HelloWorld-ohjelma 5.1

Toinen harjoitustyö. ASCII-grafiikkaa

Harjoitustyö Johdanto

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

5. HelloWorld-ohjelma 5.1

2. Merkkijono, osamerkkijono ja osamerkkijonon haku

ITKP102 Ohjelmointi 1 (6 op)

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

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

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

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

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

Harjoitustyö Johdanto

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

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

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

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

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

4. Lausekielinen ohjelmointi 4.1

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

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

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

Ohjelmointi 1 C#, kevät 2013,

Python-ohjelmointi Harjoitus 5

ASCII-taidetta. Intro: Python

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi Syksy Tavoitteet ja keinot. Lausekielinen ohjelmointi (10 op)

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

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Harjoitustyö Johdanto Tehtävä

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

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

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

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Python-ohjelmointi Harjoitus 2

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

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

Java-kielen perusteet

Harjoitustyö Johdanto Tehtävä

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

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

ITKP102 Ohjelmointi 1 (6 op)

Harjoitustyö Johdanto. 2. Euroseteli

Java-kielen perusteita

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

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

Java-kielen perusteita

Ohjelmointi 1 C#, kevät 2014, tentti

11. Javan toistorakenteet 11.1

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet, syksy 2006

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

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

12. Javan toistorakenteet 12.1

Ohjelmoinnin perusteet Y Python

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

12. Javan toistorakenteet 12.1


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

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

T harjoitustyö, kevät 2012

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

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Ohjelmointi 1 Taulukot ja merkkijonot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Transkriptio:

Harjoitus 5 (viikko 4) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä, käytä yksittäisiä välirivejä erottamaan ohjelman teemoja toisistaan ja erota lauseiden osat toisistaan välilyönneillä. Vakioi muuttujia tarvittaessa. Hyvät ohjelmointitavat on vedetty yhteen luentorungon 4. luvussa. Ohjelmointitehtävien osalta palautetaan vain ratkaisun lähdekoodi (java-päätteinen tiedosto) kurssin kotisivuilta Koodit-kohdasta löytyvää In-luokkaa ei tarvitse eikä tule palauttaa. Ensi viikolla pidettävissä mikroharjoituksissa saa apua ongelmakohtiin. Keskiviikon klo 2 4 - ryhmässä avustetaan hieman enemmän kuin muissa ryhmissä. Palauta vastauksesi WETO-järjestelmään (https://wetodev.sis.uta.fi/) viimeistään ensi viikon torstaina.. klo 2. (keskipäivä). WETO tarkistaa kaikki tämän harjoituskerran tehtävät automaattisesti. 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. Lisätietoja tarkistuksesta: https://coursepages.uta.fi/tiep/syksy-28/harjoitukset/ratkaisujen-tarkistus/automaattinen/. Ota yhteyttä harjoitusryhmäsi vetäjään, jos et keksi järjellisessä ajassa miksi WETO hylkää palautuksesi.. Osoitteessa: https://coursepages.uta.fi/tiep/syksy-28/harjoitukset/tehtavat/ on annettu sisentämätön QuadraticEquationSolver-ohjelma. Sisennä ohjelma. Huomaa, että sisennyksen voi tehdä mekaanisesti sisennysääntöjä noudattamalla täysin oikein, vaikka ohjelman logiikkaa ei ymmärtäisi. Kerro kommenteissa mitä sisennystyyliä käytät ja anna viite (esimerkiksi verkko-osoite) dokumenttiin, jossa tyylisi on määritelty, jos käytät sisentämiseen tyyliä, joka poikkeaa selvästi kurssilla opetetusta tyylistä. Palauta WETOon sisennetty ohjelma QuadraticEquationSolver.java-tiedostossa. Huomaa, että WETOn hyväksymä palautus ei ole välttämättä sisennetty oikein, koska WETO testaa vain, että uudelleen muotoiltu ja alkuperäinen ohjelma toimivat samalla tavalla. Esimerkki alkuperäisen ohjelman toiminnasta: Hello! I solve the quadratic equation ax^2 + bx + c =. Please, enter a: Please, enter b: 2 Please, enter c: The roots are. and -2.. Continue (y/n)? y Please, enter a: 2 Please, enter b: Please, enter c: - The roots are.5 and -.. Continue (y/n)? n Lausekielinen ohjelmointi I Syksy 28 Jorma Laurikkala / 6

Harjoitus 5 (viikko 4) 2. Osoitteessa: https://coursepages.uta.fi/tiep/syksy-28/harjoitukset/tehtavat/ on annettu OddCounter-ohjelma, jossa on sekä kielioppivirheitä että pieniä loogisia virheitä. Korjaa ohjelma toimivaksi. Oikein korjattuna ohjelma kysyy lukujen lukumäärää, kunnes lukumäärä on vähintään yksi ja laskee sitten moniko luvuista oli pariton ja kertoo tuloksen käyttäjälle (katso esimerkki). Huomaa, että ohjelman täydellinen uudelleenkirjoittaminen ei ole korjaus. Korjatun ohjelman tulee olla mahdollisimman pitkälti alkuperäisen kaltainen. Kerro kommenteissa mistä virheistä oli kyse ja kuinka korjasit virheet. Lisää ohjelman yleisiin kommentteihin omat tietosi. Kommentit voi kirjoittaa suomeksi. Muista ajaa ja testata ohjelmaa, jotta löydät varmasti kaikki loogiset virheet. Palauta WETOon korjattu ohjelma OddCounter.java-tiedostossa. Muista, että ehtooperaattori on yhteenlaskua heikompi ja että lausekkeen oletuslaskujärjestystä voi muuttaa koulusta opitulla tavalla kaarisulkeilla. Esimerkki korjatun ohjelman toiminnasta: Hello! I count odd integers. Please, enter the number of integers: The number must be at least one! Please, enter the number of integers: - The number must be at least one! Please, enter the number of integers: Please, enter an integer: 42 Please, enter an integer: Please, enter an integer: 5 Found 2 odd integers.. Lausekielinen ohjelmointi I -kurssin arvosana määräytyy tenttipisteiden ( 24 kpl) ja tenttipisteisiin lisättävien hyvityspisteiden ( kpl) summan perusteella seuraavasti: 2 4 pistettä (välttävä), 5 7 pistettä 2 (tyydyttävä), 8 2 pistettä (hyvä), 2 tai 22 pistettä 4 (kiitettävä) ja vähintään 2 pistettä 5 (erinomainen). Hyvityspisteet huomioidaan vasta, kun opiskelija on suorittanut tentin hyväksyttävästi eli saanut tentistä vähintään 2 pistettä. Kirjoita Grader-niminen Java-ohjelma, joka lukee käyttäjältä tenttipisteiden ja hyvityspisteiden lukumäärät sekä laskee ja tulostaa pisteiden summaa vastaavan arvosanan. Ohjelma tulostaa virheilmoituksen "I cannot give a grade.", jos tenttipisteet eivät ole välillä 2 24 tai hyvityspisteet eivät ole välillä. Hyvityspisteet kysytään, vaikka tenttipisteet olisivat epäkelvot. Tämä tehtävä tarkistetaan 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, jotka on vedetty yhteen kurssin luentomateriaalin 4. luvussa. Lausekielinen ohjelmointi I Syksy 28 Jorma Laurikkala 2 / 6

Harjoitus 5 (viikko 4) Esimerkki ohjelman toiminnasta, kun syötteet ovat 22 ja : Hello! I am a grader. Please, enter exam points: 22 Please, enter bonus points: Your grade is 5. Esimerkki ohjelman toiminnasta, kun syötteet ovat 5 ja : Hello! I am a grader. Please, enter exam points: 5 Please, enter bonus points: Your grade is. Esimerkki ohjelman toiminnasta, kun syötteet ovat ja : Hello! I am a grader. Please, enter exam points: Please, enter bonus points: I cannot give a grade. 4. Tee Javalla StringComparator-ohjelma, joka lukee käyttäjältä kaksi merkkijonoa ja kertoo alla annettujen esimerkkien mukaisesti ovatko ne samat vai erilaiset, kunnes käyttäjä antaa molemmiksi syötteiksi merkkijonon "". Vertaile merkkijonoja String-luokan equals-operaatiolla. Esimerkki ohjelman toiminnasta, kun syöteparit ovat "abba" ja "abba", "Aargh!" ja "aargh!", "cat" ja "dog" sekä "" ja "": Hello! I compare strings. abba abba "abba" is equal to "abba". Aargh! aargh! "Aargh!" is different from "aargh!". cat dog "cat" is different from "dog". Lausekielinen ohjelmointi I Syksy 28 Jorma Laurikkala / 6

Harjoitus 5 (viikko 4) Esimerkki ohjelman toiminnasta, kun syöteparit ovat "x" ja "x", "x" ja "y" sekä "" ja "": Hello! I compare strings. x x "x" is equal to "x". y y "y" is equal to "y". Esimerkki ohjelman toiminnasta, kun syöteparit ovat "" ja "": Hello! I compare strings. 5. Kirjoita Javalla StringLengthComparator-ohjelma merkkijonojen pituuksien vertailuun. Ohjelma lukee käyttäjältä kaksi merkkijonoa ja kertoo alla olevien esimerkkien mukaisesti onko ensimmäinen merkkijono lyhempi kuin toinen merkkijono, ovatko merkkijonot samanpituiset tai onko ensimmäinen merkkijono pitempi kuin toinen merkkijono. Esimerkki ohjelman toiminnasta, kun syötteet ovat "summer" ja "you think": Hello! I compare the lengths of two strings. summer you think "summer" is shorter than "you think". Esimerkki ohjelman toiminnasta, kun syötteet ovat "pain" ja "life": Hello! I compare the lengths of two strings. pain life "pain" is as long as "life". Lausekielinen ohjelmointi I Syksy 28 Jorma Laurikkala 4 / 6

Harjoitus 5 (viikko 4) Esimerkki ohjelman toiminnasta, kun syötteet ovat "metre" ja "yard": Hello! I compare the lengths of two strings. metre yard "metre" is longer than "yard". 6. Kirjoita CharacterComparator-ohjelma, joka lukee merkkijonon ja kaksi indeksiarvoa ja tutkii ovatko annetuissa paikoissa olevat merkit samat. Pienet ja suuret kirjaimet katsotaan eri merkeiksi. Ohjelma tulostaa virheilmoituksen, jos jompikumpi tai molemmat indeksiarvot ovat virheelliset. Laillinen indeksiarvo on välillä [, n - ], missä n on merkkijonon pituus. Esimerkki ohjelman toiminnasta, kun syötteet ovat "Java", ja : Hello! I compare two characters of a string. Please, enter string: Java Please, enter the first position: Please, enter the second position: 'a' is equal to 'a'. Esimerkki ohjelman toiminnasta, kun syötteet ovat "Java", ja : Hello! I compare two characters of a string. Please, enter string: Java Please, enter the first position: Please, enter the second position: 'a' is different from 'J'. Esimerkki ohjelman toiminnasta, kun syötteet ovat "Java", ja 4: Hello! I compare two characters of a string. Please, enter string: Java Please, enter the first position: Please, enter the second position: 4 Error! Lausekielinen ohjelmointi I Syksy 28 Jorma Laurikkala 5 / 6

Harjoitus 5 (viikko 4) 7. Kirjoita Javalla Zorro-ohjelma, joka tulostaa alla olevien esimerkkien mukaisen kuvion. Ohjelma lukee käyttäjältä tulostuksessa käytettävän merkin ja kuvion koon (kuvion rivien ja sarakkeiden lukumäärä). Ohjelma piirtää kuvion annettua merkkiä ja välilyöntejä käyttäen, jos koko on vähintään kolme. Ohjelma tulostaa "No comprendo.", jos koko on virheellinen. Vinkki: Sisäkkäiset silmukat. Tämä tehtävä tarkistetaan automaattisesti. Varmista, että ohjelmasi toimii esimerkkien mukaisesti. Kuvion keskellä olevien rivien alkuun tulostetaan poikkeuksellisesti välilyöntejä. Rivien loppuun ei tulosteta välilyöntejä: jokainen rivi loppuu viimeiseen näkyvään merkkiin. Alla olevissa esimerkeissä tulostetut välilyönnit on korostettu keltaisella. Kaikki tulostettavat rivit viimeinen rivi mukaan lukien päätetään rivinvaihtoon. Esimerkki ohjelman toiminnasta, kun syötteet ovat tähtimerkki ja : * *** _* *** Esimerkki ohjelman toiminnasta, kun syötteet ovat pieni o-kirjain ja 4: o 4 oooo o _o oooo Esimerkki ohjelman toiminnasta, kun syötteet ovat pieni x-kirjain ja 5: x 5 xxxxx x x _x xxxxx Esimerkki ohjelman toiminnasta, kun syötteet ovat suuri z-kirjain ja : Z No comprendo. Lausekielinen ohjelmointi I Syksy 28 Jorma Laurikkala 6 / 6