Ohjelmointi 2 2003/ 7.4

Demo 12


1-2
Muuta ohjelman (ks. demo 11 vast.) ValuuttaMuunnos.java tietorakenne Valuutat TreeMap-rakenteeksi.
3.
Toimiiko ValuuttaMuunnos.java (ks. demo 11 vastaukset) siten, että sitä voidaan käyttää seuraavasti ja jos voi niin miksi:
Määrä ja valuutta>10 s[RET]
10.00 Skr on 6.00 mk.
Määrä ja valuutta>2[RET]
2.00 Skr on 1.20 mk.
Määrä ja valuutta>[RET]
Kiitos!

4-6.
Kirjoita ohjelma joka toimisi seuraavasti (kiinnitä huomiota siihen, että komentovalikoimaa voidaan ohjelmaan lisätä "kohtuullisen" helposti.
Anna komento>Ynnää 3 4 5[RET]
Tulos on 12.
Anna komento>Isoksi kana[RET]
kana isona on KANA
Anna komento>palindromiko saippuakivikauppias[RET]
Sana "saippuakivikauppias" on palindromi!
Anna komento>Ynnää 2 1[RET]
Tulos on 3.
Anna komento>Yn 2 1[RET]
Tulos on 3.
Anna komento>Yh 2 1[RET]
En tunne komentoa YH!
Anna komento>[RET]
Mallivastauksen Java-versioon tuli mm.
  public interface KomentoRajapinta {
    boolean suorita(String parametrit);
  }


  public static class Ynnaa implements KomentoRajapinta { ...
  public static class Apua implements KomentoRajapinta { ...
  public static class Palindromiko implements KomentoRajapinta { ...
  public static class Isoksi implements KomentoRajapinta { ...


... luokkia Komento ja Komennot (sis. mm. metodin: etsi) ...

  public static void main(String[] args)  {
    Komennot komennot = new Komennot();
    Apua apua = new Apua("komento.txt");

    komennot.add(new Komento("?",apua));
    komennot.add(new Komento("apua",apua));
    komennot.add(new Komento("+",new Ynnaa()));
    komennot.add(new Komento("ynnää",new Ynnaa()));
    komennot.add(new Komento("isoksi",new Isoksi()));
    komennot.add(new Komento("palindromiko",new Palindromiko()));

    String s;

    while ( true ) {
      s = Syotto.kysy("Anna komento");
      if ( s.equals("") ) break;
      komennot.tulkitse(s);
    }

  }

7*.
Vaikket tekisikään tehtävää 4-6, niin lisää siihen Help.java:aa kayttäen avustus. Eli jos et ole tehnyt tehtävää 4-6, niin kirjoita pääohjelma joka ? painamisella tulostaa avustuksen käyttäen Help.java:n metodeja. Ota uusi .jar-tiedosto itsellesi ali-hakemistosta ja tutki Help.javaa. Kirjoita myös alkeellinen avustustiedosto.
8.
Kirjoita luokka Kello jossa on metodi tarkista(String jono), joka tarkistaa onko parametrina viety merkkijono oikeata muotoa kellonajaksi. Jos on vikaa, niin funktio palauttaa merkkijonona vian, muuten null-viitteen.
B1-2
Kirjoita ohjelma, joka kyselee nimiä kunnes annetaan tyhjä rivi ja tulostaa tämän jälkeen nimet aakkosjärjestyksessä. Nimet syötetään muodossa "Aku Ankka", mutta siitä huolimatta ne lajitellaan siten, että "Iines Ankka" < "Hannu Hanhi", eli sukunimen mukaan.
G1-4
Hevosen hyppely. Hevonenhan voi hypätä shakkilaudalla 2 yhteen suuntaan ja yhden toiseen suuntaan. Tee ohjelma joka etsii hevoselle reitin 5x7 laudalla niin, että hevonen käy tasan yhden kerran jokaisessa ruudussa. Vinkkejä: Lauta-luokka, jossa on "ruutu" jokaisella paikalle. "Ruutuun" tallennetaan monesko hyppy tulee tähän ruutuun. 0 on vapaa ruutu. "Siirtovektori" hevosen mahdollisille hypyille.


GURU-tehtävät

Guruillekin suosittelen tuota 4-7 tehtävää.


HUOM!


Tämä demo (12) on viimeinen kurssin 4 ov:n osuutta koskeva demo. Loput demot (13 ja 14) ovat + 1 ov osio C++:sta.

Vaiheessa 6 pitää olla tiedostojen lukeminen ja kirjoittaminen sekä luokkien välinen yhteistyö käyttöliittymäluokan puolella.

Vaiheessa 7. täytyy olla valmiina ainakin (sovittava ohjaajan kanssa henkilökohtaisesti)