Tässä tehtävässä harjoitellaan erityisesti seuraavia asioita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava8_2, ja tähän projektiin moduuli valityspalkkiot. Kirjoita sitten moduuliin ohjelma, joka lukee tiedostosta osakekauppojen arvoja. Ohjelma laskee ja tulostaa kaupoista tulevat välityspalkkiot sekä välityspalkkioiden summan. Tarkempi selostus ohjelmasta on alla.
Eräs pankki perii välittämistään osakaupoista välityspalkkiona yleensä 0,25 prosenttia ostetun tai myydyn osake-erän kokonaishinnasta. Jos kuitenkin näin laskettu palkkio olisi pienempi kuin 10 euroa, pankki perii 10 euron välityspalkkion.
Kirjoita Python-ohjelma, joka lukee tiedostosta yksittäisten osakekauppojen
arvot. Arvot on tallennettu tekstitiedostoon niin, että kukin arvo
(yksi desimaaliluku) on
omalla rivillään. Rivillä ei ole mitään muuta tietoa. Ohjelma laskee
ja tulostaa jokaisesta kaupasta tulevan
myyntipalkkion esimerkkiajon mukaisesti. Lopuksi ohjelma tulostaa
myyntipalkkioiden summan.
Voit katsoa mallia tiedostoston muodosta tiedostosta
osakekaupat1.txt ja
vähän virheellisestä tiedostosta
osakekaupat2.txt. Tallenna nämä
tiedostot samaan hakemistoon ohjelmakoodisi kanssa ohjelmasi testaamista
varten. Oikea hakemisto on Unix-koneissa
tyohakemisto/tehtava8_2/src/
,
missä tyohakemisto on Eclipsessä käyttämäsi työtilan (workspace) hakemisto.
Jos tiedoston lukemisessa tapahtuu virhe (esimerkiksi haluttua tiedostoa ei ole olemassa), ohjelma tulostaa, että tiedoston lukemisessa on tapahtunut virhe ja lopettaa toimintansa. Jos tiedoston jollain rivillä on jotain muuta kuin yksi desimaaliluku, ohjelma tulostaa ilmoituksen virheellisestä luvusta ja lopettaa toimintansa. Ohjelma kuitenkin tulostaa ennen virheellistä riviä olleiden arvojen välityspalkkiot normaalisti.
Jos tiedoston jollain rivillä on negatiivinen luku, ohjelma laskee tämän osakekaupan välityspalkkioksi normaalin minimipalkkion 10 euroa.
Ohjelman rakennetta ei ole tässä määrätty sen tarkemmin. Ohjelmaa ei ole pakko jakaa useampaan funktioon, vaan saat kirjoittaa koko koodin yhteen pääohjelmaan.
Tarkista, että ohjelmasi tulostus on esimerkkiajon mallin mukainen. Kaikki rahamäärät on tulostettu kahden desimaalin tarkkuudella 11 merkin levyisiin kenttiin. Kenttien välillä on lisäksi yksi välilyönti. Poikkeuksena on välityspalkkioiden summa, jonka tulostuskentän leveyttä ei ole määrätty. Testaa ohjelmaasi ajamalla sitä itse ja käyttämällä eri luettavia tiedostoja (voit tehdä niitä helposti myös itse) ennen ohjelman palautusta Gobliniin. Palauta Gobliniin tiedosto valityspalkkiot.py.
[ohjelman suoritus alkaa] Mista tiedostosta osakekauppojen arvot luetaan? osakekaupat1.txt Kauppasumma valityspalkkio (eur) 1500.00 10.00 14000.00 35.00 2800.00 10.00 1750.48 10.00 3989.00 10.00 4010.10 10.03 12500.00 31.25 Valityspalkkiot yhteensa 116.28 euroa. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedostossa virheitä] Mista tiedostosta osakekauppojen arvot luetaan? osakekaupat2.txt Kauppasumma valityspalkkio (eur) 15000.40 37.50 1850.00 10.00 Virheellinen luku tiedostossa. Ohjelma paattyy. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedostoa ei löydy] Mista tiedostosta osakekauppojen arvot luetaan? kauppatiedosto.txt Virhe tiedoston kauppatiedosto.txt lukemisessa. Ohjelma paattyy. [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta