Harjoitustyö 1

Julkaistu

Tehtävänanto ja muuta materiaalia

  • Harjoitustyön esittelykalvot.
  • Tehtävänanto pdf-muodossa.
  • Esimerkinomainen kansilehti pdf– ja rtf-muodossa. Merkitse kansilehdelle oma tutkinto-ohjelmasi ja tiedekunta, joka vastaa tutkinto-ohjelmasi opetuksesta. Onni Ohjelmoija on käpistelijä: hänen tutkinto-ohjelmansa on tietojenkäsittelytieteet, jota opetetaan luonnontieteiden tiedekunnassa.

Esimerkkitiedostot

Oman ohjelman tulosteita kannattaa vertailla esimerkkitiedostoihin ennen WETO-palautuksia.

Kussakin input-alkuisessa tiedostossa on ohjelmalle annettavia komentoja ja vastaavassa output-alkuisessa tiedostossa ovat komentoja vastaavat näyttötulosteet. Esimerkiksi input_abba.txt-tiedoston komennot tuottavat output_abba.txt-tiedoston sisältämät tulosteet. Syötteet ja vastaavat tulosteet on yhdistetty combination-alkuisiin tiedostoihin. Näin esimerkiksi input_abba.txt– ja output_abba.txt-tiedostojen sisältö esitetään combination_abba.txt-tiedostossa yhdessä aivan kuin komennot olisi annettu komentoikkunassa.

Abba-esimerkin voi ajaa omalla ohjelmalla seuraavasti:

java SubstringFinder < input_abba.txt > out.txt

Yllä ohjelman tuloste kaapataan out.txt-tiedostoon uudelleenohjausmerkin > avulla.

Esimerkit ovat saatavilla kahdessa muodossa:

Esimerkeistä ei ole versioita eri merkistöille, koska tiedostoissa on vain 7-bittisen ASCII-merkistön ”näkyviä” merkkejä, joiden esitystapa on sama niin Latin 1 (ISO 8859-1) kuin UTF-8-koodatussa Unicode-merkistöissä.

Salaiset testit

Salaiset testit ovat julkisessa testauksessa käytettyjen esimerkkien tapaan saatavilla kahdessa muodossa:

Kysymyksiä ja vastauksia

1. Onko continue-lause sallittu?

Ei. Continue on break-lauseen tapaan kielletty.

2. Onko tähtimerkin poisto järkevää ennen hakua?

Kyllä. Ohjelmasta tulee todennäköisesti yksinkertaisempi, jos osamerkkijonoa on esikäsitelty siten, että alussa tai lopussa oleva tähtimerkki on poistettu. Ohjelmaa voi tehostaa siten, että tähtimerkitön osamerkkijono muodostetaan samalla, kun osamerkkijono tarkistetaan.

3. Mistä aloittaisin?

Ohjelmaan voi tehdä aluksi esimerkiksi pääsilmukan, jossa on vain tervehdyksen tulostus, syötteiden luvut ja jatkokysely. Kun pääsilmukka jatkuu ja loppuu oikein, voi sen sisään lisätä rutiininomaista ohjelmointia vaativat osat. Pääsilmukan sisään voi lisätä ensin esimerkiksi osamerkkijonon lukevan ja tarkistavan silmukkaparin ja sitten jatkoa tinkaavan silmukan tai päinvastoin. Varsinainen haku kannattaa jättää ohjelman vaikeimpana osana viimeiseksi tehtäväksi. Ohjelman osia voi toteuttaa ja testata myös erillisinä pienempinä ohjelmina. Tämä toisin vaatiin jossain määrin tarkkuutta, jotta palasten yhteensovittamisen yhteydessä ei tule turhaa viilausta. Oli lähestymistapa mikä tahansa, on tärkeintä ettei yritä kirjoittaa koko ohjelmaa valmiiksi yhdellä istumalla. Ohjelmointi edistyy paremmin, kun ohjelman toteuttaa osissa ja testaa kunkin osan ennen seuraavaan siirtymistä.

4. Mitä pitää vakioida?

Ohjelman tuntemat komennot (’y’ ja ’n’) tulee esitellä vakioina, joita käytetään koodissa. Vakioi myös virheilmoitus ”Error!” ja käytä tätäkin vakiota koodissa. Kiinnitä huomiota vakioiden nimeämiseen. Vakiot kirjoitetaan isoin kirjaimin ja nimen tulee olla kuvaava. Erityisesti on vältettävä vakion nykyisen arvon ilmaisua nimessä, koska vakioita käytetään nimenomaan helpottamaan ohjelman ylläpitoa. Esimerkiksi Y ei ole hyvä nimi, koska se perustuu suoraan vakion nykyiseen arvoon.