Kierros 2, tehtävä 2

Ylityökorvauslaskuri (180 p)

Tässä tehtävässä harjoitellaan edellisellä kierroksella opittujen asioiden lisäksi erityisesti seuraavia asioita:

Näitä asioita opetetaan 25.-27.1. pidettävillä luennoilla.

Käynnistä Eclipse kurssin kotisivun ohjeiden mukaan, jos se ei ole jo käynnissä. Tee uusi projekti, jonka nimi on tehtava2_2. Luo sitten tähän projektiin moduuli ylityokorvauslaskuri ja kirjoita siihen ohjelma, joka laskee ja tulostaa käyttäjälle kuuluvan ylityökorvauksen, kun käyttäjä on ensin syöttänyt sille perustuntipalkkansa ja eri päivinä tekemänsä ylityötunnit.

Ylityökorvaus määräytyy seuraavasti: Jos työntekijä tekee yhtenä päivänä ylitöitä korkeintaan 2 tuntia, saa hän näiltä tunneilta 1,5-kertaisen tuntipalkan. Jos työntekijä tekee ylitöitä jonain päivänä yli 2 tuntia, saa hän ensimmäiseltä 2 tunnilta 1,5-kertaisen tuntipalkan ja niiden jälkeen tulevilta tunneilta 2-kertaisen tuntipalkan. (Oikeasti säännöt ovat monimutkaisempia ja vaihtelevat eri alojen työehtosopimusten mukaan, mutta tässä tehtävässä käytetään edellä annettuja sääntöjä.)

Ohjelma pyytää käyttäjää syöttämään ensin normaalin tuntipalkan (ilman ylityölisiä) ja sitten kunkin päivän ylityötunnit. Käyttäjä voi lopettaa antamalla negatiivisen tuntimäärän (jota ei oteta huomioon korvausta laskettaessa). Katso tarkemmin alla olevista esimerkkiajoista. Ohjelma siis laskee ensin kunkin päivän ylityökorvauksen erikseen ja lisää sen sitten yhteiskorvaukseen. Vain yhteiskorvaus tulostetaan.

Ole tarkka siitä, että ohjelmasi tulostus on täsmälleen (välimerkkejä myöten) alla olevan mallin mukainen. Muista erityisesti lisätä rivinvaihtomerkki raw_input-käskyissä käyttäjälle annettavan pyynnön loppuun. (Näin ohjelman tarkastus Goblinilla sujuu ilman ylimääräisiä ongelmia.) Ohjelman tulostamia desimaalilukuja ei tarvitse muotoilla, vaan voit antaa ohjelman tulostaa luvut Python-tulkin käyttämällä oletustarkkuudella. Ohjelman ei tarvitse varautua virheelliseen syötteeseen (esimerkiksi negatiiviseen tuntipalkkaan tai siihen, että käyttäjä syöttää numeroiden sijasta kirjaimia.)

Testaa ohjelmasi monta kertaa ajamalla sitä itse Eclipsessä ennen kuin palautat sen Goblinille. Palauta Gobliniin tiedosto ylityokorvauslaskuri.py.

Kaksi esimerkkiä ohjelman suorituksesta:

[ohjelman suoritus alkaa]
Anna tyontekijan normaali tuntipalkka.
10.0
Anna eri paivina tehdyt ylityotunnit, paiva kerrallaan.
Lopeta negatiivisella tuntimaaralla.
Anna 1. paivan ylityotunnit.
5.0
Anna seuraavan paivan ylityotunnit.
0.0
Anna seuraavan paivan ylityotunnit.
1.5
Anna seuraavan paivan ylityotunnit.
2.0
Anna seuraavan paivan ylityotunnit.
0.0
Anna seuraavan paivan ylityotunnit.
-1.0
Ylityokorvaukset ovat yhteensa 142.5 euroa.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa]
Anna tyontekijan normaali tuntipalkka.
15.0
Anna eri paivina tehdyt ylityotunnit, paiva kerrallaan.
Lopeta negatiivisella tuntimaaralla.
Anna 1. paivan ylityotunnit.
-3.5
Ylityokorvaukset ovat yhteensa 0.0 euroa.
[ohjelman suoritus päättyy]

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