Kierros 8, tehtävä 4

Rahan arvon muuttuminen (300 p)

Tässä tehtävässä harjoitellaan erityisesti seuraavia asioita:

Tee Eclipseen uusi projekti, jonka nimi on tehtava8_4. Luo sitten tähän projektiin moduuli rahamuunnin ja kirjoita siihen ohjelma, joka ratkaisee alla kuvatun ongelman.

Ulkomaanpuhelu Suomesta Yhdysvaltoihin maksoi vuonna 1979 noin 15 markkaa minuutilta. Vuonna 1989 vastavalmistunut diplomi-insinööri sai palkkaa noin 9000 markkaa kuukaudessa. Kuinka paljon nämä summat ovat nykyrahassa, kun euromuunnoksen lisäksi otetaan huomioon rahan arvon muutos vuodesta 1979 tai 1989 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 2012 rahaksi. (Koska vuoden 2013 tilastoja ei ole vielä saatavilla, tässä tehtävässä muutetaan raha-arvot vastaamaan vuoden 2012 arvoa.) Katso esimerkkkitiedostoa kertoimet1.txt. Se sisältää jokaisella rivillä vuoden ja tätä vastaavan kertoimen. Vuosi ja kerroin on erotettu toisistaan kaksoispisteellä. Kerroin kertoo, millä luvulla sitä vastaavan vuoden rahasumma on kerrottava, jotta saataisiin sen arvo vuonna 2012.

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 2012 rahassa.

Osa kerrointiedostoista sisältää myös virheellisiä rivejä. Niiden käsittelystä on kerrottu tarkemmin alempana.

Kerrointiedoston pitää olla samassa hakemistossa ohjelmasi kanssa.

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.

Virhetilanteiden käsittely

Ohjelman on selviydyttävä seuraavista virhetilanteista:

Katso esimerkkiajoista tarkemmin, millainen ohjelman tulostuksen pitää olla eri virhetilanteissa. Ohjelman ei tarvitse tarkistaa tiedostosta luettujen tai käyttäjän antamien vuosilukujen järkevyyttä muuten kuin että ne ovat kokonaislukuja.

Huomaa, että try-except-rakenteita voi kirjoittaa myös sisäkkäin samaan tapaan kuin sisäkkäisiä if-käskyjä.

Huomautuksia rahan arvon kehityksestä

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. Taulukko on laadittu elinkustannusindekisn perusteella.

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.

Palautus

Palauta Gobliniin tiedosto rahamuunnin.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ä.

Esimerkkejä ohjelman suorituksesta:

[ohjelman suoritus alkaa]
Anna kertoimet sisaltavan tiedoston nimi.
kertoimet1.txt
Minka vuoden rahasummaa tarkastellaan?
1970
Kerro muunnettava rahasumma.
100.0
Sen arvo vuonna 2012 on 140.74 euroa.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, tiedosto ei sisallä kerrointa
annetulle vuodelle]
Anna kertoimet sisaltavan tiedoston nimi.
kertoimet1.txt
Minka vuoden rahasummaa tarkastellaan?
1850
Kerro muunnettava rahasumma.
50.0
Ohjelmalta puuttuu antamasi vuoden muuntokerroin.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, virheellinen syöte]
Anna kertoimet sisaltavan tiedoston nimi.
kertoimet1.txt
Minka vuoden rahasummaa tarkastellaan?
1960
Kerro muunnettava rahasumma.
suuri
Et antanut oikeaa vuotta tai rahasummaa.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, virheellinen syöte]
Anna kertoimet sisaltavan tiedoston nimi.
kertoimet1.txt
Minka vuoden rahasummaa tarkastellaan?
kauan sitten
Et antanut oikeaa vuotta tai rahasummaa.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, tiedostoa ei löydy]
Anna kertoimet sisaltavan tiedoston nimi.
kertoimet3.txt
Tiedoston kertoimet3.txt lukeminen ei onnistu. Ohjelma paattyy.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa, tiedosto sisältää virheitä]
Anna kertoimet sisaltavan tiedoston nimi.
kertoimet2.txt
Virheellinen luku rivilla 16.
Tiedoston rivi 67 on virheellinen.
Tiedoston rivi 96 on virheellinen.
Virheellinen luku rivilla 101.
Virheellinen luku rivilla 111.
Minka vuoden rahasummaa tarkastellaan?
1995
Kerro muunnettava rahasumma.
1200.0
Sen arvo vuonna 2012 on 270.48 euroa.
[ohjelman suoritus päättyy]

Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta