Ohjelmointi 2, InSitu-luento 24.3.2009

Jakauma tehtävittäin

Aikojen jakauma tehtävittäin

Jakauma vastaajittain

Kysymykset


 Ongelma:

 kissa istuu puussa
 istuu ja naukuu
 kissa ja koira istuu

 Monestikko mikäkin sana esiintyy?

-- 0) Oletko ymmärtänyt ongelman ja osaisitko itse vastata tuohon kysymykseen?
         0: en tiedä
         1: en
         2: kyllä
        |30|1|1|0|1|2;1


-- 1) Miten lasketaan sanat
         0: en tiedä
         1: "tukkimiehen" kirjanpidolla: otetaan sana ja lisätään sen sanan lkm
         2: monimutkaisella algoritmillä
         3: kirjain kerrallaan
         4: otetaan ensimmäinen sana ja katsotaan monestiko se esiintyy jne...
        |60|1|1|0|0|1;1

 Piirrä:

   kissa  istuu puussa ja naukuu
    1      2     1      1   1

       Valitse tarvittavat luokat, järjestyksellä ei väliä, paina OK
-- 2) Tarvitaan luokat
         0: en tiedä
         1: Merkki
         2: Sana
         3: Sanat
         4: Virke
         5: Lause
         6: Sivu
        |45|1|7|0|0|23;1

       Valitse oikeat vaihtoehdot, järjestyksellä ei väliä, paina OK
-- 3) Luokan Sana tehtäviin kuuluu
         0: en tiedä
         1: rivin jakaminen sanoiksi
         2: kirjainten määrän laskeminen
         3: tunnistaa onko tutkittava sana
         4: etsiä tutkittava sana ja ilmoittaa sanalle laskurin lisäämisestä
         5: laskurin ylläpito
         6: tiedoston lukeminen
         7: etsi pienin
         8: poista pienin
        |90|1|8|0|0|35;1

       Valitse oikeat vaihtoehdot, järjestyksellä ei väliä, paina OK
-- 4) Luokan Sanat tehtäviin kuuluu
         0: en tiedä
         1: rivin jakaminen sanoiksi
         2: kirjainten määrän laskeminen
         3: tunnistaa onko tutkittava sana
         4: etsiä tutkittava sana ja ilmoittaa sanalle laskurin lisäämisestä
         5: laskurin ylläpito
         6: tiedoston lukeminen
         7: etsi pienin
         8: poista pienin
        |90|1|8|0|0|146;1

       Valitse yksi
-- 5) Top down.  Mikä kirjoitetaan (suunnitellaan) ensin.
         0: en tiedä
         1: Sana
         2: Sanat
         3: "lopullinen" pääohjelma
         4: testipääohjelma Sana-luokalle
         5: kirje joulupukille
        |45|1|1|0|0|3;1


       Valitse järjestyksessä.  Paina OK!
-- 6) Valitse pääohjelman lauseet järjestyksessä
         0: en tiedä
         1: Sanat sanat;
         2: Sana sana;
         3: sana.lisaa(1);
         4: sanat.lue_tiedosto("sanat.txt");
         5: sana.oletko();
         6: sana.nollaa();
         7: sanat.tulosta(System.out);
         8: sanat.etsi_pienin();
         9: sanat = new Sanat();
        |180|1|9|0|1|1947;1

   Kirjoita:
       Sanat sanat;
       sanat = new Sanat();
       sanat.lue_tiedosto("sanat.txt");
       sanat.tulosta(System.out);


       Valitse yksi
-- 7) Bottom up.  Mikä testataan ensin.
         0: en tiedä
         1: Sana
         2: Sanat
         3: lopullinen pääohjelma
         4: testiohjelma Sanat-luokalle
         5: testiohjelma Sana-luokalle
        |30|1|5|0|0|5;1


       Valitse  tarvittavat metodit, järjestyksellä ei väliä, paina OK
-- 8) Luokan Sana julkiset metodit (String sana)
         0: en tiedä
         1: oletko(sana)
         2: aseta(sana)
         3: konstruktori(sana)
         4: kasittele_rivi(rivi)
         5: lisaa()
         6: lisaa(sana)
         7: anna_rivi()
         8: lue_tiedosto(tied_nimi)
         9: sulje_tiedosto()
        |60|1|9|0|0|135;1;;15;1;;36;1


 Kirjoita testipääohjelma Sana:lle
       Sana sana;
       System.out.println(sana);

       Valitse tarvittava määrä, järjestyksellä ei väliä
-- 9) Mitä mieltä testiohjelmasta tällaisenaan
         0: en tiedä
         1: hyvä
         2: "kaatuu" kun ajetaan
         3: tulostaa kissa
         4: sana pitäisi alustaa
        |45|1|9|0|0|4;1


-- 10) Mikä olisi hyvä alustus testiohjelmassa.
         0: ei mitään
         1: sana = "kissa";
         2: sana = 0;
         3: sana = new;
         4: sana = new Sana();
         5: sana = new Sana("kissa");
         6: sana = new FileReader(System.out);
         7: sana = new Sana[10];
         8: sana = null;
         9: sana = new StringBuffer("kissa");
        |35|1|9|0|0|5;1

 Lisää testipääohjelma:
    Sana sana = new Sana("kissa");
    System.out.println(sana);
    sana.lisaa();
    System.out.println(sana);
    if ( sana.oletko("kissa") ) System.out.println("on kissa");

       Valitse  tarvittavat metodit, järjestyksellä ei väliä, paina OK
-- 11) Luokkaan Sana tarvitaan julkiset metodit (String s)
         0: en tiedä
         1: oletko(s)
         2: aseta(s)
         3: konstruktori(s)
         4: kasittele_rivi(rivi)
         5: lisaa()
         6: toString()
         7: anna_rivi()
         8: lue_tiedosto(tied_nimi)
         9: sulje_tiedosto()
        |60|1|9|0|0|1356;1


       Valitse tarvittavat, järjestyksellä ei väliä.  Paina OK!
-- 12) Luokan Sana julkiset attribuutit
         0: ei mitään
         1: lkm
         2: i
         3: teksti
         4: max_lkm
         5: alkiot - taulukko
         6: os - tietovirta johon tulostetaan
         7: fi - tiedosto jota  luetaan
        |60|1|7|0|0|0;1


       Valitse tarvittavat, järjestyksellä ei väliä.  Paina OK!
-- 13) Luokan Sana attribuutit
         0: ei mitään
         1: lkm
         2: i
         3: teksti
         4: max_lkm
         5: alkiot - taulukko
         6: os - tietovirta johon tulostetaan
         7: fi - tiedosto jota  luetaan
        |60|1|7|0|0|13;1

  Kirjoita attribuutit
    lkm
    teksti

       Valitse järjestyksessä
-- 14) Valitse attribuuttien tyypit järjestyksessä
         0: int
         1: char
         2: double
         3: String
         4: StringBuffer
         5: Sana
         6: Sana-taulukko
         7: Sanat
         8: Sanat-taulukko
        |70|1|7|0|0|03;1


  Kirjoita attribuutit
    int lkm;
    String teksti;

-- 15) Vielä lisättävä (valitse yksi)
         0: en tiedä
         1: ei mitään
         2: private
         3: protected
         4: public
         5: int
         6: void
         7: double
         8: String
         9: StringBuffer
        |30|1|1|0|0|2;1

 Lisää
    private int lkm;
    private String teksti;

 Kirjoita:
   __1__ Sana(_2_3_4)

-- 16) Sana-Muodostajan  tyyppi ja parametrit (valitse järjestyksessä)
         0: en tiedä
         1: rivi
         2: Sana
         3: boolean
         4: char
         5: String
         6: double
         7: int
         8: void
         9: ei mitään
        |60|1|4|0|0|95;1

 Esittele
  public Sana(String s) {
  }

       Valitse tarvittavat oikeassa järjestyksessä.  Paina OK
-- 17) Sana-muodostajan sisältö
         0: en tiedä
         1: ei mitään
         2: lkm = 0;
         3: lkm = 1;
         4: teksti = sana;
         5: teksti = s;
         6: lkm++;
         7: i = 0;
         8: i = 1;
        |60|1|3|0|0|25;1;;35;1;;56;1;;5;1

  Kirjoita
     teksti = s;
 
  Kirjoita
     public _1_ oletko(_2_3_4_)

-- 18) oletko-metodin tyyppi ja parametrit (valitse järjestyksessä)
         0: en tiedä
         1: rivi
         2: Sana
         3: boolean
         4: char
         5: String
         6: double
         7: int
         8: void
         9: ei mitään
        |90|1|3|0|1|35;1
 
  Kirjoita
     public boolean oletko(String s) {
         return teksti.equalsIgnoreCase(s);
     }


  Kirjoita
     public _1_ lisaa(_2_3_4_) {
     }
 
-- 19) lisaa-metodin tyyppi ja parametrit järjestyksessä
         0: en tiedä
         1: rivi
         2: Sana
         3: boolean
         4: char
         5: String
         6: double
         7: int
         8: void
         9: ei mitään
        |80|1|3|0|1|89;1;;79;1

  Kirjoita
     public void lisaa() {
     }
 
-- 20) lisaa-metodin sisältö
         0: en tiedä
         1: ei mitään
         2: lkm = 0;
         3: lkm = 1;
         4: teksti = sana;
         5: teksti = s;
         6: lkm++;
         7: i = 0;
         8: i = 1;
        |60|1|3|0|0|6;1

  Kirjoita
     public void lisaa() {
         lkm++;
     }

     public String toString() {
         return teksti + " " + lkm;
     }

 Aja Sana-testi

-- 21) Testilähtöinen Bottom up.  Mikä tehdään seuraavaksi
         0: en tiedä
         1: Sana
         2: Sanat
         3: lopullinen pääohjelma
         4: testiohjelma Sanat-luokalle
         5: testiohjelma Sana-luokalle
        |40|1|1|0|0|4;1

  Kirjoita:
     public static void main(String[] args)  {
         Sanat sanat = new Sanat();
         sanat.lisaa("kissa");
         sanat.lisaa("kissa");
         sanat.lisaa("koira");
         sanat.tulosta(System.out);
         sanat.kasitteleRivi("kissa, istuu kissa puussa");
         sanat.tulosta(System.out);
     }

       Valitse  tarvittavat metodit, järjestyksellä ei väliä, paina OK
-- 22) Testin toteuttamiseksi luokkaan Sanat tarvitaan julkiset metodit
         0: en tiedä
         1: oletko(sana)
         2: aseta(sana)
         3: konstruktori
         4: kasitteleRivi(rivi)
         5: lisaa(sana)
         6: tulosta(tietovirta)
         7: annaRivi()
         8: lueTiedosto(tied_nimi)
         9: suljeTiedosto()
        |90|1|9|0|0|3456;1


       Valitse tarvittavat, järjestyksellä ei väliä.  Paina OK!
-- 23) Luokan Sanat julkiset attribuutit
         0: ei mitään
         1: lkm
         2: i
         3: teksti
         4: max_lkm
         5: alkiot - taulukko
         6: os - tietovirta johon tulostetaan
         7: fi - tiedosto jota  luetaan
         8: alkiot - kokoelma
        |30|1|2|0|0|0;1


       Valitse tarvittavat, järjestyksellä ei väliä.  Paina OK!
-- 24) Luokan Sanat attribuutit
         0: ei mitään
         1: lkm
         2: i
         3: teksti
         4: max_lkm
         5: alkiot - taulukko
         6: os - tietovirta johon tulostetaan
         7: fi - tiedosto jota  luetaan
         8: alkiot - kokoelma
        |90|1|2|0|0|15;1;;8;1


       Kirjoita:
         ??? alkiot
 
-- 25) Valitse Sanat attribuuttien tyypit järjestyksessä
         0: int
         1: char
         2: double
         3: String
         4: StringBuffer
         5: Sana
         6: Sana-taulukko
         7: Sanat
         8: Sanat-taulukko
         9: Collection
        |70|1|2|0|1|9;1

       Kirjoita
         Collection alkiot = new ArrayList();

-- 26) Itse alkiot taulukon oliot
         0: ei tarvita mitään
         1: pitää luoda erikseen silmukassa
         2: riittää luoda aina kun uusi alkio lisätään
        |45|1|1|0|0|2;1

       Kirjoita testipääohjelma:
           Sanat sanat = new Sanat();
           sanat.lisaa("kissa");
           sanat.lisaa("kissa");
           sanat.lisaa("koira");
           sanat.tulosta(System.out);
           sanat.kasitteleRivi("kissa, istuu kissa puussa");
           sanat.tulosta(System.out);

       Kirjoita  public _1_ lisaa(_2_,_3_,_4_) {
 
-- 27) Valitse Sanat lisaa metodin tyyppi ja parametrit järjestyksessä
         0: int
         1: char
         2: double
         3: String
         4: StringBuffer
         5: Sana
         6: Sana-taulukko
         7: Sanat
         8: Sanat-taulukko
         9: void
        |60|0|4|0|1|93;1
 
       Kirjoita
          public void lisaa(String s) {
          }
 
       Ensin pitää etsiä onko sana jo valmiina.
 
-- 28) Luontevin etsintäsilmukka
         0: en tiedä
         1: for
         2: while
         3: do-while
         4: goto
         5: ikuinen silmukka + poistuminen keskeltä
         6: rekursio
        |30|1|2|0|0|1;1

    Kirjoita
      for (Sana sana : alkiot) {
          if ( sana.oletko(s) ) {
              sana.lisaa();
              return;
          }
      }
      Sana sana = new Sana(s);
      sana.lisaa();
      alkiot.add(sana);

    Kirjoita
      public _1_ kasitteleRivi(_2_, _3_, _4_) {
      }

-- 29) Sanat.kasitteleRivi metodin tyyppi ja paremetrit järjestyksessä
         0: int
         1: char
         2: double
         3: String
         4: StringBuffer
         5: Sana
         6: Sana-taulukko
         7: Sanat
         8: Sanat-taulukko
         9: void
        |60|0|4|0|1|93;1
 
   Kirjoita
      public void kasitteleRivi(String rivi) {
      }
 
-- 30) Millä rivi jaetaan osiin
         0: en tiedä
         1: indexOf + substring
         2: StringTokenizer
         3: append
         4: StringBuilder
        |40|0|4|0|0|2;1
 
 Kirjoita
      public void kasitteleRivi(String rivi) {
        String s;
        StringTokenizer st = new StringTokenizer(rivi," ,();.:[]{}+-");
        while ( st.hasMoreTokens() ) {
            s = st.nextToken();
            lisaa(s);
        }
      }

      public void tulosta(OutputStream os) {
         PrintStream out = Tiedosto.getPrintStream(os);
         for (Sana sana : alkiot)
            out.println(sana);
      }
 


 Testaa Sanat-luokkaa

  Kirjoita:
    public void lueTiedosto(String tied) throws IOException {
       BufferedReader fi = Tiedosto.avaa_lukemista_varten(tied);
       if ( fi == null ) throw new FileNotFoundException("Ei löydy: " + tied);
    }
 
-- 31) lueTiedosto - millä silmukalla
         0: en tiedä
         1: for
         2: while
         3: do-while
         4: goto
         5: ikuinen silmukka + poistuminen keskeltä
         6: rekursio
        |40|0|1|0|0|2;1

  Kirjoita:
        String rivi;
        while ( ( rivi = fi.readLine() ) != null  ) {
             kasitteleRivi(rivi);
        }
 
-- 32) Miten fi.close()
         0: ei saa kirjoittaa
         1: saa kirjoitaa mutta ei ole pakko
         2: on pakko kirjoittaa
         3: kirjoitetaan vain jos output-tiedosto
         4: kirjoitetaan vain jos tiedosto aukesi
         5: on kirjoitettava finally lohkoon
        |40|0|1|0|0|5;1
 
 
  Kirjoita:
 
        try {
           String rivi;
           while ( ( rivi = fi.readLine() ) != null  ) {
              kasitteleRivi(rivi);
           }
        } finally {
           fi.close();
        }
 
  Testaa pääohjelma
 
-- 33) Mitä vielä puuttuu
         0: ei mitään
         1: automaattiset testit
         2: käyttöliittymä
         3: aikaa...
        |30|0|1|0|0|1;1