Kolmanda kodutöö kaitsmine

  1. Avage oma kodutöö 3 IntelliJ's (vm. IDEs, et seda oleks võimalik muuta ja testida). Täna on testide töötamine teie arvutis oluline.
  2. Kui teil pole oma töö viimast seisu bitbucket'is (või github'is), siis looge KOHE PRAKTIKUMI ALGUSES versioon (commit) "Enne kaitsmist" ning laadige see üles. Vajadusel vaadake esimese praktikumi materjale. Kindlasti peab versioonihalduses olema ka testfail DoubleStackTest.java
  3. Õppejõud määrab teile paarilise selleks praktikumiks.
  4. Seletage oma paarilisele meetodi interpret tööpõhimõtet. Näidake, et kõik bitbucketis olevad testid lähevad teie arvutis läbi (vajadusel vaadake esimese praktikumi materjale) ning et Moodle tagasiside on "ok". Paariline teeb sama, misjärel võrrelge lahendusi ning otsustage, kumb lahendus võtta aluseks lisatööle.
  5. Edasi on kaks tööd, mida võite vabalt omavahel jagada: arendamine ja testimine. Üks paariline ("arendaja") vastutab faili DoubleStack.java eest, teine paariline ("testija") faili DoubleStackTest.java eest.
  6. Arendamine: täiendage meetodit interpret nii, et see aktsepteeriks sisendis veel operatsioone, millel on järgmine tähendus (ingliskeelne selgitus): Järgnevates kirjeldustes on pinu põhi vasakul ja tipp paremal.
    Näited: Realiseerige muudatused meetodis interpret. Kindlasti proovige eelnevaid näiteid.
  7. Testimine: kirjutage eelmises punktis toodud näidete kohta junit4 testid (täiendage faili DoubleStackTest.java seal olemasolevate näidete põhjal). Lisage meetodite alatäitumist (DUP ja DROP vajavad üht, SWAP kaht ja ROT kolme elementi) kontrollivad testid. Kokku peaks olema vähemalt viis testi: "positiivne" test, mis sisaldab kõiki toodud näiteid ning üks "negatiivne" test iga operatsiooni jaoks olukorras, kus pinus ei jätku elemente.
  8. Tehke uus versioon (commit)  "Arendaja: Nimi; Testija: Nimi" ning laadige see bitbucket'isse (või github'i), paariline teeb oma koodiga sama. Tehke seda alles siis, KUI TESTIMISE OSA TÖÖTAB.
  9. Näidake koos paarilisega see viimane commit bitbucket'is (või github'is) ning testide ja näidete töötamine õppejõule ette. Teste saab käivitada ka käsurealt, kui IDEs on mingi probleem.
  10. Õppejõud vestleb ja küsib küsimusi teie töö kohta.
  11. Täitke Moodle's "Kodutöö 3 kaitsmine".

Neljanda kodutöö kaitsmine

  1. Kui teil pole oma töö viimast seisu bitbucket'is (või github'is), siis looge KOHE PRAKTIKUMI ALGUSES versioon (commit) "Enne kaitsmist" ning laadige see üles. Vajadusel vaadake esimese praktikumi materjale. Kindlasti peab versioonihalduses olema ka testfail LfractionTest.java
  2. Avage (mõlemad paarilised) oma kodutöö IntelliJ's (vm. IDEs, et seda oleks võimalik muuta ja testida). Täna on testide töötamine teie arvutis oluline.
  3. Edasi on kaks tööd, mida võite vabalt omavahel jagada: arendamine ja testimine. Üks paariline ("arendaja") vastutab faili Lfraction.java eest, teine paariline ("testija") faili LfractionTest.java eest.
  4. Arendamine:
Lisage meetod valueOf signatuuriga public static Lfraction valueOf (double df) , mis leiab reaalarvu df parima esituse murruna (vähima nimetajaga murd, mille väärtus on võrdne df-ga tüübi double täpsuse piires). Selgituseks: long-tüüpi täisarvude paar võimaldab murru arvväärtust kujutada palju täpsemalt kui double tüüp Javas, seega tuleks leida vähima nimetaja väärtusega murd m et kehtiks df==m.toDouble() täpselt.
Leidke märksõna "ahelmurdude meetod" abil sobiv algoritm. Mõned näited  (kehtivad ainult Java long ja double tüüpide korral), mida testida:
0.0 : 0 / 1
0.125 : 1 / 8
-2.5 : -5 / 2
Math.PI: 245850922 / 78256779
Math.E: 325368125 / 119696244
Math.sqrt(2.): 131836323 / 93222358
...
  1. Testimine: Kirjutage  umbes 7 - 9 testjuhtumit (s.h. toodud näited ja Math.random()) ja lisage need olemasolevatele testidele (kasutage junit4 raamistikku, näitena vaadake testifaili LfractionTest.java).
    Täpse võrdluse jaoks sobib meetod Double.doubleToLongBits(df)  Murru nimetaja ei tohiks olla suurem kui 1 miljard (1000000000L).
  2. Tehke uus versioon (commit"Arendaja: Nimi, Testija: Nimi" ning laadige see bitbucket'isse (või github'i), paariline teeb oma koodiga sama. Tehke seda alles siis, KUI TESTIMISE OSA TÖÖTAB.
  3. Näidake koos paarilisega see viimane commit bitbucket'is (või github'is) ning testide ja näidete töötamine õppejõule ette. Teste saab käivitada ka käsurealt, kui IDEs on mingi probleem.
  4. Õppejõud vestleb ja küsib küsimusi teie töö kohta.
  5. Täitke Moodle's "Kodutöö 4 kaitsmine".

Jaanus Pöial

  Näide Math.PI lähendamisest:
3 / 1
22 / 7
333 / 106
355 / 113
103993 / 33102
104348 / 33215
208341 / 66317
312689 / 99532
833719 / 265381
1146408 / 364913
4272943 / 1360120
5419351 / 1725033
80143857 / 25510582
245850922 / 78256779 (viimane double täpsuse piires)
817696623 / 260280919  (liiga täpne double jaoks, ei lähene enam tegelikule pii väärtusele)
...
3857417000399352 / 1227853966360537 (siin tuleb vastu long tüübi piir)