Tällä rästitehtävällä voit korvata toisen kierroksista 7 tai 8. Jos sinulta puuttuu minimipisteet molemmilta näistä kierroksista, sinun pitää tehdä sekä tämä tehtävä että rästitehtävä 1 tai 2. Jotta rästitehtävä korvaisi tehtäväkierroksen, siitä on saatava vähintään 300 pistettä. Vaikka saisit tehtävästä enemmän pisteitä, niin harjoitustehtäväarvosanaa määrättäessä tällä tehtävällä korvatun kierroksen pistemääräksi lasketaan kuitenkin vain korvattavan kierroksen minimipistemäärä.
Tee Eclipseen uusi projekti, jonka nimi on tehtava10_3. Luo sitten tähän projektiin moduuli morsetus ja kirjoita siihen ohjelma, joka lukee tiedostosta morseaakkosilla kirjoitettuja merkkejä ja tulostaa ne tavallisena tekstinä.
Aluksi ohjelma lukee tiedostosta, mikä kirjain vastaa mitäkin morsekoodia. Tiedoston nimi pyydetään käyttäjältä. Koodit on annettu tiedostossa siten, että rivillä on ensin kirjain tai muu merkki, sitten kaksoispiste ja sitten merkkiä vastaava morsekoodi. Voit katsoa mallia tiedostosta morseaakkoset1.txt. Ohjelma tekee sanakirjarakenteen, joissa avaimena on morseaakkonen ja arvona morseaakkosta vastaava merkki.
Tämän jälkeen ohjelma kysyy, mistä tiedostosta morseaakkoset luetaan.
Ohjelma lukee morseaakkoset tiedostosta rivi kerrallaan ja
tulostaa vastaavat rivit kirjaimina kuvaruudulle. (Katso mallia
esimerkkiajosta.) Tiedostossa morseaakkoset on erotettu toisistaan
välilyönnillä. Kaksi sanaa on taas erotettu toisistaan normaalisti
kaksoispistettä merkitsevällä morseaakkosella "---..."
.
(Oikeasti sähkötyksessä kirjaimet erotetaan toisistaan lyhyemmillä
ja sanat toisistaan pidemmillä väleillä, mutta tässä tehtävissä on
tehtävän helpottamiseksi valittu erikoismerkki erottamaan sanat toisistaan.)
Kaksoispistettä tarkoittava merkki siis käännetään aina välilyönniksi.
Tätä kaksoispistettä tarkoittavaa merkkiä ei ole valmiiksi annetuissa
kooditiedostoissa, vaan sinun pitää itse lisätä se sanakirjarakenteeseen.
Voit katsoa esimerkkejä morsekoodia sisältävistä tiedostoista morsetekstia1.txt ja morsetekstia2.txt.
Morseaakkosia sisältävä tiedosto voi sisältää myös sellaisia merkkejä,
joita ei pystytä tunnistamaan tehdyn sanakirjan perusteella.
Siinä tapauksessa näiden merkkien kohtaan kirjoitetaan riviä tulkittaessa
*
-merkki. Jos morseaakkosia sisältävä tiedosto sisältää
tyhjän rivin, ohjelma tulostaa vastaavaan kohtaan tyhjän rivin.
Myös aluksi luettavassa kooditiedostossa voi olla virheitä. Jos rivillä ei ole täsmälleen kahta toisistaan kaksoispisteellä erotettua osaa (esimerkiksi rivi on tyhjä tai sillä on kolme toisistaan kaksoispisteellä erotettua osaa), ohjelma hyppää tämän rivin yli eikä ota sitä mitenkään huomioon sanakirjaa tehdessään. Ohjelma ei kuitenkaan anna virheilmoitusta, vaan se jatkaa ihan normaalisti suoritustaan lukemalla tiedoston seuraavan rivin. Esimerkiksi tiedosto morseaakkoset2.txt sisältää virheellisiä rivejä. Voit kuitenkin olettaa, että jos rivillä on täsmälleen kaksi toisistaan kaksoispisteellä erotettua osaa, niin ne ovat merkki ja morseaakkonen. Tätä ei siis tarvitse enää tarkistaa erikseen.
Jos ohjelma ei pysty lukemaan jompaa kumpaa tiedostoa, se ilmoittaa virheestä ja lopettaa toimintansa (katso mallia esimerkkiajoista).
Ohjelman rakennetta ei ole tässä sen tarkemmin määrätty, vaan voit suunnitella itse esimerkiksi sen, mitä funktioita ohjelmasi sisältää. Älä kuitenkaan kirjoita koko ohjelmaa yhteen pääohjelmaan.
Kopioi tiedostot morseaakkoset1.txt, morseaakkoset2.txt, morsetekstia1.txt ja morsetekstia2.txt samaan hakemistoon ohjelmasi kanssa, jotta pystyisit testaamaan ohjelmaasi. Palauta Gobliniin tiedosto morsetus.py.
[ohjelman suoritus alkaa] Ohjelman avulla voi lukea morsemerkkeja sisaltavan tiedoston. Anna kooditiedot sisaltavan tiedoston nimi. morseaakkoset1.txt Mista tiedostosta morseaakkoset luetaan? morsetekstia1.txt OHJELMOINNIN PERUSKURSSI ON PIAN LOPPU. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Ohjelman avulla voi lukea morsemerkkeja sisaltavan tiedoston. Anna kooditiedot sisaltavan tiedoston nimi. morseaakkoset1.txt Mista tiedostosta morseaakkoset luetaan? morsetekstia2.txt TAMA ON VAHAN PITEMPI TESTI. KATSOTAAN OSAAKO OHJELMASI TULKITA SEN. TOIVOTTAVASTI OSAA. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, kooditiedostossa virheellisia riveja] Ohjelman avulla voi lukea morsemerkkeja sisaltavan tiedoston. Anna kooditiedot sisaltavan tiedoston nimi. morseaakkoset2.txt Mista tiedostosta morseaakkoset luetaan? morsetekstia2.txt TAMA *N VAHAN P*TEMP* TE*T*. KAT**TAAN **AAK* *HJELMA** TULK*TA *EN. T**V*TTAVA*T* **AA. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, kooditiedostoa ei pystyta lukemaan] Ohjelman avulla voi lukea morsemerkkeja sisaltavan tiedoston. Anna kooditiedot sisaltavan tiedoston nimi. ei_olekaan.txt Kooditiedostoa ei pystytty lukemaan. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa, merkit sisaltavaa tiedostoa ei pystyta lukemaan] Ohjelman avulla voi lukea morsemerkkeja sisaltavan tiedoston. Anna kooditiedot sisaltavan tiedoston nimi. morseaakkoset1.txt Mista tiedostosta morseaakkoset luetaan? ei_mistaan.txt Merkkien luku tiedostosta ei onnistunut. [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta