Tässä tehtävässä harjoitellaan erityisesti seuraavia asioita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava8_4. Luo sitten tähän projektiin moduli rahalaskuri ja kirjoita siihen ohjelma, joka ratkaisee alla kuvatun ongelman.
Ulkomaanpuhelu Suomesta Yhdysvaltoihin maksoi vuonna 1979 noin 15 markkaa minuutilta. Kuinka paljon se on nykyrahassa, kun euromuunnoksen lisäksi otetaan huomioon rahan arvon muutos vuodesta 1979 nykyhetkeen? Tässä tehtävässä kirjoitat ohjelman, joka osaa vastata tämäntapaisiin kysymyksiin.
Ohjelmasi käyttää apuna tiedostoa, joka sisältää muunnoskertoimet. Näiden kertoimien avulla voidaan muuttaa eri vuosien rahasumma vuoden 2010 rahaksi. (Koska vuoden 2011 tilastoja ei ole vielä saatavilla, tässä tehtävässä muutetaan raha-arvot vastaamaan vuoden 2010 arvoa.) Katso esimerkkkitiedostoa rahakertoimet1.txt. Se sisältää jokaisella rivillä vuoden ja tätä vastaavan kertoimen. Vuosi ja kerroin on erotettu toisistaan puolipisteellä. Kerroin kertoo, millä luvulla sitä vastaavan vuoden rahasumma on kerrottava, jotta saataisiin sen arvo vuonna 2010.
Tehtävänäsi on kirjoittaa ohjelma, joka lukee tiedostossa (sen nimi kysytään käyttäjältä) annetut vuodet ja kertoimet sekä tallentaa ne sanakirja-rakenteeseen. Tämän jälkeen ohjelma pyytää käyttäjää antamaan vuoden ja rahasumman. Ohjelma laskee ja tulostaa vastaavan rahasumman arvon vuoden 2010 rahassa.
Osa kerrointiedostoista sisältää myös virheellisiä rivejä eli rivejä, jotka eivät ole kuvatussa muodossa tai sisältävät esimerkiksi tekstiä lukujen paikalla. Kun ohjelma kohtaa tällaisen rivin, se tulostaa virheilmoituksen
Tiedostossa virhe rivilla N.missä N on sen rivin numero, jolla virheellinen syöte on (tiedoston ensimmäisen rivin numero on 1). Ohjelma kuitenkin jatkaa toimintaansa normaalisti virheellisen rivin jälkeen ja tallentaa sanakirjarakenteeseen virheettömiä rivejä vastaavat vuodet ja kertoimet. Voit testata ohjelmasi toimintaa virheellisiä rivejä sisältävillä tiedostoilla esimerkiksi tiedoston rahakertoimet2.txt avulla.
Kerrointiedoston pitää olla samassa hakemistossa ohjelmasi kanssa.
Oikea hakemisto on Unix-koneissa
tyohakemisto/tehtava8_4/src/
,
missä tyohakemisto on Eclipsessä käyttämäsi työtilan (workspace) hakemisto.
Ohjelman rakennetta ei ole tässä määrätty sen tarkemmin, vaan saat itse suunnitella, mitä funktioita kirjoitat ohjelmaasi. Älä kuitenkaan kirjoita koko ohjelmaa yhdeksi pääohjelmaksi, vaan käytä myös muita funktioita järkevästi.
Ohjelman on selviydyttävä seuraavista virhetilanteista:
Huomaa, että try-except-rakenteita voi kirjoittaa myös sisäkkäin samaan tapaan kuin sisäkkäisiä if-käskyjä.
Rahan arvon kehitystä voidaan seurata monilla eri mittareilla, jotka antavat vähän erilaisia tuloksia. Voidaan tutkia esimerkiksi palkkojen kehittymistä tai valittujen tuotteiden hintojen kehittymistä. Tässä tehtävässä käytetyt kerrointiedostot perustuvat Tilastokeskuksen Rahanarvonkerrointaulukkoon.
Tehtävän alussa mainittu ulkomaanpuhelun hintatieto perustuu tehtävän laatijan muistikuvaan vuonna 1979 soitetusta Amerikan-puhelusta. Hinta voi olla markan tai kaksi pielessä, mutta hintaluokka on oikea.
Palauta Gobliniin tiedosto rahalaskuri.py .
Jos sinusta on vaikeaa saada ohjelma toimimaan oikein kaikissa virhetilanteissa, voit palauttaa ohjelman, joka toimii oikein virheettömillä tiedostoilla. Goblin antaa tällaisesta ratkaisusta osan pisteistä.
[ohjelman suoritus alkaa] Mista tiedostosta kertoimet luetaan? rahakertoimet1.txt Minka vuoden rahasumman arvon haluat tietaa? 1902 Anna muunnettava rahasumma. 1000.0 Summan arvo vuonna 2010 on 4198.50 euroa. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedosto ei sisallä kerrointa annetulle vuodelle] Mista tiedostosta kertoimet luetaan? rahakertoimet1.txt Minka vuoden rahasumman arvon haluat tietaa? 1850 Anna muunnettava rahasumma. 155.8 Ohjelmalla ei ole tietoa antamasi vuoden rahan arvosta. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, virheellinen syöte] Mista tiedostosta kertoimet luetaan? rahakertoimet1.txt Minka vuoden rahasumman arvon haluat tietaa? 1960 Anna muunnettava rahasumma. paljon Vuosi tai rahasumma on annettu vaarassa muodossa. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, virheellinen syöte] Mista tiedostosta kertoimet luetaan? rahakertoimet1.txt Minka vuoden rahasumman arvon haluat tietaa? kauan sitten Vuosi tai rahasumma on annettu vaarassa muodossa. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedostoa ei löydy] Mista tiedostosta kertoimet luetaan? olematon.txt Virhe tiedoston olematon.txt lukemisessa. Ohjelma paattyy. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedosto sisältää virheitä] Mista tiedostosta kertoimet luetaan? rahakertoimet2.txt Tiedostossa virhe rivilla 5. Tiedostossa virhe rivilla 12. Tiedostossa virhe rivilla 46. Tiedostossa virhe rivilla 64. Tiedostossa virhe rivilla 73. Tiedostossa virhe rivilla 99. Tiedostossa virhe rivilla 102. Minka vuoden rahasumman arvon haluat tietaa? 1985 Anna muunnettava rahasumma. 300.0 Summan arvo vuonna 2010 on 90.18 euroa. [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta