Kierros 1, tehtävä 4

Osakelaskuri (150 p)

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

Tämän tehtävän tarkoituksena on varmistaa, että osaat käyttää kurssin uutisryhmää. Siksi osa tehtävän tekemiseen tarvittavista tiedoista on annettu uutisryhmään opinnot.tik.opey lähetetyssä viestissä. Pääset uutisryhmään esimerkiksi seuraamalla linkkiä http://news.tky.fi/thread.php?group=opinnot.tik.opey. (Sama linkki on annettu myös kurssin Noppa-sivun kurssiesitteessä.)

Käynnistä Eclipse kurssin kotisivun ohjeiden mukaan, jos se ei ole jo käynnissä. Tee uusi projekti, jonka nimi on tehtava1_4. Luo sitten tähän projektiin moduuli osakelaskuri ja kirjoita siihen ohjelma, joka suorittaa alla kuvatun tehtävän.

Käyttäjä on myymässä erän osakkeita, jotka hän on hankkinut aikaisemmin. Sinun tehtävänäsi on kirjoittaa ohjelma, joka laskee, paljonko käyttäjä saa voittoa osakkeiden myynnistä, kun myyntihinnasta vähennetään osakkeiden ostohinnan lisäksi osakkeiden välityspalkkio (sekä ostosta että myynnistä) ja osakkeiden säilytysmaksu pankin arvo-osuustilillä. Osakkeiden myyntihinta, määrä ja omistusaika kuukausina kysytään käyttäjältä. Myyntihinta on desimaaliluku, kun taas määrä ja omistusaika ovat kokonaislukuja. Osakkeiden ostohinta, välityspalkkio ja säilytysmaksu kuukautta kohti on kerrottu kurssin uutisryhmään opinnot.tik.opey lähetetyssä viestissä "Apua kevaan 2011 tehtavaan 1.4".

Huomaa, että uutisryhmässä annetut hintatiedot ovat eri opiskelijoilla erilaiset. Sinun pitää itse käydä katsomassa uutisryhmän viestistä, mitä arvoja sinun pitää käyttää.

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.)

Huomautus: Python-kielisissä ohjelmissa pystytään kyllä hyvin käsittelemään skandinaavisia aakkosia (å, ä ja ö). "Ääkkösiä" käyttävien ohjelmien Goblin-palautuksissa on kuitenkin helposti ongelmia, jos opiskelija ei ole osannut tehdä kotikoneeseensa oikeita merkistökoodiasetuksia. Tällaisten turhien harmien välttämiseksi tällä kurssilla kirjoitetaan Goblininille palautettavat ohjelmat ilman "ääkkösiä".

Kun olet tallentanut ohjelmasi, aja sitä useaan kertaan Eclipsen Run->Run as->Python Run-komennolla ja tarkista, että ohjelma tulostaa oikeita arvoja. Palauta sitten Gobliniin tiedosto osakelaskuri.py. Ohjelmasi ei tarvitse osata varautua virheelliseen syötteeseen (esimerkiksi negatiivisiin lukuihin tai siihen, että käyttäjä ei ole antanut oikeassa muodossa olevia lukuja). Jos osakkeiden yhteismyyntihinta on pienempi kuin ostohinta ja kulut yhteensä, ohjelma tulostaa negatiivisen myyntivoiton (katso toinen esimerkki alla).

Kaksi esimerkkiä ohjelman toiminnasta. (Näissä esimerkeissä on oletettu, että osakkeiden ostohinta on 5.00 eur / kpl, välityspalkkio sekä ostosta että myynnistä 10 eur ja säilytysmaksu 1.50 eur / kk. Sinun pitää niiden sijaan käyttää uutisryhmässä annettuja arvoja):

[ohjelman suoritus alkaa]
Anna osakkeiden myyntihinta (eur / kpl):
5.5
Anna osakkeiden maara:
210
Anna omistusaika (kk):
5
Osakkeiden myyntivoitto on 77.5 euroa.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa]
Anna osakkeiden myyntihinta (eur / kpl):
5.05
Anna osakkeiden maara:
100
Anna omistusaika (kk):
8
Osakkeiden myyntivoitto on -27.0 euroa.
[ohjelman suoritus päättyy]

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