Tässä tehtävässä harjoitellaan erityisesti seuraavia asoita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava8_4, ja luo tähän projektiin moduuli molekyyli. Kirjoita moduuliin ohjelma, jonka avulla käyttäjä voi laskea haluamiensa molekyylien molekyylimassoja. Tarkempi kuvaus ohjelmasta on annettu alla.
Ohjelmasi käyttää apuna tiedostoa, joka sisältää alkuaineiden atomimassoja.
Katso esimerkkkitiedostoa
massoja1.txt.
Tiedostossa on annettu yhdellä rivillä yhden alkuaineen atomimassa niin,
että ensin on alkuaineen kemiallinen merkki, sitten kaksoispiste ja
tämän jälkeen alkuaineen atomimassa atomimassayksiköissä (amu).
Ohjelmasi pyytää käyttäjää antamaan molekyylin kemiallisen kaavan.
Kaava annetaan siten, että kaavassa alkuaine ja sen jäljessä tuleva
atomien lukumäärä erotetaan toisistaan kaksoispisteellä. (Jos
lukumäärä on yksi, kaksoispiste ja lukumäärä puuttuvat kaavasta.)
Eri alkuaine-lukumääräyhdistelmät puolestaan erotetaan toisistaan
tavuviivalla. Esimerkiksi veden kemiallinen kaava esitetään muodossa
H:2-O
ja etanolin C:2-H:5-O-H
. Ohjelma
tutkii kaavasta, kuinka monta atomia mitäkin alkuainetta siinä esiintyy,
ja laskee molekyylimassan laskemalla molekyylissä olevien atomien
atomimassat yhteen. Ohjelman ei tarvitse osata toimia oikein silloin,
jos molekyylikaavassa esiintyy sulkuja tai negatiivisia kokonaislukuja.
Kirjoita ohjelmasi siten, että se ensin lukee atomimassat sisältävän tiedoston, ja sijoittaa atomimassat sanakirjarakenteeseen, jossa avaimena on alkuaineen kemiallinen merkki ja arvona alkuaineen atomimassa. Tämän jälkeen ohjelma pyytää käyttäjältä sen molekyylin kemiallisen kaavan, jonka molekyylimassa lasketaan. Kun molekyylimassa on laskettu ja tulostettu kahden desimaalin tarkkuudella, ohjelma kysyy käyttäjältä, haluaako hän jatkaa. Ohjelma jatkaa uuden molekyylikaavan kysymisellä, jos käyttäjän vastaus on jokin muu kuin pieni tai suuri e-kirjain. Katso tarkemmin esimerkkijoista, mitä ohjelman pitää tulostaa eri vaiheissa. Lopuksi ohjelma tulostaa "Ohjelma paattyy."
Molekyylimassat sisältävän tiedoston pitää olla samassa hakemistossa
ohjelmasi kanssa. Oikea hakemisto on koulun Linux-koneissa
tyohakemisto/tehtava8_4/src/
, missä tyohakemisto on
Eclipsessä käyttämäsi työtilan (workspace) hakemisto.
Ohjelman on selviydyttävä seuraavista virhetilanteista:
Testaa ohjelmasi toimintaa monta kertaa ajamalla sitä itse Eclipsessä ennen ohjelman palautusta. Voit käyttää testauksessa apuna tiedostoja massoja1.txt, massoja2.txt ja massoja3.txt. Tallenna ne samaan hakemistoon ohjelmasi kanssa.
Palauta Gobliniin tiedosto molekyyli.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] Anna tiedoston nimi? massoja1.txt Anna molekyylikaava. H:2-O Yhdisteen H:2-O molekyylimassa on 18.02 amu. Haluatko jatkaa (k/e)? k Anna molekyylikaava. H-N-O:3 Yhdisteen H-N-O:3 molekyylimassa on 63.01 amu. Haluatko jatkaa (k/e)? K Anna molekyylikaava. C:2-H:5-O-H Yhdisteen C:2-H:5-O-H molekyylimassa on 46.07 amu. Haluatko jatkaa (k/e)? e Ohjelma paattyy. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedostossa virheellisia rivejä] Anna tiedoston nimi? massoja2.txt Virhe: Virhe: S:32.065:ylimaaraista Virhe: Al Anna molekyylikaava. H:2-O Yhdisteen H:2-O molekyylimassa on 18.02 amu. Haluatko jatkaa (k/e)? k Anna molekyylikaava. Si-Ni Yhdisteen Si-Ni molekyylimassa on 86.79 amu. Haluatko jatkaa (k/e)? k Anna molekyylikaava. Al-Ag Alkuaineen atomimassa puuttuu: Al Haluatko jatkaa (k/e)? E Ohjelma paattyy. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedostossa atomimassa, jota ei voida tulkita luvuksi] Anna tiedoston nimi? massoja3.txt Virheellinen atomimassa. Ohjelma paattyy. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, tiedostoa ei löydy] Anna tiedoston nimi? massoja Virhe tiedoston massoja lukemisessa. Ohjelma paattyy. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, osassa molekyylikaavoja virheitä] Anna tiedoston nimi? massoja1.txt Anna molekyylikaava. H:2:3-O Virhe molekyylikaavassa. Haluatko jatkaa (k/e)? k Anna molekyylikaava. H:roskaa-O Virhe molekyylikaavassa. Haluatko jatkaa (k/e)? K Anna molekyylikaava. -A Alkuaineen atomimassa puuttuu: Haluatko jatkaa (k/e)? k Anna molekyylikaava. I:2 Alkuaineen atomimassa puuttuu: I Haluatko jatkaa (k/e)? k Anna molekyylikaava. H:2-S-O:4 Yhdisteen H:2-S-O:4 molekyylimassa on 98.08 amu. Haluatko jatkaa (k/e)? e Ohjelma paattyy. [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta