Harjoitustyö 1. 1. Johdanto. 2. Euroseteli



Samankaltaiset tiedostot
2. Merkkijono, osamerkkijono ja osamerkkijonon haku

Harjoitustyö Johdanto

Harjoitustyö Johdanto

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

Harjoitustyö Johdanto Tehtävä

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Harjoitus 5 (viikko 41)

Harjoitustyö Johdanto Tehtävä

Harjoitus 2 (viikko 45)

Harjoitus 4 (viikko 47)

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

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

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

Harjoitus 6 (viikko 42)

Harjoitus 5 (viikko 41)

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

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

Johdatus Ohjelmointiin

14. Hyvä ohjelmointitapa 14.1

4. Lausekielinen ohjelmointi 4.1

Harjoitus 5 (viikko 48)

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

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa

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

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

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

Harjoitustyö Johdanto Tehtävä

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

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

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

Ohjelmoinnin perusteet Y Python

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

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

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

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

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

Harjoitus 6 (viikko 42)

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

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

5. HelloWorld-ohjelma 5.1

Harjoitus 3 (viikko 39)

Ohjelmoinnin perusteet Y Python

etunimi, sukunimi ja opiskelijanumero ja näillä

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

Ohjelmoinnin perusteet Y Python

Harjoitus 1 (viikko 44)

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

T harjoitustyö, kevät 2012


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

Ohjelmoinnin perusteet, 1. välikoe

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

Ohjelmoinnin perusteet Y Python

T harjoitustehtävät, syksy 2011

Ohjelmoinnin peruskurssi Y1

11. Javan toistorakenteet 11.1

Ohjelmoinnin perusteet Y Python

Harjoitustyö: virtuaalikone

1 Turnitin-tehtävä Moodlessa Opettajan näkymä Turnitin-tehtävässä Raportin katselu Raportin tulostus

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

finnish BOI 2015, päivä 1. Muistiraja: 256 MB

Ohjelmoinnin perusteet Y Python

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Ohjelmoinnin peruskurssi Y1

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

5. HelloWorld-ohjelma 5.1

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

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

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

Python-ohjelmointi Harjoitus 2

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

} {{ } kertaa jotain

Ohjelmoinnin perusteet Y Python

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

Suoritusten kirjaaminen WinOodissa: Opintoneuvojan ohje

Toisessa kyselyssä alueella on 1 ruudussa A ja 3 ruudussa B, joten suosituin ehdokas on B.

Tietokannan luominen:

Ehto- ja toistolauseet

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

4. Lausekielinen ohjelmointi 4.1

SÄHKÖTEKNIIKAN KOULUTUSOHJELMAN KANDIDAATINTYÖOHJE

Ohjelmoinnin peruskurssi Y1


Java-kielen perusteet

Transkriptio:

Harjoitustyö. Johdanto.. Tehtävä Lausekielinen ohjelmointi (Laki) -kurssin ensimmäisessä harjoitustyössä on tehtävänä toteuttaa Java-kielellä ohjelma, joka tutkii euroseteleiden [, ] sarjanumeroja. Ohjelmalla voi tarkastaa onko sarjanumero oikeellinen ja laskea sarjanumerolle tarkisteen. Harjoitustyö on ratkaistavissa tähän mennessä opituilla tiedoilla ja ohjelman rakenteen hahmottelun voi aloittaa vaikka saman tien. Tehtävän ratkaisussa ei saa käyttää enemmän ohjelmointia taitavien tuntemia helpompia ohjelmointitekniikoita. Esimerkiksi taulukoiden ja Stringluokan metodien käyttö on kielletty. (Loogisia operaatioita saa käyttää ja ohjelman saa jakaa operaatioiksi.) Kiellon rikkominen johtaa saman tien harjoitustyön hylkäämiseen. Kysy siis harjoitustyönohjaajaltasi, mikäli olet epävarma mitä saa tehdä ja mitä ei. Tärkein syy ohjelmointitekniikoiden rajoittamiseen on harjoitustyön oppimistavoite: ohjausrakenteiden käyttö laajemmassa mittakaavassa. Jos kaikki on sallittua, niin on todennäköistä, että ohjelmointinoviisi tutustuu esimerkiksi ohjelmointitaitoisen kurssilaisen tai kaverin avulla kurssilla myöhemmin esiteltäviin menetelmiin pintapuolisesti. Tällöin on vaarana, että ohjelmoija ei täysin ymmärrä ratkaisunsa toimintaa eikä tule oppineeksi kuinka valinta- ja toistorakenteita käytetään. Rajoitusten seurauksena jo ohjelmointitaitoiset kurssilaiset joutuvat käyttämään työhön hieman enemmän aikaa. Tämä on kuitenkin pienempi paha kuin se, että osa ohjelmointia aloittelevista kurssilaisista ei oppisi kunnolla keskeisimpiä taitoja. Harjoitustyö tehdään itse ja lähinnä omalla ajalla. Kaverien kanssa saa keskustella, mutta suora kopiointi eli plagiointi on kiellettyä. Luonnollisesti myös verkosta löytyneen koodin käyttö katsotaan plagioinniksi. (Kurssisivuilla julkaistu koodi on vapaasti käytettävissä.).. Pakollisuus ja korvaavuudet Harjoitustyö on pakollinen. Ainoa poikkeus tähän sääntöön ovat harjoitustyön korvanneet opiskelijat. Harjoitustyön voi korvata: A) Muiden oppilaitosten opinnoilla. B) Edellisellä Laki-kurssilla hyväksytyllä ensimmäisellä harjoitustyöllä, jos kurssi jäänyt kesken esimerkiksi asetai siviilipalveluksen tapaisesta pakottavasta syystä. Kurssin kotisivuilla on annettu tarkempia tietoja osasuorituksista. C) Edellisten kohtien tapaisella painavalla syyllä. Kohdan A perusteella on annettu kaikki opintokoordinaattorin (Anna Wansén- Kaseva) kurssin vastuuopettajalle (Jorma Laurikkala) esittämät korvaavuudet. B ja C-kohtien osalta on tärkeintä muistaa, että harjoitustyö korvautuu vain, jos ottaa yhteyttä kurssin vastuuopettajaan. Tähän mennessä tulleet yhteydenotot ja sopimukset on kirjattu ylös eikä uusia yhteydenottoja näiltä osin tarvita.. Euroseteli Euroseteleissä [, ] on -merkkinen sarjanumero. Ensimmäisen (00) sarjan seteleissä sarjanumeron ensimmäinen merkki on maakoodi, joka ilmaisee painatuksen tilanneen keskuspankin. Maakoodi esitetään englanninkielisen suuraakkoston kirjaimilla (A Z). Esimerkiksi Suomen Pankin painattamien seteleiden maakoodi on L. Toisen sarjan (0) seteleiden kaksi ensimmäistä merkkiä ovat suuraakkosia A Z. Ensimmäinen kirjain kertoo painopaikan ja toinen kirjaimella ei ole erityistä merkitystä. Molemmissa sarjoissa sarjanumeron loppu koostuu numeroista siten, että ensimmäisessä sarjassa on numeroa ja toisessa sarjassa on 0 numeroa. Viimeinen numero on tarkiste, jonka arvot ovat väliltä. Muiden numeroiden arvot ovat väliltä 0. Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala / 7

Harjoitustyö Esimerkiksi ensimmäisen setelisarjan sarjanumerosta 76 käy ilmi, että painattaja on Kreikan keskuspankki () ja että tarkiste on. Eräs toisen setelisarjan sarjanumero UD00, kertoo setelin olevan Ranskan keskuspankin painama (U). Tämän sarjanumeron tarkiste on... Sarjanumeron tarkastus Eurosetelin sarjanumero voidaan tarkistaa usealla tavalla. Alla annettu menetelmä on variaatio numerosummaan [] ja yhdeksällä jaollisuuteen perustuvista menetelmistä [, 5]. Sarjanumero tarkistetaan näin:. Sarjanumeron kirjaimet korvataan taulukossa annetuilla numerovastineillaan.. Näin saadut numerot ja sarjanumeron muut numerot lasketaan yhteen tarkastussummaksi.. Jos summa ei ole yksinumeroinen, lasketaan summan numerot yhteen uudeksi summaksi. Summan numeroja lasketaan yhteen, kunnes summaksi saadaan yksinumeroinen luku.. Sarjanumero on oikeellinen, jos tarkastussumma on. Muussa tapauksessa sarjanumero on virheellinen. Taulukko : Sarjanumeron kirjaimia vastaavat numerot. A B C D E F G H I J K L M 5 6 7 5 N O P Q R S T U V W X Z 6 7 5 6 7 Tarkistetaan sarjanumero 76. Aluksi korvataan vastineellaan. Sitten numerot lasketaan yhteen tarkastussummaksi : Σ = + + + + + 7 + + + + 6 + + = 6. Koska summassa on kaksi numeroa, tarkistussumma lasketaan uudelleen summaamalla alkuperäisen summan numerot: Σ = 6 + =. Lopuksi voidaan todeta sarjanumeron olevan oikeellinen, koska tarkastussumma oli yhdeksän. Sarjanumero UD00 havaitaan oikeelliseksi samalla periaatteella: Σ = + 5 + + 0 + + + 0 + + + + + = 5. Σ = + 5 =... Tarkisteen laskeminen Tarkiste on numero ( ), jonka tarkastussummaan lisäämällä summasta saadaan yhdeksän. Sarjanumeron tarkisteen laskeminen tapahtuu pitkälti tarkastuksen tapaan:. Lasketaan tarkastussumma kohdassa. kuvatulla periaatteella. Koska tarkistetta ei nyt tunneta, summaan lasketaan sarjanumeron ensimmäistä merkkiä.. Tarkiste on numero, joka saadaan vähentämällä tarkastussumma luvusta yhdeksän. Jos erotus on nolla, tarkisteeksi valitaan yhdeksän. Näin tarkiste on aina numero väliltä. Lasketaan tarkisteet edellä käsitellylle sarjanumeroille, jotka esitetään nyt muodossa 76? ja UD00?, missä? merkitsee toistaiseksi tuntematonta tarkistetta. Summat lasketaan kuten edellä sillä poikkeuksella, että tarkistenumero ei ole mukana summassa. Näin ensimmäisen sarjanumeron tarkastussumma on: Σ = + + + + + 7 + + + + 6 + = 55 Σ = 5 + 5 = 0 Σ = + 0 =. Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala / 7

Harjoitustyö Kun tarkastussumma vähennetään luvusta yhdeksän, saadaan tarkiste: - =. Tarkiste lisätään sarjanumeron loppuun, jolloin sarjanumero on 76. Jälkimmäisen sarjanumeron tarkastussumma on: Σ = + 5 + + 0 + + + 0 + + + + = 6. Σ = + 6 =. Tarkisteeksi valitaan yhdeksän, koska - = 0. Näin tarkisteella täydennetty sarjanumero on UD00.. Ohjelman toiminnot Seuraavassa esitellään ohjelman toiminnallisuutta pienten esimerkkien avulla. Laajempia esimerkkiajoja julkaistaan kurssin kotisivujen Opetus Harjoitustyöt Harjoitustyö -kohdassa. Tietojen lukemiseen näppäimistöltä käytetään In-luokan operaatioita. Myös In-luokka löytyy kurssin sivuilta. Huomaa, että harjoitustyössä syötteiden lukuun ei saa käyttää muita keinoja, jotta töiden puoliautomaattinen tarkastus (katso luku 7) onnistuisi. Tehtävän helpottamiseksi oletetaan, että ohjelmalle annetaan aina syöte sitä luettaessa ja että ohjelmalle ei tarjota väärän tyyppisiä syötteitä. Ohjelman ei tarvitse esimerkiksi varautua merkkijono- tai liukulukutyyppisiin syötteisiin. Kukin syöte kirjoitetaan näppäimistöltä ja annetaan ohjelman käsiteltäväksi Enter-näppäintä painamalla... Aloitusrivin tulostaminen Käynnistyessään ohjelma tulostaa näytölle tekstin "": Tämä teksti tulostetaan vain kerran... Setelisarjan valinta Heti aloitusriviä seuraavalle riville tulostetaan "": Syötekehotusta seuraavalla rivillä luetaan sarjan laatu, joka syötetään ohjelmalle kokonaislukuna. Numerot yksi ja kaksi tarkoittavat ensimmäistä ja toista setelisarjaa. Ohjelma ilmoittaa virheestä merkkijonolla "" ja pyytää uutta syötettä, jos valinta on jotain muuta kuin ohjelman tuntema numero. Valintaa luetaan niin kauan kunnes käyttäjän antama numero on oikeellinen:.. Merkkien lukeminen ja toiminnon valinta Ohjelma pyytää käyttäjältä sarjanumeron merkit yksi kerrallaan siten, että ensin annetaan sarjanumeron ensimmäinen (vasemmanpuoleisin) merkki ja lopuksi viimeinen (oikeanpuoleisin) merkki. Kutakin merkkiä luettaessa tulostetaan ensin omalle rivilleen teksti "Anna i. merkki:", missä i on merkin paikka sarjan alusta lukien. Esimerkiksi ensimmäistä merkkiä tiedustellaan tekstillä "Anna. merkki:". Merkki luetaan heti kyselyrivin jälkeisellä rivillä. Sarjanumeron lukeminen loppuu, kun käyttäjä syöttää ohjelmalle viimeisen merkin. Ohjelma päättelee itse mitä sen tulee tehdä sarjanumerolle. Jos viimeinen merkki on numero väliltä, niin ohjelma tutkii onko sarjanumero oikeellinen vai virheellinen. Jos viimeinen merkki on kysymysmerkki ('?'-merkki), ohjelma laskee sarjalle tarkisteen. Jokainen sarjanumeron merkki tarkistetaan. Ohjelma tulostaa "" ja tiedustelee merkkiä uudelleen, kunnes käyttäjä antaa oikeellisen merkin. Molemmissa setelisarjoissa ensimmäisen merkin tulee olla suuraakkonen väliltä A Z. Toisessa setelisarjassa myös toisen merkin on oltava väliltä A Z. Loput merkit ovat numeromerk- Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala / 7

Harjoitustyö kejä väliltä 0 sarjanumeron toiseksi viimeiseen merkkiin saakka. Tunnisteena toimiva viimeinen merkki on joko numeromerkki väliltä tai kysymysmerkki, kun tarkiste on tuntematon. Alla käyttäjä antaa vahingossa numeron kahdeksan sarjanumeron ensimmäiseksi merkiksi: Anna. merkki: Anna. merkki: Seuraavaa tapahtuu, jos käyttäjä erehtyy antamaan toisen setelisarjan numeroa luettaessa pienen y-kirjaimen sarjan ensimmäiseksi merkiksi, numeron viisi toiseksi merkiksi ja suuren e-kirjaimen kolmanneksi merkiksi: Anna. merkki: y Anna. merkki: 5 D Anna. merkki: E Anna. merkki: Anna. merkki:.. Sarjanumeron tarkastaminen Sarjanumeroa tarkastettaessa ohjelma tulostaa omalle rivilleen merkkijonon "Sarjanumero z on oikeellinen.", kun numero on oikeellinen. Muussa tapauksessa tulostetaan "Sarjanumero z on virheellinen." Edellä z on käyttäjän antama sarjanumero. Esimerkki sarjanumeron 76 tarkastamisesta: Anna. merkki: Anna. merkki: Anna. merkki: Anna. merkki: Anna 5. merkki: Anna 6. merkki: 7 Anna 7. merkki: Anna. merkki: Anna. merkki: Anna 0. merkki: 6 Anna. merkki: Sarjanumero 76 on oikeellinen..5. Tarkisteen laskeminen Ohjelma laskee sarjanumerolle tarkisteen, jos sarjan viimeinen merkki on kysymysmerkki. Viimeisen merkin lukemisen jälkeen tulostetaan omalle rivilleen "Sarjanumero on z.", missä z on käyttäjän syöttämä sarjanumero, jonka loppuun on lisätty tarkistemerkki. Alla lasketaan tarkiste sarjanumerolle 76?. Käyttäjä yrittää antaa ensin viimeiseksi merkiksi suuren x- kirjaimen: Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala / 7

Harjoitustyö Anna. merkki: Anna. merkki: Anna. merkki: Anna. merkki: Anna 5. merkki: Anna 6. merkki: 7 Anna 7. merkki: Anna. merkki: Anna. merkki: Anna 0. merkki: 6 Anna. merkki: x? Sarjanumero on 76..6. Ohjelman jatkaminen ja lopetus Sarjanumeron tutkimisen jälkeen käyttäjältä tiedustellaan omalla rivillään "Jatketaanko (k/e)?" ja käyttäjän syöte ('k'- tai 'e'-merkki) luetaan välittömästi seuraavalla rivillä. Pieni k-kirjain palauttaa ohjelman valintaan, jossa kysytään setelisarjan laatua: k Jos ohjelman esittämään jatkokyselyyn vastataan antamalla syötteenä pieni e- kirjain, niin omalle rivilleen tulostetaan teksti "Kiitokset - tavataan taas." ja ohjelman suoritus lopetetaan: e Kiitokset - tavataan taas. Ohjelma tulostaa omalle rivilleen tekstin "" ja kysyy uudelleen kysymyksen, jos käyttäjä vastaa jatkokysymykseen jollakin muulla merkillä kuin pienellä k- tai e-kirjaimella. Käyttäjän kiusaamista jatketaan kunnes syöte on oikeellinen: y E e Kiitokset - tavataan taas.. Koodista Ohjelma kirjoitetaan tuttuun tapaan mainoperaation sisään. Koodia ei tarvitse pilkkoa operaatioiksi, koska tämä asia opetetaan vasta paljon myöhemmin. Omia operaatioita voi toki kirjoittaa niin halutessaan. Ohjelmassa saa käyttää loogisia operaatioita. Edistyneempiä tekniikoita, joilla ongelma ratkeaa helpommin, ei saa käyttää. Näihin luetaan esimerkiksi taulukot ja muut tietorakenteet. Javan API-luokkien metodien käyttö on System-luokan tulostusmetodit print ja println pois lukien kielletty. Ohjelmassa on luonnollisesti käytettävä ainakin yhtä String-tyyppistä muuttujaa, mutta String-luokan metodien (esimerkiksi length tai charat) käyttö on kielletty. Kiellon rikkominen johtaa harjoitustyön hylkäämiseen. Kysy harjoitustyönohjaajaltasi, mikäli olet epävarma mitä saa tehdä ja mitä ei. Syötteet luetaan In-luokan avulla. Älä käytä muita menetelmiä syötteiden lukemiseen. Koska Javan API-luokkien palvelut on rajattu pitkälti pois, on luvun merkit luettava In-luokan char-tyyppistä tietoa käsittelevällä readchar-operaatiolla. Koodisi lukee myös ohjaaja. Noudata siis hyvää ohjelmointitapaa [6]: sisennä koodia luettavuuden parantamiseksi, kommentoi riittävästi, Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala 5 / 7

Harjoitustyö nimeä muuttujat järkevästi, käytä tarvittaessa vakioita, pidä rivit riittävän lyhyinä sekä käytä välejä lauseiden sisällä ja erota loogiset kokonaisuudet toisistaan väliriveillä. Sisennä koodi välilyönnein, jotta koodisi näkyisi täsmälleen samanlaisena myös ohjaajan editorissa. Älä käytä sisentämiseen tabulaattoria. Erityisen tärkeää on se, että välilyöntejä ja tabulaattorimerkkejä ei käytetä sekaisin, koska tällöin on täysin varmaa etteivät sisennykset näy ajatellulla tavalla opettajan koneella. Ohjelman nimen tulee olla Euro, jolloin lähdekoodin tulee olla Euro.javanimisessä tekstitiedostossa. Älä kirjoita ohjelmaan ikuisia silmukoita tai käytä break-lausetta. 5. Dokumentointi Harjoitustyöstä kirjoitetaan dokumentti, jonka tulee sisältää seuraavat asiat:. Kansilehdellä tekijän nimi, opiskelijanumero, sähköpostiosoite, yksikkö ja tutkinto-ohjelma. Sivun keskellä tulisi olla suuremmalla fontilla dokumentin nimi. Kurssin kotisivuilla julkaistaan esimerkinomainen kansilehti.. Ohjelman kuvaus muuttujia ja operaatioita sisältävänä pseudokoodina. Tähän kohtaan ei kelpaa vastaukseksi ohjelmakoodi sellaisenaan. Tavoitteena on kuvata pseudokoodina ohjelman keskeisin idea yleisellä tasolla ja pseudokoodin tulisi siten mahtua yhdelle sivulle. Voit käyttää vapaamuotoista tekstiä yhdessä operaatioiden ja muuttujien kanssa ja jättää pois osan pitkästä valintarakenteesta. Täysin vapaamuotoinen pseudokoodi ei kuitenkaan kelpaa, vaan siitä on löydyttävä myös muuttujia ja operaatioita. Myös pseudokoodia on kommentoitava ja sisennettävä. Viikkoharjoituksissa tulee olemaan tehtävä, josta pitäisi käydä ilmi pseudokoodin tarkkuustaso. Palauta tehtävän ratkaisu mieleen ja tutustu tarvittaessa tehtävän mallivastaukseen, kun kirjoitat harjoitustyön pseudokoodia.. Omia ajatuksia. Esimerkiksi: Oliko työ helppo, sopiva vai vaikea? Jos helppo tai vaikea, niin miksi? Mitä uutta opittiin? Oliko työstä mitään hyötyä tekijälleen? Montako tuntia työn tekemiseen meni? Dokumentin leipäteksti kirjoitetaan pisteen fontilla ja yhdellä rivinvälillä. Dokumentin kirjoitus tekstinkäsittelyohjelmalla ja kieliasun tarkistus ohjelman oikolukutoiminnolla on suotavaa. Valmis teksti kannattaa lukea ennen palautusta. Dokumentti on palautettava PDFmuodossa. Muut tiedostomuodot eivät kelpaa. Luvussa 7 ja kurssin verkkosivuilla kerrotaan tarkemmin dokumentin ja koodin palauttamisesta. 6. Ohjaus ja tarkistus Harjoitusryhmien vetäjät vastaavat pääsääntöisesti ryhmäläistensä töiden ohjauksesta ja tarkistuksesta. (Tuntiopettajat tarkistavat kurssin vastuuopettajan ryhmäläisten harjoitustyöt.) Apua saa sähköpostitse sekä harjoitusten yhteydessä. Ohjaajat ovat myös henkilökohtaisesti yliopistolla tavattavissa myöhemmin julkaistavina aikoina. Kurssin vastuuopettaja auttaa harjoitustyöongelmissa myös muitakin kuin oman ryhmänsä opiskelijoita. Pyri kuitenkin ottamaan ongelmatilanteissa yhteys ensin oman harjoitusryhmän vetäjään, koska vastuuopettajalla on toisinaan kiire. Muista myös, että tehtävänantoon ja Javan piirteiden käyttöön liittyvissä epävarmoissa tilanteissa kannattaa aina kysyä ohjaajalta, koska kysyminen on parempi vaihtoehto kuin työn mahdollinen hylkäys. Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala 6 / 7

Harjoitustyö 7. Harjoitustyön palautus Ohjelma ja dokumentti täytyy palauttaa sähköisesti viimeistään perjantaina.0. 0 klo.00 mennessä WETOjärjestelmään. Tarkemmat ohjeet julkaistaan kurssin verkkosivuilla ja palautusta esitellään mahdollisuuksien mukaan luennoilla. Harjoitustöiden toiminnallisuuden tarkistamiseen on tarkoitus käyttää WETOjärjestelmää, joka vertailee automaattisesti mallivastauksen ja opiskelijoiden ratkaisujen tulosteita. Tästä syystä edellä annettuja tulostemäärittelyjä on seurattava merkilleen. Automaattinen vertailu vähentää rutiininomaista testaustyötä, jolloin opettajille jää enemmän aikaa mielekkäämpään työhön eli ohjelman rakenteen ja tyylin tutkimiseen. Opiskelijat hyötyvät tästä perusteellisempien kommenttien muodossa. Lisäaikaa työn tekoon voi saada muutaman päivän vain hyvästä syystä. Lisäajasta on sovittava harjoitusryhmän vetäjän kanssa ajoissa eli viimeistään päivää tai paria ennen palautuksen takarajaa. Ennen palautusta on syytä varmistaa, että dokumentissa on mukana kaikki edellä mainitut kohdat. Lisäksi kannattaa tarkistaa, että ohjelma toimii varmasti oikein viimeisimpien muutosten jälkeen.. Harjoitustyön arvostelu Harjoitustyöt arvostellaan asteikolla hyväksytty/hylätty. Harjoitusryhmän vetäjä ohjaaja ilmoittaa työn kohtalosta sähköpostilla, jossa on myös tarkempia kommentteja ohjelman tyylistä (rakenne ja hyvä ohjelmointitapa). Hylkäyksen perusteena voi olla ohjelman virheellinen toiminta, hyvän ohjelmointitavan noudattamatta jättäminen, harjoitustyön teossa kiellettyjen Javan ominaisuuksien käyttö (esimerkiksi taulukko), huono dokumentti tai plagiointi. Plagiointiin liittyy sanktio, joka koskee molempia opiskelijoita. Toiselta opiskelijalta tämän tietämättä kopioidun koodin käyttö johtaa kopioijan koko kurssisuorituksen hylkäämiseen. Hylätty työ on korjattava pääsääntöisesti viikon sisällä hylkäyksestä. Lähteet [] Wikipedia-yhteisö: Euro banknotes, http://en.wikipedia.org/wiki/euro_banknotes (Luettu viimeksi.0.0.) [] Euroopan keskuspankki: Euro, https://www.ecb.europa.eu/euro/html/index.fi.html (Luettu viimeksi.0.0.) [] Wikipedia-yhteisö: Digital root, http://en.wikipedia.org/wiki/digital_root. (Luettu viimeksi.0.0.) [] T. Vuori: Eurosetelin sarjanumero, http://tarkistusmerkit.teppovuori.fi/tarkmerk.htm#euro (Luettu viimeksi.0.0.) [5] J. Buescu ja J-F. Rodrigues: The Importance of Useful Mathematics, http://ptmat.fc.ul.pt/arquivo/smwp%0docs/buescurodrigues_obidos-finalrevision-.pdf (Luettu viimeksi.0.0.) [6] J. Laurikkala: Lausekielinen ohjelmointi -kurssin luentorunko, luku, http://www.sis.uta.fi/~laki/luennot/luento0/ (Luettu viimeksi.0.0.) Lausekielinen ohjelmointi Syksy 0 Jorma Laurikkala 7 / 7